CS

소프트웨어 공학 이론과 실제 1장~4장

Wibaek 2025. 8. 10. 20:31
728x90

C01 소프트웨어 공학 개요

소프트웨어 위기

  • 소프트웨어 개발이 어려운 이유
    • 의사소통의 문제
    • 시스템의 순차 특성
    • 개발의 의한 결과물
    • 프로젝트의 복잡한 특성
    • 개발자의 특성
    • 다양한 관리 이슈
  • 소프트웨어의 특성 정보
    • 분석 및 설계 40%, 개발 20%, 테스트 40%
    • 운영 유지 비용 67%, 개발 비용 33%

소프트웨어 공학 기술의 적용

  • IDE
  • 소프트웨어 프로토타이핑
  • 소프트웨어 개발 프로세스
    • 폭포수, 점진적, 프로토타입, 나선형, V 모델, 에자일
  • 소프트웨어 검사 및 검증
  • 소프트웨어 형상 관리
  • 소프트웨어 아키텍처
  • 소프트웨어 공학의 원리
    • 엄격성과 정형성
    • 관심사의 분할
    • 모듈화
    • 추상화
    • 변경의 예측
    • 일반화
    • 점진성
    • 명세화

C02 소프트웨어 품질

소프트웨어 품질의 중요성

소프트웨어 품질 요소

  • 외적 품질 요소
    • 정확성: 소프트웨어가 명세서 대로 동작하는지
    • 신뢰성: 소프트웨어 사용시 오류 발생 정도
    • 견고성: 명세서에 정의되지 않은 상황에서도 소프트웨어가 합리적으로 동작하는지
    • 성능: 메모리, 실행 시간 효율성
    • 사용자 친숙성: 사용하기에 편리한지
    • 가용성: 사용하고 싶을 때 사용할 수 있는지
    • 보안성: 공격에서도 정상 동작하는지
    • 안정성: 소프트웨어 사고가 발생하지 않는지
    • 무결성: 잘못된 접근을 막아 데이터의 부정확함과 손실로부터 시스템을 보호하는지
  • 내적 품질 요소
    • 검증 가능성: 소프트웨어 속성이 올바른지 검증할 수 있는지
    • 유지보수성
    • 재사용성
    • 이식성: 소프트웨어가 다른 환경에서도 잘 실행되는지
    • 가독성
    • 생산성: 소프트웨어 개발 과정의 효율성
    • 상호 운용성: 소프트웨어들이 협업을 잘 수행할 수 있는지
    • 적시성: 적시에 소프트웨어를 사용자에게 배포할 수 있는지
    • 가시성: 소프트웨어 개발 상태 정보가 문서화 되는지

인공지능 소프트웨어 품질

소프트웨어 품질 모델 및 표준

  • McCall의 FCM 모델
    • 품질 요소를 분류하기 보다 품질 모델의 기본 구조를 제안
    • 소프트웨어의 외적 특성(Factor), 내정 특성(Criteria), 이를 측정하는 기본 단위와 방법(Metrics)
    • 이를 바탕으로 Factor Model Tree를 제안하고, 트리를 운영(Operation) 관점, 개선(Revision) 관점, 전환(Transition) 관점으로 구분함
  • HP의 FURPS 모델
    • Functionallity
    • Usability: 소프트웨어의 미적 구성
    • Reliability
    • Performance
    • Supportability: 소프트웨어 확장, 적용, 수정등과 관련된 요소
  • ISO/IEC 9126 품질 모델
    • 기능성(Functionality)
    • 신뢰성(Reliability)
    • 사용성(Usability)
    • 효율성(Efficiency)
    • 유지보수성(Maintainability)
    • 이식성(Portability)
  • ISO/IEC
    • 기능적 적합성
    • 신뢰성
    • 성능 효율성
    • 운영성
    • 보안성
    • 호환성
    • 유지보수성
    • 전환성

소프트웨어 품질 관리

C03 소프트웨어 개발 프로세스

실현 가능성 분석

전통적인 소프트웨어 프로세스

  • 전통적인 프로세스 모델
    • 폭포수 모델
    • 프로토타입 모델: 1차적으로 프로토타입을 개발, 2차적으로 폭포수 모델을 통해 개발 완료
    • 나선형 모델: 목표 설정 → 위험 분석 → 구현 및 테스트 → 평가 및 다음 단계 수립이 반복
      • 위험의 최소화와 점진적 개발
    • V모델
      • 사용자 요구사항 ↔ 인수 테스트
      • 분석 ↔ 시스템 테스트
      • 설계 ↔ 통합 테스트
      • 구현 ↔ 단위 테스트
    • 변환 모델(Transformation Model)
      • 요구사항을 정형 기법으로 명세, 자동화된 도구로 코드로 변경

애자일 및 XP 프로세스

  • 신속한 소프트웨어 개발
    • 애자일 12원칙
  • 애자일: XP 프로세스
    • XP Practices: 10가지 실천사항
    • 개발 사이클: 엔지니어링 사이클, 배포 사이클
  • 애자일: 스크럼 프로세스
    • 스크럼 프로세스 용어
      • 스프린트, 제품 백로그, 스프린트 백로그, 제품 증분, 번다운 차트, 번업 차트, 제품 책임자, 스크럼 마스터
    • 스크럼 프레임워크
    • 스크럼 프로세스
  • Chaos와 DevOps
    • Chaos Engineering: Netflix 이야기
    • DevOps Practices
      • DevOps의 핵심 원리
        • 자동화, 반복, 자기 서비스, 지속적 개선, 협업, 지속적 테스트, 지속적 통합과 지속적 배포
      • DevOps의 이점
        • 제품 출시 기간 단축, 낮은 위험과 유연한 배포, 신속한 복구, 고객 만족도 및 시장 적합도 향상

소프트웨어 프로세스 개선

  • CMM과 CMMI
  • SPICE & A-SPICE
  • 식스 시그마
  • 기타

C04 DevOps

DevOps 개요

DevOps 프로세스와 프랙티스

DevOps 변형들

728x90