정보처리기사(필기)

1과목 : 소프트웨어 설계

으농농이 2022. 6. 24. 16:19

객체지향 프로그램 데이터 추상화 단위 > 클래스 

 

XP(eXtreme Programming)의 5가지 가치

용기(Courage) : 고객의 요구사항 변화에 능동적인 대처
단순성(Simplicity) : 부가적 기능, 사용되지 않는 구조와 알고리즘 배제
커뮤니케이션(Communication) : 개발자, 관리자, 고객 간의 원활한 의사소통
피드백(Feedback) : 지속적인 테스트와 반복적 결함 수정, 빠른 피드백
존중(Respect) : 모든 프로젝트 관리자는 팀원의 기여를 존중

 

소프트웨어 개발 방법 중 요구사항 분석(requirements annalysis)과 거리가 먼것 

- 비용과 일정에 대한 제약설정 

- 타당성 조사 

-요구사항 정의 문서화

 

요구사항 명세 기법 

 

정형 명세법 

-수학적 기반 / 모델링기반 

- Z, YDM , Petri-Net(모형기반)

- CSP , CCS ,LOTOS (대수적 방법)

- 시스템 요구특성이 정확하고 명세가 간결하다. 

- 이해도가 낮으며 이해관계자들에게 부담이 가중된다 

 

비정형 명세기법 

- 사용자 요구를 자연어 기반으로 서술함 

- 상태 , 기능, 객체 중심 명세법 

- FSM (Finite state machine)

- Decision Table , ER 모델링

- State chart

- UseCase : 사용자 기반 모델링 

-명세 작성이 간편하고 의사전달 방법이 다양함

-불충분한 명세가능성 , 모호성 

설계 명세서 작성은 요구사항 분석다음단계인 요구사항 명세에서 

 

객체지향 기법에서 클래스들 사이의 '부분-전체(part - whole) 관계 혹은 부분(is-a-part-of)의 관계로 설명되는 연관성을

나타내는 용어는? 

> 집단화 

 

일반화 :

클래스들 간의 개념적인 포함관계 

 

캡슐화:

속성과 메서드를 하나로 묶어서 객체로 구성

 

추상화:

공통 성질을 추출하여 수퍼클래스로 구성 ,또한 객체 중심의 안정된 모델을 구축 가능하며 현실 세계를 자연스럽게 표현

 

HIPO(Hierarchy Input Process Output) 에 대한 설명 

- 하향식 소프트웨어 개발 

- HIPO 차트 종류에는 가시적 도표 , 총체적도표 , 세부적 도표가 있다. 

- 기능과 자료의 의존관계를 동시에 표현 할 수 있다. 

- 보기 쉽고 이해하기 쉽다 

 

 

동료검토:

2~3명이 진행하는 리뷰형태로 작성자가 설명하고 이해관계자들이 설명을 들으면서 결함을 발견하는 형태

 

워크스루:

검토자료를 회의전에 배포하여 사전 검토한 후, 짧은 시간 동안 회의를 진행하는 형태로 리뷰를 통해 오류를 조기에 검출하는데 목적은 둔 검증기법

동료 검토 : 작성자가 명세서 내용 설명 동료들이 결함 발견하는 형태
워크 스루 : 검토 회의 전 명세서를 미리 배포하여 사전 검토 후 짧은 검토 회의를 통해 오류 조기 검출
인스펙션  : 명세서 작성자를 제외한 다른 검토 전문가들이 확인하면서 결함을 발견하는 형태

 

<코드 설계>

순차 코드 (Sequence Code)

: 코드 설계에서 일정한 일련번호를 부여하는 방식의 코드

 

연상코드

: 코드화 대상 항목의 명칭이나 약호와 관계있는 숫자나 문자, 기호를 이용하여 코드를 부여하는 방법

 

그룹 분류 코드(Group Classification Code)

: 구분 코드를 세분화한 형태로 대분류 , 중분류 , 소분류 등으로 각 자릿수를 구성 


블록코드 (Block Code : 구분 코드)

: 코드화 대상 항목 중에서 공통성이 있는 것끼리 블록으로 구분하고, 각 블록 내에서 일련번호를 부여하는 방법 (=구분코드)

 

약자 코드(Letter Code)

: 일반적으로 사용해온 단위의 약자를 코드로 사용

 

끝자리 분류 코드(Final Digit Code)

: 다른 종류의 코드와 조합해서 사용하며, 코드의 끝에 붙여서 그 의미를 표현

 

십진 분류 코드(Decimal Classification Code)

:코드화 대상물을 일정한 소속으로 구분하여 십진수 한 자리씩 구분하여 대분류하고, 같은 방법으로 중    분류, 소분류한 코드

 

표의 숫자 코드 (Significant Digit Code)

