소프트웨어 공학과 소프트웨어 품질

원설아·2024년 3월 7일
1
post-thumbnail

소프트웨어 공학이란? 🧐


📚 소프트웨어 공학(Software Engineering)에 대해,
미국의 소프트웨어 공학자 왓츠 험프리(Watts Humphrey)는 고품질 소프트웨어의 경제적인 제작을 위한 공학, 과학, 수학 원리 및 방법들을 체계적으로 적용하는 것이라 정의했다.

즉 좋은 소프트웨어를 경제적으로 제작하기 위해 여러 원리와 방법 및 개발, 운영, 유지보수하는 과정을 체계적이고 효율적으로 진행하는 것이다.

소프트웨어 공학의 지향점은 사용자의 요구를 충족시키는 고품질의 좋은 소프트웨어를 예산과 시간 내에 생산하는 것이라 할 수 있다.


소프트웨어 공학이 왜 필요할까? 🔍


모든 선진국의 경제가 소프트웨어에 의존해 있기 때문인데, 자세히 이야기하면 다음과 같다.

  • 소프트웨어 공학의 지출은 모든 선진국의 국내총생산(GNP)에서 상당한 비중을 차지한다.

  • 소프트웨어 비용은 종종 시스템 비용을 지배한다.

  • 소프트웨어는 개발하는 것보다 유지보수하는 데 더 많은 비용이 든다.

  • 수명이 긴 시스템의 경우, 유지보수 비용은 개발 비용의 몇 배에 달할 수 있다.

  • 점점 더 많은 시스템들이 소프트웨어로 제어되고 있다.


소프트웨어 품질이란? 🤔


소프트웨어 공학이 고품질의 소프트웨어 제작을 위해 여러 원리와 방법을 체계적으로 적용시키는 것이라면, 그런 소프트웨어의 품질을 평가하는 지표가 있다.

📋 소프트웨어 품질(Software Quality)이란,
컴퓨터 프로그램이 얼마나 잘 만들어졌는지를 나타내는 지표이다.

좋은 소프트웨어는 소프트웨어 품질을 고려해 사용자가 원하는 기능을 정확하고 효율적으로 수행하며, 사용하기 쉽고, 문제가 적게 발생해야 한다.


소프트웨어 품질의 특성 📑


소프트웨어 품질에는 아래와 같은 중요한 특성들이 있다.

  • 정확성 (Correctness)
    소프트웨어가 요구 사항을 정확히 충족하는 정도

  • 신뢰성 (Reliability)
    소프트웨어가 주어진 조건에서 예상대로 실행되는 능력

  • 견고성 (Robustness)
    예상치 못한 조건에서도 소프트웨어가 계속 정상적으로 작동하는 능력

  • 성능 (Performance)
    소프트웨어가 자원을 사용하여 작업을 완료하는 효율성

  • 사용자 친화성 (User Friendliness)
    사용자가 소프트웨어를 쉽게 이해하고 사용할 수 있는 정도

  • 검증 가능성 (Verifiability)
    소프트웨어의 정확성을 확인할 수 있는 정도

  • 유지보수성 (Maintainability)
    소프트웨어를 수정하고 업데이트하기 쉬운 정도

  • 재사용성 (Reusability)
    소프트웨어의 일부 또는 전체가 다른 프로젝트나 모듈에서 재사용될 수 있는 정도

  • 이식성 (Portability)
    소프트웨어가 다른 환경(ex. 다른 운영 체제)으로 쉽게 이동할 수 있는 정도

  • 이해성 (Understandability)
    소프트웨어의 코드나 구조가 쉽게 이해될 수 있는 정도

  • 상호 운용성 (Interoperability)
    다른 시스템이나 소프트웨어와 함께 작동할 수 있는 능력

  • 생산성 (Productivity)
    소프트웨어 개발 과정에서의 효율성과 효과성

  • 시기적절성 (Timeliness)
    소프트웨어가 적절한 시간 내에 개발되고 배포될 수 있는 정도

  • 가시성 (Visibility)
    소프트웨어 개발 과정이나 상태가 관련 이해관계자에게 잘 보여지는 정도


소프트웨어 공학은 소프트웨어 개발의 모든 단계에서 중요한 역할을 한다.
효율적이고 품질 높은 소프트웨어를 개발하려면 소프트웨어 공학의 원칙과 방법론을 잘 이해하고 적용해야 한다.

0개의 댓글