* 결합도(Coupling) ★★
- 모듈 간에 상호 의존하는 정도 또는 두 모듈 사이의 연관 관계를 의미
- 결합도는 낮을수록 좋음 = 독립적인 모듈
1) 내용 결합도(Content Coupling)- 한 모듈이 다른 모듈의 내부 기능 및 그 내부 자료를 직접 참조하거나 수정할 대의 결합도
2) 공통 결합도(Common Coupling)- 공유되는 공통 데이터 영역을 여러 모듈이 사용할 때의 결합도 (전역 변수)
3) 외부 결합도(External Coupling)- 어떤 모듈에서 선언한 데이터(변수)를 외부의 다른 모듈에서 참조할 때의 결합도(순차적)
4) 제어 결합도(Control Coupling)
- 어떤 모듈이 다른 모듈 내부의 논리적인 흐름을 제어하기 위해 제어 신호를 이용하여 통신하거나 제어 요소를 전달하는 결합도
5) 스탬프 결합도(Stamp Coupling)
- 모듈 간의 인터페이스로 배열이나 레코드 등의 자료 구조가 전달될 때의 결합도
6) 자료 결합도(Data Coupling)
- 어떤 모듈이 다른 모듈을 호출하면서 매개 변수(파라미터)나 인수로 데이터를 넘겨주고, 호출 받은 모듈은 반은 데이터에 대한 처리 결과를 다시 돌려주는 결합도
* 응집도(Cohesion) ★★
- 모듈의 내부 요소들의 서로 관련되어 있는 정도
- 응집도는 높을수록 좋다 = 독립적인 모듈
1) 우연적 응집도(Coincidental Cohesion)
- 모듈 내부의 각 구성 요소들이 서로 관련 없는 요소로만 구성된 경우의 응집도
2) 논리적 응집도(Logical Cohesion)
- 유사한 성격을 갖거나 특정 형태로 분류되는 처리 요소들로 하나의 모듈이 형성되는 경우의 응집도
3) 시간적 응집도(Temporal Cohesion)
- 특정 시간에 처리되는 몇 개의 기능을 모아 하나의 모듈로 작성할 경우의 응집도
4) 절차적 응집도(Procedural Cohesion)
- 모듈이 다수의 관련 기능을 가질 때 모듈 안의 구성 요소들이 그 기능을 순차적으로 수행할 경우의 응집도
* 공통 모듈 ★
1) 정확성(Correctness)
- 시스템 구현 시 해당 기능이 필요하다는 것을 알 수 있도록 정확히 작성
2) 명확성(Clarity) ★
- 해당 기능에 대해 일관되게 이해되고, 한 가지로 해석될 수 있도록 즉, 중의적으로 해석되지 않도록 명확하게 작성
3) 완전성(Completeness)
- 시스템 구현을 위해 필요한 모든 것을 기술
4) 일관성(Consistency)
- 공통 기능들 간 상호 출돌이 발생하지 않도록 작성
5) 추적성(Traceability)
- 기능에 대한 요구사항의 출처, 관련 시스템 등의 관계를 파악할 수 있도록 작성
6) 재사용(Reuse) 규모에 따른 분류
- 함수와 객체
- 컴포넌트
- 애플리케이
* 코드 ★★
- 식별, 분류, 배열, 간소화, 표준화, 연상, 암호화, 오류 검출 {기능}
1) 순차(순서) 코드 (Sequence Code, 일련 번호 코드) ★
- 일정 기준에 따라서 최초의 자료부터 차례로 일련번호를 부여하는 방법
ex) 1, 2, 3, ,4 ...
2) 블록 코드(Block Code, 구분 코드) ★
- 공통성이 있는 것끼리 블록으로 구분하고, 각 블록 내에서 일련번호를 부여하는 방법
ex) 1001~1100 : 총무부, 1101~ 1200 : 영업부
3) 10진 코드(Decimal Code, 도서식 분류식 코드) ★
- 0~9까지 10진 분할하고, 다시 각각에 대해 10진 분할하는 방법을 필요한 만큼 반복하는 방법
ex)1000:공학, 1100: 소프트웨어 공학, 1110 : 소프트웨어 설계
4) 그룹 분류 코드(Group Classification Code)
- 일정 기준에 따라 대분류, 중분류, 소분류 등으로 구분하고, 각 그룹안에서 일련번호를 부여하는 방법
ex) 1-01-001: 본사-총무부-인사계, 2-01-001:지사 -총무부-인사계
5) 연상 코드(Mnemonic Code, 기호 코드)
- 명칭이나 약호와 관계있는 숫자나 문자, 기호를 이용하여 코드를 부여하는 방법
ex) TV-40 : 40인치 TV, L-15-220: 15W 220V 램프
6) 표의 숫자 코드(Significant Digit Code, 유효 숫자 코드) ★
- 길이, 넓이, 부피, 지름, 높이 등의 물리적 수치를 그대로 코드에 적용시키는 방법
ex) 120-720-1500 : 두께X폭X길이가 120X720X1500인 강판
7) 합성 코드(Combined Code)
- 2개 이상의 코드를 조합하여 만드는 방법
ex) 연상 코드 + 순차 코드 -> KE-711: 대한항공 711기, AC-253 : 에어캐나다 253기
8) 코드 부여 체계
- 이름만으로 개체의 용도와 적용 범위를 알 수 있도록 코드를 부여하는 방식
- 각 개체에 유일한 코드 부여하여 개체들의 식별 및 추출을 용이하게 함
- 코드를 부여하기 전 각 단위 시스템의 고유한 코드와 개체를 나타내는 코드가 정의되어야 함
ex) PJC-COM-003 : 전체 시스템 단위의 3번째 공통 모듈
* 디자인 패턴 ★★
- 아키텍처 패턴이 디자인 패턴보다 상위 수준의 설계에 사용됨
- 서프시스템에 속하는 컴포넌트들과 그 관계를 설계하기 위한 참조 모델
cf) 아키텍처 패턴은 전체 시스템의 구조를 설계하기 위한 참조 모델
1) 생성 패턴(Creational Pattern) ★
- 추상 팩토리(Abstract Factory) : 서로 연관, 의존하는 객체들을 그룹으로 생성해 추상적으로 표현
- 빌더(Builder): 객체의 생성 과정과 표현 방법 분리 -> 동일한 객체 생성에도 서로 다른 결과
- 팩도리 메소드 (Factory Method) : 객체를 생성하기 위한 인터페이스를 정의하여, 어떤 클래스가 인스턴스화 될 것인지 서브클래스가 결정하도록 하는 것(Virtual-Constructor패턴)
- 프로토타입(Prototype) : 원본 객체를 복제하는 방법
- 싱글톤(Singleton) : 하나의 객체를 여러 프로세스가 동시에 참조할 수 없음
2) 구조 패턴(Structural Pattern) ★
- 어탭터(Adapter) : 호환성이 없는 클래스 인터페이스를 이용할 수 있도록 변환해주는 패턴
- 브리지(Bridge) : 구현부에서 추상층을 분리하여, 독립적으로 확장 및 다양성을 가지는 패턴
- 컴포지트(Composite) : 여러 객체를 가진 복합, 단일 객체를 구분없이 다룰 때 사용하는 패턴
- 데코레이터(Decorator) : 상속을 사용하지 않고도 객체의 기능을 동적으로 확장해주는 패턴
- 퍼싸드(Facade) : 서브 클래스들의 기능을 간편하게 사용할 수 있도록 하는 패턴
- 플라이웨이트(Flyweight) : 공유해서 사용함으로써 메모리를 절약하는 패턴
- 프록시(Proxy) : 접근이 어려운 객체를 연결해주는 인터페이스 역할을 수행하는 패턴
3) 행위 패턴(Behavioral Pattern)
- 책임 연쇄(Chain of Responsibility) : 한 객체가 처리하지 못하면 다음 객체로 넘어가는 패턴
- 커맨드(Command) : 요청에 사용되는 각종 명령어들을 추상, 구체 클래스로 분리하여 단순화함
- 인터프리터(Interpreter) : 언어에 문법 표현을 정의하는 패턴
- 반복자(Iterator) : 동일한 인터페이스를 사용하도록 하는 패턴
- 중재자(Mediator) : 서로의 존재를 모르는 상태에서도 협력할 수 있게 하는 패턴
- 메멘토(Memento) : 요청에 따라 객체를 해당 시점의 상태로 돌릴 수 있는 기능을 제공하는 패턴
- 옵서버(Observer) : 관찰대상의 변화를 탐지하는 패턴
- 상태(State) : 객체의 상태에 따라 동일한 동작을 다르게 처리해야 할 때 사용하는 패턴
- 전략(Strategy) : 클라이언트에 영향을 받지 않는 독립적인 알고리즘을 선택하는 패턴
- 탬플릿 메소드(Template Method) : 유사한 서브 클래스를 묶어 공통된 내용을 사위 클래스에 정의하는 패턴
- 방문자(Visitor) : 필요할 때마다 해당 클래스에 방문해서 처리하는 패턴
* 인터페이스 요구사항 검증 ★
1) 요구사항 검증(Requirements Verification)
- 인터페이스 요구사항 검토 계획 수립 -> 검토 및 오류 수정 -> 베이스라인 설정
2) 요구사항 검증 방법 ★★
- 동료 검토(Peer Review)
요구사항 명세서 작성자가 내용을 직접 설명하고 동료들이 이를 들으면서 결함을 발견하는 검토 방법
- 워크 스루(Walk Through)
검토회의 전에 요구사항 명세서를 미리 배포하여 사전 검토한 후, 짧은 검토 회의를 통해 결함을 발견하는 검토 방법
- 인스펙션(Inspection)
요구사항 명세서 작성자를 제외한 다른 검토 전문가들이 확인하면서 결함을 발견하는 검토 방법
3) 인터페이스 요구사항 검증 주요 항복
- 기능성(Functionality)
- 완전성(completeness)
- 일관성(Consistency)
- 명확성(Unambiguity)
- 검증 가능성(Verifiability)
- 추적 가능성(Traceability)
- 변경 용이성(Easily Changeble)
* 인터페이스 ★
1) 인터페이스 식별
- 인터페이스 요구사항 명세서와 인터페이스 요구사항 목록을 기반으로 개발할 시스템과 이와 연계할 내, 외부 시스템 사이의 인터페이스를 식별하고 인터페이스 목록을 작성하는 것
2) 인터페이스 시스템 식별
- 인터페이스별로 인터페이스에 참여하는 시스템들을 송신 시스템과 수신 시스템으로 구분하여 작성하는 것
3) 인터페이스 표준 항목 ★
- 시스템 공통부 : 시스템 간 연동 시 필요한 공통 정보
# 인터페이스 ID, 전송 시스템 정보, 서비스 코드 정보, 응답 결과 정보, 장애 정보
- 거래 공통부 : 시스템들이 연동된 후 송, 수신 되는데이터를 처리할 때 필요한 정보
# 직원 정보, 승인자 정보, 기기 정보, 매체 정보
* 인터페이스 방법 명세화 ★★
1) 시스템 연계 기술 ★★
- DB 링크(DB link) : 수신 시스템에서 DB Link를 생성하고 송신 시스템에서 해당 DB 링크를 직접 참조하는 방식
ex) 테이블명@DB Link명
- DB 연결(DB Connection) : 수신 시스템의 WAS에서 송신 시스템 DB로 연결하는 DB 커넥션 풀(DB Connection Pool)을 생성하고 연계 프로그램에서 해당 DB 커넥션 풀명을 이용
ex) 송신 시스템의 Data Source = DB Connection Pool 이름
- API/Open API : 송신 시스템의 DB에서 데이터를 읽어와 제공하는 애플리케이션 프로그래밍 인터페이스 프로그램
#Open API는 이런 기능을 누구나 무료로 사용할 수 있도록 공대된 API
- JDBC : 수신 시스템의 프로그램에서 JDBC 드라이버를 이용하여 송신 시스템 DB와 연결
- 하이퍼 링크(Hyper Link) : 웹 애플리케이션에서 하이퍼링크 이용
ex) <a href='url'>구글</a>
- 연계 솔류션 : EAI 서버와 송, 수신 시스템에 설치되는 클라이언트 이용하는 방식
▶ 간접 연계 방식- 소켓(Socket) : 서버는 통신을 위한 소켓을 생성하여 포트를 할당하고 클라이언트의 통신 요청 시 클라이언트와 연결하는 네트워크 기술
- 웹 서비스 (Web service) : 웹 서비스에 WSDL, UDDI, SOAP 프로토콜을 이용해 연계하는 서비스
#WSDL(Web Services Description Language)- 웹서비스와 관련된 서식이나 프로토콜 등을 표준적인 방법으로 기술하고 계시하기 위한 언어
# UDDI(Universal Description, Discovery and Integration)- 인터넷에서 전 세계의 비즈니스 업체 목록에 자신의 목록을 등록하기 위한 확장성 생성 언어(XML)기반의 규격
#SOAP(Simple Object Access Protodol)- 웹 서비스를 실제로 이용하기 위한 객체 간의 통신 규약
- ESB(Enterprise Service Bus) : 개방형 표준인 웹 서비스를 이용하며, 메시징과 웹 서비스, 데이터 변형, 인텔리전트 라우팅을 결합하여 다양한 애플리케이션 간의 연결 상호작용을 지원하는 표준기반의 미들웨어 플랫폼
2) 인터페이스 통신 유형- 단방향 : 시스템에서 거래 요청만 하고 응답은 없는 방식- 동기(Sync) : 시스템에서 거래 요청 후 응답이 올 때까지 대기하는 방식ex)은행 업무 : 송금 버튼을 누르면 그 즉시 버튼에 대항 응답으로 돈이 송금됨- 비동기(Async) : 시스템에서 거래 요청 후 다른 작업을 수행하다 응답이 오면 처리하는 방식ex) 채점하는 교수님 : 시험지를 받고 채점하는 건 그날 즉시해도, 다음날 채점해도 상관없음
3) 인터페이스 처리 유형- 실시간 방식 : 사용자가 요청한 내용을 바로 처리해야 할 때 사용하는 방식- 지연 처리 방식 : 매건 단위 처리로 비용이 많이 발생할 때 사용하는 방식- 배치 방식 : 대량의 데이터를 처리할 때 사용하는 방식
4) 인터페이스 발생 주기- 매일, 수시 , 주 1회 등
* 미들웨어 솔루션 명세화 ★★
- 운영체제(OS)와 해당 운영체제에서 실행되는 응용 프로그램 사이에서 운영체제가 제공하는 서비스 이외에 추가적인 서비스를 제공하는 소프트웨어
1) DB(Database)
- 클라이언트에서 원격의 데이터베이스와 연결하기 위한 미들웨어, 2-Tier 아키텍처
#ODBC(마이크로소프트), IDAPI(볼랜드), Glue(오라클)
2) RPC(Remote Procedure Call, 원격 프로시저 호출)
- 응용 프로그램의 프로시저를 사용해 원격 프로시저를 로컬 프로시저처럼 호출하는 방식의 미들웨어
#Entera(이큐브시스템스), ONC/RPC(OSF)
3) MOM(Message Oriented Middleware, 메세지 지향 미들웨어) ★
- 메세지 기반의 비동기형 메세지를 전달하는 방식의 미들웨어
# MQ(IBM), Message Q(오라클) , JMS(JCP)
4) TP-Monitor(Transaction Processing Monitor, 트랜잭션 초리 모니터) ★
- 항공기나 철도 예약 업무 등과 같은 온라인 트랜잭션 업무에서 트랜잭션을 처리 및 감시하는 미들웨어
- 사용자 수가 증가해도 빠른 응답 속도를 유지해야 하는 업무에 주로 사용됨
# tuxedo(오라클), tmax(티맥스소프트)
5) Legacyware(레거시웨어)
- 기존 애플리케이션에 새로운 업데이트된 기능을 덧붙이고자 할 때 사용되는 미들웨어
6) ORB(Object Request Broker, 객체 요청 브로커) ★
- 객체 지향 미들웨어로 코바(CORBA) 표준 스펙을 구현한 미들웨어
* 코바(CORBA; Common Object Request Broker Architecture): 네트워크에서 분산 프로그램 객체를 생성, 배포, 관리하기 위한 규격을 의미
# Orbix(Micro Focus), CORBA(OMG)
7) WAS(Web Application Server, 앱 애플리케이션 서버) ★
- 사용자의 요구에 따라 변하는 동적인 콘텐츠를 처리하기 위해 사용되는 미들웨어
cf) 웹 서버 : 정적인 콘텐츠를 처리- 클라이언트/ 서버 환경보다는 웹 환경을 구현하기 위한 미들웨어- HTTP 세션 처리를 위한 웹 서버 기능 뿐만 아니라 미션- 크리티컬한 기업 업무까지 JAVA, EJB 컴포넌트 기반으로 구현이 가능
# Web Logic(오라클), WebSphere(IBM), JEUS, Tomcat
'정보처리기사' 카테고리의 다른 글
1과목 : 소프트웨어 설계(20문제) - 1 (0) | 2023.06.16 |
---|---|
형상관리(Software Configuration Management) (0) | 2023.05.12 |
워크스루, 인스펙션 (0) | 2023.05.12 |