: 코드화 대상 항목의 성질, 물리적 수치를 그대로 코드에 적용시키는 방법 (=유효숫자코드)

 

데이터 흐름도(DFD)의 구성요소

프로세스 (Process) > 자료흐름(Flow) > 자료저장소 (Data Store) > 단말(Terminal) 

 

DFD(data flow diagram)에 대한 설명

자료 흐름 그래프 또는 버블차트라고도 한다. 

구조적 분석 기법에 이용된다 

DFD의 요소는 화살표 ,원, 사각형 ,직선(단선/이중선)으로 표시됨

 

소프트웨어 설계시 구축된 플랫폼의 성능특성 분석에 사용되는 항목 

응답 시간 : 사용자가 응답을 받기까지 걸리는 총 시간
가용성 : 서비스가 다운되지 않고 정상적으로 유지되는 시간
사용률 : 측정 대상 작업을 수행하기 위해 사용된 자원의 사용량

 

플랫폼 성능특성 분석에 사용되는 측정항목은
경과시간(Turnaround TIme), 사용률(Utilization), 응답시간(Response TIme), 가용성(Availability)


* 서버 튜닝 : 서버의 효율성을 높이기 위하여 사용되는 일련의 개선 작업

 

UML 확장모델에서 스테레오 타입에서 객체를 표현 할 때 사용하는 기호 << >>

 

GOF 디자인패턴 > 생.구.행 > 생성 구현 행위

생성패턴 : 객체의 생성과 관련된 패턴  ** 추빌팩프싱

-Abstract Factory : 동일한 주제의 다른 팩토리를 묶어준다. (추상팩토리)

-Builder : 작게 분리된 인스턴스를 건축 하듯이 조합하여 객체를 생성한다. 생성과 표기를 분리해 복잡한 객체를 생성한다.

-Factory Method : 생성할 객체의 클래스를 국한하지 않고 객체를 생성한다.  상위클래스에서 객체를 생성하는 인터페이스를 정의하고, 하위클래스에서 인스턴스를 생성하도록 하는 방식이다

-Visitor : 각 클래스들의 데이터 구조에서 처리 기능을 분리하여 별도의 클래스로 구성한다
-Prototype : 원본 객체를 복제하는 방법으로 객체를 생성한다.

-Singleton :  한 클래스에 한 객체만 존재하도록 제한한다. 

 

구조패턴 : 클래스나 객체들을 조합하여 더 큰 구조로 만들 수 있게 해주는 패턴 **어브컴데퍼플프

-Adaptor : 인터페이스가 호환되지 않는 클래스들을 함께 이용할 수 있도록, 타 클래스의 인터페이스를 기존 인터페이스에 

덧씌운다.  

-Bridge : 구현부에서 추상층을 분리하여, 서로가 독립적으로 확장할 수 있도록 구성한다 

               기능과 구현을 두 개의 별도 클래스로 구현함 . 추상화와 구현을 분리해 둘을 각각 따로 발전시킬 수 있다.

- Composite :  0개 1개 혹은 그 이상의 객체를 묶어 하나의 객체로 이용함 

- Decorator : 기존 객체의 매서드에 새로운 행동을 추가하거나 오버라이드 할 수 있다. 

- Facade : 많은 분량의 코드에 접근 할 수 있는 단순한 인터페이스를 제공한다. 

- Flightweight : 다수의 유사한 객체를 생성 , 조작하는 비용을 절감 할 수 있다. 

- Proxy : 접근 조절 , 비용절감 , 복잡도 감소를 위해 접근이 힘든 객체에 대한 대역을 제공한다. 

 

행위패턴 : 클래스나 객체들이 서로 상호작용하는 방법이나 책임 분배 방법을 정의하는 패턴 **체커인인미미옵스스템비)

- Chain of Responsibility (책임 연쇄) : 책임들이 연결되어 있어 내가 책임을 못 질 것 같으면 다음 책임자에게 자동으로 넘어가는 구조 
- Command (커맨드) : 위의 명령어를 각각 구현하는 것보다는 위 그림처럼 하나의 추상 클래스에 메서드를 하나 만들고 각

- Interpreter (해석자) : 반복이 필요한 자료구조를 모두 동일한 인터페이스를 통해 접근할 수 있도록 메서드를 이용해 자료구조를 활용할 수 있도록 해준다. 

- Iterator (반복자) : 반복이 필요한 자료구조를 모두 동일한 인터페이스를 통해 접근할 수 있도록 메서드를 이용해 자료구조를 활용할 수 있도록 해준다. 

- Mediator (중재자) : 클래스간의 복잡한 상호작용을 캡슐화하여 한 클래스에 위임해서 처리하는 디자인 패턴

객체간의 통제와 지시의 역할을 하는 중재자를 두어 객체지향의 목표를 달성하게 해준다. 

