[정보처리기사] 소프트웨어 개발 방법론

이아현·2023년 7월 3일
0

정보처리기사

목록 보기
8/11
post-thumbnail

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

(1) 소프트웨어 생명주기 모델

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

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

✅ 소프트웨어 생명주기 모델 프로세스

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

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

종류설명
폭포수 모델소프트웨어 개발 시 각 단계를 확실히 마무리 지은 후에 다음 단계로 넘어가는 모델
프로토타이핑 모델고객이 요구한 주요 기능을 프로토타입으로 구현하여, 고객의 피드백을 반영하여 소프트웨어를 만들어나가는 모델
나선형 모델시스템 개발 시 위험을 최소화하기 위해 점진적으로 완벽한 시스템으로 개발해 나가는 모델
반복적 모델구축대상을 나누어 병렬적으로 개발 후 통합하거나, 반복적으로 개발하여 점층적으로 완성시키는 SDLC 모델

(2) 소프트웨어 개발 방법론

  • 소프트웨어 개발 전 과정에 지속적으로 적용할 수 있는 방법, 절차, 기법

  • 종류

    종류설명
    구조적 방법론전체 시스템을 기능에 따라 나누어 개발하고, 이를 통합하는 분할과 정복 접근하는 방법론
    정보공학 방법론정보시스템 개발에 필요한 관리 절차와 작업 기법을 체계화한 방법론
    객체 지향 방법론객체라는 기본 단위로 시스템을 분석 및 설계하는 방법론
    컴포넌트 기반 방법론소프트웨어를 구성하는 컴포넌트를 조립해서 하나의 새로운 응용 프로그램을 작성하는 방법론
    애자일 방법론사람이 중심이 되어 변화에 유연하고 신속하게 적응하면서 효율적으로 시스템을 개발할 수 있는 경량 개발 방법론
    제품 계열 방법론특정 제품에 적용하고 싶은 공통된 기능을 정의하여 개발하는 방법론

✅ 애자일

  • 개념

    • 사람이 중심이 되어 변화에 유연하고 신속하게 적응하면서 효율적으로 시스템을 개발할 수 있는 신속 적응적 경량 개발 방법론
    • 개발 기간이 짧고 신속하며, 폭포수 모형에 대비되는 방법론
    • 개발과 함께 즉시 피드백을 받아 유동적으로 개발이 가능
  • 대표 유형

    종류설명
    XP (eXtreme Programming)의사 소통 개선과 즉각적 피드백으로 소프트웨어 품질을 높이기 위한 방법론
    스크럼매일 정해진 시간, 장소에서 짧은 시간의 개발을 하는 팀을 위한 프로젝트 관리 중심 방법론
    도요타의 린 시스템 품질기법을 소프트웨어 개발 프로세스에 적용, 낭비 요소를 제거하여 품질을 향상

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

  • 실세계의 개체를 속성과 메서드가 결합한 형태의 객체로 표현

  • 구성요소

    • 클래스
    • 객체
    • 메서드
    • 메시지
    • 인스턴스
    • 속성
  • 객체 지향 기법

    기법설명
    캡슐화서로 연관된 데이터와 함수를 함께 묶어 외부와 경계를 만들고 필요한 인터페이스만을 밖으로 드러내는 기법
    상속성상위 클래스의 속성과 메서드를 하위 클래스에서 재정의없이 물려받아 사용하는 기법
    다형성하나의 메시지에 대해 각 객체가 가지고 있는 고유한 방법으로 응답할 수 있는 능력 (오버로딩 / 오버라이딩)
    추상화공통 성질을 추출하여 추상 클래스를 설정하는 기법
    정보 은닉코드 내부 데이터와 메서드를 숨기고 공개 인터페이스를 통해서만 접근이 가능하도록 하는 코드 보안 기술
    관계성두 개 이상의 엔터티 형에서 데이터를 참조하는 관계를 나타내는 기법 (연관화 / 분류화 / 집단화 / 일반화 / 특수화)
  • 객체 지향 설계 원칙 (SOLID)

    원칙설명
    단일 책임의 원칙하나의 클래스는 하나의 목적을 위해서 생성되며, 클래스가 제공하는 모든 서비스는 하나의 책임을 수행하는데 집중
    개방 폐쇄 원칙SW의 구성요소(컴포넌트, 클래스, 모듈, 함수)는 확장에는 열리고, 변경에는 닫혀야함
    리스코프 치환의 원칙서브 타입(상속받은 하위 클래스)는 어디서나 자신 기반 타입(상위 클래스)로 교체 가능해야함
    인터페이스 분리의 원칙한 클래스는 자신이 사용하지 않는 인터페이스는 구현하지 말아야함
    의존성 역전의 원칙실제 사용 관계는 바뀌지 않으며, 추상을 매개로 메시지를 주고받으면서 관계를 최대한 느슨하게 만드는 원칙
  • 객체 지향 분석 방법론 종류

    종류만든 이설명
    OOSE야콥슨유스케이스에 의한 접근 방법으로 유스케이스를 모든 모델의 근간으로 활용하는 방법론
    분석, 설계, 구현 단계로 구성
    OMT럼바우그래픽 표기법을 이용하여 소프트웨어 구성요소를 모델링하는 방법론
    객체(정보) 모델링 => 동적 모델링=> 기능 모델링 (데이터흐름도, 자료사전 사용)
    OOD부치설계 문서화를 강조하여 다이어그램 중심으로 개발하는 방법론

