Cloud-based systems will have functional requirements, which specify the tasks the system must perform and nonfunctional requirements and define the behind-the-scenes operational requirements the system must satisfy. This chapter focused primarily on considerations a designer must evaluate when addressing a system’s nonfunctional requirements for a cloud-based solution. Designers must balance a large number of operational requirements with budget and time considerations. Initially, a designer should list the known requirements and then work with the stakeholders to focus on the requirements that will have the biggest positive return on investment. In this chapter, you learned the following key concepts:
-
Before you begin the design process, you must ensure that you have a complete set of system requirements.
-
System requirements fall into one of two categories: functional and nonfunctional. The functional requirements specify what the system does and the nonfunctional requirements include factors such as performance, reliability, and maintainability.
-
Design is a give and take process for which you cannot solve every problem.
-
Designing for accessibility requires that a site support users with disabilities as defined by the Americans with Disabilities Act (ADA).
-
Designing for audit is the process of including controls that an auditor can later use to validate and confirm processing.
-
Designing for availability is the process of designing a solution to guarantee the solution’s service-level agreements (SLAs).
-
Designing for backup is the process of designing redundancy into a solution.
-
Designing for future capacity is the process of designing a solution for future scalability.
-
Designing for configuration management is the process of designing a solution to support customization and configuration.
-
Designing for deployment is the process of designing a solution for easy deployment in other virtual and physical environments.
-
Designing for disaster recovery is the process of designing a solution to reduce the impact of a disaster and to speed recovery and business continuity.
-
Designing for green computing is the process of designing a solution to be environmentally friendly, such as, the reduction of printed output.
-
Designing for interoperability is the process of designing a solution to support operations with other applications.
-
Designing for maintainability is the process of designing a solution to make future modifications easier.
-
Designing for performance is the process of designing a solution to optimize performance and throughput.
-
Designing for price is the process of designing a solution to reduce the solution’s total cost of ownership.
-
Designing for privacy is the process of designing a solution to maximize security and data privacy.
-
Designing for portability is the process of designing a solution so that it can be moved from one platform to another.
-
Designing for reliability is the process of designing a solution to be robust and able to respond to system errors.
-
Designing for response time is the process of designing a solution to optimize the user experience by providing fast system response.
-
Designing for security is the process of designing a solution to maximize system security.
-
Designing for testability is the process of designing a solution to making the testing of functional and nonfunctional requirements testable and reproducible.
-
Designing for usability is the process of designing a solution with the user experience foremost in mind.