- Memento (메멘토) : Ctrl + z 와 같은 undo 기능 개발할 때 유용한 디자인패턴. 클래스 설계 관점에서 객체의 정보를 저장

- Observer : 한 객체의 상태가 변화하면 객체에 상속되어 있는 다른 객체들에게 변화된 상태를 전달.
                  분산된 시스템 간에 이벤트 생성, 발행(Publish), 이를 수신(Subscribe)해야할 때 이용함

- State (상태) : 동일한 동작을 객체의 상태에 따라 다르게 처리해야 할 때 사용하는 디자인 패턴

- Strategy (전략) : 알고리즘 군을 정의하고 각각 하나의 클래스로 캡슐화한 다음 , 필요할 때 서로 교환해서 사용할 수 있게 해준다.

- Template Method : 상위 클래스에서 추상적으로 표현하고 그 구체적인 내용은 하위클래스에서 결정되는 디자인 패턴

- Visitor : 각 클래스의 데이터 구조로부터 처리 기능을 분리하여 별도의 visitor 클래스로 만들어놓고 해당 클래스의 메서드가 각 클래스를 돌아다니며 특정 작업을 수행하도록 하는것 

 

UML 에서 시스템 동작을 표현하는 행위(Behavioral)다이어그램

1. 유스케이스(UseCase) 다이어그램 - 기능적 모델 

시스템이 엑터에게 제공해야 하는 기능 , 시스템의 요구사항이자 기능을 의미한다. 

사용자의 요구를 추출하고 분석하기 위해 주요 사용하며, 액터는 시스템 외부에서 시스템과 상호작용하는 사람 

혹은 시스템을 말한다. 액터는 대상 시스템과 상호 작용하는 사람이나 다른 시스템에 의한 역할이다. 

 

사용자 액터 : 기능을 요구하는 대상이나 시스템의 수행결과를 통보받는 사용자 혹은 기능을 사용할 대상 

시스템 액터 : 사용자 액터가 사용한 유스케이스를 처리해주는 외부 시스템 , 시스템의 기능 수행을 위해 연동이 

되는 또 다른 시스템 액터를 의미함 

 

유스케이스 수행시 특별한 조건을 만족할 때 수행하는 유스케이스 

> 확장


유스케이스(Usecase) 구성요소와의 관계
- 연관 : use case 와 actor의 관계
- 확장 : 기본 use case 수행 시 특별한 조건을 만족할 때 수행할 usecase
- 포함 : 시스템의 기능이 별도의 기능을 포함
- 일반화 : 하위 use case/action이 상위 use case/actor에게 기능/역할을 상속받음
- 그룹화 : 여러개의 usecase를 단순화하는 방법

 

2. 시퀀스(Sequence) 다이어그램  : 메시지(함수호출)을 주고받으면서 시간의 흐름에 따라 상호작용하는 과정들

   (액-객-생-메-실) 

액터(Actor) : 시스템으로부터 서비스를 요청하는 외부요소로, 사람이나 외부 시스템 의미
객체(object) : 메시지를 주고받는 주체
생명선(Lifeline) : 객체가 메모리에 존재하는 기간으로, 객체 아래쪽에 점선을 그어 표현
메시지(Message) : 객체가 상호 작용을 위해 주고받는 메시지
실행 상자(Active Box) : 객체가 메시지를 주고받으며 구동되고 있음을 표현


3. 커뮤니케이션(Communication) 다이어그램
4. 상태 다이어그램 (State Diagram) : 객체가 가진 상태와 상태 변환을 나타냄 
5. 활동(Activity) 다이어그램
6. 상호작용 개요(Interaction Overview) 다이어그램
7. 타이밍(Timing) 다이어그램

 

클래스 다이어그램 (Class Diagram) : 정적모델 , 객체의 속성 연관관계 오퍼레이션의 시스템 구조를 나타냄 

동적 모델은 시스템의 내부 동작을 말하며, UML에서는 Sequence Diagram, State Diagram, Activity Diagram 사용

 

자료 사전에서 자료의 생략을 의마하는 기호는 ?  ( )

 

정의 =
구성,연결 +
반복 { }
주석 **
선택 [ㅣ]
생략 ( )

 

소프트웨어 사용자 인터페이스 개발시스템이 가져야할 기능 

사용자 입력의 검증

에러처리와 에러메시지처리

도움과 프롬프트 제공 

 

<트랜잭션>

- TP monitor : 트랜잭션이 올바르게 처리되고 있는지 데이터를 감시하고 제어하는 미들웨어

- RPC : remote procedure call 원격 절차 호출 또는 원격 프로시저 호출.
- ORB: object request broker, 객체 간 메시지 전달을 지원하는 미들웨어

 

<UI 설계 원칙>

