정보처리기사 준비

1. 요구사항 확인 단원 - 핵심 내용 정리

안개바다 2024. 1. 14. 16:10

요구사항 이란?

소프트웨어가 어떤 문제를 해결하기 위해 제공하는 서비스에 대한 설명과 정상적으로 운영되는데 필요한 제약조건

위의 정의는 우리가 한번에 받아들이기에는 너무 어렵기 때문에 요구사항의 유형 들을 통해 이해해보겠습니다.

요구사항의 유형은 크게 4가지로 요약됩니다.

- 기능 요구사항
- 비기능 요구사항
- 사용자 요구사항
- 시스템 요구사항

각각을 나누어서 이해하는 것보다 기능-비기능, 사용자-시스템으로 짝 지어서 이해하면 좋습니다.

소프트웨어 or 시스템의 기능에 집중한 요구사항이면 기능 요구사항, 시스템의 품질이나 제약사항(성능, 보안 등)에 집중하면 비기능 요구사항 입니다.

기능 요구사항 비기능 요구사항
기능에 집중 품질, 시스템 제약사항에 집중
- 시스템 입,출력
- 시스템 필수수행 기능
- 사용자가 원하는 기능 
- 성능 요구사항
- 보안 요구사항
- 인터페이스 요구사항

 

시스템에서 제공해야 할 요구사항을 사용자 관점에서 작성되었다면 사용자 요구사항, 개발자 관점에서 작성되었다면 시스템 요구사항 입니다.

(당연한 내용이지만...)
- 사용자 요구사항 => 소비자를 위해 친숙하게
- 시스템 요구가항 => 전문적이고 기술적으로 작성

 

UML이란?

Unified Modeling Language
시스템 개발과정에서 의사소통이 원할하도록 표준화한 (객체지향) 모델링 언어
개발자는 UML 다이어그램으로 소통하기에 중요하다.

다른 언어들과의 차이점은 뭘까? 왜 나왔을까?
UML 등장 이전에 Booch, OMT, OOSE, Jacobson 등(어떤게 있었는지는 굳이 알 필요 없다.) 다양한 객체 모델링 방법이 있었고, 이것들의 장점만 모아서 표준으로 만든게 UML

표준이라는 점을 기억
- 객체지향 방법론의 장점을 통합
- 표준으로 지정

UML의 기본 구성 3요소

- 사물
- 관계
- 다이어그램

UML - 사물(things) 

- 구조(Structural) 사물 => 개념적 물리적 요소 표현
			 ex) 유스케이스, 클래스, 컴포넌트, 인터페이스
- 행동(Behavioral) 사물 => 요소 들의 행동을 표현(시공간에 따른)
			 ex) 상호작용
- 그룹(Grouping) 사물 => 요소들을 그룹-패키지 단위로 표현
- 주해(Annotation) 사물 => 설명 or 제약조건

UML - 관계

표기법을 기반으로 개념을 이해하면 좋습니다.
실제 자바 클래스 구현시 어떻게 사용되는지에 대한 측면으로 이해해도 좋습니다.

분류 설명
연관관계
(Association)
- 클래스 사이를 실선으로 연결
- 단방향은 화살표로, 양방향시에는 실선으로만 표현
- 다중도 개념 이해 필요
#다중도는 A..B => A<=K<=B 로 이해하면 쉽습니다.
집합관계
(Aggregation)
- 포함하는 큰 범위를 Whole 작은범위를 Part로 합니다.
- 다이어그램 작성시 Whole쪽으로 속이 빈 마름모 표기
포함관계
(Composition)
- 집합관계에서 파생, Whole과 Part가 생명주기를 같이한다면 포함, 아니라면 집합관계
-집합관계와 반대로  속이 채워진 마름모 표기
일반화관계
(Generalization)
- 자바에서의 부모-자식 상속관계 개념
- 클래스 다이어그램의 상속관계
의존관계
(Dependency)
- 연관관계에서 파생, 짧은 시간동안만 연관을 주는 관계
[이해하기 어려운 의존 관계을 다른 방향으로 이해]
 - 예시로 이해 ex) 등급-할인율, 학생-시간표
 - 코드 개념으로 이해 => 객체 참조를 일시적으로만 하는 것
실체화관계
(Realization)
- 인터페이스와 구현클래스 관계
- 부모의 불완전 행동을 자식이 구현

UML - 다이어그램

사물과 관계를 도형으로 표현
UML에도 버전이 있습니다. 현재 버전인 2.X로 설명합니다.

구조(Structural) 다이어그램

Class Diagram(중요)
Component Diagram
Deployment Diagram
Object Diagram
Package Diagram
Composite Structure Diagram
Profile Diagram

행위(Behavioral) 다이어그램

