정보처리기사 -필기
4과목 - 소프트웨어 공학
품질표준
- 정확성(Correctness)
- 신뢰성(Reliability)
- 효율성(Efficency)
- 무결성(Integrity)
- 사용 용이성(Useability)
- 유지보수성(Maintainability)
- 유연성(Flexibility)
- 시험 역량(Testability)
- 이식성(Portability)
- 재사용성(Reusability)
- 상호 운용성(Interoperability)
객체지향 기법
구성요소
- 객체
- 데이터와 데이터를 처리하는 함수를 묶어놓은 하나의 모듈
- 이름을 가진다.
- 메세지를 받았을 때 수행
- 클래스
- 공통된 속성과 연산을 갖는 객체의 집합
- 객체의 타입을 의미
- 속성과 연산을 정의하고 있는 틀
- 클래스에 속하는 객체를 인스턴스라고 함
- 메세지
- 객체들 간의 상호작용을 하는데 사용되는 수단
- 명령
- 수신자의 이름, 수행할 메소드 이름, 메소드를 수행할 때 필요한 인자로 구성 되어있다.
주요 기본원칙
- 캡슐화(Encapsulation)
- 정보 은닉(Information Hiding)
- 상속성(Inheritance)
- 추상화(Abstraction)
- 다형성(Polymorphism)
럼바우(Rumbaugh)의 분석 기법
- 그래픽 표기법을 이용하여 모델링하는 기법
- 분석활동
- 객체(Object) 모델링 : 객체들간의 관계를 규정하여 객체 다이어그램
- 동적(Dynamic) 모델링 : 시간의흐름에 따른 동적인 행위를 표현
- 기능(Function) 모델링 : 자료 흐름을 중심으로 처리과정 표현
정형 기술 검토(FTR)
- 가장 일반적인 검토방법
- 소프트웨어 기술자들에 의해 수행되는 소프트웨어 품질 보증 활동
목적
- 해당요구사항과 검토중인 소프트웨어가 일치하는지를 검증함
- 정해진 표준에 따라 표현되고 있는지, 기능 및 로직의 오류가 있는지 확인함
- 균일한 방식으로 개발되도록 함
- 보다 용이하게 관리하도록 함
지침사항
- 검토에만 집중
- 의제를 제한하여 진행
- 논쟁과 반박을 제한
- 문제영역을 명확히 표현
- 해결책이나 개선책을 논하지 말라
- 참가자수 제한, 사전준비 강요
- 체크리스트
- 자원과 시간일정을 할당
- 의미있는 훈련을 행하라
- 사전에 작성한 메모를 공유
- 검토의 과정과 결과를 재검토
응집도(Cohesion)
- 정보은닉의 개념을 확장한 것으로 모듈안의 요소들이 관련되어있는정도를 나타낸다.
- 모듈의 내부 요소에는 특정작업을 수행하기 위한 명령어, 명령어의 모임, 호출문 등이 있다.
- 독립적인 모듈이 되기위해서는 응집도가 강해야한다.
종류
아래로 갈수록 응집도가 약하다.
- 기능적(Functional) 응집도 : 단일문제와 연관되어 수행 될 경우
- 순차적(Sequential) 응집도 : 출력데이터를 다음 활동의 입력데이털 사용할 경우
- 교환(통신)적(Communication) 응집도 : 동일한 입력과 출력을 사용
- 절차적(Procedural) 응집도 : 모듈이 다수의 관련기능을 가질때 모듈안의 구성요소들이 그기능을 순차적으로 수행할 경우
- 시간적(Temporal) 응집도 : 특정시간에 처리되는 몇개의 기능을 모아 하나의 모듈로 작성할 경우
- 논리적(Logical) 응집도 : 유사한 성격, 특정 형태로 분류되는 요소들로 하나의 모듈이 형성되는 응집도
- 우연적(Coincidental) 응집도 : 서로 관련없는 다른 기능을 수행하느 경우의 응집도
화이트 박스 테스트
- 원시 코드를 오픈 시킨 상태에서 논리적인 모든 경로를 검사하여 검사 사례를 설계하는 방법
종류
- 기초 경로 검사
- 조건 검사
- 루프검사
- 데이터 흐름검사
블랙 박스 테스트
- 소프트웨어 인터페이스에서 실시되는 검사
- 각 기능이 완전히 작동하는 것을 입증하는 검사
- 기능검사
종류
- 동치 분할 검사
- 경계값 분석
- 원인-효과 그래프 검사
- 오류 예측 검사
- 비교검사
프로젝트 일정 계획
브룩스(Brooks)의 법칙 : 진행중에 새로운 인력을 투입할 경우, 작업 적응 기간과, 부작용으로 인해 일정을 더욱 지연시키고 혼란을 가져온다.
PERT/CPM
프로젝트의 지연을 방지하고, 일정을 계획하는 것
프로젝트 개발 기간을 결정하는 임계 경로(CP : Critical Path)를 제공한다.
각 작업에 대한 시작 시간을 정의하여 작업들 간의 경계시간을 계산할 수 있게한다.
PERT
- 상호관계를 표시하는 네트워크
- 단계별 종료 시기를 결정하는 방법
- 노드와 간선으로 구성된다.
- 노드에는 작업, 간선에는 낙관치/기대치/비관치 표시
- 작업에 대한 경계 시간, 작업 간의 상호 관련성, 작업의 결정 경로를 확인할 수 있음
CPM
- 프로젝트 완성에 필요한 작업을 나열하고, 소요시간을 예측하는데 사용하는 기법
- 노드는 작업, 간선은 작업사이의 전후 의존관계를 표시
- 원형노드는 작업, 박스노드는 이정표, 박스위에는 예상 완료 시간을 표시함
- 한 이정표에서 다른 이정표에 도달하려면 이전의 작업이 모두 완료 되어야함
- 경영층의 과학적인 의사결정을 지원하며, 효과적인 프로젝트 통제를 가능하게 해 줌
결합도
- 모듈간 상호 의존하는 정도를 나타낸다.
- 독립적인 모듈이 되기 위해서는 결합도가 낮아야 한다.
종류
아래로 갈수록 결합도가 강하다.
- 자료 결합도(Data Coupling) : 모듈간 인터페이스가 자료 요소로만 구성될 경우
- 스탬프 결합도(Stamp Coupling) : 배열이나 레코드등의 자료구조가 전달될 경우
- 제어 결합도(Control Coupling) : 내부의 논리적인 흐름을 제어하기 위해 제어 신호를 이용하여 통신하거나, 제어요소를 전달하는 경우
- 외부 결합도(External Coupling) : 외부로 선언한 데이터를 참조할 경우
- 공통 결합도(Common Coupling) : 공통 데이터 영역을 여러 모듈이 사용할 경우
- 내용 결합도(Content Coupling) : 내부기능 및 내부자료를 직접 참조하거나 수정할 경우
CASE
- 소프트웨어 개발 과정에서 과정 전체 또는 일부를 컴퓨터와 전용 소프트웨어 도구를 사용하여 자동화하는 것
- 소프트웨어 개발 환경을 조성한다.
- 생명 주기의 전체 단계를 연결
- 자동화해 주는 통합된 도구를 제공하는 기술
- 소프트웨어 개발도구 + 방법론 = 생산성 향상을 구현하는 공학기법
- 주요기능
- 소프트웨어 생명주기 전단계 연결
- 다양한 소프트웨어 개발 모형 지원
- 그래픽 지원
- 장점
- 개발 기간 단축
- 비용절감
- 품질향상
- 유지보수 용이
- 생산성 향상
- 재사용성 향상
- 개발주기의 표준화
- 개발기법의 실용화
- 문서화 용이
CASE 분류
- 상위(Upper) CASE
- 생명주기의 전반부에서 사용
- 문제를 기술하고 계획
- '모델 모순검사, 오류검증, 자료흐름도 작성' 기능 지원
- 하위(Lower) CASE
- 생명주기의 후반부에서 사용
- 코드의 작성, 테스트, 문서화 과정 지원
- 통합(Intergrate) CASE
- 생명주기에 포함되는 전체 과정을 지원
정보저장소(Repository)
CASE 정보 저장소, CASE 데이터 베이스, 요구사항 사전, 저장소라고도 한다.
장점
- 유지 보수성 향상
- 쉽게 새로운 도구를 추가 가능
- 통합 CASE도구를 사용 가능
- 불필요한 정보 제거
- 생명주기 정보를 재사용
- 이식과 변환을 용이하게 한다.
소프트웨어 재공학
- 기존에 있던 소프트웨어를 파기하지 않고, 새로운 요구에 맞도록 수정보완 하거나 새로운 기능을 추가하여 성능을 향상 시키는 것
- 유지보수성과 품질을 향상시키려는 기술
- 위험부담이 감소되고 개발비용이 절감된다.
- 자동화된 도구를 사용하여 소프트웨어를 분석하고 수정하는 과정을 포함한다.
주요활동
- 분석 : 기존 명세서를 확인하여 동작을 이해하고, 재공학 대상을 선정하는 것
- 개조(재구조, 재구성, Restructure)
- 상대적으로 같은 추상적 수준에서 하나의 표현을 다른 표현형태로 바꾸는 것
- 기존의 소프트웨어의 구조를 향상시키기 위하여 코드를 재구성하는것(기능과 외적인 동작은 바뀌지 않는다.)
- 역공학
- 기존 소프트웨어를 분석하여 개발과정과 데이터 처리과정을 설명하는 분석 및 설계정보를 재발견하고나 다시 만들어내는 작업
- 일반적인 개발 단계와 반대되는 의미로 기존 코드를 복구하는 방법
- 역공학의 가장 간단하고 오래된 형태는 재문서화이다.
- 이식 : 다른운영체제나 하드웨어 환경에서 사용할 수 있도록 변환
목표
- 복잡한 시스템을 다루는 방법 구현
- 다른 뷰의 생성
- 잃어버린 정보의 복구 및 제거
- 부작용의 발견
기능모형의 설계 순서
- 입, 출력 결정
- 자료 흐름도 작성
- 기능의 내용을 상세히 기술
- 제약사항을 결정하고 최소화
자료 흐름도의 구성요소 :
프로세스(Process), 자료 흐름(Data flow), 자료 저장소(Data Store), 단말(Terminator)
자료사전(DD)
- 데이터를 설명하는 데이터
- 메타데이터
표기
- = : 자료의 정의 -> ~로 구성되어있다. (is composed of)
- + : 자료의 연결 -> 그리고
- () : 자료의 생략 -> 생략가능한 자료
- [|] : 자료의 선택 -> 또는
- {} : 자료의반복
- ** : 자료의 설명 -> 주석
검사전략
검증 검사
- 형상검사 : 모든사항들이 제대로 표현되었는지 검사
- 알파 검사
- 사용자가 개발자 앞에서 행하는 검사
- 통제된 환경, 문제점을 확인하면서 기록
- 베타검사
- 사용자가 사용자 앞에서 수행하는 검사
- 제어되지 않는상태에서 사용상의 문제점 기록