나의 공부 일기

정보처리기사) 1과목 정리 ( 3 / 4 ) 본문

자격증공부/정보처리기사

정보처리기사) 1과목 정리 ( 3 / 4 )

곽병권 2024. 4. 2. 15:58
728x90

UML의 상태다이어그램의 구성요소

상태

- State

- 객체가 존재할 수 있는 공간

 

시작 상태

- Initial State

- 객체의 시작 상태

 

종료 상태

- Final State

- 객체의 종료 상태

 

전이

- Transition

- 객체의 상태가 다른 상태로 변경되는 상태

 

이벤트

- Event

- 상태의 변화를 주는 현상

 

전이 조건

- Transition Condition

- 특정 조건 만족 시 전이가 발생하도록 하기 위해 사용되는 속성값의 불린 식


UML에서의 사물(Things)의 종류

구조 사물

- Structural Things

- UML 모델의 정적인 부분들을 정의

- 시스템의 물리적 , 개념적 요소를 표현

ex) 클래스 ,유스케이스, 컴포넌트, 노드 등

 

행동 사물

- Behavioral Things

UML 모델의 동적인 부분을 표현

- 시간과 공간에 따른 요소들의 행위를 표현

ex) 상호작용, 상태 머신 등

 

 

그룹 사물

- Grouping Things

- UML모델의 요소들을 그룹으로 묶어서 표현

ex) 패키지 등

 

주해 사물

- Annotational Things

- UML모델을 설명(주석)

- 부가적인 설명이나 제약조건 등을 표현

ex) 노트 등


CASE

- Computer Aided Software Engineering

- 프로그램의 구현과 유지보수, 요구분석, 설계, 구현, 검사 및 디버깅 과정 전체 또는 일부를 자동화 하는것이다

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

- 개발 과정의 속도를 향상시킨다.

- 소프트웨어 부품의 재사용을 가능하게 만든다.

주요기능

- 그래픽을 지원한다.

- 소프트웨어 생명주기의 전 단계를 연결한다.

- 다양한 소프트웨어 개발 모형을 지원한다.

- 표준화된 개발 환경 구축 및 문서 자동화 기능을 제공한다.

- 작업 과정 및 데이터 공유를 통해 작업자 간의 커뮤니케이션을 증대한다.

 

CAD

- Computer-Aided Design

- 컴퓨터를 이용한 제도 및 설계를 개발하는 환경을 수행하는 응용프로그램

 

CAI

- Computer-Assisted Instruction

- 보조적 수단으로 컴퓨터를 활용하여 이루어지는 모습

 

CAM

- Content Addressable Memory

- 기억 장치에서 자료를 찾을 때 주소에 의해 접근하지 않고, 기억된 내용의 일부를 이용하여 접근할 수 있는 기억 장치


애플리케이션 설계

HIPO

- Hierarchy Input Process Output

- 하향식 소프트웨어 개발을 위한 문서화 도구

 

HIPO 특징

- 체계적인 문서 관리가 가능함

- 기호, 도표 등을 사용해서 보기가 쉽고 이해도 쉬움

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

- 변경, 유지 보수가 용이함

- 시스템의 기능을 고유 모듈들로 분할하여 이들 간의 인터페이스를 계층 구조로 표현한 것을 HIPO 차트라고 함

 

HIPO 차트 종류

- 가시적 도표

- 총체적 도표

- 세부적 도표

 

 


공통 모듈에 대한 명세 기법

명확성

- 해당 기능에 대해 일관되게 이해되고 한 가지로 해석될 수 있도록 작성하는 원칙

 


코드 설계 종류

연상 코드

- 코드만 보고 대상을 연상할 수 있도록 명칭 일부를 약호(간단하고 알기 쉽게 나타내어 만든 부호) 형태로 넣어 연상할 수 있도록 구성된 코드

 

블록 코드

- 공통성이 있는 것끼리 블록으로 구분하고, 각 블록 내에서 일련번호를 부여하는 코드

- 구분 코드라고도 불림

 

순차 코드

- 일정한 기준에 따라 순서대로 일련번호를 부여한 코드

- 대상 자료의 물리적인 수치인 길이, 넓이, 용량 등을 표시한 코드

 

표의 숫자 코드

