티스토리 뷰

728x90


정보처리기사 -필기

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)
    • 상대적으로 같은 추상적 수준에서 하나의 표현을 다른 표현형태로 바꾸는 것
    • 기존의 소프트웨어의 구조를 향상시키기 위하여 코드를 재구성하는것(기능과 외적인 동작은 바뀌지 않는다.)
  • 역공학
    • 기존 소프트웨어를 분석하여 개발과정과 데이터 처리과정을 설명하는 분석 및 설계정보를 재발견하고나 다시 만들어내는 작업
    • 일반적인 개발 단계와 반대되는 의미로 기존 코드를 복구하는 방법
    • 역공학의 가장 간단하고 오래된 형태는 재문서화이다.
  • 이식 : 다른운영체제나 하드웨어 환경에서 사용할 수 있도록 변환

목표

  • 복잡한 시스템을 다루는 방법 구현
  • 다른 뷰의 생성
  • 잃어버린 정보의 복구 및 제거
  • 부작용의 발견


기능모형의 설계 순서

  1. 입, 출력 결정
  2. 자료 흐름도 작성
  3. 기능의 내용을 상세히 기술
  4. 제약사항을 결정하고 최소화

자료 흐름도의 구성요소 :
프로세스(Process), 자료 흐름(Data flow), 자료 저장소(Data Store), 단말(Terminator)



자료사전(DD)

  • 데이터를 설명하는 데이터
  • 메타데이터

표기

  • = : 자료의 정의 -> ~로 구성되어있다. (is composed of)
  • + : 자료의 연결 -> 그리고
  • () : 자료의 생략 -> 생략가능한 자료
  • [|] : 자료의 선택 -> 또는
  • {} : 자료의반복
  • ** : 자료의 설명 -> 주석


검사전략

검증 검사

  • 형상검사 : 모든사항들이 제대로 표현되었는지 검사
  • 알파 검사
    • 사용자가 개발자 앞에서 행하는 검사
    • 통제된 환경, 문제점을 확인하면서 기록
  • 베타검사
    • 사용자가 사용자 앞에서 수행하는 검사
    • 제어되지 않는상태에서 사용상의 문제점 기록



728x90
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday