본문 바로가기

정보처리기사 필기

[소프트웨어설계] 01. 요구사항 확인

수제비 2023 정보처리기사 필기 vol.1 교재 참고

Ⅰ. 소프트웨어 설계

- 실제 사례보다는 이론적인 지식을 중심으로 학습

- 핵심 개념: 요구사항 분석, 애자일, 객체 지향, 디자인 패턴, 소프트웨어 아키텍처, 인터페이스

요구사항 분석
: 도출된 요구사항 간 상충을 해결하고 소프트웨어의 범위를 파악하여 외부 환경과 상호작용하는 것을 분석하는 과정
소프트웨어 아키텍처
: 시스템에 대한 기본 조직체계로 시스템을 이루는 구성요소와 구성요소들 사이의 관계, 구성요소와 주변 환경들과의 관계 및 시스템의 진화와 설계를 지배하는 원칙
✅ 객체 지향
: 프로그램을 '객체'라는 기본 단위로 나누고 이 객체들의 상호작용으로 서술하는 프로그램 설계방법론
✅ 객체
: 하나의 역할을 수행하는 '메서드(함수)와 변수(데이터)'의 묶음
✅ 디자인 패턴
: 객체 지향 프로그래밍 설계를 할 때 자주 발생하는 문제들을 피하기 위해 사용되는 패턴
✅ 인터페이스
: 서로 다른 두 시스템, 장치, 소프트웨어를 서로 이어주는 접속 및 중계 시스템

 

01. 요구사항 확인

 

1. 현행 시스템 분석

(1) 플랫폼 기능 분석

 

(2) 플랫폼 성능 특성 분석

 

 - 플랫폼 성능 특성 분석 기법

기법 설명 산출물
사용자 인터뷰 사용자 인터뷰를 통해 속도의 적정성 확인 인터뷰 결과서
성능 테스트 현행 플랫폼 대상으로 성능, 부하 테스트 성능 테스트, 부하 테스트 결과서
산출물 점검 현행 플랫폼과 유사한 타사 제품의 성능 자료 등을 분석 벤치마킹 테스트 결과서

 

- 플랫폼 성능 특성 측정 항목

측정항목 설명
경과시간 애플리케이션에 작업을 요구 ~ 처리 완료 까지 걸린 시간
사용률 애플리케이션이 작업을 처리하는 동안 CPU, 메모리 등의 자원 사용률
응답시간 애플리케이션에 요청 전달 ~ 응답 도착 까지 걸린 시간
가용성 서버와 네트워크, 프로그램 등의 정보 시스템이 정상적으로 사용 가능한 정도

 

(3) 운영체제 분석

 

(4) 네트워크 분석

 

(5) DBMS 분석

 

 - DBMS 현행 시스템 분석 시 고려사항

- 성능 측면: 가용성, 성능, 상호호환성
* 가용성 -> 장애 발생 가능성, DBMS 이중화 및 복제 지원
* 상호 호환성 -> 설치 가능한 운영체제의 종류(windows, unix, linux, android, ios)

- 지원측면: 기술 지원, 구축 비용

 

(6) 비즈니스 융합 분석

 

 - 비즈니스 융합 유형

  1. 고객 가치(Why)
  2. 시장 유통(Whom): 신시장 개척, 미래시장 선점
  3. 가치 제안(What)
  4. 공급 역량(Who): 신기술, 신규역량을 활용한 상품생산 및 판매
  5. 생산 방식(How)

 

 

2. 요구사항 확인

(1) 요구분석 기법

 

 - 요구사항 분석 기술: 청취, 인터뷰와 질문, 분석, 중재, 관찰, 작성, 조직, 모델 작성 기술

 

 - 요구사항 분석에 사용되는 기능 모델링 기법

1. 데이터 흐름도(DFD; Data Flow Diagram)
2. 자료 사전

 

(2) UML(Unified Modeling Language)

 : 산출물을 명세화, 시각화, 문서화할 때 필요한 표준화된 모델링 언어

 

- UML의 특징

특징 설명
가시화 언어 오류 적고 의사소통 용이
구축 언어 다양한 프로그래밍 언어로 예측 가능,
UML -> 소스코드 변환, 역변환 가능
명세화 언어 정확한, 완벽한 모델
문서화 언어 시스템에 대한 평가, 의사소통의 문서

 

- UML의 구성요소: 사물, 관계, 다이어그램

 

