Post

[정보처리기사] 요구사항 확인 2

요구사항 확인 2

유스케이스(Use Case) 다이어그램

  • 사용자와 다른 외부 시스템들이 개발될 시스템을 이용해 수행할 수 있는 기능을 사용자의 관점에서 표현한 것
  • 유스케이스 다이어그램의 구성 요소
구성 요소내용
시스템(System) /
시스템 범위(System Scope)
시스템 내부의 유스케이스들을 사각형으로 묶어 시스템의 범위를 표현한 것
액터(Actor)
  • 시스템과 상호작용을 하는 모든 외부 요소
  • 주로 사람이나 외부 시스템을 의미함
  • 주액터 : 시스템을 사용함으로써 이득을 얻는 대상으로, 주로 사람이 해당됨
  • 부액터 : 주액터의 목적 달성을 위해 시스템에 서비스를 제공하는 외부 시스템으로, 조직이나 기관 등이 될 수 있음
유스케이스(Use Case)사용자가 보는 관점에서 시스템이 액터에게 제공하는 서비스나 기능을 표현한 것
관계(Relationship)
  • 유스케이스 다이어그램에서 관계는 액터와 유스케이스, 유스케이스와 유스케이스 사이에서 나타날 수 있음
  • 유스케이스에서 나타날 수 있는 관계 : 포함(Include) 관계, 확장(Extends) 관계, 일반화(Generalization) 관계

유스케이스에서 나타날 수 있는 관계

포함(Include) 관계
  • 두 개 이상의 유스케이스에 공통적으로 적용되는 기능을 별도로 분리하여 새로운 유스케이스로 만든 경우, 원래의 유스케이스와 새롭게 분리된 유스케이스와의 관계를 포함 관계라고 함
  • 원래의 유스케이스에서 새롭게 만든 포함되는 유스케이스 쪽으로 점선 화살표를 연결한 후 화살표 위에 ≪include≫라고 표기
확장(Extend) 관계
  • 유스케이스가 특정 조건에 부합되어 유스케이스의 기능이 확장될 때 원래의 유스케이스와 확장된 유스케이스와의 관계를 확장 관계라고 함
  • 확잘될 유스케이스에서 원래의 유스케이스 쪽으로 점선 화살표를 연결한 후 화살표 위에 ≪extends≫라고 표기

클래스(Class) 다이어그램

  • 클래스와 클래스가 가지는 속성, 클래스 사이의 관계를 표현한 것
  • 클래스 다이어그램의 구성 요소
구성 요소 내용
클래스(Class)
  • 각각의 객체들이 갖는 속성과 오퍼레이션(동작)을 포현한 것
  • 일반적으로 3개의 구획(Compartment)으로 나눠 클래스의 이름, 속성, 오퍼레이션을 표기
  • 속성(Attribute) : 클래스의 상태나 정보를 표현
  • 오퍼레이션(Operation) : 클래스나 수행할 수 있는 동작으로, 함수(메소드, Method)라고도 함
제약조건
  • 속성에 입력될 값에 대한 제약조건이나 오퍼레이션 수행 전후에 지정해야 할 조건이 있다면 이를 적음
  • 클래스 안에 제약조건을 기술할 때는 중괄호 { }를 이용함
관계(Relationships)
  • 관계는 클래스와 클래스 사이의 연관성을 표현함
  • 클래스 다이어그램에 표현하는 관계에는 연관 관계, 집합 관계, 포함 관계, 일반화 관계, 의존 관계가 있음

시퀀스(Sequence) 다이어그램

  • 시스템이나 객체들이 메시지를 주고받으며 상호작용하는 과정을 그림으로 표현한 것
  • 시퀀스 다이어그램의 구성 요소
구성 요소의미
액터(Actor)시스템으로부터 서비스를 요청하는 외부 요소로, 사람이나 외부 시스템을 의미
객체(Object)메시지를 주고받는 주체
생명선(Lifeline)
  • 객체가 메모리에 존재하는 기간으로, 객체 아래쪽에 점선을 그어 표현함
  • 객체 소멸이 표시된 기간까지 존재
