정보처리기사 소프트웨어 설계4

뚜니·2024년 2월 26일
0

정보처리기사

목록 보기
4/12

소프트웨어 설계

😺워크스루(Walkthrough)

  • 사용사례를 확장하여 명세하거나 설계 다이어그램, 원시코드, 테스트 케이스 등에 적용할 수 있다.
  • 복잡한 알고리즘 또는 반복, 실시간 동작, 병행 처리와 같은 기능이나 동작을 이해하려고 할 때 유용하다.
  • 단순한 테스트 케이스를 이용하여 프로덕트를 수작업으로 수행해 보는 것이다.

인스펙션(Inspection)

워크스루를 발전시킨 형태로, 소프트웨어 개발 단계에서 산출된 결과물의 품질을 평가하고 이를 개선하기 위한 방법 등을 제시합니다.

😸결합도(Coupling)

  • 결합도는 모듈 간에 상호 의존하는 정도 또는 두 모듈 사이의 연관 관계를 의미한다.
  • 다양한 결합으로 모듈을 구성할 수 있으나 결합도가 약할 수록 품질이 높고, 강할수록 품질이 낮다.
  • 결합도가 강하면 시스템 구현 및 유지보수 작업이 어렵다.

결합도의 종류

  • 자료 결합도(Data Coupling)
    모듈 간의 인터페이스가 자료 요소로만 구성될 때의 결합도
  • 스탬프(검인) 결합도(Stamp Coupling)
    모듈 간의 인터페이스로 배열이나 레코드 등의 자료 구조가 전달될 때의 결합도
  • 제어 결합도(Control Coupling)
    어떤 모듈이 다른 모듈 내부의 논리적인 흐름을 제어하기 위해 제어 신호를 이용하여 통신하거나 제어 요소(Function Code, Switch, Tag, Flag)를 전달하는 결합도
  • 외부 결합도(External Coupling)
    어떤 모듈에서 외부로 선언한 데이터(변수)를 다른 모듈에서 참조할 때의 결합도
  • 공통(공유) 결합도(Common Coupling)
    공유되는 공통 데잍터 영역을 여러 모듈이 사용할 때의 결합도
  • 내용 결합도(Content Coupling)
    한 모듈이 다른 모듈의 내부 기능 및 그 내부 자료를 직접 참조하거나 수정할 때의 결합도

😹XP)익스트림 프로그래밍(eXtreme Programming)의 5가지 핵심 가치

의사소통(Communication)
단순성(Simplicity)
용기(Courage)
존중(Respect)
피드백(Feedback)

😻HIPO(Hierarchy Input Process Output)

  • 시스템의 분석 및 설계나 문서화할 때 사용되는 기법으로, 하향식 소프트웨어 개발을 위한 문서화 도구입니다.
  • HIPO 차트 종류에는 가시적 도표, 총체적 도표, 세부적 도표가 있다.
  • 기능과 자료의 의존 관계를 동시에 표현할 수 있다.
  • 보기 쉽고 이해하기 쉽다.

HIPO Chart의 종류

  • 가시적 도표(도식 목차) : 시스템의 전체적인 기능과 흐름을 보여주는 계층(Tree) 구조도
  • 총체적 도표(총괄도표, 개요 도포) : 프로그램을 구성하는 기능을 기술한 것으로 입력, 처리, 출력에 대한 전반적인 정보를 제공하는 도표
  • 세부적 도표(상세 도표) : 총체적 도표에 표시된 기능을 구성하는 기본 요소들을 상세히 기술하는 도표

😼모바일 기기 NUI 인터페이스

Pinch : 두 손가락으로 넓히기, 좁히기
Press : 화면 특정 위치 오래 꾹 누르기
Flick : 빠르게 스크롤
Pan : 누른 채 계속 움직임

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

  • 보헴(Boehm)이 제안한 것으로, 폭포수 모형과 프로토타입 모형의 장점에 위험 분석 기능을 추가한 모형이다.
  • 나선을 따라 돌듯이 여러 번의 소프트웨어 개발 과정을 거쳐 점진적으로 완벽한 최종 소프트웨어를 개발하는 것으로, 점진적 모형이라고도 한다.
  • 소프트웨어를 개발하면서 발생할 수 있는 위험을 관리하고 최소화하는 것을 목적으로 한다.
  • 점진적으로 개발 과정이 반복되므로 누락되거나 추가된 요구사항을 첨가할 수 있고, 정밀하며, 유지보수 과정이 필요 없다.
  • 수행 과정(반복) : 계획 수립 -> 위험 분석 -> 개발 및 검증 -> 고객 평가

🙀자료 흐름도(Data Flow Diagram)의 구성요소

🔹 프로세스(Process)

  • 자료를 변환시키는 시스템의 한 부분(처리 과정)을 나타내며 처리, 기능, 변환, 버블이라고도 함
  • 원이나 둥근 사각형으로 표시하고 그 안에 프로세스 이름을 기입함

🔹 자료 흐름(Data Flow)

  • 자료의 이동(흐름)이나 연관관계를 나타냄
  • 화살표 위에 자료의 이름을 기입함

