요즘 Head First 에서 나온 Object-Oriented Analysis & Design 을 읽고있다..
몇 장 안 읽었지만 나한테 아주 많은 생각을 하게 끔하는 질문이 하나 보인다..
“위대한 소프트웨어”란 무엇이라고 생각하세요?
책에서는 여러가지 답들이 있다며 몇가지 답을 이야기한다.
고객중심의 프로그래머 : 고객이 바라는 것을 수행하는 소프트웨어
고객이 이상하게 사용해도 소프트웨어가 멈추거나 예상치못한 경고를 나타내지 않는 소프트웨어
객체지향 프로그래머 : 객체지향으로 만들어진 코드
중복된 코드가 적고 각객체가 자신의 행동을 통제하며, 견고하고 유연하여 확장이 쉽다.
설계를 중시하는 프로그래머 : 입증된 디자인 패턴과 원리를 사용하여 만들어진 소프트웨어
객체가 느슨하게 연결되어있고 코드롹장에는 열려있으면서 변경에는 닫혀있어 재사용성도 높은 소프트웨어
고객중심은 당연한이야기고.. 웬지 객체지향과 설계 지향은 비슷한 것 같다..
결국 위에 3가지가 모두 합해져야 “위대한” 소프트웨어가 아닐까?
그래서 난 이렇게 말하고 싶다..
apollo89 says :
고객이 요구하는 기능을 빠르고 정확하게 수행하고, 객체지향과 디자인 패턴을 사용하여 설계되어 유지보수와 재사용성이 높은 소프트웨어.
하지만 그런 소프트웨어는 만들기 매우 어렵다는 것….
(사람의 인지능력은 한계가 있으므로.. 지속적인 변경과 수정이 필요하다고 생각함,,ㅠㅠ)