실행 상자
(Active Box, 활성 상자)
객체가 메시지를 주고받으며 구동되고 있음을 표현
메시지(Message)객체가 상호 작용을 위해 주고받는 메시지
객체 소멸해당 객체가 더 이상 메모리에 존재하지 않음을 표현
프레임(Frame)다이어그램의 전체 또는 일부를 묶어 표현

커뮤니케이션(Communication) 다이어그램

  • 시스템이나 객체들이 메시지를 주고받으며 상호작용하는 과정과 객체들 간의 연관을 그림으로 표현한 것
  • 커뮤니케이션 다이어그램의 구성 요소
구성 요소의미
액터(Actor)시스템으로부터 서비스를 요청하는 외부 요소로, 사람이나 외부 시스템을 의미
객체(Object)메시지를 주고받는 주체
링크(Link)
  • 객체들 간의 관계를 표현
  • 액터와 객체, 객체와 객체 간에 실선을 그어 표현
메시지(Message)
  • 객체가 상호 작용을 위해 주고받는 내용
  • 화살표의 방향은 메시지를 받는 쪽으로 향하게 표현
  • 일정한 순서에 의해 처리되는 메시지의 경우 숫자로 순서를 표시
상태 전환 상태 사이의 흐름, 변화를 화살표로 표현
이벤트(Event)
  • 상태에 변화를 주는 현상
  • 이벤트에는 조건, 외부 신호, 시간의 흐름 등이 있음
프레임(Frame) 상태 다이어그램의 범위를 표현

패키지(Package) 다이어그램

  • 유스케이스나 클래스 등의 요소들을 그룹화한 패키지 간의 의존 관계를 표현한 것
  • 패키지 다이어그램의 구성 요소
구성 요소의미
패키지(Package)
  • 객체들을 그룹화한 것
  • 단순 표기법 : 패키지 안에 패키지 이름만 표현
  • 확장 표기법 : 패키지 안에 요소까지 표현
객체(Object)유스케이스, 클래스, 인터페이스, 테이블 등 패키지에 포함될 수 있는 다양한 요소들
의존 관계
(Dependency)
  • 패키지와 패키지, 패키지와 객체 간을 점선 화살표로 연결하여 표현
  • 스테레오 타입을 이용해 의존 관계를 구체적으로 표현할 수 있음
  • 의존 관계의 표현 형태는 사용자가 임의로 작성할 수 있으며, 대표적으로 import와 access가 사용됨
    • ≪import≫ : 패키지에 포함된 객체들을 직접 가져와서 이요하는 관계
    • ≪access≫ : 인터페이스를 통해 패키지 내의 객체에 접근하여 이용하는 관계

구조적 방법론

  • 정형화된 분석 절차에 따라 사용자 요구사항을 파악하여 문서화하는 처리(Precess) 중심의 방법론
  • 이해가 쉽고 검증이 가능한 프로그램 코드를 생성하는 것이 목적
  • 구조적 방법론의 개발 절차 image

컴포넌트 기반 방법론(CBD; Component Based Design)

  • 기존의 시스템이나 소프트웨어를 구성하는 컴포넌트를 조합하여 하나의 새로운 애플리케이션을 만드는 방법론
  • 컴포넌트의 재사용(Reusability)이 가능하여 시간과 노력을 절감할 수 있음
  • 컴포넌트 기반 방법론의 개발 절차 image

소프트웨어 재사용(Software Reuse)

  • 이미 개발되어 인정받은 소프트웨어를 다른 소프트웨어 개발이나 유지에 사용하는 것
  • 소프트웨어 재사용 방법
합성 중심
(Composition-
Based)
전자 칩과 같은 소프트웨어 부품, 즉 블록을 만들어서 끼워 맞춰 소프트웨어를 완성시키는 방법으로, 블록 구성 방법이라고도 함
생성 중심
(Generation-
Based)
추상화 형태로 써진 명세를 구체화하여 프로그램을 만드는 방법으로, 패턴 구성 방법이라고도 함

