ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Agile Design
    학교생활/소프트웨어디자인패턴 2023. 10. 5. 10:25
    728x90

    94 - 7.

     

    Agile Team 은 처음 모듈을 설계할 때 변경될 사항을 예상하지 않고 가장 간단한 방법으로 설계한다.

    나중에 변경될 요구사항에 대해서는 추가적인 처리를 지금 하지 않는다.

    과도한 설계는 오히려 '불필요한 복잡성'을 초래한다. 

     

    요구사항이 변경된 다음에야 비로소 탄력적일 수 있도록 모듈의 설계를 바꾼다.

    소프트웨어 개발자들은 항상 요구사항의 변화가 있을 수 있다는 것을 염두하여야 한다.

     

    Agile 의 설계는 과정에서 일어나는 것이다. 그리고 이것은 시스템의 설계를 간단하고 명료하게 유지하려는 노력이다.

    이러한 노력은 어쩌다 한번 이 아닌, 꾸준한 노력이다.

    악취를 맡으면 부패되지 않도록, 내버려두지 않는다.

     


    모듈을 탄력적이게 하는 방법으로는 어떤 것이 있을까

     

    추상화는 일반화를 통해 추상클래스나 인터페이스를 정의하고, 

    다형성은 이러한 추상화를 기반으로 다양한 객체 유형을 다루는 방법이다. (객체의 다양한 동작을 나타내는 개념)

     

    객체지향 프로그래밍에서 추상화와 다형성을 함께 사용하면 코드를 더 모듈화하고 관리하기 쉽게 만들 수 있으며, 객체 간의 관계를 더 명확하게 정의할 수 있다.

     

    동적 링킹은 런타임에 모듈을 로드하고 연결하여 프로그램을 유연하게 확장하는 기술이다. 동적 링킹을 사용하면 다형성을 더욱 유연하게 활용할 수 있다.


    예를 들어, 다형성을 사용하여 여러 타입의 객체를 처리하는 코드를 작성할 때, 동적 링킹을 통해 런타임에 필요한 클래스나 모듈을 로드하고 연결할 수 있다. 이렇게 하면 새로운 클래스나 모듈을 추가하거나 수정하지 않고도 프로그램의 동작을 확장하거나 변경할 수 있습니다.

     

    + 끊임없는 리팩토링도 당연히 필요하다...!

     

    Q. agile design 과 non-design 은 무엇이 어떻게 다른가?

    지난시간에 agile manifesto 가 나오게 된 이유를 살펴보았다.  
    그 주제에 대한 대답을 한마디로 설명하자면, '고객의 요구사항이 계속 바뀌기 때문이며, 소프트웨어는 한번에 완성 되지 않고 한번 완성하고 영영 끝나지도 않기 때문이다. 
    non-agile 은 고객의 요구사항에 빠르게 대응하기 어려웠다. 근본적 이유는 꾸준한 유지보수가 어렵게 설계가 되었다는 것이다. 
    하지만 agile team 은 변화하는 요구사항에 탄력적인 대응을 할 수 있도록 모듈을 설계한다. 그리고 항상 요구사항에 변화가 있을 수 있음을 염두한다. Agile Team 은 꾸준히 설계를 간단 명료하게 유지하려고 노력한다. 즉, 악취를 맡으면 부패되지 않도록 바로 고친다. 이는 곧 software quality 와도 직결된다. 유지보수를 용이하도록 하고, 이는 소프트웨어의 확장이 쉬워지게 하고, 과정의 선순환이 이루어진다.

     

    [참고]

     

    https://velog.io/@__dan_n/클린-소프트웨어-chapter-7.-애자일-설계란-무엇인가

     

     

    728x90
Designed by Tistory.