본문 바로가기

Learn/자료구조와 알고리즘

자료구조와 알고리즘 학습 #3 소프트웨어 생명주기

반응형

2020/08/29 - [Learn/자료구조와 알고리즘] - 자료구조와 알고리즘 학습 #2 자료 표현

 

자료구조와 알고리즘 학습 #2 자료 표현

2020/08/29 - [Learn/자료구조와 알고리즘] - 자료구조와 알고리즘 학습 #1 자료구조 간단히 알아보기 자료구조와 알고리즘 학습 #1 자료구조 간단히 알아보기 자료구조 정의  자료를 효율적으로 사용

javart.tistory.com


자료구조

소프트웨어 생명주기

다른 자료 보기

 

성공적인 소프트웨어 개발이란?

 얼마나 정확하고 효율적으로 소프트웨어를 개발하고 사용 및 관리가 이루어지는가?

- 개발할 소프트웨어에 대한 정확한 이해

- 사용할 자료와 자료 간의 연산 관계를 분석하여 최적의 자료구조 정의

 

Software Life Cycle

- 소프트웨어를 체계적으로 개발하고 관리하기 위해서 개발 과정을 단계별로 나누어 구분한 것

- 일반적으로 6단계로 구분하며 필요할 경우 다시 전 단계로 돌아가며 피드백을 반복 수행하면서 소프트웨어의 완성도를 높인다.

 

 

1) 요구 분석 단계

 - 문제를 분석하는 단계

 - 개발할 소프트웨어의 기능과 제약조건, 목표 등을 소프트웨어 사용자와 함께 명확히 정의하는 단계

 - 개발할 소프트웨어의 성격을 정확히 이해하고 개발 방법과 필요한 개발 자원 및 예산을 측정한다.

 - 요구 명세서를 작성한다.

 

2) 시스템 명세 단계

 - 시스템이 무엇을 수행해야 하는가를 정의하는 단계

 - 시스템 기능 명세서를 작성하는 단계

 - 입력 자료, 처리 내용, 생성되는 출력이 무엇인지를 정의

 - 개발과정에서 의견차이나 오류로 인해 재개발 작업이나 사용자 불만이 발생하지 않도록 가능한 정확하게 작성해야한다.

 

3) 설계 단계

 - 시스템 명세 단계에서 정의한 기능을 실제로 수행하기 위한 방법을 논리적으로 결정하는 단계

= 시스템 구조설계 : 시스템을 구성하는 내부 프로그램이나 모듈 간의 관계와 구조 설계

= 프로그램 설계 : 프로그램 내의 각 모듈에서의 처리 절차나 알고리즘 설계

= 사용자 인터페이스 설계 : 시스템을 사용하는 사용자에게 보여지는 프로그램을 설계

 

설계 단계의 방법

 가) 하향식 설계 방법(Top-Down design)

- 무엇을 수행할 것인지를 정의하는 상위단계에서 각 단계를 내려갈 수록 수행 방법을 구체적으로 정의하고 세분화하는 방법

- 마지막 단계의 작은 단위 문제들을 각각 처리함으로 전체 문제를 해결

- 분할 정복(Divide & Conquer) 방식의 설계 방법

 

 나) 상향식 설계 방법(Bottom-Up design)

 - 최하위 단계에 있는 작은 단위의 문제를 먼저 해결하고 이를 이용하여 상위 단계의 큰 문제를 해결하는 방법

 - 최하위 단위의 문제들에 의해 기존에 개발되어 있는 문제해결 도구(알고리즘)를 재사용하는 경우 개발 기간과 비용 단축 가능

 

4) 구현 단계

 - 설계 단계에서 논리적으로 결정한 문제 해결 방법을 프로그래밍 언어를 사용하여 실제프로그램을 작성하는 단계

 

= 구조화 프로그래밍

 -> 지정문과 조건문, 반복문 만을 사용하여 프로그램을 작성하며, 순차 구조, 선택 구조, 반복 구조의 세가지 제어 구조로 표현한다. 구조가 명확하여 정확성 검증과 테스트 및 유지보수가 용이하다.

= 모듈러 프로그래밍

 -> 프로그램을 여러 개의 작은 모듈로 나누어 계층 관계를 갖도록 구성하는 프로그래밍 기법이다. 각 모듈은 구조화 프로그래밍 기법으로 개발한다. 모듈 별로 개발하면 테스트 및 유지보수, 모듈의 재사용이 가능하다.

 

5) 테스트 단계

- 개발한 시스템이 요구사항을 만족하는지, 실행 결과가 예상한 결과와 정확하게 맞는지를 검사하고 평과하는 일련의 과정

- 오류를 최대한 찾아내어 시스템의 완성도를 높이는 단계

 

테스트의 단계

 - 1단계 단위 테스트(Unit Test) :  시스템의 최소 구성요소가 되는 모듈에 대해서 개별적으로 시행

 - 2단계 통합 테스트(Integeration Test) : 단위 테스트를 통과한 모듈을 연결하여 전체 시스템으로 완성하여 통합 적으로 시행하는 테스트, 구성요소 연결을 점진적으로 확장하면서 테스트 시행(하향/상향식 테스트)

 - 3단계 인수 테스트 : 완성된 시스템을 인수하기 위해서 실제 자료를 사용한 최종 테스트(알파 테스트, 베타 테스트)

 

6) 유지보수 단계

 - 시스템이 인수되고 설치된 후 일어나는 모든 활동 : 오류 및 디자인 수정, 새로운 요구 사항에 대한 기능 추가 등 소프트웨어 생명주기에서 가장 긴 기간 소요

 

유지보수의 유형

 - 수정형 : 사용 중에 발견한 프로그램의 오류 수정 작업

 - 적응형 : 시스템과 관련한 환경적 변화에 적응하기 위한 재조정 작업

 - 완전형 : 시스템의 성능을 향상시키기 위한 개선 작업

 - 예방형 : 앞으로 발생할지 모를 변경 사항을 수용하기 위한 대비 작업

 

 

개발된 소프트웨어 품질 평가

- 정확성 : 요구되는 기능들을 정확하게 수행하는 정도를 평가

- 유지 보수성 : 사용하는 동안 발생하는 변경사항들에 대해 쉽게 수용할 수 있는지를 평가

- 무결성 : 바이러스 등의 외부 공격에 대해 문제가 발생하지 않는 보안성을 평가

- 사용성 : 사용자가 쉽게 사용법을 배우고 편하게 사용할 수 있는 정도를 평가

 

 

반응형