- 대상 자료의 물리적인 수치인 길이, 넓이, 용량 등을 표시한 코드

 

십진 코드

- Decimal Code

- 10진수 형태로 표현한 코드

 

그룹 분류식 코드

- Group Classfification Code

- 대상을 기준에 따라 대분류, 중분류, 소분류로 구분하여 번호를 부여한 코드

 


팬 인 / 팬 아웃

팬 인

- Fan-In

- 모듈 자신을 기준으로 모듈에 들어오면 팬 인

 

팬 아웃

- Fan-Out

- 모듈 자신을 기준으로 모듈에서 나가면 팬 아웃


소프트웨어 설계 시 고려사항

- 전체적이고 포괄적인 개념을 설계한 후 차례로 세분화하고 구체화시켜 나간다.

- 요구사항들을 모두 구현해야 하고 유지 보수가 용이해야함

- 모듈은 독립적인 기능을 갖도록 설계해야 한다.

- 모듈간의 상관성은 낮추고 변경이 쉬워야 한다.

 

소프트웨어 상위 설계

- 자료 구조 설계

- 아키텍처 설계

- 인터페이스 설계

- 프로시저 설계

 

소프트웨어 하위 설계

- 모듈 설계

 

바람직한 소프트웨어 설계 방안

- 모듈의 독립성과 재사용성을 높이기 위하여 결합도는 낮추고 응집도는 높인다.

- 모듈의 복잡도와 중복성을 줄이고 일관성을 유지한다.

- 모듈의 기능은 예측 가능해야 하며, 지나치게 제한적이어서는 안 된다.

- 적당한 모듈의 크기를 유지한다.

- 모듈 간의 효과적인 제어를 위해 설계에서 계층적 자료 조직이 제시되어야 한다.

- 유지 보수가 용이해야 하고 잇기성을 고려해야 한다.


코드 오류 종류

사본 오류

- Transcription Error

- 한 자리를 잘못 표기한 경우

- 필사 오류, 오자 오류라고도 불림

 

전위 오류

- Transposition Error

- 연속된 두 글자가 서로 바뀌어 표기된 경우

 

생략 오류

- Omission Error

- 한 글자를 빼먹고 기술한 경우

 

첨가 오류

- Addition Error

- 한 글자를 추가되어 기술한 경우

 

이중 전위 오류

- Double Transposition Error

- 전위 오류가 중복 발생한 경우


소프트웨어 아키텍처

- 외부에서 인식할 수 있는 특성이 담긴 소프트웨어의 골격이 되는 기본 구조로 볼 수 있다.

- 이해 관계자들의 품질 요구사항을 반영하여 품질 속성을 결정함

 

데이터 중심 아키텍처

- 공유 데이터 저장소를 통해 접근자 간의 통신이 이루어지므로 각 접근자의 수정과 확장이 용이함

 

파이프 필터 아키텍처

- 데이터 스트림을 생성하고 처리하는 시스템에서 사용 가능한 패턴

- 서브 시스템으로 데이터를 단방향으로 흐르는 구조

- 필터 간 데이터 이동에서 데이터 변환 오버헤드가 발생함

 

소프트웨어 아키텍처 설계

품질 속성

- 가용성

- 변경 용이성

- 성능

- 보안성

- 사용 편의성

- 시험 용이성

 


모듈

- Moduel

- 크게 독립된 하나의 소프트웨어 또는 하드웨어 단위를 지칭하는 용어

- 단독으로 컴파일 할 수 있으며, 재사용할 수 있음

- 모듈이 되려면 다른 것들과 구분될 수 있는 독립적인 기능을 가져야 하고 유일한 이름을 사용해야 한다.

- 다른 모듈에서의 접근이 가능해야 함

 

모듈화

- 시스템을 모듈로 분할하면 각각의 모듈을 별개로 만들고 수정할 수 있기 때문에 좋은 구조가 된다.

- 응집도는 모듈의 독립성을 나타내는 개념으로, 모듈 내부 구성 요소 간 연관 정도이다.

- 모듈과 모듈 사이의 상호의존 또는 연관 정도는 결합도이다.

- 모듈 간의 결합도가 약해야 독립적인 모듈이 될 수 있다.

- 모듈 내 구성 요소 간의 응집도가 강해야 좋은 모듈 설계이다.

 


