TY blog

소프트웨어 공학 프로세스 본문

소프트웨어 공학

소프트웨어 공학 프로세스

주짓수하는 개발자 2023. 9. 13. 00:35
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. 운영 및 유지보수 : 시스템이 설치되고 사용되어 오류수정, 구현 개선, 새로운 요구사항 반영 

 

* 특징 

  1. 각 단계의 결과로 승인된 하나 또는 그 이상의 문서( 구체화된 산출물 )들이 나와야 한다. 
  2. 이전 단계가 끝나기 전 까지는 다음 단계를 시작하지 않는다. 
  3. 프로세스 진행상황을 산출물로 확인이 가능하다. 
  4. 명세화 완료 후 요구사항 변경 시 작업이 어렵다. ( 요구사항이 빠르게 변화하는 환경에서는 적합하지 않음 )

2. 점증적 모델 ( incremental model )  

 - 점진적으로 명세화, 개발 및 검증 활동이 서로 중첩되며, 개발이 완료될 때까지 이 활동을 점진적으로 추가하는 모델이라고 한다. (plan-driven OR agile

 

점증적 개발 단계

초기구현 -> 사용자 피드백 -> 여러 버전을 거쳐 진화 

 

* 특징 

  1. 점증적으로 소프트 웨어 요구사항이 빨리 변경되는 상황에 적합하다. 
  2. 점증적 기능추가로 사용자 요구사항이 즉각 반영될 수 있다.
  3. 시스템을 개발하는 과정에서 버전 관리, 개발 진척도 확인이 어렵다.
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
Comments