소프트웨어는 변경용이하다. 즉, 변경이 지속적으로 일어난다는 뜻이다.
소프트웨어에서의 변경은 추가/변경/삭제가 있을 수 있다.
이 중에서 가장 빈번하게 일어나는 일은 '추가'이다.
변경되는 코드가 동작이 잘 이루어질 수 있도록 유지하는 방법은 역설적이게도 변경을 하지않는 것인데,
이는 즉 변경을 최소화 하는 것이다.
변경을 최소화하기 위해서는 코드를 분리할 수 있다.
불변하는 부분(중요한 코드) / 변경되는 부분
이의 대표적인 방법에는 플러그인과 미들웨어가 존재한다.
플러그인의 대표적인 사용처로는 크롬을 예로 들 수 있고(크롬 익스텐션),
미들웨어의 대표적인 사용처로는 node의 express를 들 수 있다.
플러그인과 미들웨어는 호스트코드의 변경없이(핵심적인 부분),
새로운 기능을 추가할 수 있는 환경을 만들어준다.
UI에서도 비슷한 아키텍처가 있는데, 바로 컴포넌트이다.