정보처리기사 : 요구사항 확인 (1) - 소프트웨어 개발 방법론

keymu·2024년 9월 30일
0

1. 소프트웨어 개발 방법론

1). 소프트웨어 생명 주기(SDLC: Software Development Life Cycle) 모델

1. 개념

  • 시스템의 요구분석부터 유지보수까지 전 공정을 체계화한 절차
  • 운용~유지보수를 걸쳐 생애를 마칠 때까지 어떤 순서를 밟는지에 대한 작업 프로세스 모델화

2. 모델 프로세스
1. 요구사항 분석
2. 설계
3. 구현
4. 테스트
5. 유지보수

3. 모델 종류

  • 폭포수 모델(Waterfall Model): 각 단계 별 확실히 마무리 후 다음 단계로
  • Prototyping Model: 고객이 요구한 주요 기능을 프로토타입으로 구현, 피드백 반영 후 소프트웨어 만드는 모델
  • Sprial Model(나선형 모델): 위험 최소화 위해 점진적으로 완벽한 시스템 개발
  • Iteration model(반복적 모델): 구축대상을 병렬적으로 개발 후 통합 / 반복적으로 개발하여 점증 완성

2). 소프트웨어 개발 방법론(Software Development Methdology)

1. 개념

  • 소프트웨어 개발 전 과정에 지속적으로 적용할 수 있는 방법, 절차
  • 소프트웨어 = 하나의 생명체

2. 개발 방법론 종류

  • Structured Development: 분할과 정복 접근 방식 / 하향식
  • Information Engineering Development: 정보시스템 개발 / 대형 프로젝트 수행용
  • Object-Oriented Development
  • CBD(Component Based Development): 소프트웨어를 구성하는 컴포넌트를 조립해 하나의 새 응용 프로그램 / 확장성 높음
  • Agile Development: 절차 < 사람
  • Product Line Development: 특정 제품에 적용하고 싶은 공통된 기능을 정의 / 임베디드 소프트웨어에 용이

3. 애자일(Agile)

  • 신속 적응적 경량 개발 방법론
  • 모바일 환경으로 개발 트렌드 변경
  • 문서 및 절차 위주 전통적 방법론은 신속한 대응 불가

- 애자일 방법론의 유형

XP:

  • 용기, 단순성, 의사소통, 피드백, 존중
  • 짝 프로그래밍
  • 공동 코드 소유
  • 지속적 통합
  • 계획 세우기
  • 작은 릴리즈
  • 메타포어
  • 간단한 디자인
  • TDD(Test Driven Development)
  • Refactoring
    -40-Hour Work
  • On Site Customer
  • Coding Standard

SCRUM:

  • Backlog: 제품과 프로젝트에 대한 요구사항
  • Sprint
  • Scrum Meeting
  • Scrum Master
  • Sprint Retrospective
  • Burn Down Chart

LEAN:

  • JIT(Just In Time)
  • Kanban 보드 사용

3). 객체 지향 분석 방법론

1. 구성요소

  • Class
  • Object
  • Method
  • Message
  • Instance
  • Property

2. 객체 지향 기법

  • Encapsulation: 결합도가 낮아지고 재사용에 용이 / 변경 발생 시 오류의 파급 효과가 적음 / 필요 인터페이스만을 밖으로 드러냄
  • Inheritance
  • Polymorphism: 오버로딩 / 오버라이딩
  • Abstraction
  • Information Hiding
  • Relationship: 연관성 / 집단화 / 분류화 / 일반화 / 특수화

3. 객체 지향 설계 원칙(SOLID)

  • SRP: Single Responsibility Principle
  • OCP: Open Close Principle
  • LSP: Liskov Substitution Principle
  • ISP: Interface Segregation Principle
  • DIP: Dependency Inversion Principle

4. 객체 지향 분석 방법론 종류
1. 야콥슨 - OOSE(Object Oriented Software Engineering): 유스케이스
2. 럼바우 - OMIT(Object Modeling Technology): 객체 모델링 -> 동적 모델링 -> 기능 모델링
3. 부치 - OOD(Object Oriented Design): 설계 문서화 강조
4. 코드-요든 - E-R 다이어그램 이용