2. 프로젝트 관리

(1) 프로젝트 관리

  • 개념
    • 주어진 기간 내에 최소의 비용으로 사용자를 만족시키는 시스템을 개발하기 위한 전반적인 활동
  • 관리 대상
    • 계획 관리
    • 품질 관리
    • 범위 관리
  • 프로젝트 관리 3대 요소 (3P)
    • 사람 (People)
    • 문제 (Problem)
    • 프로세스 (Process)

(2) 비용산정 모형

  • 개념
    • 소프트웨어 규모파악을 통한 투입자원, 소요시간을 파악하여 실행 가능한 계획을 수립하기 위해 비용을 산정하는 방식
  • 분류
    • 하향식 산정방법 (전문가, 조정자 통해) : 전문가 판단, 델파이 기법
    • 상향식 산정방법 (세부적인 요구사항과 기능에 따라) : 코드라인수, Man Month, COCOMO, 푸트남, 기능점수
  • 종류
모형설명
LoC (Lines Of Codes)소프트웨어 각 기능의 원시 코드 수의 낙관치, 중간치, 비관치를 측정하여 예측치를 구하고 이를 사용하여 비용 산정하는 방식
Man Month한 사람이 1개월 동안 할 수 있는 일의 양을 기준으로 프로젝트 비용을 산정하는 방식 (Man Month = LoC / 프로그래머의 월간 생산성)
COCOMO보헴이 제안한 모형으로 프로그램 규모에 따라 비용을 산정하는 방식 (조직형, 반분리형, 임베디드형)
푸트남 모형소프트웨어 개발주기의 단계별로 요구할 인력의 분포를 가정하는 방식
기능점수 모형요구 기능을 증가시키는 인자별로 가중치를 부여하고, 요인별 가중치를 합산하여 총 기능의 점수를 계산하여 비용 산정

(3) 일정관리 모델

  • 개념

    • 프로젝트가 일정 기한 내에 적절하게 완료될 수 있도록 관리하는 모델
  • 일정관리 모델 종류

    모델설명
    주 공정법여러 작업의 수행 순서가 얽혀있는 프로젝트의 일정을 계산하는 기법
    PERT일의 순서를 계획적으로 정리하기 위한 수렴 기법, 비관치, 중간치, 낙관치의 3점 추정방식을 통해 일정관리
    중요 연쇄 프로젝트 관리주 공정 연쇄법으로 자원제약사항을 고려하여 일정을 작성하는 기법

(4) 위험 관리

  • 개념
    • 프로젝트에 내재된 위험 요소를 인식하고 그 영향을 분석하여 이를 관리하는 활동
    • 위험 요소를 사전에 예측, 대비하는 모든 기술과 활동을 포함
  • 위험의 종류
    • 알려진 위험
    • 예측 가능한 위험
    • 예측 불가능한 위험
  • 위험 대응 전략
    • 회피 : 발생 가능성을 원천적으로 제거
    • 전가 : 위험에 대한 책임을 제 3자에게 넘기는 전략
    • 완화 : 위험 발생 가능성을 감소시키거나 영향력을 감소시키는 전략
    • 수용 : 위험을 그대로 받아들이는 전략
profile
PM을 지향하는 FE 개발자 이아현입니다 :)

0개의 댓글