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 : Easy to open, but not secure.
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.
'공부 > Object-Oriented Design' 카테고리의 다른 글
2.1 – Models: Bridging Concepts and Solutions (0) | 2021.09.18 |
---|---|
1.6 – Record, Organize, and Refine Components (0) | 2021.09.18 |
1.4 – Software Requirements, Conceptual and Technical Designs (0) | 2021.09.17 |
1.3 – Object-Oriented Modeling (0) | 2021.09.17 |
1.2 – Software Architect and Design Roles in Industry (0) | 2021.09.15 |
댓글