정보처리기사
정보처리기사 실기 정리 - 소프트웨어 개발방법론
장주영
2021. 9. 22. 21:46
소프트웨어 개발 방법론
소프트웨어 생명주기 (SDLC : Software Development Life Cycle) :
시스템의 요구분석부터 유지보수까지 전 공정을 체계화한 절차
소프트웨어 생명주기 모델 프로세스 ( 요설구테유 )
- 요구사항 분석 : 기능, 제약조건, 목표 등을 소프트웨어 사용자와 함께 명확히 정의
- 기능 요구사항 : 시스템을 통해 제공되는 서비스 및 기능
- 비기능 요구사항 : 수행 가능한 환경, 품질, 제약 사항 등
- 설계 : 정의한 기능을 실제 수행할 수 있도록 수행 방법을 논리적으로 결정
- 시스템 구조 설계
- 프로그램 설계
- 사용자 인터페이스 (UI) 설계
- 구현 : 특정 프로그래밍 언어를 사용하여 실제 프로그램을 작성 프로그래밍 언어 선택, 기법, 스타일, 순서 등을 결정
- 인터페이스 개발
- 자료구조 개발
- 오류 처리
- 테스트 : 시스템의 요구사항 만족, 결과를 검사하고 평가하는 단계
- 단위 테스트 : 하나의 모듈을 기준으로 독립적으로 진행되는 가장 작은 단위의 테스트
- 통합 테스트 : 모듈을 통합하는 과정에서 모듈 간의 호환성을 확인하기 위해 수행되는 테스트
- 시스템 테스트 : 시스템의 기능뿐만 아니라, 비기능 요구사항도 만족하는지 검증하는 테스트
- 인수 테스트 : 실제 사용자 환경에서, 사용자의 입장에서 검증하는 테스트
- 유지보수 : 시스템 인수 후 일어나는 모든 활동
- 예방, 완전, 교정, 적응 유지보수
소프트웨어 생명주기 모델 종류 ( 폭프나반 )
- 폭포수 모델 : 각 단계를 확실히 마무리 지은 후에 다음 단계로 넘어가는 모델
- 타당성 검토 → 계획 → 요구사항 분석 → 설계 → 구현 → 테스트 → 유지보수
- 단계별 정의와 산출물이 명확
- 프로토타이핑 모델 : 요구한 주요 기능을 프로토타입으로 구현하여, 고객의 피드백을 반영하여 개발하는 모델
- 프로토타입은 구현 단계의 구현 골격
- 나선형 모델 : 위험을 최소화하기 위해 점진적으로 완벽한 시스템으로 개발해 나가는 모델
- 계획 및 정의 → 위험 분석 → 개발 → 고객 평가
- 반복적 모델 : 구축 대상을 나누어 병렬적으로 개발 후 통합하거나, 반복적으로 개발하여 완성시키는 모델
- 요구사항, 제품 일부분을 반복적으로 개발하여 최종 시스템으로 완성하는 모델
소프트웨어 개발 방법론 : 개발 전 과정에 지속적으로 적용할 수 있는 방법, 절차, 기법
- 구조적 방법론 : 기능에 따라 나누어 개발하고, 통합하는 분할과 정복 접근 방식의 방법론
- 나씨-슈나이더만 차트 사용
- 조건 처리를 시각적으로 명확히 식별하는 데 적합
- 논리의 기술에 중점을 둔 도형식 표현 방법
- 나씨-슈나이더만 차트 사용
- 정보공학 방법론 : 정보시스템 개발에 필요한 관리 절차와 작업 기법을 체계화한 방법론
- 객체지향 방법론 : 객체라는 기본 단위로 시스템을 분석 및 설계하는 방법론
- 사람이 이해하는 방식으로 시스템에 적용
- 컴포넌트 기반 방법론 : 컴포넌트를 조립해서 하나의 프로그램을 작성하는 방법론
- 애자일 방법론 : 절차보다는 사람이 중심, 변화에 유연하고 신속하게 적응하는 효율적인 개발 방법론
- 제품 계열 방법론 : 특정 제품에 적용하고 싶은 공통된 기능을 정의하여 개발하는 방법론
- 영역 공학 : 영역 분석, 영역 설계, 핵심 자산을 구현하는 영역
-
더보기응용 공학 : 제품 요구분석, 제품 설계, 제품을 구현하는 영역
애자일 ( in 소프트웨어 개발 방법론)
- 절차보다는 사람이 중심, 변화에 유연하고 신속하게 적응하면서 효율적으로 시스템을 개발할 수 있는 개발 방법론
- 폭포수 모형에 대비되는 방법론
애자일 방법론 유형
- XP (eXtrem Programming) : 의사소통 개선과 즉각적 피드백으로 소프트웨어 품질을 높이기 위한 방법론
- XP의 5가지 가치 : 용기
단순성 - 필요한 것만 하고 그 이상의 것들은 하지 않음 의사소통 - 개발자, 관리자, 고객 간의 원활한 소통 피드백 존중
- 짝 프로그래밍 : 개발자 둘이서 짝으로 코딩
- 공동 코드 소유 : 누구든지 언제라도 수정 가능하다는 원리
- 지속적인 통합 (CI) : 매일 여러 번씩 소프트에어를 통합하고 빌드해야 하는 원리
- 계획 세우기 : 비즈니스 가치를 정의, 개발자에게 필요한 것을 파악하고 지연될 수 있는 요소를 알려줘야 함
- 작은 릴리즈 : 작은 시스템을 먼저 만들고, 짧은 단위로 업데이트
- 메타포어 : 공통적인 이름 체계와 시스템 서술서를 통해 고객과 개발자 간의 의사소통을 원활하게 한다는 원리
- 간단한 디자인 : 요구사항에 적합한 가장 단순한 시스템을 설계한다는 원리
- 테스트 기반 개발 (TDD) : 프로그램에 대한 테스트를 먼저 수행하고 이 테스트를 통과할 수 있도록 실제 프로그램의 코드를 작성
- 리팩토링 : 기능을 바꾸지 않으면서 중복제거, 단순화 등을 위해 시스템 재구성
- 40시간 작업 : 일주일에 40시간 이상 일하지 말아야 함
- 고객 상주 : 개발자들의 질문에 즉각 대답해 줄 수 있는 고객을 상주시켜야 함
- 코드 표준 : 효과적인 공동 작업을 위해 모든 코드에 대한 코딩 표준 정의
- XP의 5가지 가치 : 용기
- 스크럼 : 매일 정해진 시간 장소에서 짧은 시간의 개발을 위한 프로젝트 관리 중심 방법론
- 백로그 : 제품과 프로젝트에 대한 요구사항
- 스프린트 : 2~4 주의 짧은 개발 기간으로 반복적 수행으로 개발 품질 향상
- 스크럼 미팅 (데일리 미팅) : 매일 15분 정도 미팅으로 To-Do List 계획 수립
- 스크럼 마스터 : 프로젝트 리더로 문제 인지 및 해결
- 스프린트 회고 : 스프린트 주기를 되돌아보며 규칙 준수 여부, 개선점 등을 확인 및 기록
- 번 다운 차트 : 백로그 대비 시간을 그래픽적으로 표현한 차트
- 린 : 낭비 요소를 제거하여 품질을 향상시킨 방법론
- 7가지 원칙 : 낭비제거, 품질 내재화, 지식 창출, 늦은 확정, 빠른 인도, 사람 존중, 전체 최적화
비용산정 모형 : 규모 파악을 통한 투입자원, 소요시간을 파악하여 실행 가능한 계획을 수립하기 위한 비용 산정 방식
- 하향식 산정방법 : 경험이 많은 전문가와 조정자를 통해 비용을 산정하는 방식
- 델파이 기법 : 전문가의 경험적 지식을 통해 문제 해결 및 미래예측을 위한 기법
- 상향식 산정방법 : 세부적인 요구사항과 기능에 따라 필요한 비용을 계산하는 방식
- 코드 라인 수 (LoC) : 각 기능별 원시 코드 라인 수의 낙관치, 중간치, 비관치를 측정하여 예측치를 통해 비용 산정
- 예측치 = (낙관치 + 4 * 중간치 + 비관치) / 6
- 비관치 : 가장 많이 측정된 코드 라인 수
- 중간치 : 측정된 모든 코드 라인 수의 평균
- 낙관치 : 가장 적게 측정된 코드 라인 수
- Man Month : 한 사람이 1개월 동안 할 수 있는 일의 양을 기준으로 비용 산정
- Man Month = LoC / 개발자의 월간 생산성
- 프로젝트 기간 = Man Month / 프로젝트 인력
- COCOMO 모형 : 보헴(Bohem)이 제안한 모형으로 프로그램 규모에 따른 비용 산정
- 비용산정 결과는 Man-Month 방식으로 산정
- 조직형 : 기관 내부에서 개발된 중 소규모 소프트웨어로 일괄 자료 처리나 과학 기술 계산용, 비즈니스 자료 처리 개발에 적용 5만 라인 이하
- 반 분리형 : 트랜잭션 처리 시스템, 데이터베이스 관리 시스템, 컴파일러, 인터프리터 등 유틸 개발에 적용 30만 라인 이하
- 임베디드형 : 트랜잭션 처리 시스템이나 운영체제 , 실시간 처리 시스템 등의 시스템 프로그램 개발에 적용 30만 라인 이상
- 푸트남 모형 : 개발 주기의 단계별로 요구할 인력의 분포를 가정하는 방식
- 기능점수(FP) 모형 : 요구 기능을 증가시키는 인자별로 가중치를 부여, 요인별 가중치를 합산하여 총기능의 점수를 계산하여 비용 산정
- 기능점수(FP) = 총 기능점수 * [0.65 + (0.1 * 총영향도)]
- 경험을 바탕으로 단순, 보통, 복잡한 정도에 따라 가중치 부여
- 코드 라인 수 (LoC) : 각 기능별 원시 코드 라인 수의 낙관치, 중간치, 비관치를 측정하여 예측치를 통해 비용 산정
일정관리 모델 : 프로젝트가 일정 기한 내에 완료될 수 있도록 관리하는 모델
- 주 공정법 (CPM) : 모든 자원 제약사항을 배제한 상태로 여러 작업의 수행 순서가 얽혀 있는 프로젝트의 일정을 계산하는 기법
- 프로젝트의 시작과 끝을 나타내는 노드(Node)와 노드 간을 연결을 통해 공정을 계산하기 위한 액티비티 표기법
- 시작에서 종료까지 가장 긴 시간이 걸리는 경로를 계산
- PERT : 일의 순서를 계획적으로 정리하기 위한 수렴 기법
- 비관치, 중간치, 낙관치의 3점 추정방식을 통해 일정 관리
- 중요 연쇄 프로젝트 관리 (CCPM) : 자원 제약사항을 고려하여 일정을 작성하는 기법