220911 정보처리기사 실기
소프트웨어 생명주기 모델 프로세스
1. 요구사항 분석
- 요구와 조건을 결정하는 단계
- 활동: 기능 요구사항, 비기능 요구사항
2. 설계
- 정의한 기능을 실제 수행할 수 있도록 방법을 논리적으로 결정하는 단계
- 활동: 시스템 구조 설계, 프로그램 설계, 사용자 인터페이스 설계
3. 구현
- 프로그래밍 언어 등을 결정하고 사용하여 실제 프로그램을 작성
- 활동: 인터페이스 개발, 자료구조 개발, 오류 처리
4. 테스트
- 검사하고 평가
- 활동: 단위 테스트, 통합 테스트, 시스템 테스트, 인수 테스트
5. 유지보수
- 시스템이 인수되고 설치된 후 일어나는 모든 활동
- 활동: 예방, 완전, 교정, 적응, 유지보수
소프트웨어 생명주기 모델 종류
- 폭포수 모델(Waterfall Model)
- 단계를 마무리 지어야 넘어감, 가장 오래된 모델, 선형 순차적 모형으로 고전적 생명주기 모형, 경험과 사례 많음, 단계별 정의와 산출물 명확, 요구사항 변경 어려움
- 절차: 타당성 검토 → 계획 → 요구사항 분석 → 설계 → 구현 → 테스트 → 유지보수
- 프로토타이핑 모델(Prototyping Model)
- 요구한 주요 기능을 프로토타입으로 구현하여, 피드백을 반영하면서 소프트웨어를 만들얻나가는 모델, 발주자 개발자 모두에게 공동의 참조 모델 제공, 프로토타입은 구현 단계의 구현 골격
- 나선형 모델(Spiral Model)
- 시스템 개발 시 위험을 최소화하기 위해 점진적으로 완벽한 시스템으로 개발해 나가는 모델
- 절차: 계획 및 정의 → 위험 분석 → 개발 → 고객 평가 (절차를 반복함)
- 반복적 모델(Iteration Model)
- 구축대상을 나눠 병렬적으로 개발 후 통합하거나, 반복적으로 개발하여 점증 완성시키는 모델, 요구사항의 일부분이나 제품 일부분을 반복적으로 개발하여 최종 시스템으로 완성
소프트웨어 개발 방법론 종류
- 구조적 방법론(Structured Development)
- 전체 시스템을 기능에 따라 나눠 개발하고 이를 통합하는 분할과 접근 방식, 프로세스 중심의 하향식 방법론, 구조적 프로그래밍을 위해 나씨-슈나이더만(Nassi-Shneiderman) 차트 사용
- 나씨-슈나이더만 차트: 논리의 기술에 중점을 둔 도형식 표현 방법, 연속, 선택 및 다중 선택, 반복 등의 제어 논리 구조로 표현, 조건이 복합되어 있는 곳의 처리를 시각적으로 명확히 식별하는데 적합
- 정보공학 방법론(Information Engineering Development)
- 정보 시스템 개발에 필요한 관리 절차와 작업 기법을 체계화, 개발 주기를 이용해 대형 프로젝트를 수행하는 체계적인 방법론
- 객체 지향 방법론(Object-oriented Development)
- ‘객체’라는 기본 단위로 시스템을 분석 및 설계하는 방법론, 복잡한 현실 세계를 사람이 이해하는 방식으로 시스템에 적용, 객체/클래스/메시지를 사용
- 컴포넌트 기반 방법론(CBD; Component Based Development)
- 컴포넌트를 조립해서 프로그램을 작성하는 방법론, 개발 기간 단축으로 생산성 향상, 새로운 기능 추가 쉬움(확장성), 재사용 가능
- 애자일 방법론(Agile Development)
- 절차보다 사람 중식으로 변화에 유연하고 신속하게 적응하여 효율적으로 시스템 개발, 개발 과정의 어려움을 극복하기 위해 모색한 방법론
- 제품 계열 방법론(Product Line Development)
- 특정 제품에 적용하고 싶은 공통된 기능을 정의하여 개발, 임베디드 소프트웨어를 작성하는 데 유용, 영역 공학과 응용 공학으로 구분
- 영역 공학: 영역 분석, 영역 설계, 핵심 자산을 구현하는 영역
- 응용 공학: 제품 요구분석, 제품 설계, 제품을 구현하는 영역
애자일 방법론
개념
- 절차보다 사람 중심, 변화에 유연하고 신속하게 적응하면서 효율적으로 시스템을 개발.
- 개발 기간이 짧고 신속, 폭포수 모형에 대비되는 방법론으로 개발과 함께 즉시 피드백을 받아서 유동적으로 개발.
등장 배경
- 기존 개발 방법론의 한계 극복: 변화에 신속한 대응 어려움, 빠르게 적용하고 효율적으로 개발할 수 있는 방법의 필요
- 소프트웨어 개발환경의 변화: 트렌드가 모바일로 변화, 시장 적시성과 잦은 배포의 중요성 부각
유형
XP, 린(Lean), 스크럼(SCRUM) 등이 있다.
XP (eXtreme Programming)
- 1~3주의 반복(Iteration) 개발주기, 5가지 가치와 12개 실천항목.
- 5가지 가치
- 용기(Courage): 테스트, 빠르게 피드백, 리팩토링
- 단순성(Simplicity): 필요한 것만 한다
- 의사소통(Communication): 개발자, 관리자, 고객 간의 원활한 소통
- 피드백(Feedback): 의사소통에 대한 빠른 피드백
- 존중(Respect): 팀원 간의 상호 존중
- 12가지 기본원리
- 짝 프로그래밍 (Pair Programming): 개발자 둘이서 짝으로 코딩
- 공동 코드 소유 (Collective Ownership): 코드는 누구든지 언제라도 수정 가능
- 지속적인 통합 (CI; Continuous Integration): 매일 여러번씩 통합하고 빌드해야한다.
- 계획 세우기 (Planning Process): 고객이 요구하는 비즈니스 가치를 정의하고, 개발자가 필요한 것은 무엇이며 어떤 부분에서 지연될 수 있는 지 알려줘야함
- 작은 릴리즈 (Small Release): 작은 시스템 먼저 만들고, 짧은 단위로 업데이트
- 메타포어 (Metaphor): 공통 이름 체계와 시스템 서술서를 통해 고객과 개발자 간의 의사소통 원활
- 간단한 디자인 (Simple Design): 현재 요구사항에 적합한 가장 단순한 시스템 설계
- 테스트 기반 개발 (TDD; Test Driven Develop): 테스트를 먼저 수행하고 이 테스트를 수행할 수 있도록 코드 작성
- 리팩토링 (Refactoring): 기능을 바꾸지 않으면서 중복 제거, 단순화 등을 위해 재구성
- 40시간 작업 (40-Hour Work): 피곤으로 실수하지 않도록 주 40시간 일하지 말아야한다.
- 고객 상주 (On Site Customer) : 개발자들의 질문에 즉각 대답해 줄 수 있는 고객을 상주시켜야한다.
- 코드 표준 (Coding Standard): 모든 코드에 대한 코딩 표준을 정의
스크럼 (SCRUM)
- 매일 정해진 시간, 장소에서 짧은 시간의 개발을 하는 팀을 위한 프로젝트 관리 중심
- 주요 개념
- 백로그 (Backlog): 제품과 프로젝트에 대한 요구사항
- 스프린트 (Sprint): 2~4주의 짧은 개발 기간 반복적 수행으로 질 향상
- 스크럼 미팅 (Scrum Meeting): 매일 15분정도 미팅으로 To-Do List 계획 수립
- 스크럼 마스터 (Scrum Master): 프로젝트 리더, 스크럼 수행시 문제를 인지 및 해결하는 사람
- 스프린트 회고 (Sprint Retrospective): 스프린트 주기를 돌아보며 규칙 준수 여부 개선점 등을 확인 및 기록, 스프린트 끝난 싲점이나 일정 주기로 시행
- 번 다운 차트 (Burn Down Chart): 남아있는 백로그 대비 시간을 그래픽적으로 표현한 차트, 백로그는 수직축, 시간은 수평축
린 (LEAN)
- 낭비 요소를 제거하여 품질을 향상
- JIT(Just In Time), 칸반(Kanban) 보드 사용
- 7가지 원칙: 낭비제거, 품질 내재화, 지식 창출, 늦은확정, 빠른 인도, 사람 존중, 전체 최적화
'스터디 > 웹개발' 카테고리의 다른 글
| 2022년09월13일 TIL - 포트폴리오, 워킹플로우, 피그마, 자바스크립트 (0) | 2022.09.18 |
|---|---|
| 2022년09월12일 TIL - 정보처리기사 실기 정리 (0) | 2022.09.18 |
| 01. 반응형 웹 기본 개념 이해하기 (2) | 2022.09.11 |
| 리액트 프로젝트 시작하기 (0) | 2022.08.30 |
| 나만의 홈페이지 만들기 - GitHub.io (0) | 2022.08.28 |