일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
- 사이킷런 회귀
- GIT
- 파이썬
- 자바 열거형
- Python
- oracle
- conda remove
- Java
- 컬렉션 인터페이스
- streamlit
- 셀레니움
- URI 원칙
- h2 데이타베이스
- 머신러닝
- 오라클
- 스프링 부트3
- 차원증가
- 스프링 부트
- 컬렉션 프레임웍
- openai
- REST API
- 쓰레드 풀
- WinError5
- 자바 로그 레벨
- 사이킷런
- Selenium
- 프로그래머스
- 알고리즘
- 완주하지못한선수
- db
- Today
- Total
노트 :
소프트웨어 생명 주기(Software Life Cycle) 본문
* 소프트웨어 공학(SE, Software Engineering): 소프트웨어의 위기를 극복하기 위한 방안으로 연구된 학문으로 여러 가지 방법론과 도구, 관리 기법들을 통하여 소프트웨어의 품질과 생산성을 향상시키고자 함
*소프트웨어 공학의 기본 원칙
① 현대적인 프로그래밍 기술을 계속적으로 적용
② 개발된 소프트웨어의 품질이 유지되도록 지속적으로 검증
③ 소프트웨어 개발 관련 사항 및 결과에 대한 명확한 기록을 유지
1. 소프트웨어 생명 주기: 소프트웨어 개발 방법론의 바탕이 되는 것으로, 소프트웨어를 개발하기 위해 정의하고 운용, 유지보수 등의 과정을 각 단계별로 나눈 것
2. 소프트웨어 생명 주기 모형: 폭포수 모형, 프로토타입 모형, 나선형 모형, 애자일 모형 등
(1) 폭포수 모형(Waterfall Model): 소포트웨어 공학에서 가장 오래되고 폭넓게 사용된 전통적인 소프트웨어 생명주기 모형(=고전적 생명주기 모형)
① 매뉴얼 작성
② 각 단계가 끝난 후 다음 단계를 수행, 앞 단계의 결과물이 명확하게 산출되어야 함
③ 타당성 검토 → 계획 → 요구 분석 → 설계 → 구현 → 검사 → 유지보수
(2) 프로토타입 모형(Prototype Model): 실제 개발될 소프트웨어의 시제품을 만들어 개발 및 평가
① 사용자와 시스템 사이의 인터페이스에 중점을 두어 개발
② 경직된 폭포수 모형의 단점을 보완
(3) 나선형 모형(Spiral Model): Boehm이 제안, 폭포수 모형과 프로토타입 모형의 장점에 위험 분석 기능을 추가
① 나선을 따라 돌듯이 여러 번의 소프트웨어 개발 과정을 거쳐 점진적으로 완벽한 최종 소프트웨어를 개발하고자 함
② 소프트웨어를 개발하면서 발생할 수 있는 위험을 관리하고 최소화
③ 점진적으로 개발 과정이 반복됨(=점진적 모형)
④ 반복되는 개발과정에서 누락사항 또는 추가사항을 반영할 수 있으므로 유지보수 과정이 필요 없음
4. 애자일 모형(Agile Model): 고객의 요구사항에 유연하게 대응할 수 있도록 일정한 주기를 반복하면서 개발을 진행
① 특정 개발 방법론이 아니라 계획, 절차보다 고객과의 소통에 초첨을 맞춘 방법론을 통칭
② 스프린트(Sprint) 또는 이터레이션(Iteration)이라는 개발 주기를 반복하여 일정 주기가 끝날 때마다 테스트하고 결과물에 대한 고객의 평가 및 요구를 수용
③ 소규모 프로젝트, 숙련된 개발자, 변화가 빠른 개발에 적합
④ 애자일 모형을 기반으로 한 소프트웨어 개발 모형: 스크림(Scrum), XP(eXtreme Programming), 칸반(Kanban), 린(Lean) 등
애자일 선언(Agile Manifesto)
* 애자일 개발 핵심 가치
① 프로세스와 도구보다는 개인과 상호작용에 더 가치를 둔다.
② 방대한 문서보다는 실행되는 SW에 더 가치를 둔다.
③ 계약 협상보다는 고객과 협업에 더 가치를 둔다.
④ 계획을 따르기 보다는 변화에 반응하는 것에 더 가치를 둔다.
* 애자일 개발 실행지침
① 유용한 소프트웨어를 빠르고, 지속적으로 제공하여 고객을 만족시킨다.
② 개발 막바지라도 요구사항 변경을 적극 수용한다.
③ 몇 개월이 아닌 몇 주 단위로 실행되는 소프트웨어를 제공한다.
④ 고객과 개발자가 프로젝트 기간에 함께 일한다.
⑤ 개발에 대한 참여 의지가 확실한 사람들로 팀을 구성하고, 필요한 개발 환경과 지원을 제공하며, 일을 잘 끝낼 수 있도록 신뢰한다.
⑥ 같은 사무실에서 얼굴을 맞대고 의견을 나눈다.
⑦ 개발의 진척도를 확인하는 1차 기준은 작동하는 소프트웨어이다.
⑧ 지속 가능한 개발을 장려하고 일정한 속도로 개발을 진행한다.
⑨ 기술적 우수성과 좋은 설계에 지속적인 관심을 기울이면 민첩성이 향상된다.
⑩ 단순화를 추구한다.
⑪ 최상의 아키텍처, 명확한 요구사항, 최상의 설계는 자기 스스로 일을 주도하는 조직적인 팀으로부터 나온다.
⑫ 더 효과적인 팀이 될 수 있는 방안을 정기적으로 깊이 고민하고 그에 따라 팀의 행동을 조정한다.
'자격증' 카테고리의 다른 글
미들웨어(Middleware) (0) | 2023.02.03 |
---|---|
객체지향 분석(OOA, Object Oriented Analysis) (0) | 2023.02.03 |
스크럼(Scrum) 기법 (0) | 2023.02.02 |
UI 설계도구 (0) | 2023.02.02 |
리스코프 치환 원칙(Liskov Substitution Priciple, LSP) (0) | 2023.02.01 |