본문 바로가기

코드의 모습3

[3부 코드의 모습] Chapter15 소프트웨어의 진화 또는 혁명? 소프트웨어의 부패 언제든지 소프트웨어 개발 기간 중에서 유지보수 국면이 가장 오래 걸린다 프로젝트가 완료되었다고 간주된 다음에 더 많은 코드가 작성된다 유지보수 프로그래머는 원작성자의 머리 속에 있는 코드 모델을 알지 못할 수 도 있다; 그것이 적절하지 못한 수정의 원인이 된다 코드를 수정하다가 품질이 떨어지기는 아주 쉽다는 사실을 알아두자. 시스템을 더 나쁘게 만드는 변경을 하고서 만족스러워하지 말자 경고 신호 규모가 큰 클래스와 복잡하고 이해하기 어려운 함수들이 코드 여기저기에 많이 흩어져 있다 함수 이름이 암호 같거나 오해를 하게 만든다 구조가 없다: 어떤 기능을 어디에서 찾을지가 명료하지 않다 중복이 있다: 똑같은 일을 하는 코드 조각이 여러 번 나타난다 커플링이 높다: 의존성이 높다 데이터가 여.. 2017. 11. 18.
[3부 코드의 모습] Chapter14 소프트웨어 아키텍처 소프트웨어 아키텍처란? 상위 수준의 설계 소프트웨어의 청사진 아키텍처 수준의 관점 핵심이 되는 소프트웨어 모듈들을 식별 어느 컴포넌트가 어느 컴포넌트와 통신하는지 식별 여러 가지 서브시스템의 올바른 역할과 책임을 명시하고, 시스템에 있는 모든 중요한 인터페이스들의 특성을 식별하고 결정하도록 도와준다 우아하게 개발~~ 매번 나오는 이야기 아키텍처는 소프트웨어 시스템의 설계와 미래 성장에 가장 큰 영향력을 미친다. 그러므로 개발 단계에서 일찍 올바른 아키텍처를 만들어두는 것이 극히 중요 조망도(view) 아키텍처를 설계하는 과정에서도 여러 개의 소프트웨어 조망도를 개발해야 한다 개념 조망도 시스템에서 중요한 부분과 그 부분들의 상호연결을 보여주는 조망도 구현 조망도 실제로 구현된 모듈을 가지고 제시 프로세스.. 2017. 11. 17.
[3부 코드의 모습] Chapter13 웅대한 설계 바람직한 소프트웨어 설계를 하는 방법 코드 설계의 품질은 원숙한 프로그래머임을 나타내는 지표다. 설계로서의 프로그래밍 프로그래밍이라는 행위는 초기에 설계하면서 결정했던 것을 검증하고, 나머지 설계 작업을 수행하는 것이다 설계는 당연히 먼저 해야 하는 일이다 우리는 무엇을 설계하는가? 설계는 개발 프로세스의 각 단계에서 주어진 일을 구성요소들로 나누고, 각 구성요소가 작동하는 방법을 생각해내는 과정이다 소프트웨어의 설계 수준 시스템아키텍처 아키텍처 설계는 전체 시스템의 성능과 특성에 미치는 영향력이 가장 크고, 특정한 코드 행에 미치는 영향력은 가장 적다. 모듈/컴포넌트 각각의 서브시스템을 알기 쉬운 더 작은 모듈들로 나누는 것이다 나중에 쉽게 바꿀 수 없다 클래스와 데이터 타입 모듈을 한입 크기의 덩어리.. 2017. 11. 16.