- UML 다이어그램

 1. 구조적/정적 다이어그램

다이어그램 설명
클래스
(Class)
클래스의 정적 구조 표현
속성, 동작으로 구성
클래스-클래스, 클래스 속성 사이의 관계를 표현
객체
(Object)
인스턴스를 객체 사이의 관계로 표현
+ 여기서 객체를 클래스 개념으로 생각!
컴포넌트
(Component)
코드 컴포넌트 기반의 물리적 구조 표현
배치
(Deployment)
컴포넌트 사이의 종속성 표현
복합체 구조
(Composite Structure)
클래스, 컴포넌트가 복합 구조를 갖는 경우, 내부 구조 표현
패키지
(Package)
모델 요소 그룹화

 

 2. 행위적/동적 다이어그램

다이어그램 설명
유스케이스
(Usecase)
사용자 관점에서 시스템 활동 표현
시스템의 기능적 요구 정의에 활용
시퀀스
(Sequence)
객체 간 상호작용을 메시지 흐름으로 표현
메시지를 보내는 시간도 표현
교류 다이어그램의 한 종류
커뮤니케이션
(Communication)
메시지뿐만 아니라 객체 간의 연관까지 표현
상태
(State)
클래스의 상태 변화 표현
진입 조건, 탈출 조건, 상태 전이 등 기술
활동
(Activity)
객체의 처리 로직, 처리의 흐름을 순서대로 표현
타이밍
(Timing)
객체의 상태 변화와 시간 제약을 명시적으로 표현

 

- UML 상세

 1. 클래스 다이어그램

클래스 다이어그램 예시

-> 클래스 이름, 속성, 연산, 접근 제어자

 

 - 접근 제어자: 클래스에 접근할 수 있는 정도를 표현

- (private) 클래스 내부접근만 허용
+ (public) 클래스 외부접근을 허용
# (protected) 동일 패키지, 파생 클래스에서 접근 가능
~ (default) 동일 패키지 클래스에서 접근 가능

 

 2. 유스케이스 다이어그램

유스케이스 다이어그램 예시

-> 유스케이스, 액터, 시스템

 

 - 유스케이스 다이어그램 구성요소 간의 관계

연관 관계
(Association)
유스케이스와 액터 간의 상호작용이 있음 유스케이스와 액터를 실선으로 연결
포함 관계
(Include)
하나의 유스케이스가 다른 유스케이스의 실행을 전제로 할 때 화살표를 점선으로 연결하고
<<include>>라고 표기
확장 관계
(Extend)
특정 조건에 따라 확장 기능 유스케이스를 수행 화살표를 점섬으로 연결하고
<<exclude>>라고 표기
일반화 관계
(Generalization)
유사한 것끼리 그룹을 만들어 이해도 높임 속이 빈 화살표로 연결

 

3. 시퀀스 다이어그램

시퀀스 다이어그램 예시

-> 객체, 생명선, 실행, 메시지, 회귀 메시지

 

- UML의 관계 (표현 형태도 따로 알아두기!)

연관 관계 서로 관련된 상태
- 화살표로 표현
의존 관계 짧은 시간 동안만 연관을 유지하는 관계
한 클래스가 다른 클래스를 오퍼레이션의 매개변수로 사용하는 경우
- 점선 화살표로 표현
일반화 관계 일반적인 개념 -> 부모(상위)
구체적인 개념 -> 자식(하위)
- 속이 빈 화살표로 표현
실체화 관계 한 객체가 다른 객체에 오퍼레이션 수행
- 속이 빈 점선 화살표로 표현
포함 관계 포함하는 사물의 변화가 포함되는 사물에 영향을 미치는 관계
**변화가 영향을 미치는지 여부에 따라 일반화, 포함 관계를 구분
- 속이 채워진 마름모를 연결하여 표현
집합 관계 하나의 사물이 다른 사물에 포함된 관계
- 속이 빈 마름모를 연결하여 표현

 

- UML 확장 모델의 스테레오 타입

  : UML의 기본적인 요소 이외에 새로운 요소를 만들어 내기 위한 확장 메커니즘

<<include>> <<extend>> <<interface>> <<entity>> <<boundary>> <<control>>

 

 <<interface>> 모든 메서드가 추상 메서드
추상 메서드와 상수만으로 구성
<<entity>> 정보 또는 오래 지속되는 연관된 행위를 형상화
(ex. 내장패키지에 내장된 모듈이나 함수들)
기억 장치에 저장되어야 할 정보를 표현

