책 선정
이번에 읽은 책은 "소프트웨어 설계의 정석"입니다.
소프트웨어 설계에 대해 설명해 주는 이 책은, 개발자들이 꼭 알아야 할 설계 원칙과 실무적인 내용이 포함되어 있습니다.
책을 읽으면서 제가 느꼈던 부분들을 정리해 보았습니다.
대표적인 개발 프로세스
책에서는 대표적인 소프트웨어 개발 방법으로 워터폴 개발, 점진적 개발, 애자일 개발을 설명하고 있습니다.
각 개발 방식이 어떻게 다르고, 어떤 상황에 맞는지 이해하기 쉽게 정리되어 있어 유익했습니다.
- 워터폴 개발: 이 방식은 요구사항 정의 → 설계 → 구현 → 테스트가 한 번에 쭉 진행됩니다. 각 프로세스가 완료되지 않으면 다음 단계로 넘어갈 수 없어 요구사항이 분명하고 변경 가능성이 적은 프로젝트에 적합합니다.
- 점진적 개발: 워터폴과는 다르게, 한 번에 모든 걸 끝내지 않고 이터레이션(iteration)이나 스파이럴(spiral) 같은
반복적인 주기를 돌면서 조금씩 개발을 진행합니다. 처음에 일부 기능만 개발한 뒤, 점차 시스템을 완성해 나가는 방식입니다. - 애자일 개발: 점진적 개발과 비슷하지만, 사이클이 아주 짧다는 점이 다릅니다. 몇 주 단위로 개발을 진행하며, 빠르게 피드백을 받아 시스템을 개선합니다. 이 방식은 커뮤니케이션이 중요해서 설계보다는 빠른 피드백과 유연한 적응에 초점을 맞춥니다. 대표적인 애자일 방법으로는 익스트림 프로그래밍(XP), 스크럼(Scrum), 크리스털 클리어(Crystal Clear), 기능 중심 개발(FDD) 등이 있습니다.
이 부분을 읽고 정리하면서, 프로젝트 성격에 맞는 개발 방식을 선택하는 것이 얼마나 중요한지 다시 한 번 깨닫게 된 것 같습니다.
설계의 목적
설계의 목적에 대해서도 매우 구체적으로 설명하고 있습니다. 특히 다섯 가지 목적이 인상 깊었습니다.
- 요구사항을 시스템에 구현할 방법 검토
- 요구사항 정의에서 놓친 기능 검토
- 프로젝트 이해관계자 간 정보 공유
- 시스템 품질 향상
- 유지보수를 위한 설계 정보 기록
이 다섯 가지 목적을 염두에 두고 설계를 한다면, 더 견고하고 유지보수 가능한 시스템을 만들고 운영이 편리할 것 같다는 생각이 들었습니다.
특히 3번의 "이해관계자 간 정보 공유" 부분을 보면서, 앞으로 프로젝트를 할 때 협업의 중요성을 더 많이 느끼고, 팀원들과 소통하는 경험을 많이 쌓아야겠다는 생각이 들었습니다.
데이터베이스 논리설계에서의 정규화
데이터베이스 논리 설계에서 정규화의 중요성에 대해 책을 읽으면서 확실히 이해하게 되었습니다.
정규화는 데이터베이스의 효율적인 설계와 데이터 중복 방지에 큰 역할을 하며, 데이터의 무결성을 유지하는 데 필수적인 것과 각 정규형(1차부터 5차까지)의 개념을 깊게 이해하게 되었고, 데이터베이스 논리 설계를 어떻게 만들어야 체계적이고 견고하게 만드는지 깨달은 것 같습니다.
트랜잭션 스크립트와 도메인 모델
책을 통해 트랜잭션 스크립트와 도메인 모델에 대해서도 깊이 생각해 보게 되었습니다.
트랜잭션 스크립트는 처리와 데이터를 분리하여 동작하도록 구성되는 방식이고
도메인 모델은 객체지향 설계에서 도메인에 맞춰 다른 모델을 호출하도록 설계되는 방식이라고 합니다.
이러한 설명을 처음 알게 되었고, 각 접근 방식의 특성과 장단점을 명확히 이해할 수 있었습니다.
DI(의존성 주입)
마지막으로, DI(의존성 주입)에 대한 구체적인 코드 예시를 보며 개념을 명확히 이해할 수 있었습니다.
책에서 제공하는 예제 코드를 통해 DI가 어떻게 적용되는지,
그리고 이로 인해 코드의 확장성과 테스트 용이성이 얼마나 향상되는지를 알 수 있었습니다.
마무리하며
9월에 읽은 '소프트웨어 설계의 정석' 책을 통해
소프트웨어 설계의 중요성과 다양한 모델, 설계의 목적에 대해 확실히 알게 되었습니다.
특히 데이터베이스 설계와 객체지향 설계에서의 트랜잭션 스크립트와 도메인 모델 등,
지금까지 알지 못했던 실무에 적용할 수 있는 많은 내용을 배우게 되어 매우 좋았습니다.
소프트웨어 설계에 대한 이해를 높이고 싶은 개발자 분들께 이 책을 추천드리며,
설계의 목적과 패턴을 명확히 이해하는 것이 얼마나 중요한지 깨달을 수 있을 것입니다. 감사합니다.
위 내용은 "한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."
'독서 > IT관련' 카테고리의 다른 글
[나는리뷰어다] <테라폼으로 시작하는 IaC(개정판)> (6) | 2024.10.27 |
---|---|
[나는리뷰어다] <자바스크립트 + 리액트 디자인 패턴> (1) | 2024.08.25 |
[나는리뷰어다] <업무에 활용하는 node.js> (0) | 2024.06.20 |
[나는리뷰어다] <더 나은 프로그래머가 되는 법> (0) | 2024.05.25 |
<읽고 나면 진짜 쉬워지는 자료구조> 서평 후기 (0) | 2024.05.14 |