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

이영준·2023년 6월 12일
1

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

  • 시스템의 요구분석부터 유지보수까지 전 공정을 체계화한 절차이다.
  • 시스템의 운용과 유지보수를 거쳐 생애를 마칠 때까지의 작업 프로세스를 모델화한 것

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

  • 요구사항 분석
    • 기능 요구사항과 비기능 요구사항을 결정
  • 설계
    • 시스템 구조와 프로그램, 사용자 인터페이스를 설계한다.
  • 구현
  • 테스트
    • 단위, 통합, 시스템, 인수 테스트
  • 유지보수

✅ 전통적 생명주기 모델 종류

종류설명
폭포수 모델- 각 단계를 확실히 마무리 짓고 다음 단계로 넘어가는 선형 순차적, 고전적 생명주기 모형
- 요구사항 변경 어렵고 단계별 정의와 산출물이 명확
- 타당성 검토 -> 계획 -> 요구사항 분석 -> 설계 -> 구현 -> 테스트 -> 유지보수
프로토타이핑 모델- 프로토타입으로 주요 기능을 구현하여 피드백을 반영하면서 만들어가는 모델
- 발주자나 개발자 모두에게 공동의 참조 모델을 제공
나선형 모델- 점진적으로 완벽한 시스템으로 개발해 나가는 모델
계획 및 정의 -> 위험 분석 -> 개발 -> 고객 평가
반복적 모델- 구축 대상을 나누어 병렬적으로 개발 후 통합하거나, 반복적으로 개발하여 점증 완성싴미는 모델

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

  • 구조적 방법론 : 전체 시스템을 기능에 따라 나누어 개발하고, 이를 통합하는 분할과 정복 접근 방식
  • 정보공학 방법론 : 정보시스템 개발에 필요한 관리 절차와 작업 기법을 체계화한 방법론
  • 객체 지향 방법론
  • 컴포넌트 기반 방법론 : 소프트웨어를 구성하는 컴포넌트를 조립해서 하나의 새로운 응용 프로그램을 작성하는 방법론
  • 애자일 방법론
  • 제품 계열 방법론 : 특정 제품에 적용하고 싶은 공통된 기능을 정의하여 개발

✅ 애자일 방법론

절차보다는 사람이 중심이 되어 변화에 유연하고 신속하게 적응하면서 효율적으로 세스템을 개발할 수 있는 신속 적응적 경량 개발 방법론 <-> 폭포수 모형

  • 소프트웨어 개발 트렌트가 모바일 환경으로 변화하고, 잦은 배포의 중요성이 부각되면서
  • 기존 방법론의 변화에 대한 신속 대응의 부족과 빠르고 효율적인 개발의 필요성으로 등장하였다.

애자일 방법론 유형 - XP

의사소통 개선과 즉각적 피드백으로 소프트웨어 품질을 높이기 위한 방법론

  • 1~3주간의 반복 개발주기
  • 5 가치, 12 실천항목

5 가치 : 용기, 단순성, 의사소통, 피드백, 존중
12 실천항목 : 짝 프로그래밍, 공동 코드 소유, 지속적인 통합, 계획 세우기, 작은 릴리즈, 메타포어(공통적인 이름 체계와 시스템 서술서로 원활한 의사소통), 간단한 디자인, 테스트 기반 개발, 리팩토링, 40시간 이하 작업, 고객 상주, 코드 표준

애자일 방법론 유형 - 스크럼

매일 정해진 시간, 장소에서 짧은 시간의 개발을 하는 팀을 위한 프로젝트 관ㄹ 중심 방법론

  • 백로그 : 제품 요구사항
  • 스프린트 : 2~4주의 짧은 개발
  • 스크럼 미팅
  • 스크럼 마스터 : 프로젝트 리더로 스크럼 수행 시 문제를 인지 및 해결하는 사람
  • 스프린트 회고 : 스프린트 주기를 되돌아보며 정해놓은 규칙 준수 여부, 개선점 등을 확인 및 기록
  • 번 다운 차트 : 남아있는 백로그 대비 시간을 그래픽적으로 표현한 차트

📌 객체 지향 분석 방법론

