개발일기

[정보처리기사 실기 이론정리3] 소프트웨어 설계 본문

정보처리기사 도전기

[정보처리기사 실기 이론정리3] 소프트웨어 설계

츄98 2024. 7. 27. 08:50

1. 소프트웨어 설계: 요구사항 명세서를 바탕으로 소프트웨어의 구체적인 설계서를 작성하는 단계

2. 상위설계 : 아키텍처 설계 -> 데이터설계 -> 인터페이스 정의 -> 사용자 인터페이스 설계

3. 하위설계 : 모듈설계 -> 자료구조 설계 -> 알고리즘 설계

4. 소프트웨어의 설계의 원리

  • 분할과 정복 : 큰 소프트웨어를 여러 개의 작은 서브시스템으로 나누어 각각을 완성
  • 추상화 : 실세계의 복잡한 상황을 간결하고 명확하게 핵심 위주로 단순화
    과정 추상화 : 상위 수준에서 수행 흐름만 설계
    데이터 추상화 : 데이터 구조를 간단한 표현으로 대체
    제어 추상화 : 명령들을 간단한 표현으로 대체
  • 단계적 분해 : 기능을 점차적으로 작은 단위로 나누고 구체화
  • 모듈화 : 시스템을 개별적으로 개발 가능한 모듈 단위로 나눈다.
  • 정보은닉 : 객체가 자신의 정보를 숨기고, 외부의 접근을 제한, 캡슐화와 연관
  • 결합도와 응집도 : 결합도를 낮추고, 응집도를 높이는 것이 좋은 설계 

5. 소프트웨어 아키텍처 : 소프트웨어의 기본 구조로, 시스템의 컴포넌트와 이들 간의 관계를 기술

  • 논리 뷰 : 시스템의 기능적 요구사항을 표현, 최종 사용자에게 제공되는 기능
  • 구현 뷰 : 소프트웨어 모듈의 구성과 개발자의 관점을 반영, 컴포넌트 다이어그램으로 구현
  • 프로세스 뷰 : 프로그램 실행 시의 시스템 표현, 동시성, 분산처리, 시스템 통합 등의 동적인 측면을 다룸
  • 배치 뷰 : 시스템의 물리적 배치와 네트워크 연결을 표현, 성능, 가용성, 신뢰성 등의 비기능적 요구사항을 고려
  • 유스케이스 뷰 : 아키텍처 설계 및 검증을 주도, 유스케이스 다이어그램 사용해 다른 뷰 검증

- 소프트웨어 아키텍처 패턴 : 재사용 가능한 소프트웨어 아키텍처 해결책

6. 계층화 패턴 :

  • 소프트웨어를 여러 계층으로 구분하여 각 계층이 하위계층의 기능을 사용하도록 하는 구조
  • OSI 7계층,  TCP/IP 4계층
  • 계층 간의 독립성

7. 클라이언트-서버 패턴

  • 서버가 여러 클라이언트에 서비스를 제공
  • 대부분의 웹 애플리케이션과 데이터베이스 시스템 
  • 중앙 집중식 데이터 관리와 자원의 효율적인 활용

8. 마스터-슬레이브 패턴

  • 마스터 컴포넌트가 작업을 여러 슬레이브에 분산시키고, 슬레이브의 처리 결과를 종합
  • 병렬 컴퓨팅

9. 파이프-필터 패턴

  • 데이터 스트림 처리 시스템에서 필터 컴포넌트가 각 단계의 처리를 수행하고 파이프를 통해 결과를 전달
  • Unix 쉘 스크립트 및 데이터 스크림 처리 시스템

10. 브로커 패턴

  • 분산 시스템에서 컴포넌트 간의 통신을 중재하는 브로커 컴포넌트 사용
  • 서비스 요청을 수신, 적절한 서비스 제공자에게 전달

11. 피어 투 피어 패턴

  • 모든 컴포넌트(피어)가 서버와 클라이언트의 역할을 동시에 수행
  • 파일 공유 시스템
  • 중앙 집중식 서버에 의존하지 않는 분산 네트워크 구조 가능

12. 이벤트-버스 패턴

  • 이벤트 버스를 통해 메시지를 발행하고 리스너가 이를 구독하는 구조
  • 알림 시스템, 메시징 시스템
  • 이벤트 기반의 비동기 통신 가능

13. 모델-뷰-컨트롤러 패턴(MVC 패턴)

  • 모델(데이터 처리), 뷰(사용자 인터페이스), 컨트롤러(입력 처리)로 구성
  • 웹 애플리케이션, GUI 기반 애플리케이션 등
  • 각 컴포넌트의 독립성

14. UML(Unified Modeling Language) : 소프트웨어 시스템을 시각화 및 문서화하고, 소프트웨어 시스템의 구조와 동작을 명세하는 표준화된 모델링 언어

15.  UML 구성요소(1) 사물

  • 구조사물 : 시스템의 개념적, 물리적 요소 - 클래스, 유스케이스, 컴포넌트 등
  • 행동사물 : 시간과 공간에 따른 요소들의 행위 - 상호작용, 상태머신
  • 그룹사물 : 요소들을 그룹으로 묶은 것 - 패키지
  • 주해사물 : 부가적 설명이나 제약조건 - 주석, 노트

