정보처리기사 1과목 소프트웨어 설계 - 1장 요구 사항 확인 요점 정리
1. SW 생명주기 : SW 방법론 바탕이 되는 것으로 운용, 유지 보수 등의 과정을 각 단계별로 나눈 것
* 폭포수 모형 : ┌ 가장 오래됨
┝ 정통적, 고전적 생명주기
┝ 선형 순차적 모형, 마지막에 모든 기능 테스트
┝ 각 단계에서 확실히 매듭
└ 병행 X, 매뉴얼 작성 (계획, 문서 중심 개발)
* 프로토타입 모형 : ┌ 폭포수 단점 개선, 원형 모형
┝ 최종 결과물을 예측
┝ 사용자와 시스템 사이의 인터페이스에 중점
┝ 개발 중간에 수정 가능
└ 요구 사항 불분명 시의 요구 사항 정확한 파악을 위해 사용
* 나선형 모형 : ┌ 점진적 모형, 보헴 제안
┝ (폭포수 + 프로토타입) 장점 + 위험 분석 기능
┝ 위험 최소화, 유지 보수 X
└ 대규모 프로젝트
* 애자일 모형 : ┌ 민첩한 기민한이라는 뜻
┝ 요구 사항 변화에 유연하게 대응
┝ 고객과의 소통에 초점, (실행되는 SW, 고객 중심 개발)
┝ 스프린트, 이터레이션이라는 짧은 주기 반복 => 주기 끝날 때마다 테스트
└ 우선순위 부여, 소규모 프로젝트
ex) 스크럼, 칸반, 크리스털, ASD, FDD, DSDM, DAD, XP, Lean
2. 스크럼 기법 : 팀 중심으로 효율성 높인다는 의미, 팀원 스스로 팀 구성 및 해결
┌ 제품 책임자(PO : Product Owner) : 요구 사항, 백로그 작성, 우선순위 지정/의뢰자, 사용자
├ 스크럼 마스터(SM : Scrum Master) : 객관적 시각에서 조언, 점검, 공론화, 팀원 통제 X
└ 개발팀 (DT : Development Team) : PO, SM 제외 모든 참여자, 7~8명
*과정
1. 제품 백로그 : 우선순위에 따라 나열 목록, 지속적 업데이트, 릴리즈 계획 수립
2. 스프린트 게획 회의 : 단기 일정 수립, 태스크 작업 단위 분할 후 스프린트 백로그 작성
3. 스프린트 : 실제 개발 작업(2~4주), 작업시간 추정 후 개발 담당자에게 할당, 태스크 직접 선별
4. 일일 스크럼 회의 : 매일 약속된 시간 점검, SM이 장애 요소 해결 도와줌
5. 스프린트 검토 회의 : 참석자 앞에서 테스팅, 한 주당 한 시간 내로 진행, 개선사항 정리, 업뎃
6. 스프린트 회고 : 주기 되돌아보며 확인 및 기록, 스프린트 끝난 시점 수행 or 일정 주기로 수행
3. XP 기법 : 요구사항 유연히 대응하기 위해 고객 참여, 개발 과정 반복 극대화 => 생산성 향상
-릴리즈의 기간 짧게 반복 => 고객의 요구사항에 대한 가시성(대상 확인 정도)을 높임
-핵심가치 : 의사소통, 단순성, 용기, 존중, 피드백
-XP의 주요 실천방법 : Pair Programming, Test-Driven Development, Whole Team, Continuous Integration, Design Improvement, Small Releases
*과정
1. 사용자 스토리 : 요구사항 시나리오로 표현, 테스트 케이스 우선 작성
2. 릴리즈 계획 수립 : 부분 혹은 전체 개발 완료 시점에 대한 일정 수립
3. 스파이크 : 신뢰성 높이고 위험 줄이기 위해 만든 Program, 처리 외 문제 모두 무시
4. 이터레이션 : 하나의 릴리즈를 더 세분화 한 단위, 1~3주 기간 진행
5. 승인 검사 : 계획된 릴리즈 단위의 부분 완료 제품이 구현되면 수행, 고객이 직접 테스트
6. 소규모 릴리즈 : 기능별 확인 가능, 유연 대응 가능, 최종 결과물 고객에게 전달
4. 요구사항 정의 : 제약조건 나타냄, 기준과 근거 제공, 의사소통 원활히 해줌
- 기술하는 내용에 따라 ┌ 기능 요구사항 : 무엇을 하는지, 어떻게 하는지 ex) 결정, 수정, 조회
└ 비기능 요구사항(성능) : 품질이나 제약사항 ex) 확장성, 가용성, 보안성, 신뢰성, 호환성
- 기술관점, 대상의 범위에 따라 ┌ 사용자 요구사항 : 사용자 관점
└ 시스템 요구사항 : 개발자 관점
- 요구사항 개발 프로세스(타당성 조사 선행)
1. 도출 : (요구사항 수집, 식별, 이해), 개발자 고객 사이 관계 형성, 이해관계자 식별, 지속적 반복, 효율적인 의사소통 중요 ex) 인터뷰, 설문, 브레인스토밍, 워크샵, 프로토타이핑, 유스케이스
2. 분석 : (명확하지 않거나 모호한 부분 걸러내는 과정), 사용자 요구사항 타당성 조사, 비용과 일정의 제약 설정, SW 범위 파악
┌ 요구사항 분류 : 분류(기능, 비기능으로 분류)
├ 개념 모델링(핵심) : 단순화하여 표현하는 과정, 다양하게 표현, 종속성 반영, UML 사용
├ 요구사항 할당 : 구성요소 식별
├ 요구사항 협상 : 충돌 해결 => 우선순위 부여
└ 정형 분석 : 구문(Syntax), 의미(Sementics)를 갖는 언어 이용 => 수학적 기로 표현 => 분석
3. 명세 : (문서화), 기능 요구사항 빠짐없이 기술, 비기능 요구사항 필요한 것만 기술, 추적 가능
4. 확인 : (검증), 검토 활동, 형상 관리
┌ 요구사항 검토 : 문서화된 요구사항 훑어보면서 확인하는 가장 일반적인 방법
├ 프로토타이핑 : 요구사항 반영하면서 지속적인 프로토타입 재작성(단점 : 프로토타입에만 집중될 가능성, 과대평가, 비용 부담)
├ 모델 검증 : 개발 모델이 요구사항 충족하는지 검증, 정적 분석 수행
└ 인수 테스트 : 모두 충족되는지 사용자 입장에서 확인, 계획 세우고 테스트
5. UML(Unified Modeling Language) : 의사소통 원활 위해 표준화 한 대표적인 객체지향 모델링 언어, 객체지향 방법론 장점 통합
- 관계
● 다이어그램
- 구조적 다이어그램 : 정적 모델링에서 쓰임 / - 행위 다이어그램 : 동적 모델링에서 쓰임
┌ 클래스 ┌ 유스 케이스
├ 객체 ├ 시퀀스(순차)
├ 컴포넌트 ├ 커뮤니케이션
├ 배치 ├ 상태
├ 복합체 구조 ├ 활동
└ 패키지 ├ 상호작용 개요
└ 타이밍