Systems design is the process of defining the architecture, components, modules, interfaces, and data for a system to satisfy specified requirements. Systems design implies a systematic approach to the design of a system.
Architecture is a set of structuring principles that enables a system to be comprised of a set of simpler systems each with its own local context that is independent of but not inconsistent with the context of the larger system as a whole.
Identify System Scope and Approach:
System Design may take a bottom-up or top-down approach, which takes into account all related variables of the system that need to be created from the architecture. These required hardware and software, right down to the data and how it travels and transforms throughout its travel through the system.
A top-down design is the decomposition of a system into smaller parts in order to comprehend its compositional sub-systems. Every subsystem is refined in greater detail, for example, sometimes dividing into many different levels of subsystem, so that the whole specification is decomposed to basic elements. As soon as these base elements are identified, it is easier to build these elements as computer modules.
The bottom up design model starts with most specific and basic components. It proceeds with composing higher level of components by using basic or lower level components. It keeps creating higher level components until the desired system is not evolved as one single component. With each higher level, the amount of abstraction is increased. Bottom-up strategy is more suitable when a system needs to be created from some existing system, where the basic primitives can be used in the newer system.
Once the scope and approach of system design is finalised then next step is to outline the high level abstract design. The goal of this is to outline all the important components that your architecture will need like identify the main components and the connections between them. In addition to the business requirements of a system, you must satisfy the service-level or quality of service (QoS) requirements. An architect, is responsible to work with the stakeholders of the system during the inception and elaboration phases to define a quality of service measurement for each of the service-level requirements. The System architecture must address the following service-level requirements: performance, scalability, reliability, availability, extensibility, maintainability, manageability, and security. The Architect has to make trade-offs between these requirements.
Service Level Requirements:
- The performance requirement is usually measured in terms of response time for a given screen transaction per user. In addition to response time, performance can also be measured in transaction throughput, which is the number of transactions in a given time period, usually one second.
- Scalability is the ability to support the required quality of service as the system load increases without changing the system. A system can be considered scalable if, as the load increases, the system still responds within the acceptable limits.
- Reliability ensures the integrity and consistency of the application and all its transactions. As the load increases on your system, your system must continue to process requests and handle transactions as accurately as it did before the load increased. Reliability can have a negative impact on scalability.
- Availability ensures that a service/resource is always accessible. Reliability can contribute to availability, but availability can be achieved even if components fail.
- Extensibility is the ability to add additional functionality or modify existing functionality without impacting existing system functionality.
- Maintainability is the ability to correct flaws in the existing functionality without impacting other components of the system.
- Manageability is the ability to manage the system to ensure the continued health of a system with respect to scalability, reliability, availability, performance, and security.
- Security is the ability to ensure that the system cannot be compromised. Security is by far the most difficult systemic quality to address. Security includes not only issues of confidentiality and integrity, but also relates to Denial-of-Service (DoS) attacks that impact availability.
To build a high-level architecture, start by identifying the constraints and use cases, then identifying the major components and the relationships between them, thinking about the system's bottlenecks and considering the service level requirements in the design. By following these steps, you can create a fully functional system architecture which can work as clear roadmap for improving the performance of your infrastructure.
If you would like to find out more about how APIs could help you make the most out of your current infrastructure while enabling you to open your digital horizons, do give us a call at +44 (0)203 475 7980 or email us at email@example.com.
Other useful links: