일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 29 | 30 |
- 티스토리챌린지
- APM
- 코틀린 코루틴의 정석
- CKA
- AI
- mysql 튜닝
- minikube
- 정보처리기사실기 기출문제
- AWS EKS
- 정보처리기사 실기
- CloudWatch
- kotlin spring
- Pinpoint
- MySQL
- IntelliJ
- aws
- Java
- kotlin coroutine
- 정보처리기사 실기 기출문제
- 오블완
- Elasticsearch
- Spring
- CKA 기출문제
- 공부
- 기록으로 실력을 쌓자
- Linux
- PETERICA
- kotlin
- kotlin querydsl
- Kubernetes
- Today
- Total
피터의 개발이야기
[소프트웨어 공학] 소프트웨어 생명 주기 Software Life Cycle 본문
소프트웨어 생명 주기 (Software Life Cycle)
소프트웨어를 체계적으로 개발하기 위해, 개발 과정을 요구분석 -> 시스템명세 -> 설계 -> 구현 ->테스트-> 유지보수 단계로 나누어 구분합니다.
1. 요구사항 분석(Requirements Analysis)
- 개발할 소프트웨어의 기능과 제약조건, 목표 등을 소프트웨어 사용자와 함께 명확히 정의하는 단계
- 개발할 소프트웨어의 성격을 정확히 이해하고, 개발 방법과 필요한 개발 자원 및 예산을 예측 단계
- 요구명세서를 산출물로 작성
2. 시스템 명세(System Specification)
- 시스템이 무엇을 수행해야 하는가를 정의하는 단계
- 입력자료, 처리내용, 생성되는 출력이 무엇인지를 정의
- 시스템 기능 명세서 작성
3. 설계(Design)
- 시스템 명세 단계에서 정의한 기능을 실제로 수행하기 위한 방법을 논리적으로 결정하는 단계
- 시스템 구조 설계 ; 시스템을 구성하는 내부 프로그램이나 모듈 간의 관계와 구조 설계로 구분할 수 있습니다.
- 프로그램 설계 ; 프로그램 내의 각 모듈에서의 처리 절차나 알고리즘을 설계
- 사용자 인터페이스 설계 ; 사용자가 시스템을 사용하기 위해 보여지는 부분 설계
* 하향식 설계(Top-down Design)
- 하위 단계로 갈수록 더 구체적으로 세부 문제를 정의한다.
- 마지막으로 최하위 단계로 분할(divide)된 작은 단위의 문제들을 각각 처리함으로써 전체 문제를 해결(conquer)한다.
* 상향식 설계(Bottom-up Design)
- 최하위 단계의 작은 단위를 먼저 해결하고, 이를 이용해 상위 단계의 문제를 해결한다.
- 최하위 단위의 문제들에 대해 기존에 개발되어 있는 문제해결 도구를 재사용하는 경우 개발 기간과 비용 단축 및 신뢰성 확보.
* 객체지향 설계(Object-oriented Design)
- 하위 단위의 문제해결 도구를 재사용한다는 점에서 상향식 설계와 유사
- 작은 단위의 문제에 대해 문제해결을 위한 데이터와 처리방법을 묶어서 객체를 만들고, 객체를 재사용.
4. 프로그래밍(Programming)
- 설계 단계에서 논리적으로 결정한 문제 해결 방법(알고리즘)을 프로그래밍 언어를 사용하여 실제 프로그램을 작성하는 단계
ex) 사용할 언어 선택, 프로그래밍 기법과 스타일, 프로그래밍 순서
- 프로그래밍 기법
ex) 구조화 프로그래밍, 모듈러 프로그래밍
5. 테스트(Testing)
- 개발한 시스템이 요구사항을 만족하는지, 실행결과가 예상한 결과와 정확하게 맞는지를 검사하고, 평가하는 일련의 과정
- 숨어있는 오류를 최대한 찾아내어 시스템 완성도를 높이는 단계
- (1단계) 단위 테스트(Unit Test)
시스템의 최소 구성요소가 되는 모듈들에 대해 개별적으로 시행하여 요구사항 명세서에 기술된 기능을 제대로 수행하는지를 테스트
- (2단계) 통합 테스트(Integration Test)
단위 테스트를 통과한 모듈을 모아서 전체 시스템을 완성하기 위해 통합적으로 시행하는 테스트
- (3단계) 인수 테스트 (Acceptance Test)
시스템을 완성된 제품으로 보고 실제 데이터를 사용하여 시스템을 테스트하는 과정
실질적으로 시스템이 사용되기 위해 마지막으로 시행되는 테스트
6. 유지보수(Maintenance)
- 시스템이 인수되고, 설치된 후 일어나는 모든 활동
- 프로그램 오류 수정, 시스템 디자인 수정, 새로운 요구사항 추가, 시스템 사용환경 변화에 대한 교정 등
정리참조
https://songeunjung92.tistory.com/10
'개발이야기' 카테고리의 다른 글
프로젝트 관리 시스템 정의 (0) | 2023.04.12 |
---|---|
비동기 개발의 중요성, Netty 창시자 이희승님 이야기를 읽고... (0) | 2023.02.23 |
Mac에서 port 프로세스 kill하기 (0) | 2021.02.06 |
웹페이지 내에 PDF 웹 뷰어 만들기 (0) | 2021.01.21 |
SSO란 무엇인가? (0) | 2021.01.11 |