16. UML 구성요소(2) 관계

  • 일반화 관계 : 한 클래스가 다른 클래스를 포함하는 상위개념일 때의 관계, 객체지향 개념에서는 일반화 관계를 상속관계라고 함

  • 연관관계 : 2개 이상 사물이 서로 관련된 관계, 한 한클래스가 다른 클래스에게 제공하는 기능을 사용할 때 표시
  • 의존관계 : 연관관계와 같이 한 클래스가 다른 클래스에게 제공하는 기능을 사용할 때 표시, 
    연관관계와 차이점은, 두 클래스의 관계가 한 메서드를 실행하는 동안과 같이 매우 짧은 시간만 유지
    한클래스의 명세가 바뀌면 다른 클래스에 영향을 줌

  • 실체화 관계 : 인터페이스를 구현 받아 추상 메서드를 오버라이딩하는 것. 한 객체가 다른 객체에게 오퍼레이션을 수행하도록 지정

  • 집합 관계 - 집약관계(Aggregation) : 한 객체가 다른 객체를 소유하는 'has a'관계, 전체 객체의 라이프타임과 부분객체의 라이프타임은 독립적, 전체 객체가 사라진다 해도 부분 객체는 사라지지 않음
  • 집합 관계 - 합성관계(Composition) : 부분 객체가 전체 객체에 속하는 관계로 긴밀한 필수적 관계, 전체 객체의 라이프타임과 부분 객체의 라이프 타임은 의존적, 전체 객체가 없어지면 부분 객체도 없어짐  

17. UML 구성요소(3) 다이어그램

  • 구조 다이어그램
클래스 다이어그램(Class) 시스템의 클래스와 이들 간의 관계 표현
객체 다이어그램(Object) 시스템 내의 객체와 이들 간의 관계 표현
컴포넌트 다이어그램(Component) 시스템의 물리적 구조, 즉 컴포넌트와 그 상호작용 표현
배치 다이어그램(Deployment) 시스템의 물리적 배치와 구성요소들 간의 관계 표현
복합체 구조 다이어그램(Complex Structure) 시스템 내의 복합 구조 표현
패키지 다이어그램(Package) 시스템의 패키지와 이들 간의 관계 표현
  • 행위 다이어그램
유스케이스 다이어그램(Use Case) 시스템의 기능과 사용자 간의 상호작용을 표현
순차 다이어그램(Sequence) 객체 간의 상호작용을 시간 순서대로 표현
커뮤니케이션 다이어그램
(Communication)
객체 간의 상호작용과 통신을 표현
상태 다이어그램(State) 객체의 생명주기 동안의 상태 변화를 표현
활동 다이어그램(Activity) 시스템의 프로세스 또는 워크플로우 표현
상호작용 다이어그램(Interaction)  시스템의 상호작용을 하나의 고수준 워크플로우로 표현 
타이밍 다이어그램(Timing) 객체의 행동과 시간에 따른 상호작용을 표현

18. 클래스 다이어그램

  • 자기만의 속성(Attribute)과 일정한 행동(Behavior)으로 구성
  • 여러 클래스들은 서로 연관이나 상속, 의존 관계 등으로 서로 간의 상호작용을 표현
표기법 접근제한자 사용범위
- private 해당 클래스 내에서만 접근 가능
# protected 상속, 동일 패키지 내에서만 접근 가능
+ public 어디서든 접근 가능

 

19. UML 구성요소(4) 유스케이스 다이어그램

  • 시스템과 사용자의 상호작용을 다이어그램으로 표현
  • 사용자 관점에서 시스템의 서비스 혹은 기능 혹은 관련한 외부 요소를 보여준다.
  • 시스템: 만들고자 하는 프로그램 명칭
  • 액터 : 시스템 외부에 있고 시스템과 상호작용 하는 사람, 시스템을 표현
  • 유스케이스 : 사용자 입장에서 바라본 시스템의 기능
  • 관계 : 액터와 유스케이스 사이의 의미있는 관계

관계 설명 / 표기
연관관계 (Association) 유스케이스와 액터 간의 상호작용이 있음을 표현
유스케이스와 액터를 실선으로 연결
포함관계(Include) 유스케이스를 수행할 때 반드시 실행되어야 하는 경우
확장관계(Extend) 유스케이스를 수행할 때 특정 조건에 따라 확장 기능 유스케이스를 수행하는 경우 
일반화관계(Generalization) 유사한 유스케이스 또는 액터를 모아 추상화한 유스케이스

20. UML 구성요소(5) 시퀀스 다이어그램

  • 객체 간의 상호작용 메시지 시퀀스를 시간의 흐름에 따라 나타내는 다이어그램
  • 객체(Object)와 생명선(Lifeline) : 객체는 직사각형, 라이프라인은 객체에서 이어지는 점선으로 표현, 점선은 위에서 아래로 갈수록 시간의 경과를 의미
  • 활성박스 : 기다란 직사각형으로 표현, 현재 객체가 어떤 활동을 하고 있음을 의미 
  • 메시지 : 동기, 비동기, 자체, 반환 메세지

 

21.  UML 구성요소(5) 상태 다이어그램

  •  한 객체의 상태 변화를 나타내는 다이어그램