2. 프로젝트 관리

1). 프로젝트 관리

1. 개념

  • 주어진 기간 내에 최소의 비용으로 사용자를 만족시키는 시스템을 개발하기 위한 전반적 활동
  • 개발 계획 세우고 분석, 설계, 구현 등 작업을 통제하며 소프트웨어 생명 주기 전 과정에 걸쳐 진행
  • 수행할 작업의 범위, 필요한 자원, 수행 업무, 비용, 추진 일정 등 관리

2. 관리 대상

  • 계획 관리
  • 품질 관리
  • 범위 관리

3. 프로젝트 관리 3대 요소 : People, Problem, Process

2). 비용산정 모형

1. 개념

  • 소프트웨어 규모 파악을 통한 투입자원, 소요시간을 파악하여 실행 가능한 계획을 수립하기 위해 비용을 산정하는 것

2. 비용산정 모형 분류

  • 하향식 산정방법: 전문자 판단 / 델파이 기법
  • 상향식 산정방법: LoC(Line of Code) / Man Month / COCOMO / 푸트남 / FP(기능점수) 모형

3. LoC(Line of Code) 모형

  • 원시 코드 라인 수의 낙관치, 중간치, 비관치를 측정하여 예측치를 구하고, 이를 이용하여 비용을 산정하는 방식

    예측치 = (낙관치 + 4*중간치 + 비관치) / 6
    낙관치 = 가장 적게 측정된 코드 라인 수
    중간치 = 측정된 모든 코드 라인 수의 평균
    비관치 = 가장 많이 측정된 코드 라인 수

4. Man Month 모형

  • 한 사람이 1개월 동안 할 수 있는 일의 양을 기준으로 프로젝트 비용 산정

    Man Month = LoC / 프로그래머의 월간 생산성
    프로젝트 기간 = Man Month / 프로젝트 인력

5. COCOMO (COnstructive COst MOdel)

  • 보헴(Boehm)이 제안한 모형 / 프로그램 규모에 따라 비용을 산정
  • 비용산정 결과는 Man Month로 산정
  • 비용 견적의 강도 분석 및 비용 견적의 유연성이 높아 소프트웨어 개발비 견적에 널리 통용

Organic Mode (조직형): 5만(50KDSI) 이하 / 중소규모의 소프트웨어 / 일괄 자료 처리나 과학 기술 계산용
Semi-Detached Model (반 분리형): 30만(300KDSI) 이하 / 트랜잭션 처리 시스템, DB 관리 시스템, 컴파일러, 인터프리터와 같은 Util 개발
Embedded Mode: 초대형 규모

6. Putnam(푸트남) 모형

  • 개발 주기 단계별 요구할 인력의 분포 가정
  • 생명주기 예측 모형
  • Rayleigh-Norden 곡선의 노력 분포도를 기초로 함

7. 기능점수(FP: Function Point) 모형

  • 요구 기능을 증가시키는 인자별로 가중치를 부여
  • 경험을 바탕으로 단순, 보통, 복잡한 정도에 따라 가중치 부여

    FP = 총 기능점수 X (0.65 + (0.1 X 총 영향도))

3). 일정관리 모델

1. 개념

  • 일정기한 내 적절하게 완료될 수 있도록 관리하는 모델

2. 모델 종류

  • CPM(Critical Path Method) 주 공정법: Node와 Node간 연결을 통해 공정을 계산하기 위한 Activity 표기법

Critical Path(임계경로): 시작~종료 가장 긴 시간의 경로

  • PERT(Program Evaluation and Review Technique): 비관치, 중간치, 낙과치 추정방식
  • CCPM(Critical Chain Project Management)

4). 위험 관리

1. 개념: 위험 요소를 인식하고 그 영향을 분석하여 이를 관리하는 활동

2. 종류
알려진 위험 / 예측 가능한 위험(과거경험으로부터) / 예측 불가능한 위험

3. 위험 대응 전략
Avoidance: 가능성을 원천적으로 제거
Transference: 전가
Mitigation: 완화
Acceptance: 수용

profile
Junior Backend Developer

0개의 댓글