20장 소프트웨어 품질
목차
- 20.1 소프트웨어 품질의 특성
- 20.2 소프트웨어 품질을 향상시키기 위한 기법들
- 20.3 품질 향상 기법의 상대적 효과성
- 20.4 품질 보증 활동 시기
- 20.5 소프트웨어 품질의 일반적인 원칙
20.1 소프트웨어 품질의 특성
이 장을 읽으면서 내가 생각한 저자가 말하고자하는 바는 소프트웨어 품질의 모든 특성을 만족시킬 수는 없지만 품질을 높이는 것이 비용과 시간을 절약할 수 있는 방법은 확실하다는 것이다. 서로 상충하는 특성(대표적으로 정확성과 효율성)들이 존재하기 때문에 완벽한 소프트웨어를 만들 수는 없지만, 모든 품질을 고려해 코드를 구현하는 것이 나에게 훨씬 이득이 될 것이다.
20.2 소프트웨어 품질을 향상시키기 위한 기법들
소프트웨어 품질 향상 프로그램의 몇가지 요소
- 소프트웨어 품질의 목표
- 명확한 품질의 목표를 설정하는 것이 소프트웨어의 품질을 향상시키는 가장 강력한 기법이다.
- 명확한 품질 보증 활동
- 소프트웨어 품질이 중요하다는 것을 팀원들에게 공유하고, 명확하게 해주어야 좋은 품질의 소프트웨어를 생산할 수 있다.
- 테스트 전략
- 한 가지 테스트를 맹신하는 것보다, 두 개 이상의 테스트를 조합해서 사용하는 것이 훨씬 더 많은 결함을 찾는데 도움을 준다.
- 소프트웨어 공학 가이드라인
- 비형식적인 기술적 검토
- 절차를 따르는 기술적 검토
- 외부 감사
- 변경 관리 과정
- 결과 측정
- 프로토타이핑
20.3 품질 향상 기법의 상대적 효과성
위에서 테스트에 대해 말한 부분이 여기서 설명이 되어있다. 두 개 이상의 테스트를 조합해서 사용하면 결함을 훨씬 더 많이 발견할 수 있다. 아래 추천 조합들이다.
- 모든 요구사항, 모든 아키텍처, 시스템의 주요 부분의 설계에 대한 형식적인 정밀 검토
- 모델링이나 프로토타이핑
- 코드 읽기나 정밀 검토
- 수행 테스트
20.4 품질 보증 활동 시기
간단하다. 모든 시기에서 품질 보증 활동은 중요하다. 결함은 내가 모르는 사이에 스며들기 때문에 제품 생산의 전 단게에 걸쳐서 품질 보증 활동을 해야한다.
20.5 소프트웨어 품질의 일반적인 원칙
소프트웨어를 제작하는데 시간이 가장 많이 드는 부분은 코드를 처음 작성하는 부분이 아닌 디버깅하고, 오류를 수정하는 부분이다. 요즘 회사 프로젝트를 진행하면서 굉장히 공감한다. 동작을 제대로 하지 않을 때 수정하는 과정에 정말 많은 시간과 노력이 들어간다. 내가 처음 작성할 때, 조금 더 보기 쉽게, 한 클래스는 한 가지의 일만을 하도록, 그리고 루틴으로 나눠서 작성했다면 수정이 훨씬 쉬웠을 것이라는 후회도 함께 온다.
소프트웨어를 제작할 때, 특히 처음 코드를 작성할 때 충분한 설계 과정을 거친 후 코드를 작성해야 한다는 필요성을 더욱 더 느끼게 되는 챕터였다. 사이드 프로젝트인 리액트 모멘텀을 오늘부터 진행할 예정인데, 여기부터 적용해 나가야겠다.