Home [정보처리기사]1과목 소프트웨어 구축-2.소프트웨어 개발 방법론
Post
Cancel

[정보처리기사]1과목 소프트웨어 구축-2.소프트웨어 개발 방법론

[[2023-07-05-소프트웨어 공학]]

1과목. 소프트웨어 구축 - 2.소프트웨어 개발 방법론

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

  1. 요구사항 분석
    • 기능 요구사항, 비기능 요구사항
  2. 설계
    • 시스템 구조 설계, 프로그램 설계, 사용자 인터페이스 설계
  3. 구현
    • 인터페이스 개발, 자료구조 개발, 오류 처리
  4. 테스트
    • 단위 테스트, 통합 테스트, 시스템 테스트, 인수 테스트
  5. 유지보수
    • 예방, 완전, 교정, 적응 유지보수

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

  • 소프트웨어 개발에 필요한 과정(절차, 방법, 산출물, 기법, 도구)들을 체계적으로 정리

2. 소프트웨어 개발 방법론 종류

1. 구조적 방법론

  • 절차지향 개발 방법론
  • 하향식
  • 데이터 흐름도(DFD), 자료사전(DD), 상태전이도(STD), 소단위 명세서(Minispec)

2. 정보공학 방법론

  • 기업에서 사용하는 데이터 중심 방법론
  • 기업의 경영 전략에 초점을 둠

3. 객체지향 방법론

  • 현실 개체(Entity)를 속성(Attribute)과 메소드(Method)형태로 표현
  • 분석과 설계, 구현의 전 과정을 객체 중심으로 개발
  • 특징: 캡슐화, 정보은닉, 상속, 다형성, 추상화

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

  • 컴포넌트별로 개발 후 하나의 어플리케이션으로 조합하는 방법
  • 기능추가 용이, 생산성 및 품질 향상, 유지보수 비용 최소화(잘 만들었을때ㅋㅋ;)

5. 애자일 방법론

  • 기존 방법론들과는 달리 절차를 중요시 하지 않음, 변화에 빠른 대응 가능
  • XP(eXtreme Programming), SCRUM, FDD, Crystal

6. 개발 방법론 선택 기준

  • 프로젝트 특성 및 규모
  • 참여자 수준
  • 가용 자원(인력, 장비, 시간, 비용)
  • 요구사항의 정확도
  • 위험도

기본적으로 모든 방법론이 계획-분석-설계-구현-테스트-유지보수를 따르지만 순서나 중요시 하는 부분이 다름

3. 소프트웨어 생명주기 모델 종류

1. 폭포수 모델(Waterfall Model)

  • 단계별 **순서대로 진행**
  • 선형 순차적 모형, 고전적 생명주기 모형
  • 요구사항 변경이 어려움
  • 절차:
    • 타당성 검토 -> 계획 -> 요구사항 분석 -> 설계 -> 구현 -> 테스트 -> 유지보수

출처: https://m.blog.naver.com/roser111/221661276734

2. 프로토타이핑 모델(Prototyping Model)

  • 고객의 피드백을 반영하여 소프트웨어를 만들어가는 모델
  • 발주자, 개발자 모두에게 공동의 참조 모델을 제공
  • 구현단계의 구현 골격
  • ex) 시제품을 만들어서 고객한테 보여주고 피드백을 받아 개선해나가는 방법
  • 절차:
    • 계획수립 -> 프로토타입 개발 -> 사용자 평가 -> 구현 -> 인수
  • 장점: 요구사항이 충실히 반영됨, 결과물을 사용자가 빨리 볼 수 있다, 오류를 초기에 발견
  • 단점: 시간과 비용이 많이 듬, 문서작성이 소홀해질 수 있다

출처: https://bigdown.tistory.com/376

3. 나선형 모델(Spiral Model)

  • 위험을 최소화하기 위해 점진적으로 완벽한 시스템으로 개발해 나가는 모델
  • 폭포수모델과 프로트타이핑 모델의 장점을 수용
  • 절차:
    • 반복: 계획 및 정의 -> 위험 분석 -> 개발 -> 고객 평가

출처: https://m.blog.naver.com/seilius/130185846022

4. RAD(Rapid Application Development) 모델

  • 매우 짧은 개발 주기를 강조함(60일~90일)
  • 점진적 소프트웨어 개발 방식
  • CASE(Computer Aided Software Engineering) 도구 이용하여 개발
  • 위험이 적고 빠른 개발이 요구될 때 적합

5. V 모형(Iteration Model)

  • 폭포수 모델에 시스템 검증과 테스트 작업을 강조
  • 높은 신뢰성이 요구되는 분야에 적합
  • 테스트가 중요!

