Anil Chakravarthy, Pramod Sharma, & Sudeep Das, McAfee
While designing and implementing software, architects and implementers make many different design and implementation choices. These choices reflect the trade-offs they make in order to solve a software engineering problem. Understanding those trade-offs is important to ensure that testing is planned and executed effectively. A trade-off implies that one attribute of the software is sacrificed to strengthen another. Testers need to make sure to treat the strong and weak areas, such as performance, availability, maintainability, security etc. in appropriate ways. Understanding trade-offs helps testers use correct assumptions about the software behavior. It also helps them to set right level of expectations about the software behavior.
In this paper, we look at the various design and implementation trade-offs made by architects and implementers. To illustrate our point, we use real world examples of the products that we worked on. We then suggest how such trade-offs should be handled effectively to make the testing more effective.