🔹 자료 저장소(Data Store)

  • 시스템에서의 자료 저장소(파일, 데이터베이스)를 나타냄
  • 도형(평행선) 안에 자료 저장소 이름을 기입함

🔹 단말(Terminator)

  • 시스템과 교신하는 외부 개체로, 입력 데이터가 만들어지고 출력 데이터를 받음(정보의 생산자와 소비자)
  • 도형(사각형) 안에 이름을 기입함

😿SOLID 원칙

🔹SRP(Single Responsibility Principle)
-단일 책임 원칙
-객체는 단 하나의 책임만 가져야 한다는 원칙
-응집도는 높고, 결합도는 낮게 설계하는 것을 의미한다.

🔹OCP(Open-Closed Principle)
-개방 폐쇄 원칙
-기존의 코드를 변경하지 않고 기능을 추가할 수 있도록 설계해야 한다는 원칙이다.
-공통 인터페이스를 하나의 인터페이스로 묶어 캡슐화하는 방법이 대표적이다.

🔹LSP(Liskov Substitution Principle)
-리스코프 치환 원칙
-자식 클래스는 최소한 자신의 부모 클래스에서 가능한 행위는 수행할 수 있어야 한다는 설계 원칙이다.
-자식 클래스는 부모 클래스의 책임을 무시하거나 재정의하지 않고 확장만 수행하도록 해야한다.

🔹ISP(Interface Segregation Principle)
-자신이 사용하지 않는 인터페이스와 의존 관계를 맺거나 영향을 받지 않아야 한다는 원칙이다.
-단일 책임 원칙이 객체가 갖는 하나의 책임이라면, 인터페이스 분리 원칙은 인터페이스가 갖는 하나의 책임이다.

🔹DIP(Dependency Inversion Principle)
-각 객체들 간의 의존 관계가 성립될 때, 추상성이 낮은 클래스보다 추상성이 높은 클래스와 의존 관계를 맺어야 한다는 원칙이다.
-일반적으로 인터페이스를 활용하면 이 원칙은 준수된다.

😾UML의 관계

  • Association(연관관계) : 2개 이상의 사물이 서로 관련되어 있음
  • Aggregation(집합관계) : 하나의 사물이 다른 사물에 포함되어 있는 관계
  • Composition(포함관계) : 집합 관계의 특수한 형태로, 포함하는 사물의 변화가 포함되는 사물에게 영향을 미치는 관계
  • Generalization(일반화관계) : 하나의 사물이 다른 사물에 비해 더 일반적인지 구체적인지를 표현하는 관계
  • Dependency(의존관계) : 연관 관계와 같이 사물 사이에 서로 연관은 있으나 필요에 의해 서로에게 영향을 주는 짧은 시간동안만 연관을 유지하는 관계, 한 클래스가 다른 클래스를 오퍼레이션의 매게 변수로 사용하는 경우를 나타내는 관계
  • Realization(실체화관계) : 사물이 할 수 있거나 해야 하는 기능(행위, 인터페이스)으로 서로를 그룹화 할 수 있는 관계

😺Message

  • 객체에게 어떤 행위를 하도록 지시하는 명령
  • 객체들 간에 상호작용을 하는데 사용되는 수단으로 객체의 메소드(동작, 연산)를 일으키는 외부의 요구사항이다.
  • 메시지를 받은 객체는 대응하는 연산을 수행하여 예상된 결과를 반환하게 된다.

😸디자인 패턴

🔹Singleton(싱글톤 패턴)

  • 하나의 객체를 생성하면 생성된 객체를 어디서든 참조할 수 있지만, 여러 프로세스가 동시에 참조할 수 는 없다.
  • 클래스 내에서 인스턴스가 하나뿐임을 보장하며, 불필요한 메모리 낭비를 최소화 할 수 있다.

🔹Adapter(어댑터 패턴)

  • 호환성이 없는 클래스들의 인터페이스를 다른 클래스가 이용할 수 있도록 변환해주는 패턴

🔹Prototype(프로토타입)

  • 원본 객체를 복제하는 방법으로 객체를 생성하는 패턴

🔹Decorator(데코레이터)

  • 객체 간의 결합을 통해 능동적으로 기능들을 확장할 수 있는 패턴

😹파이프 필터(Pipe-Filter) 아키텍처

서브시스템이 입력 데이터를 받아 처리하고 결과를 다음 서브시스템으로 넘겨주는 과정을 반복한다.

주요 아키텍처 패턴

  • 레이어 패턴(Layers pattern) : 시스템을 계층(Layer)으로 구분하여 구성하는 고전적인 방법 중의 하나로 각각의 서브시스템들이 계층 구조를 이루며, 하위 계층은 상위 계층에 대한 서비스 제공자가 되고, 상위 계층은 하위 계층의 클라이언트가 됨

  • 클라이언트-서버 패턴(Clinent-Server Pattern) : 하나의 서버 컴포넌트와 다수의 클라이언트 컴포넌트로 구성되는 패턴으로, 클라이언트가 서버에 요청하고 응답을 받아 사용자에게 제공하는 방식

  • 파이프-필터 패턴(Pipe Filter Pattern) : 데이터 스크림 절차의 각 단계를 필터(Filter) 컴포넌트로 캡슐화하여 파이프(Pipe)를 통해 데이터를 전송하는 패턴

  • 모델-뷰-컨트롤러 패턴(Model-View-Controller Pattern) : 서브시스템을 모델, 뷰, 컨트롤러의 세 부분으로 구조화하는 패턴

