본문 바로가기

Study/정보처리기사 필기

소프트웨어 공학

핵심 개념(Key Concept)


 * 결합도의 종류 (결합도는 오름차순으로 정리)

- 자료 결합도 (Data Coupling)

모듈 간의 인터페이스가 자료 요소로만 구성될 때의 결합도

- 스탬프 결합도 (Stamp Coupling)

모듈 간의 인터페이스로 배열이나 레코드 등의 자료구조가 전달될 때의 결합도

- 제어 결합도 (Control Coupling)

한 모듈에서 다른 모듈로 논리적인 흐름을 제어하는 데 사용하는 제어 요소가 전달될 때의 결합도

- 외부 결합도 (External Coupling)

어떤 모듈에서 외부로 선언한 데이터를 다른 모듈에서 참조할 때의 결합도

- 공통 결합도 (Common Coupling)

공유되는 공통 데이터 영역을 여러 모듈이 사용할 때의 결합도

- 내용 결합도 (Content Coupling)

한 모듈이 다른 모듈의 내부 기능을 직접 참조하거나 수정할 때의 결합도


 * 소프트웨어 품질 목표

- 정확성 (Correctness)

사용자의 요구 기능을 충족시키는 정도

- 신뢰성 (Reliability)

정확하고 일관된 결과를 얻기 위해 요구된 기능을 오류없이 수행하는 정도

- 효율성 (Efficiency)

요구되는 기능을 수행하기 위해 필요한 자원의 소요 정도

- 무결성 (Integrity)

허용되지 않는 사용이나 자료의 변경을 제어하는 정도

- 용이성 (Usability)

사용에 필요한 노력을 최소화하고 쉽게 사용할 수 있는 정도

- 유지보수성 (Maintainability)

변경 및 오류 사항의 수정에 대한 노력을 최소화하는 정도

- 유연성 (Flexibility)

소프트웨어를 얼마만큼 쉽게 수정할 수 있는가 하는 정도

- 시험 역량 (Testability)
    의도된 기능을 수행하도록 보장하기 위해 프로그램을 시험할 수 있는 정도

- 이식성 (Portability)

다양한 하드웨어 환경에서도 운용 가능하도록 쉽게 수정될 수 있는 정도

- 상호 운용성 (Interoperability)

다른 소프트웨어와 정보를 교환할 수 있는 정도


 * 럼바우 (Rumbaugh)의 분석 기법

- 객체 모델링 (Object Modeling)

정보 모델링

속성과 연산 식별 및 객체들 간의 관계를 규정해서 다이어그램으로 표시

가장 선행되어야하는 모델링

- 동적 모델링 (Dynamic Modeling)

상태도를 이용해서 시간의 흐름에 따른 객체들 사이의 제어흐름 등의 동적인 행위를 표현하는 모델링

상태, 사건 등을 중심으로 다룬다

- 기능 모델링 (Function Modeling)

자료 흐름도 (DFD)를 이용

자료 흐름 중심으로 처리 과정을 표현한 모델링

어떤 데이터를 입력할 지, 어떤 결과를 구할 지를 표현


 * CASE (Computer Aided Software Engineering)

- 소프트웨어 개발 과정에서 사용되는 과정들을 컴퓨터와 전용 소프트웨어 도구를 사용해 자동화 하는 것

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

- 개발 도구 + 방법론

- 주요 기능

소프트웨어 생명주기 전 단계 연결

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

그래픽 지원

- 사용 이점

개발 기간 단축

비용절감

품질 향상

유지보수 용이 

생산성 향상

재사용성 향상

개발 주기의 표준화

개발 기법의 실용화

- 분류

상위 (Upper) CASE

생명 주기 전반부에 사용

문제 기술 및 계획

요구 분석 및 설계 지원

하위 (Lower) CASE

생명 주기 하반부에 사용

코드의 작성 및 테스트

문서화 지원

통합 (Intergrate) CASE

생명 전체 주기에 포함되는 과정을 지원


 * 유지보수의 유형

- 수정 (Corrective) 보수 == 수리 / 교정 / 정정 / 하자 보수

검사 단계에서 발견하지 못한 오류를 찾아 수정하는 활동

- 적응 (Adaptive) 보수 == 환경 적응, 조정 보수

수명 기간 중에 발생하는 환경의 변화 (하드웨어, 운영체제 등)를 반영하기 위한 활동

- 완전화 (Perfective) 보수 == 기능 개선, 기능 보수

새로운 기능 추가

성능 개선

유지보수 활동 중에서 가장 많은 비용을 차지하는 활동

- 예방 (Preventive) 보수

미래에 유지보수를 용이하게 하거나 기능을 향상시키기 위해 변경하는 활동


 * COCOMO 소프트웨어 개발 유형