직관성 : 누구나 쉽게 이용하고 쉽게 사용할 수 있어야 함
유효성 : 정확하고 완벽하게 사용자의 목표가 달성될 수 있도록 제작
학습성 : 초보와 숙련자 모두가 쉽게 배우고 사용할 수 있게 제작
유연성 : 사용자의 인터랙션을 최대한 포용하고, 실수를 방지할 수 있도록 제작

 

구조 다이어그램

클래스(Class), 객체(object), 복합체 구조(Composite Structure), 배치(Deployment), 컴포넌트(Component), 패키지(Package) 다이어그램이

 

UML의 기본 구성요소

: 기본요소 구성하는 사물과 사물간의 관계를 나타내는 관계, 사물과 관계를 도형으로 표현하는 다이어그램

Things 

Relationship

Diagram 

 

UML 모델 

Dependency(의존) : 한 사물의 명세서가 바뀌면 그것을 사용하는 다른 사물에게 영향을 끼치는 것을 말합니다 
Realization(실체화) : 한 객체가 다른 객체에 의해 오퍼레이션을 수행하도록 지정
Generalization(일반화) : 일반화된 사물과 좀 더 특수화된 사물 사이의 관계를 말합니다.('is-a')관계
Association(연관) : 두 사물간의 구조적 관계로, 어느 한 사물 객체가 다른 사물 객체와 연결되어 있음을 말함 ('has-a')관계라고도 합니다

 

UML 구조 다이어그램(structure diagram)

: 시간에 독립적이고 시스템의 개념과 어떻게 각각이 연결되어 있는지를 전달하는 방법을 나타낸다.

 

공통모듈
-전체 프로그램의 기능 중 특정기능을 처리할 수 있는 실행코드
-자체적으로 컴파일 가능, 다른 프로그램에서 재사용 가능
-여러 기능 및 프로그램에서 공통으로 사용할 수 있는 모듈(예-날짜 처리를 위한 유틸리티 모듈 등)

 

공통모듈 원칙
-정확성 : 해당 기능이 실제 시스템 구현시 필요한지 아닌지를 알 수 있도록 정확하게 작성
-명확성 : 해당 기능에 대해 일관되게 이해하고 한가지로 해석될 수 있도록 작성
-완전성 : 시스템이 구현될 때 필요하고 요구되는 모든 것을 기술
-일관성 : 공통 기능 간에 상호 충돌이 없도록 작성
-추적성 : 공통 기능에 대한 요구사항 출처와 관련 시스템 등의 유기적 관계에 대한 식별이 가능하도록 작성

 

Case : 소프트웨어 개발의 자동화 , 소프트웨어 공학작업을 자동화한 소프트웨어 패키지를 CASE도구

- 소프트웨어 생명주기의 전체 단계를 연결해 주고 자동화해주는 통합된 도구를 제공

- 소프트웨어 , 하드웨어 , 데이터베이스 , 테스트 등을 통합하여 소프트웨어를 개발하는 환경을 제공

 

상위CASE : 요구 분석과 설계 단계를 지원 

-모델들 사이의 모순검사 기능 

-모델의 오류 검증기능

-자료흐름도 작성 기능 

 

하위CASE : 코드를 작성하고 테스트하며 문서화하는 과정 지원 (원시코드 생성기능)

 

CASE 도구 -> 워크스루 (Walk Through)
"검토 자료를 회의 전에 배포해서 사전 검토한 후 짧은 시간 동안 검토 회의를 진행하면서 결함을 발견"은 워크스루에 관한 해설입니다.

 

CASE (Computer-Aided Software Engineering)의 원천 기술

-구조적기법 

-프로토타이핑기술

-자동프로그래밍기술

-정보 저장소 기술 

-분산 처리 기술

 

Case 의 주요기능 

1.S/W의 생명주기 전(모든)단계의 연결
2.모델들 사이의 모순검사
3.오류검증
4.자료흐름도 등 다이어그램 작성
5.다양한 소프트웨어 개발 모형지원
6.시스템 문서화 및 명세화를 위한 그래픽 지원

 

DBRM 분석 

1.무결성(가용성)
2.일관성(상호호환성)
3.회복
4.보안
5.효율성(성능)
6.데이터베이스 확장

 

<객체지향 분석 방법론>
E-R다이어그램 사용 객체 행위 모델링 및 객체 구조 식별 및 주체 속성 및 관계 서비스 정의
- Coad 와 Yourdon 방법

 

Booch 방법
소프트웨어 구성요소를 그래픽 표기법을 이용하여 모델링 / 객체모델링 동적 모델링 기능 모델링

미시적 개발 프로세스와 거시적 개발 프로세스를 모두 사용하는 방법이다. 

클래스와 객체들을 분석 및 식별하고 클래스의 속성과 연산을 정의

 

