(1) 요구분석 기법
1. 요구분석의 개념
- 도출된 요구사항 간 상층을 해결하고 소프트웨어의 범위를 파악하여 외부환경과의 상호작용을 분석하는 과정
2. 요구분석 기법
- 분석 기법으로는 요구사항 분류, 개념 모델, 요구사항 할당, 요구사항 협상, 정형 분석 등이 있다
기법 | 설명 |
요구사항 분류 | - 요구사항이 기능인지 비기능인지 - 요구사항이 소프트웨어에 미치는 영향의 범위를 파악 - 요구사항이 소프트웨어 생명주기 동안 변경이 발생하는지 확인 |
개념 모델링 | - 개념 모델은 문제 도메인의 *엔터티들과 개별관계 및 종속성 반영 - 시나리오로 나타내기 위해 *유스케이스 다이어그램이 많이 사용 |
요구사항 할당 | - 요구사항을 만족시키기 위한 아키텍처 구성요소를 식별하는 활동 - 다른 구성요소와 어떻게 상호 작용하는지 분석을 통해 추가적인 요구 사항을 발견 가능 |
요구사항 협상 | - 두 명의 이해관계자가 서로 상충되는 내용을 요구하는 경우, 어느 한쪽을 지지하기보다는 적절한 지점에서 합의하기 위한 기법 |
정형 분석 | - 형식적으로 정의된 의미를 지닌 언어로 요구사항을 표현 - 정확하고 명확하게 표현 - 요구사항 분석의 마지막 단계에서 이루어짐 |
* 엔터티 (Entity) : 실체, 객체라는 의미로 유용한 정보를 저장하고 관리하기 위한 집합적인 것
* 유스케이스 (Usecase) 다이어그램 : 프로젝트에 대한 요구사항을 정의하고 세부기능을 분석하며 개발 범위를 정할 때 작성
(2) UML
1. UML (Unified Modeling Language)
- 산출물을 명세화, 시각화, 문서화 할 시 사용되는 모델링 기술과 방법론을 통합해 만든 범용 모델링 언어
2. UML 특징
- UML은 방법론을 통합한 것으로, 표준화된 모델링 기법을 제공한다
특징 | 설명 |
가시화 언어 | - 개념모델 작성 시 오류가 적고 의사소통이 용이 |
구축 언어 | - 다양한 프로그래밍 언어로 실행 시스템의 예측 가능 - UML을 소스코드로 변환하여 구축 가능. 역 변환하여 역공학 가능 |
명세화 언어 | - 정확한 모델 제시. 완전한 모델 작성 가능 |
문서화 언어 | - 시스템에 대한 평가 및 의사소통의 문서 |
3. UML 구성요소
- UML은 사물, 관계, 다이어그램으로 구성된다.
구성요소 | 내용 |
사물 (Things) | - 추상적인 개념으로, 주제를 나타내는 요소 - 단어 관점에서 '명사' 또는 '동사'를 의미 |
관계 (Relationships) | - 사물의 의미를 확장하고 명확히 하는 요소 - 사물과 사물을 연결하여 관계를 표현하는 요소 - 단어 관점에서 '형용사' 똔ㄴ '부사'를 의미 |
다이어그램 (Diagrams) | - 사물과 관계를 모아 그림으로 표현한 상태 - 형식과 목적에 따라 9가지로 정의 |
4. UML 다이어그램
- UML 다이어그램은 구분에 따라 정적 모델링, 동적 모델링으로 구분된다
구분 | 다이어그램 | 설명 |
요구사항 | 유스케이스 (Usecase) | - 사용자 관점에서 시스템의 활동을 표현 - 유스케이스는 시스템의 기능적 요구 정의 |
정적 모델링 | 클래스 (Class) | - 시스템 내 클래스의 정적 구조를 표현 - 속성 (Attribute)과 동작(Behavior)로 구성 |
객체 (Object) | -객체 인스턴스를 나타내는 대신 실제 클래스를 사용 - 연관된 모든 *인스턴스를 표현 |
|
컴포넌트 (Component) | - 코드 컴포넌트 기반의 물리적 구조 표현 - 실질적 프로그래밍 작업에 사용 |
|
배포 (Deployment) | - 컴포넌트 사이의 종속성을 표현 | |
동적 모델링 | 시퀀스 (Sequence) | - 객체 간 상호작용을 메세지 흐름으로 표현 - 객체 사이 메세지를 보내는 시간을 표현 |
협업 (Collaboration) | - 객체 간 연관성을 표현 | |
활동 (Activity) | - 활동의 순서대로 흐름을 표현 | |
상태 (State) | - 모든 가능한 상태와 전이를 표현 - 진입 조건, 탈출 조건, 상태 전이 등 기술 |
* 인스턴스 (Instance) : *객체지향 프로그래밍에서 해당 클래스의 구조로 컴퓨터 저장 공간에서 할당된 실체이다.
* 객체지향 프로그래밍 (Object Oriented Programming) : 프로그래밍에서 필요한 데이터를 추상화시켜 상태와 행위를 가진 객체를 만들고 그 객체들 간의 유기적인 상호작용을 통해 로직을 구성하는 프로그래밍 방법 (따로 다뤄보자)
(3) 애자일 (Agile)
1. 애자일 (Agile) 방법론의 개념
- 소프트웨어 개발방법론의 하나로, 처음부터 끝까지 계획을 수립하고 개발하는 폭포수(Waterfall) 방법론과는 다르게 개발과 함께 즉시
피드백을 받아서 유동적으로 개발하는 방법
2. 애자일 방법론 등장 배경
- 애자일 방법론은 기존 개발방법론의 한계를 극복하기 위해 등장했다.
등장 배경 | 설명 |
소프트웨어 개발 환경의 변화 | - 소프트웨어 개발 트렌드가 모바일 환경으로 변화 - 시장 적시성과 잦은 배포의 중요성 부각 |
기존 개발방법론의 한계 | - 전통적 방법론은 문서 및 절차 위주로 변화에 신속한 대응이 어려움 - 빠르게 적용하고 효율적으로 개발할 수 있는 방법론의 필요성 증가 |
3. 애자일 선언문
- 공정과 도구보다 개인과 상호작용 - 계획을 따르기보다 변화에 대응하기 - 포괄적인 문서보다 동작하는 소프트웨어 - 계약 협상보다 고객과의 협력 |
4. 애자일 방법론 유형
- 애자일 방법론은 대표적으로 XP, 린 (Lean), 스크럼 (SCRUM) 등이 있다.
종류 | 내용 |
XP (eXtreme Programming) | - 의사소통 개선과 즉각적 피드백으로 소프트웨어 품질을 높이기 위한 방법론 - 5가지 가치와 12개의 실천항목이 존재 - 반복 : 1~3주의 반복 개발 주기 - 5가지 가치 : 용기, 단순성, 의사소통, 피드백, 존중 |
스크럼 (SCRUM) | - 매일 정해진 시간, 장소에서 잛은 시간의 개발을 하는 팀을 위한 프로젝트 관리 중심 방법론 - 백로그 (Backlog) : 제품과 프로젝트에 대한 요구사항 - 스프린트 (Sprint) : 2~4주의 짧은 개발 기간, 반복적 수행으로 개발품질 향상 - 스크럼 미팅(Scrum Meeting) : 매일 15분 정도 미팅으로 To-Do-List 계획 수립 - 스크럼 마스터 (Scrum Master) : 프로젝트 리더, 스크럼 수행 시 문제를 인지 및 해결하는 사람 |
린 (Lean) | - 도요타의 린 시스템 품질기법을 소프트웨어 개발 프로세스에 적용해서 낭비 요소를 제거하여 품질을 향상시킨 방법론 - JIT(Just In Time), 칸반 (Kanban) 보드 사용 - 7가지 원칙 : 낭비제거, 품질 내재화, 지식 창출, 늦은 확정, 빠른 인도, 사람 존중, 전체 최적화 |
5. 애자일 vs 전통적 방법론
비교 대상 | 애자일 방법론 | 전통적 방법론 |
계획수립 | 유동적 범위 설정 | 확정적 범위 설정 |
업무수행 | 팀 중심 업무 수행 | 관리자 주도적 명령과 통제 개인단위로 업무 수행 |
개발/검증 | 반복 주기 단위로 소프트웨어를 개발/검증 | 분석/ 설계/ 구현/ 테스트를 순차적으로 후행 |
팀관리 | 업무 몰입, 팀 평가 | 경쟁, 개별평가 |
문서화 | 문서화보다는 코드를 강조 | 상세한 문서화를 강조 |
성공요소 | 고객 가치 전달 | 계획/ 일정준수 |
'정보처리기사 > I. 소프트웨어 설계' 카테고리의 다른 글
I. 소프트웨어 설계 - 애플리케이션 설계 (1) (0) | 2021.05.04 |
---|---|
I. 소프트웨어 설계 - 화면 설계 (2) (0) | 2021.05.04 |
I. 소프트웨어 설계 - 화면 설계 (1) (0) | 2021.05.04 |
I. 소프트웨어 설계 - 요구사항 확인 (3) (0) | 2021.05.03 |
I. 소프트웨어 설계 - 요구사항 확인 (1) (0) | 2021.05.03 |