자격증 ⁺₊

정보처리기사 필기 1과목 정리 - 소프트웨어 설계

by ₊⁺우산이끼⁺₊ 2024. 5. 21.
반응형

공부하면서 정리했던 내용입니다.

폭포수 모형(Waterfall Model)

각 단계가 끝날 때마다 다음 단계를 위한 결과물이 명확하게 산출됨.
타당성 검토 → 계획 → 요구 분석 → 설계 → 구현 → 시험 → 유지보수

나선형 모형(Spiral Model, 점진적 모형)

폭포수 모형 + 프로토타입 모형 + 위험 분석
[계획 수립 → 위험 분석 → 개발 및 검증 → 고객 평가] 반복

애자일 모형(Agile Model)

핵심 가치: 개인과의 상호작용, 실행되는 SW, 고객과의 협업, 변화에 대응

스크럼(Scrum)
- 팀 중심
- 스스로 팀 구성, 스스로 해결(self-organizing, cross-functional)
- 제품 책임자(PO; Product Owner), 스크럼 마스터(SM; Scrum Master), 개발팀(DT; Development Team)
- 제품 백로그 → 스프린트 계획 회의 → 스프린트 → 일일 스크럼 회의 → 스프린트 검토 회의 → 스프린트 회고

XP(eXtreme Programming)
- 고객 참여와 개발 과정의 반복을 극대화
- 핵심 가치: 의사소통(Communication), 단순성(Simplicity), 존중(Respect), 피드백(Feedback)

요구사항 식별 시 고려사항

운영체제: 가용성, 성능, 기술 지원, 주변 기기, 구축 기용
데이터베이스 관리 시스템: 가용성, 성능, 기술 지원, 상호 호환성, 구축 비용

요구사항: 도출 → 분석 → 명세 → 확인

자료 흐름도(DFD)의 구성
- Process
- Data Flow
- Data Store
- Terminator

자료 사전(DD; Data Dictionary): 자료 흐름도의 자료를 더 자세히 정의하고 기록한 메타 데이터

기호 의미
= 정의
+ 연결
( ) 생략
[ | ] 선택(또는)
{ } 반복
* 주석

UML
- 원활한 의사소통을 위해 표준화한 객체지향 모델링 언어. OMG에서 표준으로 지정
- 구성 요소: Things, Relationships, Diagram (사물, 관계, 다이어그램)
- 관계
□ Association (연관)
□ Aggregation (집합)
□ Composition (포함)
□ Generalization (일반화)
□ Dependency (의존)
□ Realization (실체화)

- UML다이어그램

구조적 다이어그램
(Structural Diagram)
행위 다이어그램
(Behavioral Diagram)
정적 동적
Class (클래스)
Object (객체)
Component (컴포넌트)
Deployment (배치)
Composite Structure (복합체 구조)
Use Case (유스케이스)
Sequence (순차)
Communication (커뮤니케이션)
State (상태)
Activity (활동)
Interaction Overview (상호작용 개요)
Timing (타이밍)

- 스테레오 타입(Stereotype): 겹화살괄호<< >>에 표현

객체지향 분석 방법론

Coad-Yourdon: E-R 다이어그램 사용
Rumbaugh: 객체, 동적, 기능 모델로 나누어 수행
Booch: 미시적/거시적 개발 프로세스 모두 사용
Jacobson: Use-Case를 강조

럼바우(Rumbaugh)의 분석 기법

=객체 모델링 기법
객체 → 동적 → 기능 모델링
- 객체: 정보 모델링, 시스템에서 요구
- 동적: 제어, 흐름, 동작
- 기능: DFD(자료 흐름도)

결합도

Data Coupling 자료 요소 -결합도 약함
Stamp Coupling 자료 구조
Control Coupling 제어 신호
External Coupling 참조
Common Coupling 공통 데이터 영역
Content Coupling 직접 참조 -결합도 강함

응집도

Functional Cohesion 모든 기능 요소들이 단일 문제와 연관되어 수행 -응집도 강함
Sequential Cohesion 하나의 활동으로부터 나온 출력 데이터를 다음 활동 입력 데이터로 사용
Communication Cohesion 동일한 입력과 출력을 사용해 서로 다른 기능을 수행하는 구성 요소
Procedural Cohesion 모듈이 다수의 관련 기능을 가질 때 구성 요소들이 그 기능을 순차적으로 수행할 경우
Temporal Cohesion 특정 시간에 처리되는 기능
Logical Cohesion 유사한 성격을 갖거나 특정 형태로 분류되는 요소들
Coincidental Cohesion 서로 관련 없는 요소 -응집도 약함

*결합도가 약할수록, 응집도가 강할수록 품질이 높다.

Fan-In / Fan-Out

GoF(Gang of Four) 디자인 패턴

생성 패턴 5개 구조 패턴 7개 행위 패턴 11개
Abstract Factory
Builder
Factory Method
Prototype
Singleton
Adapter
Bridge
Composite
Decorator
Facade
Flyweight
Proxy
Chain of Responsibility
Command
Interpreter
Iterator
Mediator
Memento
Observer
State
Strategy
Template Method
Visitor

다형성(Polymorphism)

- 오버로딩: 같은 이름의 메소드를 중복하여 정의
- 오버라이딩: 상위 클래스에서 정의한 일반 메소드의 구현을 하위 클래스에서 무시하고 재정의. 상속관계에서만 발생.

코드 종류

  • 순차 코드 Sequence Code: 일련번호 부여
  • 블록 코드 Block Code: 공통성 있는 블록으로 구분, 블록 내에서 일련번호 부여
  • 10진 코드 Decimal Code: 0~9까지 10진 분할하고 각각에 대해 10진 분할을 반복(도서 분류식)
  • 그룹 분류 코드 Group Classification Code: 대분류, 중분류, 소분류 등으로 구분
  • 연상 코드 Mnemonic Code: 명칭이나 관계 있는 숫자나 문자, 기호 사용
  • 표의 숫자 코드 Significant Digit Code: 물리적 수치를 코드에 적용, 유효 숫자 코드
  • 합성 코드 Combined Code: 2개 이상의 코드를 조합

소프트웨어 아키텍처 설계 과정

  1. 설계 목표 설정
  2. 시스템 타입 결정
  3. 아키텍처 패턴 적용(스타일)
  4. 서브시스템 구체화
  5. 검토

파이프-필터 패턴 Pipe-Filter Pattern

  • 데이터 스트림 절차의 각 단계를 필터 컴포넌트로 캡슐화하여 파이프를 통해 데이터를 전송
  • 데이터 변환, 버퍼링, 동기화 등
  • UNIX의 쉘(Shell)

마스터-슬레이브(Master-Slave) 아키텍처

  • 일반적으로 실시간 시스템에서 사용
  • 연산, 통신, 조정
  • 마스터 프로세스가 슬레이브 프로세스 제어

클래스 설계 원칙

  • 단일 책임원칙(Single Reponsibility Principle): 하나의 클래스는 하나의 목적을 위해 생성.
  • 리스코프 치환의 원칙(Liskov Substitution Principle): 상속받은 하위 클래스는 어디서나 자신의 상위 클래스로 교체할 수 있어야 함.
  • 인터페이스 분리의 원칙(Interface Segregation Principle): 한 클래스는 자신이 사용하지 않는 인터페이스는 구현하지 않아야 함. 사용하지 않는 인터페이스 때문에 영향을 받으면 안 됨.
  • 의존성 역전의 원칙(Dependency Inversion Priniciple): 추상을 매개로 메시지를 주고받아 관계를 최대한 느슨하게 만듦.
반응형

댓글