본문 바로가기
자격증/정보처리기사

소프트웨어 설계 - 3. 어플리케이션 설계

by SeleniumBindingProtein 2022. 2. 25.
728x90
반응형

3. 어플리케이션 설계

  1) 소프트웨어 아키텍쳐

     - SW아키텍쳐

       - 뜻 : 기본구조, 개발기반 

       - 역할 : 품질유지, 원칙, 지침

       - 모듈 : 부품

     - 기본원리

       - 모듈화 : 유지관리에 좋음.(많으면 통합 비용 증가, 적으면 개발비용 증가)

       - 추상화 : 포괄적 개념. 구체화하기 위해 피룡. 가성비. 구조파악 용이.

       - 단계적 분해 : 하향식. 추상화의 반복으로 더 많은 단계의 분해 가능

       - 정보은닉 : 접근금지. 별도의 인터페이스 사용. 유지보수에 용이

     - 품질속성 : 시스템(성능,보안) / 비즈니스(비용,자원) / 아키텍쳐(결함)

     - 설계과정 : 목표-시스템타입-아키텍쳐패턴-시스템구체화-검토

       - 아키텍쳐패턴 : 미리 만들어 둔 공식

 

  2) 아키텍쳐 패턴

     - 레이어 : 상/하위 계층끼리 상호작용

     - P2P : 서버와 클라이언트 역할 변경가능

     - 모델-컨트롤러-뷰 : 대화형 어플리케이션에 적합

     - 서버-클라이언트 : 1:다 / 항시대기 / 독립적 기능

     - 파이프-필터 : 재사용, 확장, 변환, 동기화, 버퍼링

     - 블랙보드 : 공유 데이터 검색, 인식, 식별

 

3) 객체지향

     - 절차(구조적)지향 : 프로그램을 하나의 큰 절차(순서)로 구성

데이터 기능
상수 실행문
변수 분기문
배열 반복문
구조체  함수

     - 클래스 : 캡슐화 [데이터구조, 함수] => 정보은닉, 재사용, 확장(유지보수)

     - 클래스-인스턴스 : 캡슐화 [데이터구조, 함수] => 정보은닉, 재사용, 확장(유지보수)

        - 클래스를 재사용하기 위해서는 복제를 해야 하며, 이 과정을 인스턴스화라고 하며, 복제된 결과물을 인스턴스라고 함

        - 이 결과물들을 통칭하는게 객체임

     - 클래스-상속 : 캡슐화 [데이터구조, 함수] => 정보은닉, 재사용, 확장(유지보수)

        - 복제된 객체들은 같은 클래스의 구조를 가지지만, 내용을 서로 다르게 가질 수 있음

        - 상속을 통해 확장이 가능해지며, 상속 받은 하위 클래스는 상위 클래스의 모든 요소에 더해

            자신의 요소까지 전부 사용이 가능한 인스턴스를 생성할 수 있음

        - 상속을 통해 재사용 + 확장의 개념까지 가질 수 있음 

     - 다형성 : 일일이 특정 기능만 수행하는 객체들을 따로 생성할 필요없이 하나의 통합 객체로 여러가지 일을 수행할 수 있음

 

4) 모듈

     - 모듈

        - 뜻 : 모듈화된 기능. 서브루틴, 서브시스템 등으로도 불림. 재사용 가능

        - 독립성 판단 : 약한 결합도와 강한 응집도. 품질과 연관.

     - 결합도

        - 뜻 : 모듈간 상호 의존(영향을 미치는) 정도

        - 종류 => 자료 : 데이터, 스탬프 : 자료구조, 제어 : 제어요소, 외부 : 외부참조, 공유 : 공통 데이터, 내용 : 내부 직접 참조

     - 응집도

        - 뜻 : 정보은닉 개념 확장, 내부 요소들끼리의 관련 정도

        - 종류 => 기능 : 단일 연결, 순차 : 이전출력-다음입력, 통신 : 동일입출력 다른기능, 절차 : 다수의 기능을 순차적으로,                                                논리 : 유사한 기능 모음

     - 팬 

        - 인 : 해당 모듈을 제어하는. 들어오는 화살표

        - 아웃 : 해당 모듈이 제어하는. 나가는 화살표

     - 공통모듈 

        - 명세기법 => 정확 : 필요성, 명확 : 비중의적, 완전 : 필요한 모든 것, 일관 : 중복 방지, 추적 : 출처/관계 파악

 

