소프트웨어 생명 주기
1) 폭포수 모델
선형 순차적 개발 / 고전적, 전통적 모형 / step by step 이다.
2) 프로토 타입
고객의 니즈 파악을 위해 견본/시제품을 통해 최종결과를 예측 하며 요구사항 변경에 용이하다
3)나선형 모델(Spiral)
폭포수+프로토타입에 +위험분석 기능이 추가되었음(위험관리/최소화)
점진적 개발을 반복하며 정밀하여 유지보수 과정 필요x
※ 계획 수립 - 위험 분석 - 개발 및 검증 - 고객평가 단계를 거침
4) 에자일 모델(Agile)
일정한 짧은 주기를 반복하여 개발을 진행한다.
→ 고객의 요구사항에 유연하게 대응(소통/상호작용 중시)
ex) XP, Scrum(스크럼), FDD(기능중심) 등
하향식 설계 : 절차 지향적 / 최상위 컴포넌트 설계 후 하위 기능 부여
→ 테스트 초기부터 사용자에게 시스템 구조 제시 가능
상향식 설계 : 객체지향 / 최하위 모듈 설계 후 이들을 결합하여 검사
→ 구조 변경시 상위모듈도 변경이 필요하여 기능추가가 어려움
※ Component 란, 명백한 역할을 가지며 재사용 되는 모든 단위를 의미한다.
스크럼 기법

개발 프로세스
스프린트 계획 회의 - 스프린트 - 일일 스크럼 회의- 스프린트 회고**
xp(익스트림 프로그래밍)
고객의 요구사항을 유연하게 대응하기 위해 고객 참여와 신속한 개발과정 반복
※ 용기, 단순, 커뮤니케이션, 피드백, 존중
요구사항
기능적 요구 : 실제 시스템에 필요한 요구사항
ex) 금융시스템은 조회/인출등의 기능이 있어야한다.
비기능적 요구 : 성능, 보안, 품질, 안정성 등 실제 수행에 보조적인 요구사항
ex) 모든 화면이 3초 이내에 사용자에게 보여야 한다.
UML의 구성요소
→ 고객/개발자 간 원활한 의사소통을 위해 표준화한 대표적 객체지향 모델링 언어
구조,정적 다이어그램 : 클래스/객체/컴포넌트/배치/복합체/패키지
행위,동적 다이어그램 : 유스케이스, 순차(Sequence) 등
※ 액터 : 시스템과 상호 작용하는 사람이나 다른 시스템에 의한 역할
User Interface
설계지침 : 사용자 중심 / 일관성 / 단순성 / 결과예측 / 가시성 / 표준화 등등
CLI : 텍스트 형힉
GUI : 그래픽형식
NUI : 자연어(말/행동)
VUI : 음성
OUI : 사물과 사용자 상호작용
설계도구
WIREFRAME : 기획 초기단계의 대략적인 레이아웃 설계
Story Board : 최종적인 산출문서 (와이어프레임-UI, 콘텐츠 구성 등)
ProtoType : 와이어프레임 / 스토리보드에 인터랙션 적용
(실제 구현된 것처럼 테스트 가능한 동적인 형태 모형)
※ 인터랙션 : UI를 통해 시스템을사용하는 일련의 상호작용을 의미
소프트웨어 아키텍처
모듈화 : 시스템 기능을 모듈 단위로 분류하여 성능/재사용성 향상
추상화 : 불필요한 부분은 생략하고 필요한 부분만 강조해 모델화
→ 문제의 포괄적인 개념을 설계 후 차례로 세분화하여 구체화 진행
단계적 분해 : 하향식 설계쩐략
정보 은닉 : 한 모듈 내부에 포함된 절차/자료 관련 정보가 숨겨져 다른 모듈의 접근/변경불가 (모듈을 도깁적으로 수행, 수정/시험/유지보수 용이)
소프트웨어 아키텍처 설계과정
설계 목표 설정 - 시스템 타입 결정 - 아키텍처 패턴 적용 - 서브시스템구체화 - 검토