*추상화: 클래스 간의 공통점을 찾아내서 공통의 부모를 설계하는 작업

*추상 클래스

1. 부모클래스에서 공통부분을 구현과 설계 -> 자식 클래스에서 상속받아 기능 확장

2. 자식 클래스에서 추상메서드를 반드시 구현하도록 강요 -> 프로그램의 표준화 정도를 높인다.
3. 공통 사항이 한곳에서 관리되어 개발 및 유지보수에 용이

 

(3) 애자일(Agile)

 : 개발과 함께 즉시 피드백을 받아서 유동적으로 개발하는 방법

 

- 애자일 선언문

공정과 도구보다 개인과 상호 작용 계획을 따르기보다 변화에 대응하기
포괄적인 문서보다 동작하는 소프트웨어 계약 협상보다 고객과의 협력

 

- 애자일 방법론 유형

 1. XP(eXtreme Programming)

의사소통 개선, 즉각적 피드백으로 소프트웨어 품질을 높이기 위한 방법론 
실용성 강조
- 1~3주의 반복 개발 주기
- 5가지 가치: 용기, 단순성, 의사소통, 피드백, 존중
- 12가지 기본원리 

 

2. 스크럼(SCRUM)

: 매일 정해진 시간, 장소에서 짧은 시간의 개발을 하는 팀을 위한 관리 중심 방법론
- 주요 용어
제품 책임자, 제품 백로그, 스프린트, 스크럼 미팅, 스크럼 마스터, 스프린트 회고, 번 다운 차트

 

3. 린(Lean)

낭비 요소를 제거하여 품질을 향상한 방법론
- JIT(Just In Time), 칸반(Kanban) 보드를 사용

 

4. 크리스탈(Crystal)

 

5. ASD(Adaptive Software Development)

 

6. FDD(Feature Driven Development)

 

 

3. 분석 모델 확인

(1) 모델링 기법

 

- 모델

: 개발 대상을 추상화하고 시각적으로 표현
- 소프트웨어에 대한 이해도 향상 및 의사소통 향상
- 문제 발생 상황에 대한 이해를 높이고 해결책 설명
- 문제 도메인의 엔티티(entity)들과 관계 및 종속성을 반영

 

- 모델링

- 모델링 작업의 결과물은 다른 모델링 작업에 영향
- 구조적 방법론에서는 DFD(Data Flow Diagram), DD(Data Dictionary) 사용
- 객체 지향 방법론에서는 UML 표기법 사용
실세계 문제에 대한 모델링이 핵심

 

(2) 분석 자동화 도구

 

- 분석 자동화 도구

: 요구사항 분석을 위한 자동화 도구(CASE)
 *CASE(Computer Aided Software Engineering): 소프트웨어 생명주기의 전체 단계를 연결, 자동화해주는 통합된 도구
  -> 소프트웨어, 하드웨어, 데이터베이스, 테스트 등을 통합하여 소프트웨어 개발 환경 조성
- 품질 개선이 가능
- 변경으로 인한 영향에 대한 추적이 쉬움
- 유지보수 비용의 축소
- 자동화된 기법을 통해 소프트웨어 품질 향상
구조적 기법, 프로토타이핑 기술, 자동프로그래밍 기술, 정보 저장소 기술, 분산 처리 기술을 사용

 

- 분석 자동화 도구의 분류

상위 CASE 계획수립, 요구분석, 기본설계 단계를 다이어그램으로 표현
오류 검증, 일관성 검증 지원
자료흐름도 프로토타이핑 작성 및 UI 설계 지원
하위 CASE 정적, 동적 테스트 지원
시스템 명세서 및 소스 코드 생성 지원

 

- 분석 자동화 도구 주요 기능(CASE 도구)

 -> 그래픽 지원, 소프트웨어 생명 주기의 전 단계를 연결, 소프트웨어 개발 모형 지원, 표준화된 개발 환경 구축 및 문서 자동화 기능을 제공, 작업자 간의 커뮤니케이션 증대

 

(3) 요구사항 관리 도구

 

 - 요구사항 관리 도구의 필요성: 비용 편익, 변경 추적, 영향 평가

 

 

여기까지 [소프트웨어설계] 01 요구사항 확인 파트를 마치겠습니다.

다음 포스팅은 '[소프트웨어설계] 02 화면설계' 입니다:)