728x90
Software Engineering(SE)
소프트웨어의 개발, 작동, 유지, 처분에 대한 체계적인 접근
"Multi-person construction of multi-version software"
: 수많은 개발자들이 긴밀하게 협력해야만 개발이 가능할 정도로 복잡한 소프트웨어 개발에 필요한 기술을 연구하는 분야.
소프트웨어의 개발은 지속적인 유지, 보수, 확장을 필요로 하는 일.
여러 버전의 형태로 출시되는 경우가 많음.
- SE의 중요성
- 소프트웨어의 품질과 생산성
- 시스템 비용에 있어 소프트웨어 비용이 지배적인 요소
- software-intensive, software-driven economy
- 소프트웨어 개발 단계: 요구사항 분석 -> 설계 -> 구현 -> 검증 -> 요지보수
- 소프트웨어 특성: Complexity, Changeability, Longevity
- Software Crisis: 많은 소프트웨어들이 목표(품질, 개발비용, 프로젝트 기간)을 충족하는데 실패
- Software Safety: 많은 사고들이 소프트웨어에 의해 제어되는 시스템 오류에 의해 발생
Software Failures 사례
- Therac-25: 코드 검토없이 사내 코드에 의존 - reliability modeling과 risk management x. 인터페이스가 user-friendly 하지 않았으며 메뉴얼이 없음. 소프트웨어와 하드웨어의 조합으로 테스트하지 않음.
- reliability modeling: 구현 전에 구성 요소 또는 시스템의 신뢰성을 예측하거나 이해하는 프로세스.
- risk management: 조직의 자본 및 수익에 대한 위협을 식별, 평가, 제어하는 프로세스. 조직이 직면한 모든 위험을 고려하는 데 도움. 프로젝트 성공 가능성을 높이고 재정/시간/노력 절약 가능.
- Ariane 5: 위성 탑재한 로봇. Ariane 4와 초기 경로가 달랐으나 모듈이 재사용됨. 소스코드에서 64비트 실수형 값을 16비트 정수형 값으로 변환하는 과정에서 오류 발생. Arian 5 궤적 데이터를 포함하지 않은 테스팅을 함.
- Boeing 737 Max 8: 새로 도입된 소프트웨어 기반 시스템(MCAS)의 오작동에 대한 대처를 하지 못함
- Keyless Ignition system(smart key): 주차 후 엔진 정지 버튼을 누르지 않고 운전자가 차를 떠나는 경우에도 엔진이 지속적으로 작동하여 일산화탄소가 배출되면서 인명 피해 발생
-> Project Failures의 원인
- 비현실적, 불명확한 목표
- 자원에 대한 부정확한 추정 및 자원 부족
- 부족한 프로젝트 관리 및 보고
- 새로운, 미성숙한 기술의 사용
- 불완전한 시스템 요구사항 및 요구사항 변경
- 고객, 개발자, 사용자 간의 부족한 소통
- 관리되지 않은 위험, 상업적 압박 등
'대학공부 > 소프트웨어공학' 카테고리의 다른 글
SPI, CMMI, 기타 용어 (0) | 2023.10.06 |
---|---|
Formal Methods 정형 기법 (0) | 2023.10.06 |
Inspection (0) | 2023.10.06 |
UML (0) | 2023.10.06 |
Requirements Engineering(요구공학) (0) | 2023.10.06 |