✅ 객체 지향 구성요소

클객메메인속

  • 클래스 : 특정 객체 내의 변수와 메서드를 정의하는 일종의 틀로 데이터 추상화의 단위
  • 객체 : 물리적 추상적으로 자신과 다른 것을 식별 가능한 대상
  • 메서드 : ㅋ늘래스로부터 생성된 객체를 사용하는 방법
  • 메시지 : 객체 간 상호작용을 하기 위한 수단.
    • 객체에게 어떤 행위를 하도록 지시하는 방법으로 메시지는 객체에서 객체로 전달된다.
  • 인스턴스 : 클래스를 통해 만든 실제의 실형 객체로 실제로 메모리상에 할당
  • 속성 : 한 클래스 내에 속한 객체들이 가지고 있는 데이터 값들을 단위별로 정의한 것

✅ 객체 지향 기법

캡상다추정관

  • 캡슐화 : 서로 연관된 데이터와 함수를 함께 묶어 외부와 경계를 만들고 필요한 인터페이스만을 밖으로 드러내는 기법
    • 결합도 낮아지고 재사용 용이
    • 인터페이스 단순화
    • 변경 발생 시 오류의 파급효과가 적음
  • 상속성 : 상위 클래스의 속성과 메서드를 하위 클래스에서 재정의 없이 물려받아 사용 가능

  • 다형성 : 상속받은 여러 개의 하위 객체들이 다른 형태의 특성을 갖는 객체로 이용될 수 있는 성질

    • 오버로딩(매개변수의 유형과 개수를 다르게 하여 같은 이름의 메서드를 여러 개 가지는 방법)
    • 오버라이딩(상위 클래스의 메서드 구현을 하위 클래스에서 새롭게 재정의)
  • 추상화 : 공통 성질을 추출하여 추상클래스를 설정하는 기법으로 과정, 자료, 제어 추상화가 있음

  • 정보 은닉 : 코드 내부 데이터를 숨기고 인터페이스를 통해서만 접근하도록 하는 보안 기술

    • 모듈 사이의 독립성을 유지하는데 도움을 줌
  • 관계성 : 두 개 이상의 엔티티 형에서 데이터를 참조하는 관계를 나타내는 기법

    • 연관화 : is a member of : 참조 및 이용관계
    • 집단화 : is part of, part-whole 관계, 서로 관련있는 여러개의 객체를 묶어 한 개의 상위 객체를 만드는 특징, 일반화와 달리 상위 클래스의 성질들이 하위로 상속되지는 않음
    • 분류화 : is-instance-of 관계, 공통된 속성에 의해 정의된 객체 구성원들의 인스턴스
    • 일반화 : is-a 관계, 클래스들 간의 개념적인 포함 관계로 상위 클래스의 특성을 하위 클래스가 상속받음
    • 특수화 : is-a 관계, 상속을 받되 나름대로 수정을 가하고 고유한 특성을 갖는 관계

✅ 객체 지향 설계 원칙 (SOLID)

S : 단일 책임 원칙 (SRP : Single Responsibility Principle)

하나의 클래스는 하나의 목적을 위해서 생성된다

O : 개방 폐쇄 원칙 (OCP : Open Close Principle)

소프트웨어의 구성요소는 확장에는 열려있고, 변경에는 닫혀있어야 한다.

L : 리스코프 치환 원칙 (LSP : Liskob Substitution Principle)

서브타입(하위클래스)은 어디서나 자신의 기반 타입(상위클래스)으로 교체될 수 있어야 한다.

I : 인터페이스 분리의 원칙 (ISP : Interface Segregation Principle)

한 클래스는 자신이 사용하지 않는 인터페이스는 구현하지 말아야 한다.

D : 의존성 역전의 원칙 (DIP : Dependency Inversion Principle)

실제 사용 관계는 바뀌지 않으며, 추상을 매개로 메시지를 주고받음으로써 관계를 최대한 느슨하게 만드는 원칙

