ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 2020 정보처리기사 필기 : 1과목 : 3장
    Study/정보처리기사 2020. 5. 26. 17:37
    728x90

    3장 애플리케이션 설계


    1.     소프트웨어 아키텍처 ★★★

    • = 골격
    • = 기본구조
    • = 시스템의 구조
    • = 시스템의 구조체
    • = 원칙과 지침
    • = 의사소통 도구
    • 기본 원리
      • 모듈화 (Modularity)
      • 추상화 (Abstraction)
      • 단계적 분해 (Stepwise Refinement)
      • 정보은닉 (Information Hinding)

     

     

    ** 객체지향의 주요 개념과 헷갈리지 않도록 주의한다. 


    2.     모듈화 (Modularity)

    • 모듈 단위로 나누는 것

    3.     추상화 (Abstraction) ★★★

    • 포괄적인 개념 설계 후, 세분화하여 진행한다. 
    • 유형
      • 과정 추상화 : 전반적인 흐름만 파악
      • 데이터 추상화 : 세부적인 데이터는 정의하지 않는다. 
      • 제어 추상화 : 세부적인 절차나 방법은 정의하지 않는다. 

    4.     단계적 분해 (Stepwise Refinement)

    • 하향식 설계 전략이다. 
    • 추상화의 반복에 의해 세분화한다. 

    5.     정보은닉 (Information Hinding)

    • 내부 정보를 감춘다. 

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

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

    7.     아키텍처 패턴 ★★★

    • 전형적인 해결 방식 또는 예제를 의미한다. 
    • 개발 시간을 단축할 수 있다. 
    • 고품질 소프트웨어 생산이 가능하다. 
    • 참여하지 않은 사람도 손쉽게 유지 보수가 가능하다. 
    • 종류
      • 레이어 패턴
      • 클라이언트-서버 패턴
      • 파이프-필터 패턴
      • 모델-뷰-컨트롤러 패턴

    8.     레이어 패턴 (Layer Pattern)

    • 계층으로 구분
    • 하위 계층은 상위 계층의 클라이언트가 된다. 
    • 두 개의 계층 사이에서만 상호작용이 이루어진다. 
    • 변경 작업이 용이하다. 
    • 예 : OSI 참조 모델 

    9.     클라이언트–서버 패턴 (Client-Server Pattern)

    • 하나의 서버 + 다수의 클라이언트
    • 서버는 항상 대기 상태를 유지한다. 
    • 서버와 클라이언트는 서로 독립적이다. 

    10. 파이프-필터 패턴 (Pipe-Filter Pattern)

    • 각 단계를 필터 컴포넌트로 캡슐화한다. 
    • 파이프를 통해 데이터를 전송한다. 
    • 재사용성이 좋고, 확장이 용이하다. 
    • 재배치가 가능하다. 
    • 예 : UNIX의 쉘

    11. 모델-뷰-컨트롤러 패틴 (MVC Model, Model-View-Controller Model) ★★★

    • 모델 : 핵심 기능, 데이터 보관
    • 뷰 : 정보 표시, 여러 개 가능
    • 컨트롤러 : 입력 처리
    • 대화형 애플리케이션에 적합하다. 

    12. 기타 패턴 ★★★

    • 마스터-슬레이브 패턴 (Master-Slave Pattern)
      • 장애 허용 시스템
      • 병렬 컴퓨팅 시스템
    • 브로커 패턴 (Broker Pattern)
      • 분산 환경 시스템
    • 피어-투-피어 패턴 (Peer-to-Peer Pattern)
      • 클라이언트가 될 수도, 서버가 될 수도 있는 패턴이다. 
      • 멀티스레딩 방식 이용
    • 블랙보드 패턴 (Blackboard Pattern)
      • 명확하지 않은 문제를 처리하는데 유용한 패턴이다. 
      • 음성 인식
      • 차량 식별
    • 인터프리터 패턴 (Interpreter Pattern)

    13. 객체지향 (Object-Oriented) ★★★

    • 재사용 및 확장 용이
    • 유지보수가 쉽다. 
    • 실행 속도가 느리다. 
    • 주요 구성 요소 및 개념
      • 객체
      • 클래스
      • 캡슐화
      • 상속
      • 다형성 

    14. 객체 (Object)

    • 데이터와 함수를 묶어 놓은(=캡슐화한) 하나의 소프트웨어 모듈이다. 
      • 데이터 : 각체가 가지고 있는 정보, 속성, 상태, 분류 등
      • 함수 : 객체가 수행하는 기능, 데이터를 처리하는 알고리즘
    • 식별 가능한 이름을 가진다. 
    • 상태(State)와 행위(Behavior)를 가진다. 
    • 객체와 객체는 관계가 형성된다. 
    • 기억장소를 가진다. 

    15. 클래스 (Class)

    • 공통된 속성과 연산(행위)을 갖는 객체의 집합이다.
    • 객체의 일반적인 타입(type)을 의미한다. 
    • 클래스에 속한 각각의 객체를 인스턴스(Instance)라고 한다. 

    16. 캡슐화 (Encapsulation)

    • 데이터와 함수를 하나로 묶는 것을 의미한다.
    • 캡슐화된 객체들은 재사용이 용이하다. 
    • 인터페이스가 단순해진다. 
    • 객체 간의 결합도가 낮아진다. 

    17. 상속 (Inheritance)

    • 상위 클래스의 모든 속성과 연산을 하위 클래스가 물려받는 것 

    18. 다형성 (Polymorphism)

    • 하나의 메시지에 대해, 각각의 객체가 가지고 있는 고유한 방법으로 응답할 수 있는 능력 

    19. 모듈 (Module) ★★★

    • = 서브 루틴
    • = 서브 시스템
    • = 소프트웨어 내의 프로그램
    • = 작업 단위 
    • 단독을 컴파일이 가능하다. 
    • 재사용이 가능하다. 
    • 결합도는 약하게
    • 응집도는 강하게
    • 모듈의 크기는 작게

    20. 결합도(Coupling) 순서

    • 내용 결합도 > 공통 결합도 > 외부 결합도 > 제어 결합도 > 스탬프 결합도 > 자료 결합도 

    21. 응집도(Cohesion) 순서

    • 기능적 응집도 > 순차적 응집도 > 교환적 응집도 > 절차적 응집도 > 시간적 응집도 > 논리적 응집도 > 우연적 응집도

    22. 팬인 / 팬아웃 (Fan-In / Fan-Out)

    • 팬인 : 호출하는 모듈의 수 (들어오는 ~)
    • 팬아웃 : 호출되는 모듈의 수 (나가는 ~)
    • 팬인은 높게
    • 팬아웃은 낮게

    23. 코드 (Code)

    • 순차 코드 (예 : 1, 2, 3, 4 ...)
    • 블록 코드 (예 : 1001~1100 - 총무부, 1101~1200 - 영업부)
    • 10진 코드 (예 : 1000 - 공학, 1100 - 소프트웨어 공학, 1110 - 소프트웨어 설계)
    • 그룹 분류 코드 (예 : 1-01-001)
    • 연상 코드 (예 : TV-40)
    • 표의 숫자 코드 (예 : 120-720-1500)
    • 합성 코드 (예 : KE-711)

    24. 아키텍처 패턴 VS 디자인 패턴

    • 아키텍처 패턴
      • 상위 수준
      • 전체 시스템에 해당
    • 디자인 패턴
      • 하위 수준
      • 서브 시스템에 해당

    25. 디자인 패턴 종류 ★★★

    생성 패턴
    추상 팩토리
    빌더
    팩토리 메소드
    프로토타입
    싱글톤

     

     

    구조 패턴
    어댑터
    브릿지
    컴포지트
    데코레이터
    퍼싸드
    플라이웨이트
    프록시

     

     

    행위 패턴
    책임 연쇄
    커맨드
    인터프리터
    반복자
    중재자
    메멘토
    옵저버
    상태
    전략
    템플릿 메소드
    방문자

     

    728x90

    댓글

kxmjhwn@gmail.com