2018년 8월 4일 토요일

소프트웨어 공학 - 요점정리

모델링의 종류

  • 럼바우 (Rumbaugh) 모델링
    • 가장 일반적
    • Object Modeling - 객체다이어그램
    • Dynamic Modeling - 상태다이어그램
    • Function Modeling - 자료흐름도
  • Booch 모델링
    • 미시적(Micro) 개발 프로세스, 거시적(Macro) 개발 프로세스 모두사용
    • 절차지향 프로그램으로 개발하려면 "동사"에 밑줄 긋고, 객체지향 프로그램으로 개발하려면" 명사"에 밑줄 그어라.
  • Jacobson 모델링
    • Use Case를 강조
  • Wirfs-Brock 모델링
    • 분석 설계간 구분이 없음
    • 고객명세서를 평가하여 설계작업까지 한큐! 
  • Coad와 Yourdon 모델링 
    • E-R 다이어그램을 사용하여 개체활동 모델링

LOC기법

각 기능의 원시코드라인의 비관치/낙관치/기대치를 측정/예측

OMA (Object Management Architecture) 레퍼런스 모델의 구성요소

  • ORB (객체요구매개자) 
  • Object Service (객체서비스)
  • Common Facilities (공통기능)
  • Domain Interface (도메인 인터페이스) 
  • Application Interface (응용 인터페이스) 

유지보수의 유형

  • Corrective: 수정 보수
  • Adaptive: 환경변화를 반영하기위한 변경
  • Perfective: 기능의 개선이나 추가
  • Preventive: 예측, 예방을위한 변경

자료사전 표기기호

  • = : is composed of
  • + : 연결 (AND) 
  • ( ) : Optional
  • | : 선택 (OR) 
  • { } : 반복

CASE (Computer Aided Software Engineering)의 종류

  • Upper CASE
  • Lower CASE
  • Integrate CASE

HIPO Chart

  • 시스템의 기능을 여러개의 고유모듈들로 분할, 이들간의 인터페이스를 계층구조로 표현한 도형 또는 도면
  • 종류
    • 가시적 도표: 시스템 전체 기능과 흐름을 보여주는 Tree 구조도 (도식목차) 
    • 총체적 도표: 프로그램 기능들을 기술한 것으로 입력, 출력, 처리에 대한 전반적인 정보를 제공하는 도표 (총괄도표, 개요도표) 
    • 세부적 도표: 총체적 도표에 기술된 기능의 세부 구성요소들을 상세히 기술 (상세도표) 

 소단위명세서(Mini-Spec) 

세분화된 자료 흐름도에서 최하위단계 프로세스의 처리절차를 기술한 것으로 작성툴에는 서술문장, 구조적언어, 의사결정나무, 의사결정표, 그래프 등이있다. 

결합도(Coupling) - 모듈간 의존도

  • Data Coupling: 인수로 변수를 전달(자료만 공유) 
  • Stamp Coupling: 인수로 배열, 구조체를 전달(구조를 공유) 
  • Control Coupling: Handler나 Exception 같은 경우(다른 모듈로 제어신호를 전달) 
  • External Coupling: 전역변수 참조(다른모듈에서 선언된 전역변수를 공유하는 경우) 
  • Common Coupling: 공유메모리 참조
  • Content Coupling: 다른모듈 기능을 참견, 개입


응집도(Cohesion) - 모듈의 독립성

  • Function (기능적): 모듈내 요소들이 단일문제에 연관되어 수행
  • Sequential (순차적): 하나의 행동이 다음 행동의 입력이 되는 경우
  • Communication (교환적): 동일 입출력에 의존하는 요소들이 모임 
  • Procedural (절차적): 다수 관련요소가 순차수행될 경우
  • Temporal (시간적): 특정 시간에 처리되는 요소들이 모임
  • Logical (논리적): 유사한 성격, 분류의 요소들이 모임
  • Coincidental (우연적): 서로 관련없는 요소들이 모임 

