Seriouly Good Softwar(번역, 소프트웨어의 품격), 내 직역으론 '겁나 좋은 소프트웨어?'란 책을 우연히 서점에서 발견했고 마침 페이스북 추천글이 있었다. 소프트웨어의 품질에 대해 생각하지 못했거나 파편화 되어 있던 지식을 이번 기회에 정리하고자 한다.
주제
이 책은 한 가지 예제(수조 시스템)를 18가지 다른 방법으로 구현하며 각 방법론에 대해 토론한다. 성능과 코드의 명료성, 여러 측면에서 소프트웨어 품질을 최대화하는 방법을 배운다. 크게 주제로는 컴퓨터 과학(여러 구조와 복잡도 이론, 분할상환 복잡도), 자바 프로그래밍(스레드 동기화와 자바 메모리 모델), 소프트웨어 공학(규약에 따른 설계 방법론과 테스팅 기법)을 다룬다.
1. 소프트웨어 품질을 결정하는 기준 이해와, 그 기준에 대한 개발 방법론에 대한 출발점으로 삼을 수 있고, 2. 품질 기준 사이에 발생하는 이슈에 대한 이해와 기회비용을 어떻게 다룰지 생각할 수 있게 해준다.
구성
1부 : 소프트웨어 품질(software quality) 개념 이해와 책 예제(수조 시스템) 소개
- 1장 : 다양한 소프트웨어 품질 기준, 예제 설명 : 2022.12.31 - 📕 소프트웨어의 품질과 그 특성들 (소프트웨어의 품격 1장)
- 2장 : 레퍼런스 구현 모델 : 2022.01.14 - 🤖 자바 객체의 메모리 크기는 얼마일까? (feat. Compressed OOPs, JOL 사용하기)
2부 : 여러 소프트웨어 품질을 살펴보고 최적화 수행 방법
- 3장 : 시간, 성능 효율성 관점에서 구현한다. 레퍼런스(2장에서 구현한) 실행 시간을 수백 배(500배) 줄여본다. 상황에 따라 여러 성능 기준 사이의 충돌을 설명한다. :2022.01.20 - 실제 함수 사이에 최적의 시간 복잡도는 무엇일까? 🤖
- 4장 : 공간(메모리) 효율성 관점에서 구현한다. 객체 사용(50%)하고 안 하는 것(90%) 성능 차이를 비교한다.
- 5장 : 모니터링 기반 신뢰성 보장을 위해 규약에 따른 설계 방법론을 소개하고 메서드 규약과 클래스 불변 조건에 기반한 런타임 체크와 assertion을 사용해 레퍼런스(2장)를 견고하게 만든다.
- 6장 : 단위 테스트 관점에서 구현한다. 테스트 스위트 설계, 실행 기법, 코드 커버리지 측정 지표 활용
- 7장 : 가독성에 맞춰 구현한다. 리팩터링
- 8장 : 동시성과 스레드 안정성 관점에서 구현한다. 스레드 동기화 기본 개념부터 복잡한 기법까지
- 9장 : 재사용성, 유사한 구조 클래스 재활용을 하고 제네릭을 실습한다.
부록 A : 코드 길이 15% 줄이기
부록 B : 소프트웨어 품질 기준을 통합해서 최종적인 예제를 완성한다.
⛓ Reference
책 소스코드 (Java)
진행한 스터디
'📚 Books' 카테고리의 다른 글
책 '업무에 바로 쓰는 SQL 튜닝` 소개와 정리 📘 (1) | 2022.05.15 |
---|---|
책 '이펙티브 자바(Effective Java)' 소개와 요약정리📙 (2) | 2022.03.05 |
책 '단위 테스트(Unit Test)' 소개와 요약정리 📗 (0) | 2022.01.04 |
책 '오브젝트(Object)' 소개 📓 (0) | 2021.11.23 |
책 '객체지향의 사실과 오해' 소개와 요약정리 📔 (0) | 2021.11.15 |
댓글