럼바우(Rumbaugh) 기법

:가장 일반적으로 사용되는 방법으로 분석 활동을 객체/동적/기능 모델로 나누어 수행하는 방법

 

Wirfs-Brock -

: 분석과 설계간의 구분이 없고 고객 명세서를 평가해서 설계 작업까지 연속적으로 수행하는 기법

 

리팩토링 외부 동작을 바꾸지 않으면서 내부 구조를 개선하는 방법입니다

 

UML 다이어그램 **엑시디콜컴클

- Activity 다이어그램 : 업무의 흐름을 모델링하거나 객체의 생명주기를 표현함 

- Sequence 다이어그램 : 객체간의 메시지 전달을 시간적 흐름에서 분석

- Deployment 다이어그램 : 기업 환경의 구성과 컴포넌트들 간의 관계를 그림

- Collaboration 다이어그램 : 객체와 객체가 주고받는 메시지 중신의 작성 동적 다이어그램 

- Component 다이어그램 : 소프트웨어 구조가 그리는 다이어그램 

- Class 다이어그램 : 시스템의 구조적인 모습을 그리는 다이어그램 

 

* 구조적 다이어그램

클객컴배복패 (클래스, 객체, 컴포넌트 , 배치, 복합체, 패키지)

* 행위 다이어그램

유시커상활타상( 유스케이스 , 시퀀스, 커뮤니케이션 , 상태 , 활동 , 타이밍, 상호작용 )

 

<객체지향 설계 원칙>

 

리스코프 치환 원칙(LSP, Liskov Substitution Principle)

서브타입(상속받은 하위 클래스)은 어디에서나 자신의 기반타입(상위클래스)으로 교체할 수 있어야 함을 의미하는 원칙은

일반화 관계에 대한 이야기며, 자식 클래스는 최소한 자신의 부모 클래스에서 가능한 행위는 수행할 수 있어야 한다.

 

단일 책임 원칙(SRP, Single Responsibility Principle)

객체는 단 하나의 책임만 가져야 한다.


개방-폐쇄의 원칙(OCP, Open Closed Principle)

기존의 코드를 변경하지 않으면서 기능을 추가할 수 있도록 설계가 되어야 한다.

소프트웨어 개체(클래스, 모듈, 함수 등등)는 확장에 대해 열려 있어야 하고, 수정에 대해서는 닫혀 있어야 한다

 

의존 역전 원칙(DIP, Dependency Inversion Principle)
:의존 관계를 맺을 때 변화하기 쉬운 것 또는 자주 변화하는 것보다는 변화하기 어려운 것,

거의 변화가 없는 것에 의존하라는 것.

 

: 인터페이스 분리 원칙  

클라이언트는 자신이 사용하지 않는 메서드와 의존관계를 맺으면 안된다. 

클라이언트가 사용하지 않는 인터페이스 때문에 영향을 받아서는 안된다 

 

요구사항 개발 프로세스 : 도출 > 분석 > 명세 > 확인 

 

< 럼바우(Rumbaugh)의 분석 기법 >


  가장 일반적으로 사용되는 방법, 분석 활동을 객체 모델, 동적 모델, 기능 모델로 나누어 수행함.
  모든 소프트웨어 구성 요소를 그래픽 표기법을 이용하여 모델링, 객체 모델링 기법(OMT)이라고도 함.

- 객체 모델링(Object Modeling) = 정보 모델링
  시스템에서 요구되는 객체를 찾아내 속성과 연산 식별 및 객체들 간의 관계를 규정하여 객체 다이어그램으로 표시함
  분석 활동의 세 가지 모델 중 가장 중요!

- 동적 모델링(Dynamic Modeling)
  상태 다이어그램(상태도)를 이용하여 시간의 흐름에 따른 객체들 간의 제어 흐름, 상호 작용, 동작 순서 등의 동적인
  행위를 표현함

- 기능 모델링(Function Modeling)
  자료 흐름도(DFD)를 이용하여 다수의 프로세스들 간의 자료 흐름 중심으로 처리 과정을 표현함.

 

애자일(Agile) 개발 4가지 핵심 가치
1. 프로세스와 도구보다는 개인과의 상호작용에 더 가치를 둠
2. 방대한 문서보다는 실행되는 SW에 더 가치를 둠
3. 계약 협상보다는 고객과의 협업에 더 가치를 둠
4. 계획을 따르기 보다는 변화에 반응하는 것에 더 가치를 둠

 

애자일 개발 방법론 

스크럼(Scrum)

익스트림프로그래밍 (XP ,eXtreme Programming)

 

