밍경송의 E.B
<3> Software Processes 본문
이 글은 시험이 약 11시간 남은 학부생이 중간고사 암기를 위해 적은 글입니다...........내용은 지현박 교수님의 강의자료를 참고하였음을 밝힙니다.
✔️SW Process에 반드시 포함되는 활동들
- 명세화 : SW 시스템이 할 일을 정의
- 설계 및 구현 : 시스템의 구조 정의 및 구현
- 검증 : SW가 고객이 원하는 것과 일치하는지 확인
- 진화 : 변화하는 고객의 요구를 만족시키기 위한 진화
*SW process model은 SW process를 단순(추상화)한 것
✔️Process를 설명할 때 포함되는 것
- 제품, 프로세스 활동의 결과물
- 역할, 프로세스에 참여한느 사람들의 책임 (의사결정자, 고객 ..)
- 사전/사후 사건, 프로세스 활동이 이루어지거나 제품이 만들어지는 전/후에 만족해야 하는.
✔️SW Process model
1) 폭포수 모델 (The waterfall model) : SW 개발 Process를 별도의 식별된 단계로 나누어 표현
* 문제점
- 고객의 요구 사항 변경 요구에 대응이 어려움
=> 요구사항이 잘 이해되고 (명확) , 설계 과정에서 변경이 제한될 때 적합
=> 시스템이 여러 사이트에서 개발되는 대규모 시스템 엔지니어링 플젝에 주로 사용
ㄴ폭포수 모델의 계획 중심 특성이 이러한 플젝에 효과적!
2) 점증적 개발(Incremental development model)
*이점
- 고객 요구 사항 변경을 수용하는 비용 절감 (재분석, 재작성의 양이 1)보다 훨씬 적음)
- 이미 진행된 작업에 대한 피드백이 쉬움
- 고객에게 유용한 SW를 빠르게 전달/배포하는 것이 가능함
*문제점
- 프로젝트가 가시적이지 않음 (모든 버전을 반영한 문서 작성 -> 비효율적)
- 새로운 증가분이 반영되면서 구조 훼손 경향 있음 (장기적인 변경으로 인한 구조 손상)
3) 재사용 기반 소프트웨어 공학 모델(Reuse-oriented SW engineering model) : 시스템이 기존 구성 요소/ COTS 에 통합되는 체계적인 재사용을 기반으로 함
*이점
- 개발해야 하는 SW 양 감소
- 비용 감소
- 고객에게 빠른 전달 가능
*문제점
- 요구사항 타협 불가피
- 사용자의 진정한 요구사항 만족이 어려움 (재사용.._특성)
⭐ 기차에 대한 기어 제어 모델의 경우 요구 사항이 명확하고 크게 변경될 가능성이 낮기 때문에 1) 폭포수 모델을 사용하는 것이 좋겠고, 여행 플래너 시스템의 경우 사용자와의 소통과 그들의 사용성이 중시되기 때문에 2) 점증적 개발 모델을 사용해 피드백을 빠르게 반영하는 것이 좋겠음. 추가로 수강신청 시스템을 개발하는데, 기존에 타학교의 수강신청 시스템을 개발해본 적이 있다면, 3) 재사용 기반 소프트웨어공학 모델을 사용해 기존 모델을 활용하는 것이 좋겠음.
✔️More about Process activities
1) 명세화(specification)
: 시스템을 개발하기 위해 어떤(WHAT) 서비스가 필요한지 이해/정의 + 시스템의 운영과 개발에 대한 제약사항 찾아내기
2) 설계와 구현(design and implementation)
: 설계 - 명세화를 실현하는 구조를 설계
구현 - 설계된 구조를 실행가능한 프로그램으로 변환
*설계와 구현은 밀접하게 관련되어 있으며 중첩 가능
3) 검증과 확인(Verification and Validation)
: 주어진 명세를 잘 따르고 있다는 것 + 고객의 요.사를 만족시키고 있다는 것을 보여주기
=> 확인, 검토(review), 테스팅 포함
✔️ 테스팅의 단계
- 컴포넌트 테스트 : 개별 구성요소는 독립적으로 테스트
- 시스템 테스트 : 시스템 전체를 테스트
- 수락 테스트 : 시스템이 고객의 요.사를 충족하는지 고객 데이터로 테스트
4) 진화(evolution)
: 변화하는 비즈니스 환경으로 요구사항이 변경됨 -> 비즈니스를 지원하는 SW도 진화/변경되어야 함.
✔️SW 프로젝트의 변경
- 비즈니스의 변화로 인해 새롭고 변경된 시스템의 요구사항
- 새로운 기술 => 설계나 구현 개선에 대한 새로운 접근의 가능성
- 플랫폼 변경 => 어플리케이션 변경 필요
*변경 비용에는 요구사항 재분석 + 새로운 기능 구현 등이 들어감.
✔️Rework의 Cost 줄이는 방법
1) 프로토 타이핑 : 제품의 아이디어를 시연하고 디자인 선택사항들을 시도 ; 시스템의 초기 버전
- 시스템의 요.사 도출과 검증에 도움 (요구 공학 프로세스에서)
- 선택 가능한 옵션 탐색 + UI 개발 (설계 프로세스에서)
*이점 : 사용자의 실제 요구사항에 초기 단계부터 가까워 질 수 있음
- 사용성 향상
- 디자인 품질 향상
- 개발 노력 감소 (수정의 경우)
*비기능 요구사항보다 기능 요구사항에 중점 / 잘 이해되지 않는 제품 영역에 초점
*폐기 프로토타입 : 프로토타입은 생산 시스템의 좋은 기반이 아니므로 개발 후 폐기 !
- 비기능 요.사를 충족하도록 조정이 불가능할 수 있음.\
- 문서화되지 않음
- 급격한 변경으로 인해 저하됨
-일반적인 조직의 품질 표준을 충족하지 못할 수 있음 (수출의 경우)
2) Incremental delivery
: 시스템을 한 번에 제공하는 대신, 개발과 인도를 증분(Increments)로 나눔 -> 개발 후 일부를 고객에게 전달
* 요구 사항에서 정한 우선 순위에 따라 초기 증분에 이를 포함 ; 개발이 시작되면 현재 증분에 대해서는 요구 사항이 동결.
3) Boehm's spiral model
: 사람들이 SW 프로세스의 반복에 대해 생각하도록 돕고, 위험 중심 접근 방법을 도입하는 데 영향을 미친 모델
-프로세스를 나선형으로 표시 ; 각 루프는 프로세스의 단계를 나타냄 ; 위험은 프로세스 전반에 걸쳐 평가 + 해결됨
-목표 설정 -> 위험 평가 및 감소 -> 개발 및 검증 -> 계획
Cf. 추가 프로세스
-Agile : 신속하게 소프트웨어 모듈을 개발하고 사용자에게 배포
-린(Lean) 사고 방식 : 낭비 요소를 제거하고 사회에 더 많은 혜택을 제공 -> 개인이 일을 통한 가치를 얻을 수 있도록 인간활동을 체계화하는 방법 (신속한 개발)
'CSE > 소프트웨어공학' 카테고리의 다른 글
<5> Architecture design (0) | 2023.10.16 |
---|---|
<4> Requirements Engineering (0) | 2023.10.16 |
<2> Project Planning of Software Engineering 1 (0) | 2023.10.16 |
<2> Project Planning of Software Engineering 1 (0) | 2023.10.16 |
<1> Introduction of Software Engineering (0) | 2023.10.16 |