정처기 1일차 - 요구사항 확인

solee·2022년 4월 30일
0

Ⅰ. 요구사항 확인

Chapter 01. 소프트웨어 개발방법론
1. 소프트웨어 개발방법론
2. 비용산정, 일정관리 모형
Chapter 02. 현행 시스템 분석
1. 현행 시스템 파악
2. 개발 기술 환경 정의




소프트웨어 개발방법론

SDLC : 소프트웨어 생명주기

Software Development Life Cycle

소프트웨어 생명주기란 시스템 엔지니어링, 정보 시스템, 또는 소프트웨어 공학에서 정보 시스템을 계획, 개발, 시험, 채용하는 과정을 뜻하는 용어이다. 즉, 개발부터 유지보수까지의 프로세스를 체계화한 모델이다.

  • 프로세스

    요구사항 분석 > 설계 > 구현 > 테스트 > 유지보수


  • 모델
  1. 폭포수 모델 waterfall
  2. 프로토타이핑 모델 prototyping
  3. 나선형 모델 spiral
  4. 반복적 모델 iteration

  1. 폭포수 모델 waterfall
    가장 오래된 모델
    각 단계를 마무리한 후 다음 단계로 넘어간다.
    요구사항을 변경하기 어렵지만 이해가 쉽고 단계별 산출물이 명확하다.

  2. 프로토타이핑 모델 prototyping
    프로토타입으로 요구사항의 주요 기능을 구현, 피드백을 반영한다.
    양측에게 참조 모델이 되어 주나 비용이 증가한다.

  3. 나선형 모델 spiral
    점진적으로 시스템을 개발해 나간다.
    계획 > 위험 분석 > 개발 > 고객평가 > 계획 ...
    단계가 반복되므로 관리가 어렵지만 위험성이 떨어지고 요구사항 변경에 유용하게 대처할 수 있다.

  4. 반복적 모델 iteration
    증분 방식으로 병행, 병렬적 개발 후 통합해 점증 완성시키는 모델
    요구사항 일부분이나 제품 일부분을 반복적으로 개발하여 완성한다.



소프트웨어 개발 방법론

소프트웨어를 하나의 생명체로 간주, 개발의 전 과정을 형상화한 방법론

  1. 구조적 방법론 structured
  2. 정보공학 방법론 information engineering
  3. 객체지향 방법론 object-oriented
  4. 컴포넌트 기반 방법론 CBD: comonent based
  5. 애자일 방법론 agile
  6. 제품 계열 방법론 product line



  1. 구조적 방법론
    기능을 기준으로 나누어 개발한 후 통합하는 방식의 프로세스 중심 하향식 방법론
    나씨-슈나이더만 Nassi-Shneiderman 차트(논리 중심 도형식 표현)

  2. 정보공학 방법론
    개발 주기를 이용해 대형 프로젝트를 수행하는 체계적인 방법론

  3. 객체지향 방법론
    단위 '객체'로 시스템을 설계하는 방법론
    객체, 클래스, 메시지 이용

  4. 컴포넌트 기반 방법론
    sw를 구성하는 컴포넌트를 조립해 작성하는 방법론
    개발 기간이 단축되고 확장성과 재사용성이 좋다.

  5. 애자일 방법론
    사람이 중심이 되어 변화에 빠르게 적응해 시스템을 개발할 수 있는 방법론
    sw개발이 모바일 환경으로 변화되며 등장. 잦은 배포의 중요성이 강조됨

1) XP(extreme programming)
1~3주의 반복되는 개발 주기
용기, 단순, 커뮤니케이션, 피드백, 존중
짝 코딩, 공동 소유, small release, TDD(테스트 기반 개발:테스트를 먼저 수행한 후 코드를 작성), 리팩토링

2) 스크럼Scrum
정해진 시간, 정해진 장소에서 짧은 시간동안 개발하는 프로젝트 관리 방법론
백로그, 스프린트, 스크럼 미팅, 스크럼 마스터, 회고, 번다운 차트

3) 린Lean
칸반 보드를 사용해 낭비 요소를 제거하는 방법로
낭비제거, 품질 내재화, 지식 창출, 늦은 확정, 빠른 인도, 사람 존중, 전체 최적화

  1. 제품 계열 방법론
    특정 제품에 적용할 공통 기능을 적의, 개발하는 방법론
    임베디드 소프트웨어
    영역 공학, 응용 공학



애자일 방법론의 특징