* Pair Programming=모든 프로그래밍은 하나의 컴퓨터에 2명의 프로그래머가 같이 공동작업 진행
* Collective Ownership=Collective Code Ownership=소스코드에 대한 팀의 공통책임이자 코드는 누구든지 수정가능함
* Continuous Integration=컴포넌트 또는 모듈 단위로 나누어서 개발된 소스코드들은 하나의 작업이 끝날 때 마다 지속적으로 통합되고 동시에 테스트함

 

5원칙 :

▷존중

▷소통(Communication)-고객과 개발자와의 의사소통을 중요시
▷단순성(Simplicity)-사용되지 않는 구조와 알고리즘 배제, 가장 효율적인 디자인이나 코딩을 하는 것.
▷피드백(Feedback)-즉각적 피드백 통해 빠른 의사결정
▷용기(Courage)-개발자들이 자신감있게 변화를 수용하며 고객요구사항에 능동적 대처 용기

 

기능 주도 개발(FDD , Feature Driven Development)

 

- 스크럼 

<미들웨어 솔루션>

: 미들웨어 솔루션은 컴퓨터와 컴퓨터 간의 연결을 쉽고 안전하게 할 수 있도록 해주고 

이에대한 관리는 도와주는 소프트웨어

 

<미들웨어 솔루션 유형>


- DB 미들웨어
- 메시지 지향 미들웨어(MOM)
- 트랜잭션 처리(TP) 모니터
- 레거시웨어(Legacyware)

1. WAS(웹 애플리케이션 서버)
  - 사용자의 요구에 따라 변하는 동적인 콘텐츠를 처리함
  - 웹 환경을 구현하기 위한 미들웨어
2. RPC(Remot Procedure Call) 원격 프로시저 호출
   - 응용 프로그램이 프로시저를 사용하여 원격 프로시저를 마치 로컬 프로시저처럼 호출하는 미들웨어
3. ORB(Object Request Broker)
   - 객체 지향 미들웨어로 코바(CORBA) 표준 스펙을 구현함
   - 최근에는 TP-Monitor의 장점인 트랜잭션 처리와 모니터링 등을 추가로 구현한 제품도 있음

 

** Web Server : 클라이언트로부터 직접 요청을 받아 처리, 저용량의 정적 파일들을 제공하는 소프트웨어

 

코드(Code)의 주요 기능
- 식별 기능 : 데이터 간의 성격에 따라 구분
- 분류 기능 : 특정 기준이나 동일한 유형에 해당하는 데이터를 그룹화
- 배열 기능 : 의미를 부여하여 나열
- 표준화 기능 : 다양한 정보를 컴퓨터에 의해 처리하기 위해서는 단일한 형태의 표준화된 표현이 필요함

 

클래스에 대한 여러 가정을 공유하도록 명세한 것을 협약에 의한 설계(Design by Contract)라 함.
소프트웨어 컴포넌트에 대한 정확한 인터페이스 명세를 위하여 선행조건, 결과조건, 불변조건을 나타내는 설계 방법.

협약에 의한 설계의 세 가지 타입
선행조건(precondition): 오퍼레이션이 호출되기 전에 참이 되어야 할 조건
결과조건(postcondition): 오퍼레이션이 수행된 후 만족하여야 하는 조건
불변조건(invariant): 클래스 내부가 실행되는 동안 항상 만족하여야 하는 조건(예: 리스트에 있는 노드가 항상 오름차순으로 되어야 함)

 

객체 지향 소프트웨어 공학에서 하나 이상의 유사한 객체들을 묶어서 하나의 공통된 특성을 표현 

> 클래스 

 

일반화 관계
- 하나의 사물이 다른 사물에 비해 더 일반적인지 구체적인지를 표현함
- 일반적인 개념을 상위(부모), 구체적인 개념을 하위(자식)이라고 함
- 하위 사물에서 상위 사물인 쪽으로 속이 빈 화살표를 연결함

 

객체지향 소프트웨어 설계시 디자인 패턴을 구성하는 요소로서 가장 거리가 먼 것은 ?

- 문제 및 배경 

- 사례 

- 샘플코드 

 

객체지향 기법에서 같은 클래스에 속한 각각의 객체를 의미하는 것은? 

> instance 

 

message는 객체에게 어떤 행위를 하도록 지시하는 명령

 

소프트웨어 아키텍처 설계 시스템 품질 속성 

가용성 (Availability)

변경용이성 (Modifiability)

성능

보안성

사용편의성 (Usability) 

시험용이성

 

**하둡(Hadoop)

:분산 환경에서 빅 데이터를 저장하고 처리할 수 있는 자바 기반의 소스 프레임워크 

 

시스템의 구성요소 

입력(input) : 처리방법 , 처리할 데이터 ,조건을 시스템에 투입 

처리(process) : 입력된 데이터를 처리방법과 조건에 따라 처리하는것

출력(output) : 처리된 결과를 시스템에서 산출하는 것 

