🔖출제 (소프트웨어 공학의 특징)
- 현대적 프로그래밍 기술을 계속적으로 적용
- 개발된 품질이 유지되도록 지속적으로 검증
- 개발 관련 사항 및 결과에 대한 명확한 기록 유지
타당성 검토 > 계획 > 요구분석 > 설계 > 구현 > 시험 > 유지보수
일정한 주기 (스프린트 / 이터레이션)를 반복하며 개발 과정 진행 ( = 고객의 요구사항과 변화에 유연하게 대처)
고객과의 소통에 초점을 맞춘 방법론을 통칭
기업활동 전반에 걸쳐 사용 / 소규모 프로젝트, 고도의 숙달된 개발자 / 급변하는 요구사항에 적합
폭포수 모형과 대조적
스크림
XP(eXtreme Programming) (🔖출제)
칸반
Lean
크리스탈
ASD
기능중심개발
DSMD
DAD
애자일 개발 4가지 핵심가치 (🔖출제)
- 개인과의 상호작용에 가치를 둔다
- 문서보다는 실행되는 SW에 가치를 둔다
- 고객과의 협업에 가치를 둔다
- 계획보다는 변화에 반응하는 것에 가치를 둔다
도출
분석
명세
관찰 및 모델 작성 기술 (문서화)
기능 요구사항은 완벽히 기술 / 비기능 요구사항은 필요한 것만 명확히 기술
요구사항 명세 기법 : 정형 명세 / 비정형명세
정형명세 : 수학적 원리 기반 모델 기반 / 간결한 표현, 일관성이 있어 완전성 검증 가능, 어려움
VDM, Z, Petri-net, CSP
비정형명세 : 상태/기능/객체 중심 / 일반 명사, 동사등 자연어 기반 / 쉬움, 일관성이 떨어져 해석이 달라질 수 있음
FSM, Decision Table, ER모델링, STATE Chart(SADT)
확인
구조적 분석기법
도형 중심의 분석용 도구와 분석 절차 (사용자간의 대화가 용이)
하향식 방법을 사용, 시스템 세분화 및 분석 중복 배제
자료흐름도(DTD : Data Flow Diagram), 자료사전 (DD : Data Dictionary), 소단위 명세서(Mini-spec.)
개체관계도(ERD), 상태전이도(STD), 제어 명세서 등의 도구를 이용
기호 | 의미 |
---|---|
프로세스(Process) | - 자료를 변환 시키는 시스템의 한 부분(처리과정) / 처리, 기능, 버블이라고도 함 - 원이나 둥근 사각형으로 표시 (원 : Yourdon/DeMacro 사각형 : Gane/Sarson) |
자료 흐름(Data Flow) | -자료의 이동(흐름)이나 연관관계를 나타낸다 -화살표 위에 자료의 이름을 기입 |
자료 저장소(Data Store) | - 시스템에서의 자료 저장소(파일, 데이터베이스)를 나타냄 -도형 안에 자료 저장소의 이름을 기입 |
단말(Terminator) | - 시스템과 교신하는 외부 개체, 입력데이터가 만들어지고 출력데이터를 받음 -도형 안에 이름을 기입 |
기호 | 의미 |
---|---|
= | 자료의 정의 : ~로 구성되어있다. |
+ | 자료의 연결 : 그리고(and) |
() | 자료의 생략 : 생략가능한 자료(Optional) |
[|] | 자료의 선택 : 또는(or) |
{} | 자료의 반복 : Iteration of / {}(아래첨자) : n번이상반복 / {}(윗첨자) : n번까지반복 / {} : 아래첨자이상 윗첨자이하로 반복 |
* * | 자료의 설명 : 주석 |
시스템 개발 과정에서 상호간의 의사소통이 원활하게 이루어지도록 표준화한 객체 지향 모델링 언어
RumBaught(ORM), Booch, Jacobson 등의 장점을 통합, OMG에서 표준으로 지정
시스템의 구조를 표현하는 6개의 구조 다이어 그램 + 시스템의 동작을 표현하는 7개의 행위 다이어 그램
사물(Things), 관계(RelationShip), 다이어그램(Diagram)
사물 | 내용 |
---|---|
구조 사물 | 시스템의 개념적 물리적 요소 - 클래스(Class), 유스케이스(Use case), 컴포넌트(Component), 노드(Node) |
행동 사물 | 시간과 공간에 따른 요소들의 행위 표현 - 상호작용(Interaction), 상태 머신(State Machine) 등 |
그룹 사물 | 요소들을 그룹으로 묶어서 표현 -Package |
주해 사물 | 부가적인 설명이나 제약조건 - 노트(Note) |
연관관계, 집합관계, 포함관계, 일반화관계, 의존관계, 실체화관계 등
연관관계
집합관계
포함관계
일반화관계
의존관계
실체화관계
종류 | 기능 |
---|---|
클래스 다이어그램 | 믈래스와 클래스가 가지는 속성, 클래스 사이의 관계 표현 -시스템 구조 파악, 구조성 문제점 도출 |
객체 다이어그램 | 인스턴스(클래스에 속한 사물)를 특정 시점의 객체와 객체 사이의 관계로 표현 -럼바우(Rumbaugh) 객체지향 분석 기법에서 객체모델링에 활용 |
컴포넌트 다이어그램 | 실제 구현 모들인 컴포넌트 간의 관계나 컴포넌트간의 인터페이스 -구현 단계에서 사용 |
배치 다이어그램 | 결과물 프로세스, 컴포넌트 등의 물리적 요소 표현 노드와 의사소통(통신) 경로로 표현 / 구현 단계에서 사용 |
복합체 구조 다이어그램 | 클래스나 컴포넌트가 복잡한 경우, 그 내부 구조를 표현 |
패키지 다이어그램 | 유스케이스나 클래스등의 모델 요소들을 그룹화 |
종류 | 기능 |
---|---|
유스케이스 다이어그램 | 사용자의 요구를 분석하는 것으로 기능 모델링 작업에 사용 |
시퀀스 다이어그램 | 상호 작용하는 시스템이나 객체들이 주고받는 메시지 |
커뮤니케이션 다이어그램 | 메세지 + 객체들간의 연관까지 표현 |
상태 다이어그램 | 하나의 객체가 자신이 속한 클래스의 상태 변화 혹은 다른 객체와의 상호작용에 따라 상태가 어떻게 변화하는지 표현, 럼바우 객체지향 분석 기법에서 동적 모델링 활용 |
활동 다이어그램 | 시스템이 어떤 기능을 수행하는지, 객체의 처리 로직이나 조건에 따른 처리의 흐름을 순서에 따라 표현 |
상호작용 개요 다이어그램 | 상호작용 다이어그램 간의 제어 흐름 |
타이밍 다이어그램 | 객체 상태 변화와 시간 제약을 명시적 표현 |
타입 | 내용 |
---|---|
<> | 포함 관계에 있는 경우 |
<> | 확장 관계에 있는 경우 |
<> | 인터페이스를 정의하는 경우 |
<> | 예외 정의 |
<> | 생성자 역할 수행 |