결합도의 종류

내용 결합도

- Content Coupling

- 다른 모듈 내부에 있는 변수나 기능을 다른 모듈에서 사용하는 경우의 결합도

- 하나의 모듈이 직접적으로 다른 모듈의 내용을 참조할 때 두 모듈은 내용적으로 결합되어 있는 경우의 결합도

 

공통 결합도

- Common Coupling

- 파라미터가 아닌 모듈 밖에 선언되어 있는 전역 변수를 참조하고 전역 변수를 갱신하는 식으로 상호작용을 하는 경우의 결합도

- 두 모듈이 동일한 전역 데이터를 접근한다면 공통 결합되어 있다고 함

 

외부 결합도

- External Coupling

- 두 개의 모듈이 외부에서 도입된 데이터 포맷, 통신 프ㅗ토콜 또는 디바이스 인터페이스를 공유할 경우의 결합도

 

제어 결합도

- Control Coupling

- 어떤 모듈이 다른 모듈의 내부 논리 조직을 제어하기 위한 목적으로 제어 신호를 이용하여 통신하는 경우의 결합도

- 하위 모듈에서 상위 모듈로 제어 신호가 이동하여 상위 모듈에게 처리 명령을 부여하는 권리 전도 현상이 발생하게 하는 결합도

 

스탬프 결합도

- Stamp Coupling

- 모듈 간의 인터페이스로 배열이나 객체, 구조 등이 전달되는 경우의 결합도

 

자료 결합도

- Data Coupling

- 모듈 간의 인터페이스로 전달되는 파라미터를 통해서만 모듈 간의 상호작용이 일어나는 경우의 결합도

 

내용 > 공통 > 외부 > 제어 > 스탬프 > 자료 순으로 결합도가 낮아진다.


응집도의 유형

우연적 응집도

- Coincidental Cohesion

- 서로 간에 어떠한 의미 있는 연관 관계도 없는 기능 요소로 구성될 경우의 응집도

- 서로 다른 상위 모듈에 의해 호출되어 처리상의 연관성이 없는 서로 다른 기능을 수행할 경우의 응집도

 

논리적 응집도

- Logical Cohesion

- 유사한 성격을 갖거나 특정 형태로 분류되는 처리 요소들이 한 모듈에서 처리되는 경우의 응집도

 

시간적 응집도

- Temporal Cohesion

- 모듈 내 구성 요소들이 서로 다른 기능을 같은 시간대에 함께 실행하는 경우 응집도

 

절차적 응집도

- Procedural Cohesion

- 모듈이 다수의 관련 기능을 가질 때 모듈 안의 구성 요소들이 그 기능을 순차적으로 수행할 경우의 응집도

 

통신적 응집도

- Communication Cohesion

- 동일한 입력과 출력을 사용하여 다른 기능을 수행하는 활동들이 모여 있을 경우의 응집도

 

순차적 응집도

- Sequential Cohesion

- 모듈 내에서 한 활동으로부터 나온 출력값을 다른 활동이 사용할 경우의 응집도

 

기능적 응집도

- Fuctional Cohesion

- 모듈 내부의 모든 기능이 단일한 목적을 위해 수행되는 경우의 응집도

 

우연적 < 논리적 < 시간적 < 절차적 < 통신적 < 순차적 < 기능적 순서로 응집도가 높아짐


소프트웨어 아키텍처 4 + 1뷰

유스케이스 뷰

- Usecase  View

- 유스케이스 또는 아키텍처를 도출하고 설계하며 다른 뷰를 검증하는 데 사용되는 뷰

 

논리 뷰

- Logical  View

- 시스템의 기능적인 요구사항이 어떻게 제공되는지 설명해주는 뷰

 

프로세스 뷰

- Process  View

- 시스템의 비기능적인 속성으로서 자원의 효율적인 사용, 병행 실행, 비동기, 이벤트 처리 등을 표현한 뷰

 

구현 뷰

- Implementaion  View

- 개발 환경 안에서 정적인 소프트웨어 모듈의 구성을 보여주는 뷰

 

배포 뷰

- Deployment View

- 컴포넌트가 물리적인 아키텍처에 어떻게 배치되는가를 매핑해서 보여주는 뷰

 

 

 

728x90