[정처기 실기] 1장 - 요구사항 확인

배채윤·2021년 4월 10일

✅ SDLC

◾️ XP(eXtreme Programming)

소프트웨어 생명주기 모형 중 agile 모형에 해당하는 개발 기법.
요구사항에 유연하게 대응하기 위해 참여와 짧은 개발 과정의 반복을 극대화하여 개발 생산성을 향상시킨다.

주요 실천 방법 7가지

  • Pair Programming(짝 프로그래밍) : 함께 프로그래밍함으로써 책임을 공동으로 나눠 갖는 환경을 조성
  • Collective Ownership(공동 코드 소유) : 개발 코드에 대한 권한과 책임을 공동으로 소유
  • Test-Driven Development(테스트 주도 개발)
  • Whole Team(전체 팀) : 모든 구성원은 각자 역할이 있음. 책임을 다해야 함.
  • Continuous Intergration(지속적인 통합): 모듈 난위로 나눠서 개발된 코드들은 마무리 될 때마다 지속적으로 통합됨.
  • Refactoring : 프로그램을 기능의 변경없이 시스템을 재구성함
  • Small Release(소규모 릴리즈)

✅ 요구사항

요구 공학

📌 요구사항을 정의하고, 분석 및 관리하는 프로세스를 연구하는 학문

요구사항 확인

📌 요구사항 개발 프로세스 중, 요구사항 명세서가 정확하고 완전하게 작성되었는지를 검토하는 단계

◾️ 요구사항 분석

개발 대상에 대한 사용자의 요구사항을 이해하고 문서화 하는 단계.

◽️ 구조적 분석 기법

자료의 흐름과 처리를 중심으로 하는 요구사항 분석 방법

  • 자료 흐름도(DFD;Data Flow Diagram)
    자료의 흐름 및 변환 과정과 기능을 도형 중심으로 기술하는 방법.
    프로세스, 자료 흐름, 자료 저장소, 단말 이 4가지 기호로 표현 가능.
  • 자료 사전(DD;Data Dictionary)
    자료 흐름도에 있는 자료를 더 자세히 정의하고 기록하는 것.

◽️ 요구사항 분석용 CASE(자동화 도구)

요구사항을 자동으로 분석하고, 요구사항 분석 명세서를 기술하도록 개발된 도구
ex) SADT, SPEM=RSL/REVS, PSL/PSA, TAGS

◽️ HIPO(Hirachy Input Process Output)

시스템의 분석 및 설계, 또는 문서화에 사용되는 기법으로, 시스템 실행과정인 입력&처리&출력의 기능을 표현한 것이다.하향식 SW 개발을 위한 문서화 도구이고 기능과 자료의 의존 관계를 동시에 표현할 수 있다.

  • HIPO Chart의 종류
    • 가시적 도표
    • 총체적 도표
    • 세부적 도표

◾️ UML(Unified Modeling Language) ⭐️⭐️⭐️

시스템 개발 과정에서 의사소통이 원활하게 이루어지도록 표준화한 대표적인 객체지향 모델링 언어. 사물, 관계, 다이어그램 3가지로 구성됨.

◽️ 사물

다이어그램 안에서 관계가 형성될 수 있는 대상들

  • 구조 사물
  • 행동 사물
  • 그룹 사물
  • 주해 사물

◽️ 관계

사물 간의 연관성을 표현하는 것

  • 연관(Assocation) 관계 : 사람 - 집
  • 집합(Aggregation) 관계 : 컴퓨터 - 프린터
  • 포함(Composition) 관계 : 문 - 키
  • 일반화(Generalization) 관계 : 커피 - 아메리카노 - 에스프레소
  • 의존(Dependency) 관계 : 등급 - 할인율
  • 실체화(Realization) 관계 : 날 수 있다 - 새 - 비행기

◽️ 다이어그램 ⭐️

  • 구조적 다이어그램
  • 행위 다이어드램
  • 스테레오 타입 : UML에서 표현하는 기본 기능 외에 추가적인 기능을 표현하는 것.
    • <<include>> : 연결된 다른 UML 요소에 대해 포함 관계
    • <<extend>> : 연결된 다른 UML 요소에 대해 확장 관계

◽️ UML 다이어그램 예시

기능 모델링

📌 개발될 시스템이 갖춰야 할 기능을 정리한 후 사용자와 함께 정리된 내용을 공유하기 위해 그림으로 표현하는 것

  • 유스케이스 다이어그램 : 외부요소와 시스템 간 상호작용 확인
    • 시스템/시스템 범위
    • 액터(주액터, 부액터) : 시스템과 상호작용하는 모든 외부요소
    • 유스케이스 : 사용자 관점에서 시스템이 액터에게 제공하는 서비스나 기능
    • 관계(포함, 확장, 일반화 관계)
  • 액티비티 다이어그램 : 시스템의 흐름 확인
    • 액션/액티비티 : 작업
    • 시작 / 종료 노드
    • 조건(판단) / 병합 노드 : 조건에 따라 제어의 흐름이 분리 or 합쳐짐을 표현
    • 포크 / 조인 노드 : 액티비티 흐름이 분리 or 합쳐짐을 표현
    • 스윔레인 : 액티비티 수행을 담당하는 주체를 구분하는 선

정적 모델링

📌 사용자가 요구한 기능을 구현하는 데 필요한 자료들의 논리적인 구조를 표현한 것.

  • 클래스 다이어그램 : 시스템 구성 요소를 문서화하는 데 사용됨
    • 클래스 : 각 객체의 속성과 오퍼레이션을 표현한 것. 클래스명, 속성, 오퍼레이션을 표기함
    • 제약 조건
    • 관계
    • 연관 클래스 : 연관 관계에 있는 두 클래스에 추가적으로 표현해야할 속성이나 오퍼레이션이 있는 경우 생성하는 클래스
  • 패키지 다이어그램 : 요소들을 그룹화한 패키지 간 의존관계 표현
    • 패키지
    • 객체
    • 의존관계
      • <<import>>
      • <<access>>

