'minimalism'에 해당되는 글 3건

  1. 2007/09/07 성공적인 아키텍쳐 (7)
  2. 2007/08/30 제품의 단순화(minimalism)과 출시지향 (8)
  3. 2007/07/07 비즈니스 로직과 의존성을 줄이는 사례 (13)
좋은 아키텍쳐는 어떤 문제에도 대응할 수 있어야 한다.

아키텍쳐 설계를 가지고 며칠이나 몇 주를 씨름하고 나면, 아키텍트는 문제를 너무나 잘 다뤄서 다른 사람들이 그 아키텍쳐를 보고는 "명쾌합니다. 이것보다 더 좋은 방안은 없죠"라고 할 만한 아키텍처를 완성해야 한다.

Harlan Mills는 이러한 아키텍쳐 품질을 '심오한 간결성(deep simplicity)'이라고 표현을 했다. 복잡한 아키텍쳐는 더 나은 아키텍쳐가 아니라 훨씬 못한 아키텍쳐인 것이다.

P. 200


소프트웨어 프로젝트 생존 전략

스티브 맥코넬 / 인사이트

deep simplicity는 "심오한 간결성"으로 책에는 해석이 되었다.
minimalism을 좋아하는 나로서는 무척이나 반가운 말이다.

deep이라는 말은 extreme이라는 단어로 대치해도 의미적으로 맞아보인다.
"극단적인 단순함" 아키텍쳐를 만들때 어떠해야 하는지에 대한 이야기를 한 것이다. 너무 많은 내용을 담아서도 안되고, 중요한 부분을 심플하게 표현을 할 때 정말 필요한 아키텍처가 될 것이다.

그리고, 최소주의를 적용해서 아래와 같이 서브시스템 간에는 정말 필요한 의사소통만을 해야겠다. 소통이 많을 수록 유지보수나 운영도 어렵고, 버그의 가능성을 커질 것이다.

좋은 아키텍처는 서브시스템 간에 일어나는 의사소통을 최소화한다.


아키텍쳐의 목표가 복잡함을 감소시키는 데 있다는 것을 인식하고 나면, 아키텍트가 소프트웨어 내에 어떤 것을 포함할지에 집중하는 만큼 어떤 것을 제외시켜야 하는지에도 초점을 맞추어야 한다는 것이 명확해진다.

성공적인 아키텍쳐의 주요한 특징 중의 하나는 변경 가능성이 높은 프로그램부분을 식별하는 것이다.

제대로 아키텍쳐라면 아직 개발되지 않은 부분에 얽매지 않고도 상세설계를 할 수 있을 것이다.


http://blog.naver.com/jeong_jaehun/90022080910
코딩하지 않는 아키텍쳐는 아키텍쳐라고 말을 할수 없을 것입니다. 일단, 설계를 한번해보세요~ 아주 깔끔하게 잘 나옵니다. 자기 만족도가 엄청 높습니다. 그 설계로 코딩을 시작해보세요~ 설계가 수십번은 바뀌게 됩니다. 이게 바로 소프트웨어 개발입니다. 한번 수준 높은 설계를 할수 있을지는 몰라도 완벽한 설계를 할수가 없습니다. 설계단에서 코딩도 병행해서 해야 더 나은 설계가 가능합니다.





Posted by ologist
minimalism은 TDD의 철학과도 직결이 된다. 

일단  버그가 생기지 않을 정도로 아주 단순하게 구현을 한 다음 복잡한 기능들과 로직을 추가를 하면서, 계속 테스트를 하는 것이다.

단순한 구현은 버그도 없을 뿐더러 빠르게 테스트를  통과한다.

테스트 통과를 보면서 코드를 붙여나가는 것은 그만큼 안전한 방법이다.

기능 명세서, 설계 구현 등에 대하여 단순성을 강조해야 한다. 개발자들은 대부분 복잡한 것을 좋아한다. 그들은 문제를 간소화하기보다는 더 복잡하게 만드는 경향이 있다. 하지만, 프로젝트 성공의 열쇠는 프로젝트를 한층 단순화하는데 있다. 프로젝트의 목표를 달성하기 위한 지름길은 복잡성을 제거하는 것이다. P.84

더는 덧붙일 것이 없을 때 끝내는 것이 아니라, 더는 뺄것이 없을 때 끝낸다.
- 프랑스 작가 볼테르(Voltaire)

개발자들은 대부분 개발을 해서 돈을 버는 사람은 아니다.

MS는 제품을 출시를 했을때 ship-it이라는 상금을 받는다. MS가 소프트웨어를 개발해서 수익을 내는 것이 아니라 소프트웨어를 출시함으로써 돈을 번다는 사실을 개발자들에게 강조하는 것이다.