객체 지향 분석 방법론

  • OOSE(야콥슨) : 유스케이스에 의한 접근 방법으로 유스케이스를 모든 모델의 근간으로 활용하는 방법론
  • OMT(럼바우) : 그래픽 표기법을 이용해 소프트웨어 구성요소를 모델링하는 방법론
    • 객체모델링->동적모델링->기능모델링 순서로 진행한다.
  • OOD(부치) : 설계 문서화를 강조하여 다이어그램을 중심으로 개발하는 방법론

기능 모델링 주요 기법

데이터 흐름도 (DFD : Data Flow Diagram)

  • 데이터가 각 프로세스를 따라 흐르면서 변환되는 모습을 나타낸 그림
  • 시스템 분석과 설계에서 매우 유용하게 사용
  • 버블 차트라고도 함

자료사전(DD : Data Dictionary)

  • 자료 사전은 자료 요소, 흐름, 저장소의 의미와 그들 간의 관계, 관계 값, 범위, 단위들을 구체적으로 명시하는 사전이다.
  • 자료 용어 정의를 조정하고 취합호고 문서로 명확히 하는 목적이 있다.

📌 프로젝트 관리

주어진 기간 내에 최소의 비용으로 사용자를 만족시키는 시스템을 개발하기 위한 전반적인 활동이다.

  • 계획, 품질, 범위를 관리한다
  • 효과적인 프로젝트 관리를 위한 3대 요소 : 사람, 문제, 프로세스

✅ 비용산정 모형

하향식 : 경험이 많은 전문가에게 비용 산정을 의뢰하거나 전문가와 조정자를 통해 산정

  • 전문가 판단, 델파이 기법

델파이 : 전문가의 경험적 지식을 통한 문제 해결 및 미래예측을 위한 기법

상향식 : 세부적인 요구사항과 기능에 따라 필요한 비용을 계산

  • Loc, Man Month, COCOMO, 푸트남, 기능점수(FP)

LoC(Lines of Code)

원시 코드라인수의 예측치로 비용 산정

예측치 = (낙관치 + 4중간치 + 비관치) / 6

비관치 = 가장 많이 측정된 코드 라인 수
중간치 : 측정된 모든 코드 라인 수의 평균
낙관치 : 가장 적게 측정된 코드 라인 수

Man Month

Man Month = LoC / 프로그래머의 월간 생산성

  • 프로젝트 기간 = Man Month / 프로젝트 인력

COCOMO

보헴이 제안한 모형으로 프로그램 규모에 따라 비용을 산정하는 방식

  • 비용 산정 결과는 Man Month로 산정한다.
  • 조직형(5만 줄 이하), 반 분리형(30만 줄 이하), 임베디드형(30만 줄 이상)으로 나눈다

푸트남

단계별로 요구할 인력의 분포를 가정하는 방식이다.

  • 시간에 따른 함수로 표현되는 Rayleigh-Norden 곡선의 노력 분포도를 기초로 한다.

기능점수

요구 기능을 증가시키는 인자별로 가중치를 부여하고, 요인별 가중치를 합산하여 총 기능의 점수를 계산하여 비용을 산정하는 방식이다.
FP = 총 기능점수 * [0.65 + (0.1 * 총 영향도)]

✅ 일정 관리 모형

주 공정법(CPM : Critical Path Method)

프로젝트의 시작에서 종료까지 가장 긴 시간이 걸리는 경로

PERT

일의 순서를 계획적으로 정리하기 위한 수렴 기법으로 비관치, 중간치, 낙관치의 3점 추정방식으로 일정을 관리

중요 연쇄 프로젝트 관리(CCPM : Critical Chain Project Management)

주 공정 연쇄법으로 자원제약사항을 고려하여 일정을 작성하는 기법

✅ 위험 관리

위험의 종류 : 알려진 위험, 예측 가능한 위험, 예측 불가능한 위험

위험 대응 전략

  • 회피 : 발생 가능성을 원천적으로 제거
  • 전가 : 위험에 대한 책임을 제3자에게 넘기는 전략
  • 완화 : 위험 발생 가능성을 감소시키거나 영향력을 감소시키는 전략
  • 수용 : 위험을 그대로 받아들이는 전략
profile
컴퓨터와 교육 그사이 어딘가

0개의 댓글