소프트웨어 개발 방법론
개요
효율적인 개발을 위해서 존재한다.
구조적 방법론
정형화된 절차에 따라 사용자 요구사항을 파악하여 문서화하는 처리 중심의 방법론
정보와 정보의 구조를 중심으로 분석, 설계, 구현
순차, 선택, 반복으로 프로그램의 흐름을 구성
분할 정복을 통해 프로그램을 모듈화
정보공학 방법론
관리 절차와 작업 기법을 체계화하는 것
계획, 분석, 설계, 구축에 대한 정형화된 기법을 전체적으로 적용
데이터, 업무 활동, 상호작용으로 구성
객체지형 방법론
개체를 객체화하여 서로 통신을 통해 처리
구조적 기법의 문제점을 보완하는 방법론
객체, 클래스, 속성, 멤버, 메시지
객체지향 방법론의 기본 원칙 - 중요
1. 캡슐화 - 데이터와 데이터를 처리하는 기능을 하나로 묶은 것
2. 정보은닉 - 다른객체에서 자신의 정보를 숨김
3. 추상화 - 객체의 중요한 특징만을 간단하게 표현
4. 상속성 - 상위 객체의 송석을 하위 객체가 물려받음
5. 다향성 - 하나의 이름으로 여러 가지 기능을 가짐
컴포넌트 기간 방법론
재사용이 가능
개발 기간 단축
유지보수 비용 최소화
시스템을 신속하게 구축, 새로운 기능 추가및 확장에 용이
단계별 산출물
분석 단계 - 요구사항
- 사용자 요구사항 정의서
- 유스케이스 명세서
- 요구사항 추적표
설계 단계 - 설계
구현 단계
- 코드
- 단위시험 결과서 / 유닛테스트
- 데이터 베이스 테이블
시험 단계
- 결과서
- 지침서
- 메뉴얼
에자일 방법론
요구사항 변화에 민첩하고 유연하게 대응할 수 있도록 진행
일정한 주기를 반복하면서 개발 과정이 진행
소규모 프로젝트, 숙련된 개발자, 급변하는 요구사항에 적절
XP, Scrum, 기능중심 개발(FDD), 동적 시스템 개발 방법(DSDM), 경량 개발, kanban
방법론 절차
사용자 요구사항에 따라 반복
계획 - 개발 - 승인 테스트 - 사용자 요구사항 -...
제품 계열 방법론
완성된 특정 기능에 새로운 특화된 기능을 추가하는 것
영역공학과 응용공학으로 구분됨
- 영역공학 : 분석, 도출, 설계, 구현
- 응용공학 : 분석, 설계, 구현
테일러링 방법론
소프트웨어 특성에 맞도록, 개발 방법론을 수정 및 보완
하나의 방법론으로만 적용하기 어려워 등장
테일러링 필요성 판단 기준 - 구분할 수 있어야 함
내부적인 요건
- 목표 환경
- 요구 사항
- 프로젝트 규모
- 보유 기술
외부적 요건
- 법적 제약사항
- 표준 품질 기준
보안 개발 방법론 - 암기
MS-SDL
MS사가 자체적으로 수립
소프트웨어 보안 모범사례
- 코드 검토 (code review)
- 아키텍처 위험 분석 (architectural risk analysis)
- 침투 테스트 (penetration testing)
- 위험 기반 보안 테스트 (risk-based security tests)
- 악용 사례 (abuse cases)
- 보안 요구 (security requirement)
- 보안 운영 (security operation)
CLASP
초기단계의 보안을 강화하기 위해 정형화된 절차
개념, 역할 기반, 활동 평가, 활동 구현, 취약성에 따라 개발 보안 절차 진행
CWE
소프트웨어의 취약점을 유발하는 사례
- 입력 데이터 검증 및 표현
- 보안 기능
- 시간 및 상태
- 에러 처리
- 코드 오류
- 캡슐화
비용 산정 기법
개발에 필요한 인원, 자원, 기간등을 수립
비용 산정이 너무 낮을 경우 개발자의 부담 증가, 품질 감소
하향식 비용 산정, 상향식 비용 산정
하향식 비용 산정
과거 유사한 경험을 바탕으로 비용 산정
전문 개발자들의 경험에 의지하는 비과학적인 방법
전체 비용 산정 후 각 작업별로 비용 세분화
전문가 측정 기법
- 신속하게 비용을 측정할 수 있지만 주관적이다.
델파이 측정 기법
- 주관적인 판단을 보완하기 위해 중재자와 많은 전문가가 함께 비용 산정
상향식 비용 산정
세부적인 작업을 단위별로 비용 산정한 후 비용 측정
LOC 기법
- 원시 코드 라인 수를 예측하여 비용 산정
- 예측치 측정 공식 : (낙관치 + (기대치 * 4) + 비관치) / 6
LOC 기반 비용 산정 공식
- 노력 = 개발기간 * 투입 인원 = LOC / 1인당 월평균 생산 코드 라인 수
- 개발 비용 = 노력 * 단위 비용(월평균 1인 인건비)
- 개발 기간 = LOC / 1인당 월평균 생산 코드 라인수 * 투입 인원
- 생산성 = LOC / 노력
소프트웨어 비용 추정 모형 (수학적 산정 기법) - 많이 나옴
COCOMO 모델
보헴이 제안
비용 견적의 유연성이 높음
Organic
중소 규모의 소프트웨어를 대상
5만 라인(50 KDSI = 50 KLOC) 이하의 소프트웨어 개발
Semi - Detached
운영체제, 데이터베이스 등의 관리 시스템 등의 소프트웨어를 대상
30만 라인(300 KDSI) 이하의 소프트웨어 개발
Embedded
초대형 규모의 시스템 소프트웨어를 대상
30만 라인(300 KDSI) 이상의 소프트웨어 개발
이후 발전된 cocomo 모델 : Basic, Intermediate, Detailed
Putnam 모델
Rayleigh - Norden
생명 주기 예측 모형
대형 프로젝트에 이용
개발 기간이 연장될수록 노력이 감소
SLIM - putnam 모델용 비용 산출 자동화 측정 도구
기능 점수 모델
가중치를 부여 - 요인별 가중치를 합산하여 총 기능 점수를 산출
논리적인 사용자의 기능 요구사항을 기초로 산정
기능 점수 모델 산정 요소
- 입력 유형의 수
- 출력 유형의 수
- 사용자 명령 수
- 데이터 파일의 수
- 인터페이스의 수
소프트웨어 개발 표준
ISO/IEC 12207
표준 소프트웨어 생명 주기 프로세스
기본, 지원, 조직 생명 주기 프로세스로 나뉜다.
ISO/IEC 12119
소프트웨어의 품질 요구사항 및 테스트를 위한 국제 표준
ISO/IEC 29119
소프트웨어 테스트 관련 국제 표준
ISO/IEC 9126
품질 특성과 평가에 관한 표준 지침서
호환성과 보안성을 강화하여 25010으로 개정
특징
- 기능성 - 소프트웨어가 사용자 요구사항을 만족하는 기능을 제공하는지 평가
- 적합성
- 정확성
- 상호운용성
- 보안성
- 준수성
- 신뢰성 - 소프트웨어가 기능을 정확하게 오류 없이 수행하는지 평가
- 성숙성
- 고장 허용성
- 회복성
- 준수성
- 사용성 - 소프트웨어의 기능과 그 기능의 결과를 사용자가 정확하게 이해하고, 다시 사용할 의지가 있는지 평가
- 이해성
- 학습성
- 운영성
- 친밀성
- 준수성
- 효율성 - 한정된 시간과 자원으로 얼마나 빨리 처리할 수 있는지 평가
- 시간 효율성
- 자원 효율성
- 준수성
- 유지보수성 - 새로운 요구사항 및 환경의 변화에 따라 소프트웨어를 개선할 수 있는지 평가
- 분석성
- 변경성
- 안정성
- 시험성
- 준수성
- 이식성 - 소프트웨어가 다른 환경에서 얼마나 쉽게 적용되는지에 대한 정도를 평가
- 척용성
- 설치성
- 대체성
- 공존성
- 준수성
CMM
유지 보수, 개발에 대한 프로세스 개선과 능력 향상을 위한 프레임 워크
프로세스 성숙도 개선 및 측정
단계별 핵심 프로세스
- 초기
- 반복
- 정의
- 관리
- 최적화
프로세스 평가 기준
LEVEL 1) 혼돈적
LEVEL 2) 경험적
LEVEL 3) 정성적
LEVEL 4) 정량적
LEVEL 5) 최적화
CMM의 한계
조직 자체를 평가하므로 제품은 품질과는 직접적인 영관이 없음
소규모 업체에는 적용이 곤란함
등급 판정이 비효율적 비현실적
CMMI
CMM의 후속 모델
개발 프로세스 역량 성숙도
어떤 모델이든 업무의 목적에 맞게 수정
프로세스 관리, 프로젝트 관리, 엔지니어링, 지원
SW-CMM : 소프트웨어 능력
SE - CMM : 시스템 엔지니어링 성숙도
IPD - CMM : 통합 제품 개발
People - CMM: 인력 개발
SA - CMM : 소프트웨어 구입
SECMM : 시스템 엔지니어랑 능력 평가
SPICE
소프트웨어 프로세스를 평가하는 국제 표준
모델의 단계별 프로세스 수행 능력 수준
LEVEL 0) 불안정
LEVEL 1) 수행
LEVEL 2) 관리
LEVEL 3) 예측
LEVEL 4) 최적화
'자격증 > 정보처리기사' 카테고리의 다른 글
요구사항 정의(2) (0) | 2023.10.16 |
---|---|
요구사항 정의(1) (0) | 2023.10.16 |
소프트웨어 개발 환경 분석 (0) | 2023.10.13 |
소프트웨어 생명 주기 모델 (0) | 2023.10.12 |
소프트웨어의 분류와 특성 (0) | 2023.10.06 |