5) 코드/디자인 패턴

     - 코드는 일정한 규칙에 따라 만들어진 기호로, 이 기호는 식별, 분류, 배열의 기능을 가짐

        - 순차 : 말 그대로 숫자가 차례대로 입력되어 있는 일련번호  

        - 블록코드 : 구역을 구분한 뒤에 순차코드를 붙임

        - 10진 코드 : 항목들을 10진 분할(10개로 나눔)하며, 이 과정을 필요할 때까지 반복해서 코드를 부여함

        - 그룹분류코드 : 하이픈으로 구분하고, 항목별로 일련번호를 부여함.

                                  10진 분할은 1자리씩, 그룹분류는 2자리 이상의 일련번호 부여가 가능함.

        - 연상 코드 : 코드만 봐도 어떤 제품인지 연상되는 형태 

        - 표의 숫자 코드 : 해당 제품의 수치 등을 코드에 사용한 것으로, 유효 숫자 코드라고도 불림.

     - 디자인 패턴 : 서브 시스템에 대한 상세구현에 대한 공식. 

        - 디자인 패턴은 생성 5개, 구조 7개, 행위 11개로 구성됨

        - 생성 패턴 : 객체 생성에 대한 패턴으로, 캡슐화, 유연성을 목표로 함

           - Abstract Factory : 객체 생성코드가 상위클래스에 존재. 하위(구체화) 클래스가 받아 씀

           - Factory Method :객체를 하위 클래스에서 구체화 

           - Builder : 분리된 인스턴스를 조합하여 객체 생성

           - Prototype : 원본 복제. 비용 저렴

           - Singleton : 클래스 내 인스턴스 하나뿐임을 보장. 동시 참조 불가능

        - 구조 패턴 : 복잡한 구조의 시스템 개발에 필요

           - Adaptar : 서로 일치하지 않는 인터페이스 변환

           - Bridge : 추상층(기능)과 구현층(구체화)을 분리하여 독립적 확장

           - Composite : 트리구조 구성. 단일과 복합 개체 구분없이 다룸 

           - Decorator : 기능 추가위해 다른 객체를 덧붙임 

           - Facade : 서브 클래스들의 통합 인터페이스를 제공(wrapper 객체)하는 상위 클래스 구성

           - Flyweight : 다수의 유사 객체 생성이 필요할 때 최대한 공유해서 사용(메모리 절약)

           - Proxy : 접근이 어려운 객체에 접근할 수 있도록 인터페이스 역할 수행

        - 행위 패턴 : 상호 작용, 책임 분배. 결합도 최소화

           - Chain of Responsibility : 둘 이상의 객체가 연결(chain)되어 책임이 차례로 넘어감

           - Interpreter : 문법 표현 정의. 맞춤법 검사 

           - Command : 명령어 객체화(추상과 구체). 로그 기록

           - Iterator : 접근이 잦은 객체는 동일한 인터페이스 사용하도록. 순차접근

           - Mediator : 복잡한 상호작용 캡슐화 

           - Memento : 특정 시점의 상태 객체화. 되돌리기

           - Observer : 상태가 변하면 전달, 이벤트 발행, 구독

           - State : 상태에 따라 동작을 다르게 

           - Strategy : 동일 계열 알고리즘 상호 교환. 독립적 사용

           - Template Method : 상위에서 인터페이스 정의. 하위에서 구체화(유지보수)

           - Vistor : 처리 기능을 별도의 클래스로 구성

 

 

728x90
반응형

댓글