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의 이점
- 제품 출시 기간 단축, 낮은 위험과 유연한 배포, 신속한 복구, 고객 만족도 및 시장 적합도 향상
- DevOps의 핵심 원리
소프트웨어 프로세스 개선
- CMM과 CMMI
- SPICE & A-SPICE
- 식스 시그마
- 기타
C04 DevOps
DevOps 개요
DevOps 프로세스와 프랙티스
DevOps 변형들
728x90
'CS' 카테고리의 다른 글
소프트웨어 공학 이론과 실제 5장 ~ 8장 (1) | 2025.08.10 |
---|---|
[Assembly] leaq의 이해, lea가 헷갈리는 이유 (0) | 2023.09.22 |