Use Case Diagram(중요)
Activity Diagram(중요)
State Machine Diagram
Sequence Diagram(중요)
Communication Diagram(중요)
Interaction Overview Diagram
Timing Diagram

 

 

범위가 방대하기에 핵심 다이어그램만 정리합니다.

 

클래스(Class) 다이어그램

 모든 객체 지향 메서드를 관통하는 핵심 모델링 기법
시스템의 객체 유형과 객체 간에 존재하는 다양한 종류의 정적 관계를 설명

 

 

클래스는 3가지 요소로 구성됩니다.
가장 윗 부분에는 클래스 명, 중간 부분에는 속성(클래스의 특징, 변수), 마지막 부분에는 연산(메서드, 클래스가 수행하는 책임)으로 구성됩니다.

예를 들면

Player
+moveSpeed
-moveDir
#targetPosition
-Move()
+TraceTarget()

이렇게 구성이 가능합니다.

이름 앞에 -,+,#과 같은 기호들이 작성됐는데 순서대로 private, public, protected를 의미합니다.

 

비용 산정 기법

하향식

과거의 유사한 케이스를 전문 개발자들의 회의를 통해 비용 산정
프로젝트 전체 비용 산정 후 작업 별로 비용 세분화
[전문가 감정 기법]
 -경험이 있는 전문가 2명 이상이 비용을 산정하는 방식
 - 편리하고 신속하게 비용을 산정할 수 있지만 개인적-주관적인 문제점
[델파이 기법]
 - 전문가 감정 기법의 개인적-주관적 문제점을 보완하기 위해 많은 전문가의 의견을 종합하여 산정
 - 한명의 조정자와 여러명의 전문가로 구성

상향식 

프로젝트의 세부적인 작업 단위별로 비용을 산정한 후 집계하여 전체 비용을 산정하는 방법
계산문제가 빈출로 나오는 파트
[LOC(원시 코드 라인 수) 기법]
- 소프트웨어 각 기능의 원시 코드 라인 수의 비관치, 낙관치, 기대치를 측정하여 예측치를 구하고 비용을 산정
- 예측치를 이용하여 생산성, 노력, 개박 기간 등의 비용을 산정
- 산정공식 : 노력 = 개발기간 X 투입 인원 = LOC / 1인당 월평균 생산 코드 라인 수
                개발 비용 = 노력 X 단위 비용(1인당 월평균 인건비)
                개발 기간 = 노력 / 투입 인원
                생산성 = LOC / 노력[개발 단계별 인원수 기법]
- LOC 기법을 보완하기 위한 기법, 기능을 구현시키는 데 필요한 노력을 생명 주기의 각 단계별로 산정

수학적 산정 방식 

상향식 비용 산정 기법의 일부
개념을 서술하는 문제보다는 개념 설명을 나열하고 어떤 기법인지 고르는 단답형 서술형 or 객관식 문제가 출제
설명을 외우기 보다는 각각의 키워드에 집중
"COCOMO-LOC" / "Putnam-생명주기,시간" / "FP-가중치"
수학적 산정기법 설명
COCOMO 모형  Boehm이 제시
- 소프트웨어 개발비 견적에 널리 통용
기본모형은 소프트웨어 크기와 개발 모드에 의해서 구해집니다.
- 구체화 정도에 따라 기본, 중간, 발전형으로 구분
원시 프로그램의 규모에 의한 방법
- KDSI 측정
- 개발 노력 승수결정
- 비용산정 유형으로 단순형, 중간형, 임베디드형
Putnam 모형 푸트남이 제안
생명 주기 예측 모형이라고도 합니다.
- 시간에 따른 함수로 표현되는 Rayleigh-Norden 곡선의 노력 분포도를 기초로 합니다.
대형 프로젝트의 노력 분포 산정에 이용
- 개발 기간이 늘어날수록 프로젝트 적용 인원의 노력이 감소
기능점수(FP) 알브레히트 제안
가중치 부여
- 요인별 가중치를 합산하여 총 기능점수 산출
- 총 기능 점수와 영향도를 이용하여 기능점수(FP)를 구한후 이를 이용해서 비용산정

 

 

 

참고 블로그

- [UML 기초 지식]https://velog.io/@hanblueblue/UML-UML-%EA%B8%B0%EC%B4%88

- [UML관계] https://velog.io/@ssuh0o0/%ED%97%B7%EA%B0%88%EB%A0%A4%EC%84%9C-%EC%A0%81%EC%96%B4%EB%86%93%EB%8A%94-UML-%EB%8B%A4%EC%9D%B4%EC%96%B4%EA%B7%B8%EB%9E%A8

- [UML 다이어그램 위키독스] https://wikidocs.net/212037

- [UML 클래스 다이어그램] https://velog.io/@khyunjiee/UML-Class-Diagram

- [비용산정부분 책 내용 정리] https://sung0000woo.tistory.com/47