카테고리 없음

DDR-forum // 파트 1. 소프트웨어와 디자인

Hot Dobby 2022. 10. 24. 18:48

Thanks to Khalil Stemmler

https://github.com/stemmlerjs/ddd-forum 해당 소스를 활용하려는 한국인 개발자분들을 위해서 공유합니다! 

Coupling causing Complexity

dependencies, 종속성을 가지는 컴포넌트, 함수들이 단단히 결합하고 있는 구조에서는 분해하기가 모호해지기 때문에 복잡성이 증가할 수 밖에 없습니다. 클래스의 결합, 시간적 결합(동작에 있어서 순서가 중요한 비동기적 코드 실행), 동기적 결합 등이 소스에 진하게 남아있으면, 디자인을 하기도 어려울뿐만 아니라 유지보수와 확정성에 있어서도 패널티를 가지게 됩니다.

출처: https://wiki.solidbook.io

또한 이러한 결합을 하는 대상이 낮은 응집력을 가지고 있다면 그 문제는 더 커지게 됩니다. 부정확한 의미의 변수, 너무 추상화된 코드, 불필요한 정보 저장을 피하면서 서비스 소스의 응집력을 높게 유지하면서 각각의 dependency가 결합을 느슨하게 가져갈 수 있도록 구조를 디자인 해야합니다.

 

How to reduce the Complexity then??

- 전술적, 전략적 프로그래밍

 Java사의 Sun Microsystems씨가 소프트웨어 평생 비용의 40~80%를 유지관리 및 보수에 사용하고 코드 설계자가 끝까지 책임지는 경우는 절대 없기 때문에 개발을 할 때 50%는 신규 개발, 50%는 유지보수를 위한 자원관리에 사용해야하는 것을 추천하고 있습니다. 복잡한 코드는 결국 인수인계자의 이해에 어려움을 주기 때문에 복잡하지 않으면서도 캡슐, 모듈화가 잘 되어있는 소스가 좋은 소스라고 볼 수 있습니다.

 

- Extreme Programming

익스트림 프로그래밍(XP)를 통하여 효율적으로 feature를 개발하여 시장에 빠르게 침투하는 것이 거친 생태계에서 살아남기 좋은 방법이 될 수 있습니다. 

출처: https://wiki.solidbook.io


    1. 피드백 : 페어 프
로그래밍을 도입하여 개발자 서로가 피드백을 주면서 소스를 작성할 수 있는 환경 조성
    2. TDD: Test-driven development을 통한 신규 피쳐 개발로 테스트 실패 케이스 분석을 통한 설계로 신규 기능을 추가
    3. 지속적인 통합: CI라고도 하며 형상관리를 주기적으로 하면서 리펙토링, 소규모 릴리즈를 안정적으로 출시
    4. Programmer welfare: 칭찬은 고래도 춤추게 만든다는 말처럼 좋은 개발자는 좋은 환경, 좋은 복지에서 성과가 호로록!