동적 모델링

📌 시스템의 내부 구성요소들의 상태 변화 과정과 과정에서 발생하는 상호작용을 표현한 것.

  • 시퀀스 다이어그램 : 객체끼리 메시지 + 상호작용

    • 액터 : 시스템으로부터 서비스를 요청하는 외부요소. 사람 or 외부 시스템
    • 객체 : 메시지를 주고받는 객체
    • 생명선(Lifeline) : 객체가 메모리에 존재하는 기간
    • 실행상자 : 객체가 메시지를 주고 받으며 구동되고 있음을 표현
    • 메시지
    • 객체 소멸
    • 프레임
  • 커뮤니케이션 다이어그램 : 객체끼리 메시지 + 상호작용 + 객체 간 연관

    • 액터
    • 객체
    • 링크
    • 메시지
  • 상태 다이어그램 : 객체들의 상태 변화

    • 상태
    • 시작 상태
    • 종료 상태
    • 상태 전환
    • 이벤트
    • 프레임

✅ S/W 공학의 발전적 추세

◽️ SW 재사용

이미 개발되어 인정받은 소프트웨어를 다른 소프트웨어 개발이나 유지에 사용하는 것.

  • 합성 중심 : 블록을 끼워 맞춰 SW를 완성시키는 방법;블록 구성 방법
  • 생성 중심 : 추상화 형태로 써진 명세를 구체화;패턴 구성 방법

◽️ SW 재공학

기존 시스템을 이용하여 보다 나은 시스템을 구축하고 새로운 기능을 추가하여 SW 성능을 향상시키는 것.

◽️ CASE(Computer Aided Software Engineering)

SW 개발 과정에서 사용되는 과정 전체 또는 일부를 컴퓨터와 전용 소프트웨어 도구를 사용하여 자동화하는 것.

✅ SW 개발 비용 산정 기법

  • 하향식 비용 산정 기법
    📌 과거의 유사한 경험을 바탕으로 전문 지식이 많은 개발자들이 참여한 회의를 통해 비용을 산정하는 방법

  • 상향식 비용 산정 기법
    📌 세부적인 작업 단위별로 비용을 산정한 후 집계하며 전체 비용을 산정하는 기법

◾️ 상향식 비용 산정 기법 종류

◽️ LOC(원시 코드 라인 수) 기법

비관치, 예측치, 낙관치를 측정하여 예측치를 구하고 이를 이용하여 비용을 산정

◽️ 개발 단계별 인월수(Effort Per Task) 기법

기능을 구현시키는 데 필요한 노력을 생명 주기와 각 단계별로 산정

◽️ 수학적 산정 기법

  • COCOMO 모형 : LOC 에 의한 비용 산정 기법
    • 개발 유형
      • 조직형 : 5만 라인 이하
      • 반분리형 : 30만 라인 이하
      • 내장형 : 30만 라인 이상
    • 종류
      • 기본형 : 크기와 개발 유형만을 이용하여 비용 산정
      • 중간형 : 공식 + 제품, 컴퓨터, 개발요원, 프로젝트 특성 참고
      • 발전형 : 중간형을 보완
  • PUTNAM 모형
    소프트웨어 생명주기의 전 과정 동안에 사용될 노력의 분포를 예상하는 모형
  • 기능점수(FP) 모형
    소프트웨어의 기능을 증대시키는 요인별로 기능점수(FP)를 구한 후 이를 이용해서 비용을 산정하는 기법

◾️ 프로젝트 일정 계획

  • PERT(Program Evaluation and Review Technique;)
    프로그램 평가 및 검토 기술
    전체 작업의 상호 관계를 표시하는 네트워크

    • 작업 예측치 = (비관치 + 기대치*4 + 낙관치) / 6
    • 평방 편차 = [(비관치-낙관치)/6]**2
  • CPM(Critical Path Method)
    임계 경로 기법
    작업을 나열하고 작업에 필요한 소요 기간을 예측하는 데 사용하는 기법
    노드, 간선, 이정표로 표현함.

  • 간트 차트
    작업 일정을 막대 도표를 이용하여 표시하는 프로젝트 일정표


✅ SW 개발 표준

SW 개발 단계에서 수행하는 품질 관리에 사용되는 국제 표준

◽️ ISO/IEC 12207

ISO(국제표준화기구)에서 만든 표준 소프트웨어 생명 주기 프로세스

  • 기본 생명 주기 프로세스
  • 지원 생명 주기 프로세스
  • 조직 생명 주기 프로세스

◽️ CMMI(Capabliti Maturity Model Integration)

SW 개발 조직의 업무 능력 및 조직의 성숙도를 평가하는 모델이다.

성숙도(5)

  • 초기
  • 관리
  • 정의
  • 정량적 관리
  • 최적화

◽️ SPICE(Software Process Improvement Capability dEtermine)

SW 품질 및 생산성 향상을 위해 SW 프로세스를 평가 및 개선하는 국제 표준

SPICE의 구성(고공지관조)

  • 고객-공급자
  • 공학
  • 지원
  • 관리
  • 조직

수행 능력 단계(6)

  • 불완전
  • 수행
  • 관리
  • 확립
  • 예측
  • 최적화
profile
새로운 기술을 테스트하고 적용해보는 걸 좋아하는 서버 개발자

0개의 댓글