점진적 모형
이라고도 함.스프린트(Sprint)
또는 이터레이션(Iteration)
이라고 불리는 짧은 개발 주기를 반복하며, 반복되는 주기마다 만들어지는 결과물에 대한 고객의 평가와 요구를 적극 수용함.팀의 중요성을 강조. 팀이 중심이 되어 개발의 효율성을 높인다는 의미가 내포된 용어.
스크럼은 팀원 스스로가 스크럼 팀을 구성(self-organizing)해야 하며, 개발 작업에 관한 모든 것을 스스로 해결(cross-functional)할 수 있어야 한다.
스크럼 팀은 제품 책임자, 스크럼 마스터, 개발팀으로 구성.
제품 백로그(Product Backlog)
스프린트 계획 회의(Sprint Planning Meeting)
스프린트(Sprint)
일일 스크럼 회의(Daily Scrum Meeting)
스프린트 검토 회의(Sprint Review)
스프린트 회고(Sprint Retrospective)
사용자 스토리(User story)
릴리즈 계획 수립(Release Planning)
스파이크(Spike)
이터레이션(Iteration)
승인 검사(Acceptance Test, 인수 테스트)
소규모 릴리즈(Small Release)
- 1단계 : 시스템 구성 파악 | 시스템 기능 파악 | 시스템 인터페이스 파악
- 2단계 : 아키텍처 구성 파악 | 소프트웨어 구성 파악
- 3단계 : 하드웨어 구성 파악 | 네트워크 구성 파악
기간 업무
와 이를 지원하는 지원 업무
로 구분하여 기술함.일반적으로 기술하는 내용에 따라 기능 요구사항과 비기능 요구사항으로 구분하며,
기술 관점과 대상의 범위에 따라 시스템 요구사항과 사용자 요구사항으로 나눔.
기능 요구사항(Functional requirements)
비기능 요구사항(Non-functional requirements)
시스템 요구사항(System requirements)
사용자 요구사항(User requirements)
요구공학(Requirement Engineering)
의 한 요소정적 분석(Static Analysis)
을 수행하는 것이 유용함.동적 분석(Dynamic Analysis)
이라고 함.실선
으로 연결하여 표현. 방향성을 화살표로 표현. 양방향일 경우 화살표는 생략.속이 빈 마름모
를 연결하여 표현속이 채워진 마름모
를 연결하여 표현속이 빈 화살표
를 연결하여 표현점선 화살표
를 연결하여 표현속이 빈 점선 화살표
유스케이스 다이어그램(Use Case Diagram)
시퀀스 다이어그램(Sequence Diagram)
커뮤니케이션 다이어그램(Communication Diagram)
상태 다이어그램(State Diagram)
활동 다이어그램(Activity Diagram)
상호작용 개요 다이어그램(Interaction Overview Diagram)
타이밍 다이어그램(Timing Diagram)
인터뷰 진행은 반드시 사용자 리서치를 시작하기 전에 해야 함.
ISO/IEC 9126
ISO/IEC 25010
실행 차
: 사용자가 원하는 목적과 실행 기능
이 다르기 때문에 발생함.평가 차
: 사용자가 원하는 목적과 실행 결과
가 다르기 때문에 발생함.1. 사용 의도 파악
2. 행위 순서 규정
3. 행위의 순서대로 실행
1. 수행한 키 조작의 결과를 사용자가 빠르게 지각하도록 유도
2. 키 조작으로 변화된 시스템의 상태를 사용자가 쉽게 인지하도록 유도
3. 사용자가 가진 원래 의도와 시스템 결과 간의 유사 정도를 사용자가 쉽게 파악하도록 유도
모듈화
, 추상화
, 단계적 분해
, 정보은닉
이 있음.과정 추상화
: 자세한 수행 과정을 정의하지 않고, 전반적인 흐름만 파악할 수 있게 설계하는 방법데이터 추상화
: 데이터의 세부적인 속성이나 용도를 정의하지 않고, 데이터 구조를 대표할 수 있는 표현으로 대체하는 방법제어 추상화
: 이벤트 발생의 정확한 절차나 방법을 정의하지 않고, 대표할 수 있는 표현으로 대체하는 방법시스템 타입
결정아키텍처 패턴
적용대화형 시스템
: 사용자의 요구가 발생하면 시스템이 이를 처리하고 반응하는 시스템이벤트 중심 시스템
: 외부의 상태 변화에 따라 동작하는 시스템변환형 시스템
: 데이터가 입력되면 정해진 작업들을 수행하여 결과를 출력하는 시스템객체 영속성 시스템
: 데이터베이스를 사용하여 파일을 효과적으로 저장, 검색, 갱신할 수 있는 시스템아키텍처 스타일
또는 표준 아키텍처
라고도 함.객체(Object)
, 클래스(Class)
, 캡슐화(Encapsulation)
, 상속(Inheritance)
, 다형성(Polymorphism)
이 있음.결합도는 약하게
, 응집도는 강하게
, 모듈의 크기는 작게
만들어야 한다.자료 결합도 (Data Coupling)
스탬프(검인) 결합도 (Stamp Coupling)
제어 결합도 (Control Coupling)
외부 결합도 (External Coupling)
공통(공유) 결합도 (Common coupling)
내용 결합도 (Content Coupling)
기능적 응집도 (Functional Cohesion)
순차적 응집도 (Sequential Cohesion)
교환(통신)적 응집도 (Communication Cohesion)
절차적 응집도 (Procedural Cohesion)
시간적 응집도 (Temporal Cohesion)
논리적 응집도 (Logical Cohesion)
우연적 응집도 (Coincidental Cohesion)
팬인
: 어떤 모듈을 제어(호출)하는 모듈의 수팬아웃
: 어떤 모듈에 의해 제어(호출)되는 모듈의 수정확성(Correctness)
: 시스템 구현 시 해당 기능이 필요하다는 것을 알 수 있도록 정확히 작성명확성(Clarity)
: 해당 기능을 이해할 때 중의적으로 해석되지 않도록 명확하게 작성완전성(Completeness)
: 시스템 구현을 위해 필요한 모든 것을 기술일관성(Consistency)
: 공통 기능들 간 상호 충돌이 발생하지 않도록 작성추적성(Traceability)
: 기능에 대한 요구사항의 출처, 관련 시스템 등의 관계를 파악할 수 있도록 작성함수와 객체
: 클래스나 메소드 단위의 소스 코드를 재사용컴포넌트
: 컴포넌트 자체에 대한 수정 없이 인터페이스를 통해 통신하는 방식으로 재사용애플리케이션
: 공통된 기능들을 제공하는 애플리케이션을 공유하는 방식으로 재사용순차 코드(Sequence Code)
블록 코드(Block Code)
10진 코드(Decimal Code)
그룹 분류 코드(Group Classification Code)
연상 코드(Mnemonic Code)
표의 숫자 코드(Significant Digit Code)
합성 코드(Combined Code)
객체의 생성과 관련된 패턴
생성 패턴은 객체의 생성과 참조 과정을 캡슐화하여 객체가 생성되거나 변경되어도 프로그램의 구조에 영향을 크게 받지 않도록 하여 프로그램에 유연성을 더해줌.
추상 팩토리 (Abstract Factory)
빌더 (Builder)
팩토리 메소드 (Factory Method)
프로토타입 (Prototype)
싱글톤 (Singleton)
추상 팩토리
는 서로 다른 부품을 조립만 하는 조립 공장(Factory)
팩토리 메소드
는 부품부터 완성품까지 통째로 찍어내는 공장(Factory)
프로토타입
은 원형(Prototype)을 두고 복제품을 만드는 것
싱글톤
은 식당에서 누구나 사용할 수 있지만 하나뿐(Singleton)인 정수기
클래스나 객체들을 조합하여 더 큰 구조로 만들 수 있게 해주는 패턴
구조 패턴은 구조가 복잡한 시스템을 개발하기 쉽게 도와줌.
어댑터 (Adapter)
브리지 (Bridge)
컴포지트 (Composite)
데코레이터 (Decorator)
퍼싸드 (Facade)
플라이웨이트 (Flyweight)
프록시 (Proxy)
어댑터
는 전압을 맞춰주는 변압기(Adapter)
브리지
는 두 섬을 연결하는 다리(Bridge)
컴포지트
는 폴더와 파일을 합성(Composite)한 것
데코레이터
는 온갖 것으로 장식된(Decorator) 눈사람
퍼싸드
는 외부(Facade)의 리모컨 버튼만으로 복잡한 명령들을 간편하게 수행하는 것
플라이웨이트
는 부담을 가볍게(Flyweight) 하기 위해 물품을 공유하는 것
프록시
는 내가 하기 어려운 법률업무를 대리(Proxy)해서 처리해주는 변호사
클래스나 객체들이 서로 상호작용하는 방법이나 책임 분배 방법을 정의하는 패턴
행위 패턴은 하나의 객체로 수행할 수 없는 작업을 여러 객체로 분배하면서 결합도를 최소화할 수 있도록 도와줌.
책임 연쇄 (Chain of Responsibility)
커맨드 (Command)
인터프리터 (Interpreter)
반복자 (Iterator)
중재자 (Mediator)
메멘토 (Memento)
옵저버 (Observer)
상태 (State)
전략 (Strategy)
템플릿 메소드 (Template Method)
방문자 (Visitor)
책임 연쇄
는 위에서 쏟아지는 물을 여러 물받이가 연속(Chain)해서 나눠 받는(Responsibility) 물레방아
커맨드
는 각종 명령어(Command)를 하나로 합쳐둔 것
인터프리터
는 언어 번역가(Interpreter)
반복자
는 음악파일의 다음 곡 재생처럼 같은 명령의 반복(Iterator)
중재자
는 물품 매매를 중개해주는(Mediator) 인터넷 사이트
메멘토
는 기억 속의 그 때(Memento)로 돌아가는 것
옵저버
는 변화를 지켜보고(Observer) 알려주는 것
상태
는 환자의 상태(State)에 따라 치료방법이 다른 것
전략
은 여러 전략들을 a, b, c 등으로 정하고 필요할 때 원하는 전략(Strategy)을 선택하여 쓰는 것
템플릿 메소드
는 세모, 네모, 동그라미를 그리는 방법(Method)들을 도형이라는 하나의 큰 틀(Template)로 묶는 것
방문자
는 책을 만들기 위해 저자, 편집자, 홍보팀을 번갈아가며 방문(Visitor)하는 것
시스템 인터페이스
: 독립적으로 떨어져 있는 시스템들끼리 서로 연동하여 상호 작용하기 위한 접속 방법이나 규칙을 의미시스템 인터페이스 요구사항
: 개발을 목표로 하는 시스템과 외부 시스템을 연동하는데 필요한 시스템 인터페이스에 대한 요구사항을 기술한 것시스템 인터페이스 요구사항 명세서
: 인터페이스 이름, 연계 대상 시스템, 연계 범위 및 내용, 연계 방식, 송신 데이터, 인터페이스 주기, 기타 고려사항 등이 포함되어야 함. // 수신 데이터는 아님!요구사항 명세서
는 프로젝트 개발 시 기업이나 업체가 요구하는 사항들을 구체화하여 명세화한 문서로, 시스템 기능, 데이터, 인터페이스, 품질 등의 요구사항 단위별로 작성함.요구사항 검토 계획 수립 -> 검토 및 오류 수정 -> 베이스라인 설정
순으로 수행함.요구사항 검토(Requirements Review)
: 요구사항 명세서의 오류 확인 및 표준 준수 여부 등의 결함 여부를 검토 담당자들이 수작업으로 분석하는 방법동료검토(Peer Review)
: 요구사항 명세서 작성자가 명세서 내용을 직접 설명하고 동료들이 이를 들으면서 결함을 발견하는 형태의 검토 방법워크스루(Walk Through)
: 검토 회의 전에 요구사항 명세서를 미리 배포하여 사전 검토한 후에 짧은 검토 회의를 통해 결함을 발견하는 형태의 검토 방법인스펙션(Inspection)
: 요구사항 명세서 작성자를 제외한 다른 검토 전문가들이 요구사항 명세서를 확인하면서 결함을 발견하는 형태의 검토 방법프로토타이핑(Prototyping)
: 사용자의 요구사항을 정확히 파악하기 위해 실제 개발될 소프트웨어에 대한 견본품(Prototype)을 만들어 최종 결과물을 예측함.테스트 설계
: 요구사항은 테스트할 수 있도록 작성되어야 하며, 이를 위해 테스트 케이스(Test Case)를 생성하여 이후에 요구사항이 현실적으로 테스트 가능한지를 검토함.CASE(Computer Aided Software Engineering) 도구 활용
: 일관성 분석(Consistency Analysis)을 통해 요구사항 변경사항의 추적 및 분석, 관리하고, 표준 준수 여부를 확인함.송·수신 시스템 사이에서 교환되는 데이터로, 규격화된 표준 형식에 따라 전송됨.
교환되는 데이터의 종류
인터페이스 표준 항목
시스템 공통부
거래 공통부
송·수신 데이터 항목
공통 코드
실시간 방식
지연 처리 방식
: 데이터를 매건 단위로 처리할 경우 비용이 많이 발생할 때 사용하는 방식배치 방식
: 대량의 데이터를 처리할 때 사용하는 방식연계 방식, 통신 및 처리 유형, 발생 주기
등의 송·수신 방법을 정의하고 명세를 작성하는 것시스템 인터페이스 설계서
: 시스템의 인터페이스 현황을 확인하기 위해 시스템이 갖는 인터페이스 목록과 각 인터페이스의 상세 데이터 명세를 정의한 문서시스템 인터페이스 목록
과 시스템 인터페이스 정의서
로 구성시스템 인터페이스 목록
: 업무 시스템과 내·외부 시스템 간 데이터를 주고받는 경우에 사용하는 인터페이스에 대해 기술한 것시스템 인터페이스 정의서
: 인터페이스별로 시스템 간의 연계를 위해 필요한 데이터 항목 및 구현 요건 등을 기술하는 것RPC
(원격 프로시저 호출)은 응용 프로그램의 프로시저를 사용하여 원격 프로시저를 마치 로컬 프로시저처럼 호출하는 방식의 미들웨어MOM
(메시지 지향 미들웨어)는 메시지 기반의 비동기형 메시지를 전달하는 방식의 미들웨어TP-Monitor
(트랜잭션 처리 모니터)는 항공기나 철도 예약 업무 등과 같은 온라인 트랜잭션 업무에서 트랜잭션을 처리 및 감시하는 미들웨어ORB
(객체 요청 브로커)는 객체 지향 미들웨어로 코바(CORBA) 표준 스펙을 구현한 미들웨어
최근에는 TP-Monitor의 장점인 트랜잭션 처리와 모니터링 등을 추가로 구현한 제품도 있음.
ex) Micro Focus의 Orbix, OMG의 CORBA 등
코바(CORBA; Common Object Request Broker Architecture)
: 코바는 네트워크에서 분산 프로그램 객체를 생성, 배포, 관리하기 위한 규격을 의미
WAS
(웹 애플리케이션 서버)는 정적인 콘텐츠를 처리하는 웹 서버와 달리 사용자의 요구에 따라 변하는 동적인 콘텐츠를 처리하기 위해 사용되는 미들웨어미들웨어 솔루션 명세서
: 미들웨어 솔루션 목록의 미들웨어 솔루션별로 관련 정보들을 상세하게 기술하는 것