CASE(Computer Aided Software Engineering)

  • 소프트웨어 개발 과정에서 사용되는 요구 분석, 설계, 구현, 검사 및 디버깅 과정 전체 또는 일부를 컴퓨터와 전용 소프트웨어 도구를 사용하여 자동화하는 것
  • CASE의 주요 기능
    • 소프트웨어 생명 주기 전 단계의 연결
    • 다양한 소프트웨어 개발 모형 지원
    • 그래픽 지원

LOC(source Line Of Code, 원시 코드 라인 수) 기법

  • 소프트웨어 각 기능의 원시 코드 라인 수의 비관치, 낙관치, 기대치를 측정하여 예측치를 구하고 이를 이용하여 비용을 산정하는 기법
  • 산정 공식
    • 노력(인월) = 개발 기간 X 투입 인원 = LOC / 1인당 월평균 생산 코드 라인 수
    • 개발 비용 = 노력(인월) X 단위 비용(1인당 월평균 인건비)
    • 개발 기간 = 노력(인월) / 투입 인원
    • 생산성 = LOC / 노력(인월)

수학적 산정 기법

  • 수학적 산정 기법은 상향식 비용 산정 기법으로, 경험적 추정 모형, 실험적 추정 모형이라고도 함
  • 수학적 산정 기법은 개발 비용 산정의 자동화를 목표
  • 주요 수학적 산정 기법
    • COCOMO 모형
    • Putnam 모형
    • 기능 점수(FP) 모형

COCOMO의 소프트웨어 개발 유형

  • 조직형(Organic Mode)
    • 기관 내부에서 개발된 중·소 규모의 소프트웨어
    • 일괄 자료 처리나 과학기술 계산용, 비즈니스 자료 처리용 등의 5만(50KDSI) 라인 이하의 소프트웨어를 개발하는 유형
    • 사무 처리용, 업무용, 과학용 응용 소프트웨어 개발에 적합
  • 반분리형(Semi-Detached Mode)
    • 조직형과 내장형의 중간형 소프트웨어
    • 트랜잭션 처리 시스템이나 운영체제, 데이터베이스 관리 시스템 등의 30만(300KDSI) 라인 이하의 소프트웨어를 개발하는 유형
    • 컴파일러, 인터프리터와 같은 유틸리티 개발에 적합
  • 내장형(Embedded Mode)
    • 초대형 규모의 소프트웨어
    • 트랜잭션 처리 시스템이나 운영체제 등의 30만(300KDSI) 라인 이상의 소프트웨어를 개발하는 유형
    • 신호기 제어 시스템, 미사일 유도 시스템, 실시간 처리 시스템 등의 시스템 프로그램 개발에 적합

Putnam 모형

  • 소프트웨어 생명 주기의 전 과정 동안에 사용될 노력의 분포를 예상하는 모형
  • 푸트남(Putnam)이 제안한 것으로, 생명 주기 예측 모형이라고도 함
  • 시간에 따른 함수로 표현되는 Rayleigh-Norden 곡선의 노력 분포도를 기초로 함

기능 점수(FD; Function Point) 모형

  • 소프트웨어의 기능을 증대시키는 요인별로 가중치를 부여하고, 요인별 가중치를 합산하여 총 기능 점수를 산출하면, 총 기능 점수와 영향도를 이용하여 기능 점수(FP)를 구한 후 이를 이용해서 비용을 산정하는 기법
  • 소프트웨어 기능 증대 요인
    • 자료 입력(입력 양식)
    • 정보 출력(출력 보고서)
    • 명령어(사용자 질의수)
    • 데이터 파일
    • 필요한 외부 루틴과의 인터페이스

비용 산정 자동화 추정 도구

SLIMRayleigh-Norden 곡선과 Putnam 예측 모델을 기초로 하여 개발된 자동화 추정 도구
ESTIMACS다양한 프로젝트와 개인별 요소를 수용하도록 FP 모형을 기초로 하여 개발된 자동화 추정 도구

