Machineboy空
클린 아키텍쳐 1~3장 본문
1장 설계와 아키텍처란?
제이슨 고먼의 실험
정수를 로마 숫자로 변환하는 프로그램
사전에 정의한 일련의 인수테스트를 프로그램이 통과하면 개발이 완료된 것으로 봤다.
1일차,3일차, 5일차에 TDD(테스트 주도개발)을 적용하고,
2일차,4일차, 6일차에는 TDD없이 개발했다.

TDD를 적용한 날이
적용하지 않은 날보다 대략 10% 빠르게 작업이 완성되었다.
빨리 가는 유일한 방법은 제대로 가는 것이다.
2장 두 가지 가치에 대한 이야기
소프트웨어가 가진 본연의 목적을 추구하려면 소프트웨어는 반드시 부드러워야(soft) 한다. 다시 말해 변경하기 쉬워야 한다. 이해관계자가 기능에 대한 생각을 바꾸면, 이러한 변경사항을 간단하고 쉽게 적용할 수 있어야 한다. 이러한 변경사항을 적용하는 데 드는 어려움은 변경되는 범위에 비례해야 하며 변경사항의 형태(shape)와는 관련이 없어야 한다.
기능인가 아니면 아키텍처인가? 둘 중 어느 것의 가치가 더 높은가? 소프트웨어 시스템이 동작하도록 만드는 것이 중요한가? 아니면 소프트웨어 시스템을 더 쉽게 변경할 수 있도록 하는 것이 더 중요한가?
동작은 하지 않지만 변경이 쉬운 프로그램을 내게 준다면, 나는 프로그램이 돌아가도록 만들 수 있고, 변경사항이 발생하더라도 여전히 동작하도록 유지보수할 수 있다. 따라서 이러한 프로그램은 앞으로도 계속 유용한 채로 남는다.
수정이 현실적으로 불가능한 시스템은 존재하기 마련인데, 변경에 드는 비용이 변경으로 창출되는 수익을 초과하는 경우다.
| 긴급 O, 중요 O | 긴급 X, 중요 O |
| 긴급 O, 중요 X | 긴급 X, 중요 X |
소프트웨어의 첫 번째 가치인 행위는 긴급하지만 매번 높은 중요도를 가지는 것은 아니다.
소프트웨어의 두 번째 가치인 아키텍처는 중요하지만 즉각적인 긴급성을 필요로 하는 경우는 절대 없다.
따라서 기능의 긴급성이 아닌 아키텍처의 중요성을 설득하는 일은 소프트웨어 개발팀이 마땅히 책임져야 한다.
아키텍트는 이러한 특성과 기능을 개발하기 쉽고 간편하게 수정할 수 있으며, 확장하기 쉬운 아키텍처를 만들어야 한다. 아키텍처가 후순위가 되면 시스템을 개발하는 비용이 더 많이 들고, 일부 또는 전체 시스템에 변경을 가하는 일이 현실적으로 불가능해진다.
3장 패러다임 개요
패러다임이란 프로그래밍을 하는 방법으로, 대체로 언어에는 독립적이다. 패러다임은 어떤 프로그래밍 구조를 사용할지, 그리고 언제 이 구조를 사용해야 하는지를 결정한다. 현재까지 이러한 패러다임에는 세가지 종류가 있다.
- 구조적 프로그래밍(Structured Programming)
- 객체 지향 프로그래밍(Object-Oriented Programming)
- 함수형 프로그래밍(Fuctional Programming)
'Computer > CS' 카테고리의 다른 글
| 클린 아키텍처 7~8강 (0) | 2025.12.04 |
|---|---|
| 클린 아키텍쳐 4~6장 (0) | 2025.12.03 |
| 컴파일 언어와 스크립트 언어 (0) | 2025.04.18 |
| Exercism - Strain: 제너릭 메소드, 델리게이트, yield return (0) | 2025.02.13 |
| [From Nand to Tetris] 모듈 5. Machine Language (0) | 2025.02.10 |