정처기 5과목_ 1. 소프트웨어 개발 방법론 설정
2025. 1. 15. 17:51

* 소프트웨어 위기(1960s)  => 소프트웨어 공학 등장

 

* 소프트웨어 품질 평가기준

: 기신사효유이

(기능성, 신뢰성, 사용성, 효율성, 유지보수성, 이식성)

 

*3R

- 재공학 (예방유지보수관점)

: 분석(대상 선정)->재구성(리팩토링)->역공학(문서 추출)->이관,이식(Migration)

- 역공학 (프로그램>>문서로)

- 재사용 (그대로 사용) - 방법: 합성중심(조합) / 생성중심(추상화)

- 재개발(x)

- 리팩토링 : 소프트웨어 기능을 변경하지 않으면서 형태에 맞게 수정하는 활

 

* 소프트웨어 개발단계

: 계획(비용,일정) -> 요구사항분석(요구사항 명세서) -> 설계(그림) -> 구현(개발) -> 테스트 -> 유지보수

- 유지보수

: 수정보수(Corrective) : 오류 수정

  적응보수(Adaptive) : 환경변화에 대응

  향상보수, 완전유지보수(Perfective) : 기능 추가, 향상시키기 위한 변경

  예방보수(=재공학)(Preventive) : 잠재적 오류를 미리 예방

- 가장 많은 비용 : 유지보수 단계

- 시스템 명세서의 유지보수 : 사용자도 최신의 명세서를 배포 받지만, 개발자의 기술적 명세서와는 다른 명세서임.

 

* 소프트웨어 개발방법론

1. 구조적 개발 방법론

: 절차지향 / 하향식/ DFD(자료흐름도), DD(자료사전), STD, MiniSpec(소단위 명세서) 사용

2. 정보공학 방법론

: 기업에서 사용

3. 객체 지향 개발 방법론

 - 객체지향이란? 클래스(:속성,메서드) => 객체

 - 객체지향 속성 : 상속성, 정보은닉, 캡슐화, 추상화(공통의 성질), 다형성(오버로딩/오버라이딩)

4. CBD 분석 방법론 (Component Based Development)

: 이미 만들어진 components 조립 >> software 재사용, 기간 단축, 기능 추가 쉬움

5. 애자일 방법론

: 고객과의 협업을 통해 빠르게 / XP, SCRUM, FDD, Crystal 방법론

 - XP 특징 : 의사선생님 피존 용기에 담아주세요 (의사소통, 피드백, 존중, 용기, 단순성)

6. UP 방법론 (Unified Process) _문제-답 형태로만 기억

: 소프트웨어 개발단계를 시간의 흐름에 따라 4개의 범주(도입,상세,구축,이행)으로 나누고,

각 범주에는 요구사항 도출부터 설계, 구현, 평가까지의 개발 생명주기가 포함

 

* 소프트웨어 개발모델

1. 폭포수 모델 = 선형순차모델

: 순차적 접근, 문서화 중시

2. 프로토타이핑 모델 = 원형모델

: 시제품에 기능 보완 (이해도가 부족하기 때문에 고객과의 협업을 통해 완성시켜 나가려는 것)

3. 나선형 모델

: 위험분석 추가 (계획->위험분석->개발->평가)

: 보헴 제안/ 폭포수 모델과 트로토타이핑(원형) 모델의 장점을 결합

: 반복적이고 점진적인 개발 >> 비교적 대규모 시스템에 적합

4. RAD 모델 (Rapid Application Development)

: 자동화도구 CASE 도구를 활용하여 빠르게

5. V모델

: 테스트에 중점

6. 4세대 기법 :  자동으로 코드 생성

=> 이러한 방법들을 적절하게 혼합 (테일러링)

 

* 소프트웨어 개발 비용 산정 기법

1. 하향식 산정기법

: 경험을 바탕으로 (사람)

 - 전문가 판단 기법(한명) / 델파이 기법(여러명)

2. 상향식 산정기법

 1) 원시 코드 라인 수 기법 : LOC(Line of Code) = {낙관치+(4*중간치)+비관치}/6

   Q. 예측치를 구하기 위해 사용 항목은? 낙관치, 중간치(=기대치), 비관치 등...

   Q. LOC 기법에 의해 예측된 총 라인 수가 50,000라인, 프로그래머의 월 평균 생산성이 200라인,

       개발에 참여할 프로그래머가 10인일 때, 개발 소요기간은?

   >> 200라인*10인= 월 2,000라인

        50,000/2,000=25개월 

 2) 개발 단계별 노력

3. 수학적 산정기법

 1) COCOMO기법

    : LOC 기반 / 보헴(Boehm)이 제안

     소스코드 규모에 의한 비용 예측 

   - 유형

     조직형Organic(5만 라인 이하)

     반분리형Semi-Detached(30만 라인 이하)

     내장형Embeded(30만 라인 이상)

 2) Putnam 기법

  - Putnam(풋남)이 제안

  - Rayleigh-Norden 곡선 이용 (랠리 노든)

  - 자동화 추정도구 SLIM 이용

 3) 기능 점수 기법 (Function-Point 모형)

  - 자동화 추정도구 ESTIMACS 이용

  - 소프트웨어 기능분류

  : (데이터)내부논리파일

   (데이터)외부연계파일

   (트렌젝션)외부입력

   (트렌젝션)외부출력

   (트렌젝션)외부조회

 

* 소프트웨어 개발 일정 계획

1) WBS (=작업 분해. 세분화)

2) PERT(불확실한 시간 추정. 작업들간의 관련성에 따라 네트워크 작성)

    / CPM(Critical Path Method)

    : 시간 확실. 비용과 시간 최적화에 중점. 노드와 간선으로 표현. 이전 작업이 완료되어야 다음 작업 진행 가능.

3) 임계경로 : 최소 소요시간

  >> Q. 임계경로를 구하라 = 최장시간을 구하라!

4) 간트 차트 (Gantt Chart) : 막대 바 형태 = 일정

  = 시간 선 차트