릴리즈는 하는 것이 중요하다는 이야기이다.

소프트웨어 프로젝트 생존 전략

스티브 맥코넬 / 인사이트

Posted by ologist
최근 블로그에 비즈니스 로직의 복잡성와 의존성에 대한 이야기를 많이 적었는데, 마침 업무를 진행중에 재미있는 일이 발생을 했다.

우리 팀에 초보 개발자인 막내는 경력이나 경험에 비해서 센스가 꽤 있는 편이다.
그 초보 개발자가 어느날부터 jakarta-POI를 열심히 API를 익히면서 코딩을 하고 있었다. 간단한 API이기때문에 빠른 시간에 습득해서 잘 사용하고 있었다.

어제 코드리뷰 시간에 그 내용에 대해서 언급을 하는 자리가 있었는데, 아주 흥미로운 일이 벌어졌다..^^

초보 개발자가 구현해야 할 업무는 테스트로 진행되고 있는 데이터를 실디비로 마이그레이션을 하는 업무였다. 한번 쓰고 내다버릴 배치성 업무였다.

2가지의 문제가 거론이 되었는데, 이것이 흥미롭다.

1. 테스트 DB에서 데이터를 가져와서 자바빈에 바인딩을 하고 그것을 다시 실디비에 데이터를 넣고 있었다. 중간에 DTO를 십분 활용을 하는 것이다.

어쨌든 우리가 가장 일반적으로 사용하는 방법이다.
하지만,
한번 밖에 호출되지 않은 심플한 로직과 업무처리에서 굳이 빈에 담아서 어렵게 할 필요없이 컨넥션을 2개 열어서 ResultSet에서 바로 loop를 돌면서 실디비로 데이터를 이관을 할수 있을 것이다.

EP
님이 조언을 해주셨다. 약간의 생각만 바꾸어도 코드량이 줄어들뿐만 아니라 의미없는 코드로 노가다를 하는 작업이 대량 줄어들었다.

2. 초보개발자는 기획자가 엑셀로 데이터를 줄 것으로 예상을 했다. 엑셀에서 키값 데이터를 읽어서 그것을 처리하는 방식으로 개발을 한 것이다.

기획자뿐만 아니라 우리 나라 직장인은 엑셀을 선호하는 경향이 있다. 아마 구현을 하기전에 그렇게 준다고 커뮤니케이션을 했을 수도 있다. 리뷰를 시작하면서 테스트 엑셀 파일을 열었는데, 컬럼 2개에 데이터가 있었다. 정말 심플한 데이터였다. 이것을 CSV로 변환을 해서 단순하게 text파일을 읽어서 구분자(,)로 구분해서 데이터를 읽었더라면, POI 라이브러리 의존성도 없이 구현이 가능했을 것이다. 같이 리뷰하던 고수의(?) 개발자분들은 이구동성으로 얘기를 했다. 물론 자주 사용되는 어플리케이션이라 CSV로 바꾸는 것 조차 귀찮다고 한다면, POI를 이용한 어플리케이션이 더 빛을 발할수도 있었겠지만, 이번 건은 CSV로 넣는 것이 더 좋은 선택으로 보인다.

실제로 전에 있던 회사에서 업무를 진행할 때 CSV로 넣었던 import데이터를 엑셀도 추가로 가능하게 구현한 적도 있다. 그 때는 엑셀으로 임포트가 명확한 요구사항이고, 자주 사용하던 기능이었다.



우리는 개발을 진행을 하다보면 과다 설계과 디자인의 홍수 속에서 살게 된다.
과연 이렇게까지 해야만 할까? 이게 정말 옳은 일인까? 수많은 고민을 하게 된다.

dependency가 많고 코드량이 많으면 버그가 증가할 수 밖에 없다. 최소주의의 코딩이 절실하게 필요하다. 최소주의 코딩은 당연한 이야기지만, testability도 확연히 좋아진다.

문제의 해결점은 최대한 비즈니스 로직을 심플하게 정리를 하고(개발에 쓰는 머리에 5%만 사용을 해도 단순하게 바꿀수 있다) 여러가지 문제 해결 방법이 있다면, 가능한 의존성이 적은 구현, 테스트를 하기 쉬운 구현으로 생각을 해보자


당연한 이야기지만, 의존성이 적을 수록 테스트하기는 쉬워 질 것이다.
갑자기 테스트가 웬말이라는 사람이 있을까봐 한줄 더 적는다..^^



Posted by ologist
이전버튼 1 이전버튼

블로그 이미지
ologist

공지사항

Yesterday171
Today52
Total34,795

달력

 « |  » 2012.02
      1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29      

최근에 받은 트랙백

글 보관함