😻사용자 인터페이스의 종류

  • CLI(Command Line Interface) : 명령과 출력이 텍스트 형태로 이뤄지는 인터페이스
    정해진 명령 문자열을 입력하여 시스템을 조작하는 사용자 인터페이스
  • GUI(Graphical User Interface) : 아이콘이나 메뉴를 마우스로 선택하여 작업을 수행하는 그래픽 환경의 인터페이스
  • NUI(Natural User Interface) : 사용자의 말이나 행동으로 기기를 조작하는 인터페이스
  • VUI(Voice User Interface) : 사람의 음성으로 기기를 조작하는 인터페이스
  • OUI(Organic User Interface) : 모든 사물과 사용자 간의 상호작용을 위한 인터페이스

😼시퀀스 다이어그램

= 순차 다이어그램
순차 다이어그램의 구성요소
-액터(Actor) : 시스템으로부터 서비스를 요청하는 외부 요소로, 사람이나 외부 시스템을 의미
-객체(Object) : 메시지를 주고받는 주체
-라이프라인(Lifeline) : 객체가 메모리에 존재하는 기간
-활성(실행) 상자(Activvation Box) : 객체가 메시지를 주고받으며 구동(실행)되고 있음을 표현
-메시지(Message) : 객체가 상호 작용을 위해 주고받는 메시지

😽객체지향

  • 캡슐화(Encapsulation) : 데이터(속성)와 데이터를 처리하는 함수를 하나로 묶어 이너페이스를 제외한 세부 내용을 은폐(정보 은닉)함으로써 외부에서의 접근을 제한함
    연관된 데이터와 함수를 함께 묶어 외부와 경계를 만들고 필요한 인터페이스만을 밖으로 드러내는 과정
  • 상속(Inheritance) : 이미 정의된 상위 클래스(부모 클래스)의 모든 속성과 연산을 하위 클래스(자식 클래스)가 물려받는 것
  • 다형성(Polymorphism) : 메시지에 의해 객체(클래스)가 연산을 수행하게 될 때 하나의 메시지에 대해 각각의 객체(클래스)가 가지고 있는 고유한 방법(특성)으로 응답할 수 있는 능력

🙀럼바우(Rumbaugh)의 분석 기법

  • 모든 소프트웨어 구성 요소를 그래픽 표기법을 이요하여 모델링하는 기법으로, 객체 모델링 기법(OMT ;Object Modeling Technique) 이라고도 한다.
  • 분석 활동은 '객체 모델링 -> 동적 모델링 -> 기능 모델링' 순으로 이루어진다.

🔹객체 모델링(Object Modeling)
-정보 모델링이라도고도 하며, 시스템에서 요구되는 객체를 찾아내어 속성과 연산 식별 및 객체들 간의 관계를 규정하여 객체 다이어그램으로 표시하는 것이다.
-분석 활동의 세 가지 모델 중 가장 중요하며 선행되어야 할 모델링이다.
🔹동적 모델링(Dynamic Modeling)
-상태 다이어그램(상태도)을 이용하여 시간의 흐름에 따른 객체들 간의 제어 흐름, 상호 작용, 동작 순서 등의 동적인 행위를 표현하는 모델링
🔹기능 모델링(Function Modeling)
-자료 흐름도(DFD)를 이용하여 다수의 프로세스들 간의 자료 흐름을 중심으로 처리 과정을 표현한 모델링

😿미들웨어(Middleware)

미들과 소프트웨어의 합성어로, 서로 다른 기종 간의 하드웨어나 프롵토콜, 통신환경 등을 연결하여 응용 프로그램과 운영환경 간에 원만한 통신이 이루어질 수 있게 서비스를 제공하는 소프트웨어입니다.

미들웨어 종류

  • DB(DataBase)
    데이터베이스 벤더(Vender)에서 제공하는 클라이언트에서 원격의 데이터베이스와 연결하기 위한 미들웨어

  • RPC(Remote Procedure Call)
    응용 프로그램의 프로시저를 사용하여 원격 프로시저를 마치 로컬 프로시저처럼 호출하는 방식의 미들웨어

  • MOM(Message Oriented Middelware)
    메시지 기반의 비동기형 메시지를 전달하는 방식의 미들웨어

  • TP-Monitor(Transaction Processing Monitor)
    항공기나 철도 예약 업무 등과 같은 온라인 트랜잭션 업무에서 트랜잭션을 처리 및 감시하는 미들웨어

  • ORB(Object Request Broker)
    객체지향 미들웨어로 코바(CORBA) 표준 스펙을 구현한 미들웨어

  • WAB(Web Application Server)
    사용자의 요구에 따라 변하는 동적인 콘텐츠를 처리하기 위해 사용되는 미들웨어

0개의 댓글