본문 바로가기
공부/Object-Oriented Design

1.5 – Competing Qualities and Trade-offs

by 혼밥맨 2021. 9. 17.
반응형

1.5 – Competing Qualities and Trade-offs

 

 

Satisfying Requirements

 - Some software design decisions will involve tradeoffs in different quality attributes, such as performance, convenience, and security.

 

A door with a single lock

A door with a single lock :  Easy to open, but not secure.

 

A door with multiple locks

A door with multiple locks :  Inconvenient to open, but secure.

 

When designing software, it is important to consider how qualities can compete in a proposed solution under different situations and determine a suitable compromise. 

 

Architecture is all about balancing competing concerns. But if I boil it down to the most important, it is you are balancing quality versus time to market. 

 

 

 

For example, a media app has a functional requirements of being able to download a full length movie. 

 

For example, the media app can have non-functional requirements to download a full length movie at a specific speed and to play such a movie within a certain memory limit. 

 

 

In software design, your starting point is ensuring your software structure suits the balance of qualities desired. 

 

In particular, there is a common trade-off between performance and maintainability. High performance code may be less clear and less modular making it less maintainable. 

 

Another trade-off is security and performance. 

반응형

댓글