제어(control) :  자료를 입력하여 출력될 때까지의 처리과정이 올바르게 진행되는지 감시

피드백(feedback) : 출력된 결과가 예정된 목표를 만족시키지 못할 경우 목표달성을 위해 반복 처리하는것

 

<연계시스템 구성>
* 송신 시스템
  연계할 데이터를 DB와 어플리케이션으로부터 연계테이블 또는 파일 형태로 생성하여 송신
* 수신 시스템
  수신한 연계테이블, 파일데이터를 수신시스템에서 관리하는 데이터 형식에 맞게 변환하여 DB에 저장하거나 애플리케이션에서 활용할 수 있도록 제공
* 중계 서버
  송/수신 시스템 사이에서 데이터를 송수신하고, 연계데이터의 송수신 현황을 모니터링함, 연계데이터의 보안강화 및 다중플랫폼 지원 등이 가능

 

Message : 객체에게 어떤 행위를 하도록 지시하는 명령 

Class : 객체를 정의해 놓은 것 , 객체의 설계도 , 틀

Package : 클래스를 묶어두는 물리적인 단위 , 클래스들의 집합

Object : 실제로 존재하는것 , 클래스에 정의된 내용대로 메모리에 생성되는것

 

아키텍처 스타일 

마스터-슬레이브 패턴 

레이어 패턴 : 시스템을 계층으로 구분하여 구성 

파이프 필터 구조 : 서브시스템이 입력 데이터를 받아 처리하고 결과를 다른 시스템에 보내는 작업이 반복됨

클라이언트 서버 구조 : 컴포넌트가 다른 컴포넌트에게 서비스를 요청. 데이터가 여러 컴포넌트를 거치며 처리.
계층구조 : 모듈들로 응집된 계층 단위로 SW를 구성. 계층간에 사용 가능의 관계로 표현
MVC 구조 : 모델-뷰-컨트롤러, 기능을 분리한 아키텍처

 

사용자 인터페이스 특징 

-구현하고자 하는 결과의 오류를 최소화한다. 
-사용자의 편의성을 높임으로써 작업시간을 감소시킨다. 
-막연한 작업 기능에 대해 구체적인 방법을 제시하여 준다. 
-사용자 중심의 상호 작용이 되도록 한다. 

 

표의 숫자 코드 

코드화 대상 항목의 중량 , 면적 , 용량 등의 물리적 수치를 이용하여 만든 코드

 

결합도는 낮을수록 응집도는 높을수록 좋다 

 

결합도 

  • 결합도는 모듈 내부가 아닌 외부의 모듈과의 연관도 또는 모듈 간의 상호의존성을 나타내는 정도
  • 결합도는 소프트웨어 구조에서 모듈 간의 관련성을 측정하는 척도

결합도의 특징 

  • 모듈 연관성 없음
  • 인터페이스 의존성
  • 복잡성 감소
  • 파급효과 최소화

**내공외제스자 (순으로 결합도가 낮아짐)

유형 설명
내용 결합도
(Content Coupling)
- 다른 모듈 내부에 있는 변수나 기능을 다른 모듈에서 사용하는 경우의 결합도
- 하나의 모듈이 직접적으로 다른 모듈의 내용을 참조할 때 두 모듈은 내용적으로 결합되어 있는 경우의 결합도
공통 결합도
(Common Coupling)
- 파라미터가 아닌 모듈 밖에 선언되어 있는 전역 변수를 참조하고 전역 변수를 갱신하는 식으로 상호작용하는 경우의 결합도
외부 결합도
(External Coupling)
- 모듈이 다수의 관련 기능을 가질 때 모듈 안의 구성요소들이 그 기능을 순차적으로 수행할 경우의 결합도
제어 결합도
(Control Coupling)
- 어떤 모듈이 다른 모듈의 내부 논리 조직을 제어하기 위한 목적으로 제어 신호를 이용하여 통신하는 경우의 결합도
- 하위 모듈에서 상위 모듈로 제어 신호가 이동하여 상위 모듈에게 처리 명령을 부여하는 권리 전도 현상이 발생하는 결합도
스탬프 결합도
(Stamp Coupling)
- 모듈 간의 인터페이스로 배열이나 객체, 구조 등이 전달되는 경우의 결합도
자료 결합도
(Data Coupling)
- 모듈 간의 인터페이스로 전달되는 파라미터를 통해서만 모듈 간의 상호 작용이 일어나는 경우의 결합도

 

응집도

  • 응집도는 모듈의 독립성을 나타내는 개념으로, 모듈 내부 구성요소 간 연관 정도
  • 응집도는 정보 은닉 개념의 확장개녀으로, 하나의 모듈은 하나의 기능을 수행하는 것을 의미

결합도의 특징 

  • 유사기능 영역 구성
  • 단일 책임할당
  • 함수 간 상호협력**우논시절통순기 (순으로 응집도가 높아짐)