출처: https://devuna.tistory.com/98

  • 단위 테스트: 정적(소스 코드 보면서), 동적(기능)
  • 통합 테스트: 상향식, 하향식, 빅뱅
  • 시스템 테스트: 기능(요구사항에 맞게 잘 만들어졌는지), 비기능(기능이 동작할때 효율성, 보안 등)
  • 인수 테스트: 알파(개발자와 사용자), 베타(사용자들끼리 진행)

6. 4세대 기법(4th Generation Techniques)

  • 요구사항 명세서로부터 원시코드를 자동으로 생성할 수 있게 해주는 모델

7. 반복적 모델(Iteration Model)

  • 구축대상을 나누어 병력적으로 개발 후 통합하거나, 반복적으로 개발하여 점증 완성시키는 모델
  • 사용자의 요구사항 일부분 혹은 제품 일부분 혹은 제품 일부분을 반복적으로 개발하여 최종 시스템으로 완성하는 모델
  • 증분방식으로 병행 개발
  • 장점: 일정 단축 가능
  • 단점: 관리 비용 증가

4. 애자일(Agile) 방법론

1. 개념

  • 신속한 방법 작업을 통해 소프트웨어 개발
  • 특정 개발론을 뜻하기 보다 애자일 개발을 목적으로 한 모든 방법론을 뜻함
  • 경량(Lightweight)프로세스 라고도 함

2. 등장배경

  • 문서등을 중시하는 이전 방법론을 개선하기 위해 등장

3. 선언

중요도:

  • 공정도구 < 개인과 상호작용
  • 문서 < 작동하는 소프트웨어
  • 계약 협상 < 고객과 협력
  • 계획 < 변화

4. 특징

  • 변화하는 요구사항 신속하게 수용
  • 개발자 개인보단 팀의 목적 우선시
  • 고객의 의견이 가장 중요
  • 작업계획을 짧게 세우고, 반복적으로 수행 -> 변화헤 유연하게 대처

5. 종류

1. XP (Extreme Programming)

  • 특징
    • 문서보다는 코드중심
    • 5가지 핵심 가치, 12가지 실천 항목
  • 5가지 핵심 가치:
    • 용기, 존중, 의사소통, 피드백, 단순성
  • 12가지 실천 항목:
    • 짝 프로그래밍, 계획 세우기, 테스트 기반 개발, 고객 상주, 지속적인 통합, 코드 개선, 작은 릴리즈, 코딩 표준, 공동 코드 소유, 간단한 디자인, 시스템 메타포어, 작업시가ㅏㄴ 준수

의사(의사소통)선생님 피(피드백)존(존중) 용기(용기)에 단(단순성)아 주세요

2. 스크럼 SCRUM

  • 특징
    • 기능, 개선점에 대한 우선순위를 부여
    • 개발주기는 30일 정도로 개발 주기마다 동작할 수 있는 결과를 제공
    • 팀 단위로 생각, 날마다 15분 정도의 회의
  • 주요 개념
    • 제품 백로그, 스프린트, 스프린트 계획 회의, 스프린트 백로그, 일일 스크럼 회의, 실행 가능한 제품, 제품 책임자, 스크럼 마스터

3. 크리스탈(Crystal)

  • 프로젝트 규모와 영향에 따라 여러 방법론을 제공

4. FDD(Feature-Driven Development)

  • feature 마다 2주 정도의 반복 개발을 실시
  • 신규 기능 단위로 하는 개발 방법론

5. ASD(Adaptive Software Development)

6. 린(Lean)

5. IT 서비스 관리

1. SLM(Service Level Management)

  • 서비스 수준을 측정, 실적 평가하여 미흡한 부분을 개선 -> 서비스 품질 향상 하는 관리 및 활동

2. SLA(Service Level Agreement)

  • 수요자와 공금자 사이의 상호 동의에 의해 서비스 수준을 정의한 문서
  • 구성요소:
    • 업무 목표/범위
    • 성과 지표
    • 조정 절차

3. ITSM(Information Technology Service Management)

  • 사용자를 위한 IT서비스 구현, 전달 및 관리하기 위한 정책과 관핵
  • 최종 사용자의 요구사항과 목표에 부합하는 방식으로 제공
  • 서비스 수준(SLA에 맞는 IT서비스를 제공

4. ITIL(IT Infrastructure Library)

  • IT 서비스를 쉽게 제공하고 관리할 수 있는 가이드 혹은 프레음워크
  • ITSM을 실행하는 방법 혹은 도구
This post is licensed under CC BY 4.0 by the author.

[정보처리기사]1과목 소프트웨어 구축-1.소프트웨어 공학

[정보처리기사]1과목 소프트웨어 구축-2.프로젝트 계획 및 분석