- 조직형 (Organic Mode)

5만(50KDSI) 라인 이하의 소프트웨어 개발 유형

기관 내부에서 개발된 중/소규모의 소프트웨어

일괄 자료 처리, 과학 기술 계산용, 비즈니스 자료 처리용

- 반분리형 (Semi-Detached Mode)

30만(300KDSI) 라인 이하희 소프트웨어 개발 유형

조직형과 내장형의 중간형

컴파일러, 인터프리터와 같은 유틸리티 개발, 운영체제, 데이터베이스 관리시스템

- 내장형 (Embedded Mode)

30만(300KDSI) 라인 이상의 소프트웨어 개발 유형

초대형 규모

신호기 제어 시스템, 미사일 유도 시스템, 실시간 처리 시스템


 * 소프트웨어 생명 주기 모형

- 폭포수 모형

각 단계를 확실히 매듭짓고 다음 단계를 진행하는 모형

이전 단계로 돌아갈 수 없음

소프트웨어 공학에서 가장 오래되고 가장 폭넓게 사용된 전통적인 모델

개발 순서

타당성 검토 -> 계획 -> 요구 분석 -> 설계 -> 구현 -> 시험 -> 유지보수

장점

성공 사례가 많다

단계별 정의, 산출물이 명확

단점

개발 과정 중에 발생하는 새로운 요청을 반영할 수 없다

현실적으로 오류없이 다음 단계로 넘어가기 어렵다

- 프로토타입 모형

개발될 소프트웨어에 대한 견본품 (Prototype)을 만들어 최종 결과물을 예측하는 모델

시스템 일부 혹은 시스템의 모형을 만드는 과정

요구 분석 단계에서 사용

생명주기에서 유지보수 단계가 없어지고 개발 단계 안에서 유지보수가 이뤄진다

개발 순서

요구 수집 -> 빠른 설계 -> 프로토타입 구축 -> 고객 평가 -> 프로토타입 조정 -> 구현

장점

요구 사항을 충실히 반영하며, 요구 사항의 변경이 용이

최종 결과물 이전에 의뢰자가 최종 결과물의 일부 혹은 모형을 볼 수 있다

단점

미리 제작된 소프트웨어와 최종 결과물의 차이가 발생할 수 있다

단기간에 만들어야하기 때문에 비효율적인 구현이 있을 수 있다

 - 나선형 모형

보헴 (Boehm)이 제안

위의 두 모형의 장점에 위험 분석 기능을 추가

나선을 따라 돌 듯이 여러 번의 소프트웨어 개발 과정을 거쳐 점진적으로 완선

위험을 관리하고 최소화하는 것을 목적으로 한다

개발 순서

계획 및 정의 -> 위험 분석 -> 공학적 개발 -> 고객 평가

장점

현실적인 모형

대규모 시스템에 적합

점진적으로 개발 과정이 반복되므로 누락되거나 추가된 사항 추가 가능

유지 보수 기간이 필요없다

단점

위험성 평가에서 놓치면 위험성이 커진다

비교적 최신 기술이기 때문에 널리 사용되지 않는다


 * 응집도 (Cohesion)

- 정보 은닉 개념 확장

- 모듈 안의 요소들이 서로 관련되어있는 정도

- 독립적인 모듈이 되기 위해서는 각 모듈의 응집도가 강해야한다

- 응집도의 종류 (강함 > 약함 순서)

기능적 응집도 (Functional Cohesion)

모듈 내부의 모든 기능 요소들이 단일 문제와 연관되어 수행될 경우의 응집도

순차적 응집도 (Sequential Cohesion)

모듈 내의 하나의 활동으로부터 나온 출력 데이터를 그 다음 활동의 입력 데이터로 사용할 경우의 응집도

교환(통신)적 응집도 (Communication Cohesion)

동일한 입력과 출력을 사용하여 서로 다른 기능을 수행하는 구성 요소들이 모였을 경우의 응집도

절차적 응집도 (Procedural Cohesion)

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

시간적 응집도 (Temporal Cohesion)

특정 시간에 처리되는 몇 개의 기능을 모아 하나의 모듈로 작성할 경우의 응집도

논리적 응집도 (Logical Cohesion)

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

우연적 응집도 (Coincidental Cohesion)

모듈 내부의 각 구성 요소들이 서로 관련없는 요소들만 구성된 경우의 응집도






참고(Reference)


 시나공 기출문제집 - 정보처리기사 필기 



※ 정확하고 부드러운 태클은 언제나 환영입니다.

'Study > 정보처리기사 필기' 카테고리의 다른 글

운영체제  (0) 2019.03.01
데이터베이스  (0) 2019.03.01
전자계산기 구조  (0) 2019.02.27
데이터 통신  (0) 2019.02.25