유형 설명
우연적 응집도
(Coincidental Cohesion)
- 서로 간에 어떠한 의미 있는 연관 관계도 없는 기능 요소로 구성될 경우의 응집도
- 서로 다른 상위 모듈에 의해 호출되어 처리상의 연관성이 없는 서로 다른 기능을 수행할 경우의 응집도
논리적 응집도
(Logical Cohesion)
- 유사한 성격을 갖거나 특정 형태로 분류되는 처리 요소들이 한 모듈에서 처리되는 경우의 응집도
시간적 응집도
(Temporal Cohesion)
- 연관된 기능이라기보다는 특정 시간에 처리되어야 하는 활동들을 한 모듈에서 처리할 경우의 응집도
절차적 응집도
(Procedural Cohesion)
- 모듈이 다수의 관련 기능을 가질 때 모듈 안의 구성요소들이 그 기능을 순차적으로 수행할 경우의 응집도
통신적 응집도
(Communication Cohesion)
- 동일한 입력과 출력을 사용하여 다른 기능을 수행하는 활동들이 모여 있을 경우의 응집도
순차적 응집도
(Sequential Cohesion)
- 모듈 내에서 한 활동으로부터 나온 출력 값을 다른 활동이 사용할 경우의 응집도
기능적 응집도
(Functional Cohesion)
- 모듈 내부의 모든 기능이 단일한 목적을 위해 수행되는 경우의 응집도

 

fan-in ( 위로 들어오는 가지 수 )

게이트가 수용할 수 있는 최대 입력수 

fan-out ( 아래로 뻗어나가는 가지 수)

출력 단자에 접속하여 신호를 추출할 수 있는 최대 허용 출력수 

 

시스템 복잡도 최적화를 위해서 팬인은 높게 , 팬아웃은 낮게 설계해야한다

 

유스케이스 다이어그램의 구성요소는 시스템(System), 액터(Actor), 유스케이스(Usecase), 관계(Relation)로 구성

 

소켓기술

: 통신을 위한 프로그램을 생성하여 포트를 할당하고 , 클라이언트의 통신 요청시 클라이언트와 연결하는 내-외부 송수신 연계기술

 

DB링크

1. 데이터베이스에서 제공하는 DB 링크 객체를 이용한다.
2. 수신측에서 DB 링크를 생성하고 송신측에서 해당 DB링크를 직접 참조하는 방식이다.

 

DB 커넥션

수신측의 WAS에서 송신측 데이터 베이스로 연결하는 DB Connection Pool을 생성한다.

 

API/OpenAPI

송신측의 데이터베이스에서 데이터를 가져와 제공하는 응용 프로그래밍 인터페이스 프로그램이다.

 

JDBC

1. 수신측의 프로그램에서 JDBC 드라이버를 이용하여 송신 시스템 데이터베이스와 연결한다.
 2. DBMS 유형, DBMS 서버 IP와 Port, DB Instance 정보가 필요하다


하이퍼링크 : 웹 응용에서 하이퍼링크(Hyper Link)를 이용한다.


소켓

1. 서버는 통신을 위한 Socket을 생성하여 Port를 할당한다.
2. 클라이언트의 통신 요청 시 클라이언트와 연결하고 통신하는 네트워크 기술이다.

 

운영체제 분석을 위해 리눅스에서 버전을 확인하고자 할때 사용되는 명령어 

> uname : 시스템 정보를 출력 

 

 

ls : List , 디렉토리 목록 출력
cat : 파일출력, 두개이상의 파일 연결
pwd : Print Working Directory , 현재 디렉토리 출력

 

MOM(Message Oriented Middleware) : 메세지 지향 미들웨어

MOM(Message Oriented Middleware) : 네트워크 호출 미들웨어 

 

Jacobson : Use Case를 사용하여 분석(사용자, 외부 시스템, 다른 요소들이 시스템과 상호 작용 하는 방법을 기술)

 

< 현행 시스템 분석 종류 >

- 플랫폼 기능 분석  

- 플랫폼 성능 특성 분석

- 운영체제 분석 

- 네트워크 분석 

- DBMS 분석 

- 비즈니스 융합 분석 

 

디자인 패턴
각 모듈의 세분화된 역할이나 모듈들 간의 인터페이스와 같은 코드를 작성하는 수준의 세부적인 구현 방안을 설계할 때 참조할 수 있는 전형적인 해결 방식 또는 예제
-장점 : 시스템 개발 시 공통 언어 사용 (의사소통 원활), 코드의 품질 향상, 향후 변화에 대한 대비 가능, 유지보수 용이

 

객체지향 분석

: 업무(비즈니스) 객체, 속성 등의 개별요소로 추상화 하는 기법