일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- dbeaver 백업/복구
- 채팅 프로젝트
- 소프트웨어
- 타임리프 참조 오류
- 되돌리기
- AWS 생성
- submit 기본동작
- 환경변수
- vue 추가
- Quartz dependency
- Node Property
- CI/CD
- vue 실행
- firstChild
- 깃허브 토큰 생성
- .ppk
- 배포 자동화
- 깃허브 토큰 발급
- deploy.sh
- EL1021E
- git 폴더 모으기
- document 함수
- Jenkins
- ..gitignore
- 테스팅
- Quartz 라이브러리
- reset
- 자바 swing 프로젝트
- 클래스 참조
- 배열 call by value
- Today
- Total
TY blog
소프트웨어 공학 프로세스 본문
1. 좋은 소프트웨어의 특성
좋은 소프트웨어는 요구되는 기능과 성능을 사용자에게 제공해야 하고 유지보수성(maintainability), 확실성(dependability), 사용성(usability) 이 좋아야 한다.
1. 수용성(acceptability)
- 이해하기 쉽고(understandable), 사용하기 쉽고(usable), 기존 시스템과 호환성(compatible) 이 있어야 한다.
2. 확실성(dependability), 보안성(security)
- 신뢰할 수 있는 소프트웨어 ( 신뢰성(reliability), 보안성(security), 안정성(safety)을 포함하는 여러 가지 의미 )
- 악의적인 사용자가 시스템에 접근하거나 피해를 줄 수 없도록 해야 한다.
3. 효율성 (efficiency)
- 소프트웨어는 메모리나 CPU 타임 등의 시스템 자원을 낭비해서는 안되며, 응답성(responsiveness), 처리시간(processing time), 메모리 활용(memory utilization) 등을 포함한다.
4. 유지보수성 (maintainability)
- 소프트웨어는 고객의 변경 요구에 맞도록 진화할 수 있게 작성되어야 한다.
2. 소프트 웨어 공학 4가지 기본활동
1. 명세화 ( specification ) | 소프트웨어 기능정의, 운영상의 제약조건 정의 ( requrements ) |
2. 개발 ( development ) | 시스템 구조를 정의, 명세를 만족하는 소프트웨어 개발 ( design & implementation ) |
3. 검증 ( validation ) | 고객이 원하는 소프트웨어인지 검증 ( Testing ) |
4. 진화 ( evolution ) | 운영 및 유지보수, 고객의 요구를 충족시키는 기능추가 ( maintenance ) |
1. 계획주도 (plan-driven) 프로세스
- 모든 프로세스 활동(activities)을 미리 계획하고 계획 대비 실적을 측정함
2. 애자일(agile) 프로세스
- 계획을 점증적으로 세우고 고객의 요구를 반영하여 프로세스를 간단히 변경
3. 제품(Product) & 산출물(deliverable)
- 프로세스 활동의 결과물, 프로세스 설명에 포함되어야 한다.
3. 소프트웨어 프로세스 모델
1. 폭포수 모델 ( Waterfall Model )
- 명세화, 개발, 검증과 진화를 기본적인 프로세스 활동을 가지며 개별적인 프로세스 단계로 모델을 나타내며, 개발의 흐름 단계가 마치 폭포수처럼 흐른다 하여 폭포수 모델이라고 한다. (plan-driven)
폭포수 모델의 단계
1. 요구사항 정의 > 2. 시스템/소프트웨어 설계 > 3. 구현 및 단위 테스팅 > 4. 통합 및 시스템 테스팅 > 5. 운영 및 유지보수
1. 요구사항의 정의 : 시스템의 서비스, 제약조건 및 목표를 설정 -> 시스템 명세서 작성
2. 시스템/소프트웨어 설계 : 시스템 아키텍처 수립, 소프트웨어 구성요소 추상화와 이들 간의 관계
3. 구현 및 단위 테스팅 : 소프트웨어 설계를 프로그램으로 실체화, 단위 테스팅에서 각 단위가 명세에 맞는지 확인
4. 통합 및 시스템 테스팅 : 프로그램 단위를 통합하여 완전한 시스템으로서 테스트하고 요구사항이 충족되었는지 확인
5. 운영 및 유지보수 : 시스템이 설치되고 사용되어 오류수정, 구현 개선, 새로운 요구사항 반영
* 특징
- 각 단계의 결과로 승인된 하나 또는 그 이상의 문서( 구체화된 산출물 )들이 나와야 한다.
- 이전 단계가 끝나기 전 까지는 다음 단계를 시작하지 않는다.
- 프로세스 진행상황을 산출물로 확인이 가능하다.
- 명세화 완료 후 요구사항 변경 시 작업이 어렵다. ( 요구사항이 빠르게 변화하는 환경에서는 적합하지 않음 )
2. 점증적 모델 ( incremental model )
- 점진적으로 명세화, 개발 및 검증 활동이 서로 중첩되며, 개발이 완료될 때까지 이 활동을 점진적으로 추가하는 모델이라고 한다. (plan-driven OR agile)
점증적 개발 단계
초기구현 -> 사용자 피드백 -> 여러 버전을 거쳐 진화
* 특징
- 점증적으로 소프트 웨어 요구사항이 빨리 변경되는 상황에 적합하다.
- 점증적 기능추가로 사용자 요구사항이 즉각 반영될 수 있다.
- 시스템을 개발하는 과정에서 버전 관리, 개발 진척도 확인이 어렵다.
4. 애자일 소프트웨어
1. 애자일 기법의 특징
- 명세(specification)와 설계 및 구현(design & implementation) 이 중첩되며 설계 문서를 최소화한다.
- 요구자와의 커뮤니케이션 활성화, 문서 최소화 한다.
- 요구사항과 설계를 따로 다루지 않고 함께 발전시킨다.
- 애자일 관련 기법으로는 익스트림 프로그래밍, 스크럼 기법이 있다.
2. 익스트림 프로그래밍(Extreme programming, XP) 특징
- 반복 개발같이 알고 있는 좋은 방법들을 극단적 수준으로 밀어붙이는 접근법이다.
- 요구사항을 사용자 스토리(user story)라고 하는 시나리오로 표현, 사용자 스토리를 태스크(task)로 나누어 표현
- 프로그래머는 짝으로 개발하고 코드를 작성하기 전에 테스트를 먼저 작성한다.
- 새로운 코드를 시스템에 통합하려면 모든 테스트를 통과해야 한다.
- 시스템을 자주 배포한다.
3. 스크럼
- 애자일 프로젝트를 조직화하고 가시성을 제공하기 위한 프레임워크
- 반복적인 개발을 관리하는데 중점을 둔 방법
* 참고문헌 : (주)한티에듀 소프트웨어공학 제10판
'소프트웨어 공학' 카테고리의 다른 글
소프트웨어 재공학 (0) | 2023.11.07 |
---|---|
소프트웨어 개발 테스팅 (0) | 2023.10.17 |
소프트웨어 아키텍처 설계 (0) | 2023.10.10 |
소프트웨어 시스템 모델링 (0) | 2023.10.03 |
소프트웨어 요구공학 (0) | 2023.09.19 |