화이트박스와 블랙박스

  • 화이트박스
    • 모든경로를 검사
    • 원시코드 따라다니며 직접 확인
    • 전체를 최소한번이상 돌려봄
    • Basic path testing, Condition testing, Loop testing, Data flow testing. 
  • 블랙박스
    • 기능별 테스트
    • 정해진 입력에 대한 출력을 검증
    • Equivalence partitioning testing: 동치분할검사
      • 입력자료에 중점을 두고 검사사례를 만들어 검사
    • Boundary value Analysis: 경계값 분석
    • Cause-Effect Graphing testing: 원인-효과 그래프 검사
      • 입력데이터간의 관계와 출력에 미치는 영향을 체계적으로 분석하여 검사사례 선정
    • Fault Based testing: 오류예측검사
      • 과거경험, 확인자의 감각에 의한 검사
    • Comparison testing: 비교검사
      • 여러버전의 프로그램에 동일한 검사자료를 제공해 결과검증

각종 용어설명

  • Class: 하나이상의 유사한 객체들을 묶어 공통된 특성을 표현한 데이터 추상화
  • Method: 객체상태 참조/변경의 수단. (Operation) 
  • Inheritance: 부모의 속성을 물려받음
  • Message: 객체들간 상호작용시 사용되는 수단. 외부요구사항. 
  • Encapsulation: 데이터, 속성, 처리함수를 하나로 묶는 것. 
  • Information Hiding: 캡슐화에서 가장 중요한 개념, 자신의 정보를 숨기고 자신의 연산만을 통해 접근 허용
  • Abstraction: 추상화. (객체 속성 중 중요한 것에 중점을 두어 모델화) 
  • Polymorphism: 메세지에 의해 객체가 연산을 수행할때 각 객체가 가지고 있는 고유한 방법으로 응답할 수 있는 능력
  • Component: 객체들의 모임, 대규모 재사용 단위 White-Box Wrapping을 적용하여 내부처리과정을 조사하고 코드를 수정함. 
  • Stub: 하향식 통합 테스트 수행을 위해 일시적으로 필요한 조건만 가지고 임시로 제공되는 시험용 모듈

소프트웨어 재공학의 주요활동

  1. 분석(Analysis): 명세서 확인 → 동작이해 → 재공학 대상선정
  2. 재구성(Restructuring): 추상적 수준에서 표현만이 바뀜(외형 변화 없음) 
  3. 역공학(Reverse Engineering): 기존코드를 복구하는 방법, 분석 및 설계정보를 재발견하거나 다시 만들어내는 작업
  4. 이식(Migration): 기존 소프트웨어를 다른 환경에 이식

Bottom-Up Integration Test 과정

낮은 수준 모듈들을 Cluster로 결합 → Driver 작성 → Cluster 검사 → Driver 제거 → Cluster 상위결합
N-S차트
  • 박스를 기본요소로 하여 연속, 선택, 반복을 표현
  • GOTO나 화살표가 없다. 
  • 복합조건 처리를 시각화하여 명확히 식별하는데 적합
  • 이해는 쉬우나 작성이 어렵고, 코드변환이 용이
  • 총체적 구조표현이 어려움
  • 단일 입구와 단일출구로 표현

COCOMO 모형
  • Boehm이 제안한, LOC(원시코드라인수)에 의한 비용산정기법
  • 개발 소프트웨어의 규모(LOC)를 예측한 후 비용산정 공식을 대입
  • 같은 규모의 프로그램이라도 성격에 따라 비용산정이 달라짐
  • 프로젝트 모드
  • 조직형(Organic Mode: 5만라인,50KDSI 이하) 
  • 반분리형(Semi-detached Mode: 30만라인, 300KDSI 이하) 
  • 내장형(Embedded Mode: 30만라인, 300KDSI 이상) 




















댓글 없음:

댓글 쓰기