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

소프트웨어공학이란?

by 진진리 2023. 10. 6.
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