소프트웨어 개체artifact는 확장에 열려있어야 하고 변경에 닫혀 있어야 한다. 다시 말해 소프트웨어 개체의 행위는 확장 가능해야 하지만, 이때 개체를 변경해서는 안 된다. 소프트웨어 아키텍처를 공부하는 가장 근본적인 이유가 바로 이것 때문이다. 소프트웨어 설계를 공부하기 시작한 지 얼마 안 된 사람들은 OCP를 클래스와 모듈을 설계할 때 도움되는 원칙이라고 안다. 하지만 아키텍처 컴포넌트 수준에서 OCP를 고려할 때 훨씬 중요한 의미를 가진다. 사고 실험 재무제표를 웹페이지로 보여주는 시스템이 있다고 생각하자. 웹 페이지에 표시되는 데이터는 스크롤할 수 있고, 음수는 빨간색으로 출력한다. 이제 이해관계자가 동일한 정보를 보고서 형태로 변환해서 흑백 프린터로 출력해 달라고 요청했다고 하자. 이 보고서에..