본문 바로가기
소프트웨어공학

[소프트웨어공학] 기말고사

by Lizardee 2023. 12. 10.
L5 - Architectural Design (아키텍처 디자인)
  1. Architectural patterns
    • Pipeline and filter architecture
    • Model-View-Controller(MVC) architecture
  2. Control Styles
    1. 중앙 집중식 제어
      • 콜-리턴 모델
      • 관리자 모델
    2. 이벤트 기반 제어
      • 브로드캐스트 모델
      • 인터럽트 기반 모델
  3. Software architecture evaluation

 


L6 - Software & System Modeling UML
  1. 소프트웨어 모델링
  2. UML(Unified Modeling Language)
  3. Relationships
    • Dependency(의존 관계)
    • Association(연관 관계)
    • Generalization(일반화 관계)
    • Aggregation(약한 집합)
    • Composition(강한 집합)
  4. Use case diagram(유스케이스 다이어그램)
    1. 유스케이스 모델링
    2. 시나리오
    3. 유스케이스 relationships
      • Include(포함)
      • Extend(확장)
      • Generalization(일반화)
  5. Class diagram(클래스 다이어그램)
    1. 클래스 relationships
      • Dependency(의존 관계)
      • Association(연관 관계)
      • Inheritance(상속)
      • Aggregation(약한 집합)
      • Composition(강한 집합)
    2. Interface(인터페이스), Realization
    3. 추상 클래스
    4. Package diagram(패키지 다이어그램)
    5. 클래스 뷰 (MVC architecture)
      • Entity class (= model)
      • Boundary class (= view)
      • Control class (= controller)
  6. Sequence diagram(시퀀스 다이어그램) & Communication diagram(커뮤니케이션 다이어그램)
    • 시퀀스 다이어그램
    • 커뮤니케이션 다이어그램
  7. Activity diagram
  8. State chart diagram
  9. Component diagram & Deployment diagram

 


L7 - Object-Oriented Development Process using UML
  • Object-Oriented SW Developing
    1. Inception(준비)
      1. Problem statement
      2. Use case diagram
      3. Flow of events
    2. Elaboration
      1. 초기 class diagram
      2. Sequence diagram
      3. Class diagram 수정
      4. 소프트웨어 아키텍처 결정
    3. Construction
    4. Transition(인도)

 


L9 - Verification(검증), Validation(확인), Testing
1. Fundamentals of SW Test
  1. V-model: Verification(검증), Validation(확인), Review, Testing
    • Verification(검증)
      • Design phase verification
      • Test phase verification
    • Validation
    • Review
    • Testing 
    • Error --> Fault --> Failure
    • Testing vs. Debugging
      1. Testing
      2. Debugging
      3. Confirmation testing
  2. Test Process
    1. 단위 테스트(unit test)
      • 드라이버(driver)
      • 스터브(stub)
    2. 통합 테스트(integration test)
    3. 시스템 테스트
    4. 인수 테스트(acceptance test)
  3. Principles of Test
    • Testing shows presence of defects.
    • Exhaustive testing(버그가 없음을 증명하는 테스트) is impossible.
    • Pesticide paradox
    • Absence-of-errors fallacy
    • Context dependent
    • Defect clustering
    • Early testing
  4. Testing Capability Level (TMM: Test maturity level)
    1. 레벨1: 테스팅과 디버깅이 구분되지 않는 단계
    2. 레벨2: 테스팅과 디버깅이 구분되는 단계
    3. 레벨3: 표준 테스트 프로세스가 정의되는 단계
    4. 레벨4: 단계별로 verification(검증) & validation(확인) 작업을 통한 측정 데이터를 수집해서 품질을 측정하는 단계
    5. 레벨5: 지속적으로 개선 활동을 계획하고 추진하는 단계

 

2. Static Test (정적 테스트)
  1. 소프트웨어 디자인 & 구현
  2. 소프트웨어 디자인 원칙
    • 소프트웨어 아키텍처 디자인
    • 소프트웨어 유닛 디자인
  3. 정적 테스트
    1. Review
      • 비공식적 리뷰
      • 기술적 리뷰
      • 워크스루
      • Inspections
    2. 정적 분석
      • 설계/코딩 작성 가이드라인 위반 검사
      • 설계/코드 매트릭 측정
      • 런타임 오류 가능성 검사

 

3. White-box Test
  1. Code coverage based test
    1. All path coverage
    2. All node(= statement) coverage
    3. Decision coverage
    4. Condition coverage
    5. Decision/Condition coverage
    6. Multiple condition coverage
    7. MC/DC(modified condition/decision) coverage
  2. Data-flow based test
    1. C-use
    2. P-use
    3. All-use
  3. Mutation test
    • Mutant score

 

4. Black-box Test
  1. 동치분할(equivalence partitioning)
  2. 경계값 분석(boundary value analysis)
  3. 결정 테이블(decision table)
  4. 상태 기반 테스트(state-based test)
    1. All-state coverage
    2. All-edge coverage
  5. 조합 테스트(pair-wise test)

 

5. Experience-based Test, Defect-based Test, Gray-box Test
  • Experience-based Test
  • Defect-based Test
  • Gray-box Test