소프트웨어에서 "설계"란 무엇입니까?

1957 단어 디자인디자인
나는 그림을 그리는 것을 좋아하는 엔지니어입니다. 디자인적인 관점에서, 소프트웨어 설계가 말해지는 것이 적은 것일까라고 생각해, 자신의 생각을 정리해 보았습니다.

"설계"에 대한 이미지




"설계"라고 말하면 정밀한 설계도를 그리는 듯한 고도의 이미지가 솟지 않습니까?
보다 고도의 인재가 상류 공정으로 설계해, 하류 공정에서 그것을 따라 실장을 실시하는, 공업 제품을 만드는 것 같은 인상입니다.

소프트웨어의 "디자인"의 본질




영어로는 「Software Design」입니다만, 나는 「디자인」의 이야기라고 생각합니다.
이것은, UI 디자이너등이 실시하는 「디자인」과 같은 내용이 됩니다.

원래 「디자인」이란, 그림을 그리는 것 등과는 별로 관계가 없고, 상황을 분석해 구축하는 것을 가리킵니다.
씹어서 말하면, 「사용 용이성을 계속 생각하는 것」, 이것을 하고 있으면 디자인을 하고 있다고 말할 수 있습니다. 별로 어려운 이야기가 아닙니다.

누가 위해 디자인을 할까?



디자이너의 경우 고객의 요구에 맞게 디자인을 검토하지만 엔지니어는 "옆에서 일하는 엔지니어"를 향해 디자인을합니다.

디자인의 범위는 넓고 아키텍처 선택에서 if 문 한 줄에 이르기까지 디자인이 필요합니다.
그를 위한 체계적인 노하우로서, 디자인 패턴이나 MVC, MVP 아키텍처, 익스트림 프로그래밍 등등・・수수할 수 없는 정도의 기술이 태어나고 있습니다.

"디자인"감각을 연마하는 방법?




디자인을 하려면 센스가 필요합니다. 그리고 감각은 매일 단련에 의해 단련됩니다.
그 때문에 효과가 큰 기술로서 「유닛 테스트」, 「TDD/BDD」를 들 수 있습니다.

단련하기 위한 빠른 방법은 "실패"의 수를 늘리는 것입니다.
우선은 유닛 테스트로 사양을 그려, 나머지는 대략적으로 로직을 쓰거나, 새롭게 배운 디자인 패턴을 채용해 보거나와 대담하게 도전해 갑니다.
그림을 그리는 사람이 먼저 치고, 그림을 가서 단련하는 것과 같습니다.

업무의 경우라도 테스트가 있으면, 대담한 리팩토링도 하기 쉽기 때문에, 어느 정도의 죄는 용서되는 것이 아닐까요.
오히려, 테스트가 없는 사양을 제대로 굳힌 코드보다, 테스트가 있어 만들어 바꾸기 쉬운 코드가, 소프트웨어의 설계에는 요구되고 있습니다.

마지막으로



좋은 프로그래머는 의식적이지 않더라도 디자인을하는 사람입니다.
디자인은 깊고 즐거운 것입니다. 꼭 여러분 1문자 1문자에 마음을 담아 키를 두드리자!

좋은 웹페이지 즐겨찾기