1. 소프트웨어 생명주기
> 소프트웨어 생명주기
- 소프트웨어를 개발하기 위한 과정을 단계별로 나눈 것
- 모형(폭포 모형을 나선형으로 애자일하게 프로토타입 부터 개발해보자!)
1) 폭포수 모형
2) 프로토 타입 모형
3) 나선형 모형
4) 애자일 모형
> 폭포수 모형(Water fall)
- 각 단계를 확실히 매듭짓고 결과를 검토하여 승인 과정을 거친 후 다음 단계 진행
- 고전적 생명 주기 모형
- 가장 오래되고 가장 폭넓게 사용된 전통적 모형
> 프로토타입 모형(Prototype)
- 실제 개발될 소프트웨어에 대한 견본품을 만들어 최종 결과물을 예측하는 모형
> 나선형 모형(Spiral)
- 여러 번의 소프트웨어 개발 과정을 거쳐 점진적으로 개발
- 보헴이 제안
- 계획 수립 > 위험 분석 > 개발 및 검증 > 고객 평가(계분개평)
> 애자일 모형(Agile)
- 요구사항 변화에 유연하게 대응할 수 있도록 일정한 주기를 반복하면서 개발
- 폭포수 모형과 대조적
- Scrum, XP, 칸반, Lean, 기능 중심 개발(FDD)
2. 스크럼
> Scrum
- 팀이 중심이 되어 개발의 효율성을 높임
- 팀 : 제품 책임자, 스크럼 마스터, 개발팀
~ 제품 책임자(PO) : 백로그 작성 주체, 제품에 대한 이해도가 가장 높음
~ 스크럼 마스터(SM) : 스크럼 팀이 스크럼을 잘 수행할 수 있도록 가이드 역할
~ 개발 팀(DT) : PO와 SM을 제외한 팀원, 제품 개발
- 계획 > 진행(스프린트) > (데일리 스크럼)회의 > 검토 > 스프린트 회고
3. XP(eXtreme Programming)
> XP
- 고객의 참여와 개발 과정의 반복을 극대화하여 생산성 향상
- 핵심 가치(용존의 피단)
: 용기, 존중, 의사소통, 피드백, 단순성
- 계획(릴리즈 계획 수립) > 진행(이터레이션) > 승인 검사 > 출시(소규모 릴리즈)
> XP 실천 방법
- Pair Programming(짝 프로그래밍): 다른 사람과 함꼐 프로그래밍 수행
- Collective Ownership(공동 코드 소유) : 코드에 대한 권한, 책임을 공동으로 소유
- Test-Driven Development(테스트 주도 개발) : 테스트 지속적 수행
- Whole Team(전체 팀) : 개발에 참여하는 모든 구성원은 역할이 있고 책임을 가져야 함
- Continuous Integration(지속적 통합) : 모듈 단위의 코드를 지속적으로 통합
- Refactoring(리팩토링) : 기능 변경없이 시스템 재구성
- Small Release(소규모 배포) : 릴리즈 기간을 짧게 반복하여 요구 변화에 신속 대응
4. 개발 기술 환경 파악
> 운영체제 : 컴퓨터를 편리하고 효율적으로 사용할 수 있도록 환경을 제공하는 소프트웨어, 컴퓨터 시스템 자원을 효율적으로 관리
- 식별 시 고려 사항 : 가성기주구 ~ 가용성, 성능, 기술지원, 주변 기기, 구축 비용
> DBMS : 사용자와 DB 사이에서 정보 생성, DB 관리를 해주는 소프트웨어
- 식별 시 고려 사항 : 가성기상구 ~ 가용성, 성능, 기술지원, 상호 호환성, 구축 비용
> WAS(웹 어플리케이션 서버) : 동적인 콘텐츠를 처리하기 위해 사용되는 미들웨어
- 식별 시 고려 사항 : 가성기구 ~ 가용성, 성능, 기술지원, 구축 비용
> 오픈소스 : 제한 없이 사용할 수 있도록 소스코드를 공개한 소프트웨어
- 식별 시 고려 사항 : 라사기 ~ 라이선스 종류, 사용자 수, 기술의 지속가능성
5. 요구사항
> 요구사항
- 소프트웨어가 제공하는 서비스에 대한 설명과 운영되는데 필요한 제약 조건
- 유형 : 기능 요구사항, 비기능 요구사항, 사용자 요구사항, 시스템 요구사항 > 사기시비(요구사항으로 "사기 시바(비)")
> 기능 요구사항 : 기능이나 수행에 관련된 요구사항
> 비기능 요구사항 : 품질이나 제약 사항과 관련된 요구사항
> 사용자 요구사항 : 사용자 관점에서 본 시스템이 제공해야 할 요구사항
> 시스템 요구사항 : 개발자 관점에서 본 시스템 전체가 제공해야 할 요구사항
6. 요구사항 개발 프로세스
> 요구사항 개발 프로세스 : 도출 > 분석 > 명세 > 확인 (도분명확)
> 요구사항 도출 : 청취, 인터뷰, 설문, 브레인스토밍, 워크샵, 프로토타이핑, 유스케이스
> 요구사항 분석 : 자료 흐름도(DFD), 자료사전(DD)
> 요구사항 명세 : 소단위 명세서 사용 가능, 문서화
> 요구사항 확인 : 명세서 검토
> 요구공학 : 요구사항을 정의하고 분석 및 관리하는 학문
> 요구사항 명세 기법
- 정형 명세 : 수학적 원리, 모델 기반, 수학적 기호
- 비정형 명세 : 상태, 기능, 객체 중심, 자연어 기반
7. 요구사항 분석
> 요구사항 분석 - 개발 대상에 대한 사용자의 요구사항을 이해하고 문서화 하는활동
> 구조적 분석 기법 : 자료의 흐름과 처리를 중심으로 분석
: 자료흐름도, 자료사전, 소단위 명세서, 개체 관계도(ERD), 상태 전이도(STD), 제어 명세서
> 자료 흐름도 : 자료 흐름 및 변환 과정과 기능을 도형 중심으로 기술, 버블 차트라고도 함
1) 프로세스(Process) : 자료를 변환시키는 시스템의 한부분, 처리, 기능, 변환, 버블이라고도 부름
2) 자료 흐름(Data Flow) : 자료의 이동(흐름), 연관관계
3) 자료 저장소(Data Store) : 시스템에서의 자료 저장소(파일, DB)
4) 단말(Terminator) : 시스템과 교신하는 외부 개체
> 자료 사전 : 자료 흐름도에 있는 자료를 자세히 정의하고 기록
1) = : 자료의 정의
2) + : 자료의 연결(and)
3) () : 자료의 생략
4) [] : 자료의 선택(or)
5) {} : 자료의 반복 > 아랫첨자 n : n 이상 반복, 윗첨자 n : n 이하 반복
6) "" : 자료의 설명, 주석
8. 요구사항 분석 CASE와 HIPO
> 요구사항 분석용 Case(자동화도구)
- 요구사항을 자동으로 분석, 요구사항 분석 명세서를 기술하도록 개발된 도구
- SADT, SREM, PSL/PSA, TAGS
> HIPO(Hierachy Input Process Output)
- 시스템 실행 과정인 입력, 처리, 출력의 기능 표현
- 하향식 소프트웨어 개발을 위한 문서화 도구
- 가시적 도표, 총체적 도표, 세부적 도표