CPM(Critical Path Method, 임계 경로 정보)

  • 프로젝트 완성에 필요한 작업을 나열하고 작업에 필요한 소요 기간을 예측하는데 사용하는 기법
  • 노드와 간선으로 구성된 네트워크로 노드는 작업을, 간선은 작업 사이의 전후 의존 관계를 나타냄

ISO/IEC 12207

  • ISO(국제표준화기구)에서 만든 표준 소프트웨어 생명 주기 프로세스
  • 소프트웨어의 개발, 운영, 유지보수 등을 체계적으로 관리하기 위한 소프트웨어 새명 주기 표준을 제공
  • ISO/IEC 12207 구분
기본 생명 주기
프로세스
획득, 공급, 개발, 운영, 유지보수 프로세스
지원 생명 주기
프로세스
품질 보증, 검증, 확인, 활동 검토, 감사, 문서화, 형상 관리, 문제 해결 프로세스
조직 생명 주기
프로세스
관리, 기반 구조, 훈련, 개선 프로세스

CMMI(Capability Maturity Model Integration)

  • 소프트웨어 개발 조직의 업무 능력 및 조직의 성숙도를 평가하는 모델
  • CMMI의 소프트웨어 프로세스 성숙도
단계특징
초기(Initial)작업자 능력에 따라 성공 여부 결정
관리(Managed)특정한 프로젝트 내의 프로세스 정의 및 수행
정의(Defined)조직의 표준 프로세스를 활용하여 업무 수행
정량적 관리
(Quantitatively
Managed)
프로젝트를 정량적으로 관리 및 통제
최적화
(Optimizing)
프로세스 역량 향상을 위해 지속적인 프로세스 개선

SPICE의 프로세스 수행 능력 단계

수준단계특징
0불완전
(Incomplete)
프로세스가 구현되지 않았거나 목적을 달성하지 못한 단계
1수행
(Performed)
프로세스가 수행되고 목적이 달성된 단계
2관리
(Managed)
정의된 자원의 한도 내에서 그 프로세스가 작업 산출물을 인도하는 단계
3확립
(Established)
소프트웨어 공학 원칙에 기반하여 정의된 프로세스가 수행되는 단계
4예측
(Predictable)
프로세스가 목적 달성을 위해 통제되고, 양적인 측정을 통해서 일관되게 수행되는 단계
5최적화
(Optimizing)
프로세스 수행을 최적화하고, 지속적인 개선을 통해 업무 목적을 만족시키는 단계

소프트웨어 개발 프레임워크(Framework)

  • 소프트웨어 개발에 공통적으로 사용되는 구성 요소와 아키텍처를 일반화하여 손쉽게 구현할 수 있도록 여러 가지 기능들을 제공해주는 반제품 형태의 소프트웨어 시스템
  • 선행 사업자의 기술에 의존하지 않는 표준화된 개발 기반으로 인해 사업자 종속성이 해소됨

소프트웨어 개발 프레임워크의 특성

  • 모듈화(Modularity)
    • 프레임워크는 캡슐화를 통해 모듈화를 강화하고 설계 및 구현의 변경에 따른 영향을 최소화함으로써 소프트웨어의 품질을 향상시킴
    • 프레임워크는 개발 표준에 의한 모듈화로 인해 유지 보수가 용이
  • 재사용성(Reusability)
    프레임워크는 재사용 가능한 모듈들을 제공함으로써 예산 절감, 생산성 향상, 품질 보증이 가능
  • 확장성(Extensibility)
    프레임워크는 다형성(Polymorphism)을 통한 인터페이스 확장이 가능하여 다양한 형태와 기능을 가진 애플리케이션 개발이 가능
  • 제어의 역흐름(Inversion of Control)
    개발자가 관리하고 통제해야 하는 객체들의 제어를 프레임워크에 넘김으로써 생산성을 향상시킴
This post is licensed under CC BY 4.0 by the author.