유동적 범위 설정
팀 단위 업무 수행
반복 주기 단위로 sw 개발
팀 평가
문서 < 코드



비용산정, 일정관리 모형

비용산정

  1. 하향식 비용 산정
  • 경험이 많은 전문가에게 의뢰 or 여러 전문가 + 조정자로 산정

1) 델파이 기법
전문가의 경험적 지식을 통한 문제 해결, 미래예측
= 전문가 합의법

2)전문가 판단

  1. 상향식 비용 산정
  • 세부적인 요구사항과 기능에 따라 비용을 계산

1) Loc
코드 라인 수의 낙관치, 중간치, 비관치를 계산, 예측치를 기준으로 비용 산정
예측치 = 낙관치+4중간치+비관치 / 6

2) Man Month
MM = Loc/프로그래머의 월간 생산성
기간 = MM/프로그래머 수
그냥 계산하면 된다!

3) COCOMO
보헴이 제안함.
Man Month로 비용을 산정하지만 프로그램 규모로 나뉜다.

  • 조직형Organic Mode
    일괄 자료 처리, 과학 기술 계산, 비즈니스 자료 처리
    소규모(5만KDSI 이하)
  • 반 분리형Semi-Detached Mode
    트랜젝션 처리, DBMS, 컴파일러, 인터프리터 등 유티 개발
    30만 KDSI 이하
  • 임베디드형Embedded Mode
    초대형 트랜젝션 처리, 운영체제, 실시간 처리 시스템 등 시스템 프로그램 개발
    30만 KDSI 이상

4) Putnam
개발 단계별 인력 분포를 가정
생명주기 예측 모형
시간에 따른 함수: Rayleigh-Norden 곡선의 노력 분포도

5) FP기능점수
기능을 증가시키는 인자별로 가중치 부여
경험 기반 가중치: 단순, 보통, 복잡
FP = 총 기능점수 * [ 0.65 + (0.1*총 영향도) ]



일정관리

  1. 주 공정법 CPM(critical path method)
    여러 작업의 수행 순서가 얽혀 있을 때 계산
    제약사항을 배제한 채 노드와 노드 간의 연결인 액티비티 표기

  2. PERT(Program Evaluation and Review Technique)
    비관치, 중간치, 낙관치의 3점 추정방식으로 계산
    일의 순서를 계획적으로 정리하기 위한 수렴 기법

  3. 중요 연쇄 프로젝트 관리 CCPM(critical chain project management)
    자원 제약 사항을 고려해 일정을 작성


현행 시스템 분석

현행 시스템 파악

  • 현행 시스템의 적용 현황(하위시스템, 기능, 연계 정보, 기술 요소)를 파아해 개발하려는 SW의 개발 범위와 방향성을 분석한다.

1단계: 구성, 기능, 인터페이스 - 기간 업무, 지원 업무, 기능, 데이터 종류 형식 주기
2단계: 아키텍처, 소프트웨어 구성 - 최상위 수준에서 기술 요소 파악, 라이선스 제품명 등 파악
3단계: 하드웨어 및 네트워크 구성 - 하드웨어와 네트워크 장비 등 파악


소프트웨어 아키텍처

  • 소프트웨어 구성요소와 그 특성, 관계를 표현한 구조

소프트웨어 아키텍처 프레임워크

  • 아키텍처가 표현해야 하는 내용과 관계를 제공하는 아키텍처 기술 표준

  • 소프트웨어 아키텍처 4+1 뷰
    : 고객의 요구사항을 정리한 시나리오를 4개의 관점에서 바라보는 접근 방식
    : 요구사항 충족을 증명하기 위해 유스케이스 사용
    : 논리 뷰, 구현 뷰, 프로세스 뷰, 배포 뷰 + 유스케이스 뷰

논리 뷰: 설계자, 개발자 관점. 기능적 요구사항
구현 뷰: 정적 SW 모듈의 구성, 컴포넌트 구조 및 의존성, 부가 정보 정의
프로세스 뷰: 개발자, 시스템 통합자 관점. 비기능적인 속성인 자원 효율, 병행 실행, 비동기, 이벤트 처리 등을 표현
배포 뷰: 물리적 아키텍처 배치를 매핑
유스케이스 뷰: 사용자, 설계자, 테스트 관점. 다른 뷰 검증에 사용

  • 소프트웨어 아키텍처 패턴



개발 기술 환경 정의



profile
DA DA DA

0개의 댓글