복잡성의 본질과 모듈 설계

소프트웨어 엔지니어링의 본질은 코드를 많이 짜는 것이 아니라, 복잡성의 누적을 억제하여 시스템을 영원히 수정 가능한 상태로 지키는 것이다.

이 지도는 존 아우스터하우트(John Ousterhout)의 통찰을 바탕으로, 소프트웨어 시스템이 왜 시간이 갈수록 다루기 고통스러워지는지, 그리고 이를 막기 위해 모듈과 인터페이스를 어떻게 빚어야 하는지 다룬다.


생각의 지도 (Topic Map)

flowchart TD
    TOP["복잡성의 본질과 모듈 설계"]

    TOP --> C1["소프트웨어 복잡성의 세 가지 증상"]
    TOP --> C2["깊은 모듈과 정보 은닉"]
    TOP --> C3["오류를 존재하지 않도록 정의하기"]
    TOP --> C4["전술적 프로그래밍과 전략적 프로그래밍"]

    C1 -.->|복잡성의 2대 원인 차단| C2
    C2 -.->|인터페이스 극소화 및 예외 소멸| C3
    C1 -.->|점진적 누적을 막는 투자 규율| C4

    class TOP,C1,C2,C3,C4 internal-link;

핵심 개념 노트


출처


다른 생각의 길