System Design have become a standard part of the software engineering process. Most engineers struggle with the system design sometimes because of their lack of experience in developing large-scale systems and partly because of the unstructured nature. System design is the phase that bridges the gap between problem domain and the existing system in a manageable way. This phase focuses on the solution domain, i.e. “how to implement?” The purpose of the System Design process is to provide sufficient detailed data and information about the system and its system elements to enable the implementation consistent with architectural entities as defined in models and views of the system architecture.
A systemic approach is required for a coherent and well-running system. Bottom-Up or Top-Down approach is required to take into account all related variables of the system. A designer uses the modelling languages to express the information and knowledge in a structure of system that is defined by a consistent set of rules and definitions. The designs can be defined in graphical or textual modelling languages.
Elements of a System
- Architecture– This is the conceptual model that defines the structure, behavior and more views of a system.
- Modules – This are components that handle one specific tasks in a system. A combination of the modules make up the system.
- Components– This provides a particular function or group of related functions. They are made up of modules.
- Interfaces– This is the shared boundary across which the components of the system exchange information.
- Data – This the management of the information and data flow.
The Architecture of a system describes its major components, their relationships (structures), and how they interact with each other. Software architecture and design includes several contributory factors such as Business strategy, quality attributes, human dynamics, design, and IT environment. Architecture serves as a blueprint for a system. It provides an abstraction to manage the system complexity and establish a communication and coordination mechanism among components. It defines a structured solution to meet all the technical and operational requirements, while optimizing the common quality attributes like performance and security.
Further, it involves a set of significant decisions about the organization related to software development and each of these decisions can have a considerable impact on quality, maintainability, performance, and the overall success of the final product. These decisions comprise of the selection of structural elements and their interfaces by which the system is composed, Behavior as specified in collaborations among those elements and Composition of these structural and behavioral elements into large subsystem. Architecture is a tricky subject for the customers and users of software products – as it isn’t something they immediately perceive. But a poor architecture is a major contributor to the growth of cruft – elements of the software that impede the ability of developers to understand the software. Software that contains a lot of cruft is much harder to modify, leading to features that arrive more slowly and with more defects. People in the software world have long argued about a definition of architecture. For some it’s something like the fundamental organization of a system, or the way the highest level components are wired together.
Rapid Application Development is one such form of an agile software development methodology in system design that prioritizes rapid prototype releases and iterations. Unlike other method, RAD emphasizes the use of software and user feedback over strict planning and requirements recording. The rapid prototyping and quick feedback over long drawn out development and testing cycles. With rapid application development, developers can make multiple iterations and updates to a software rapidly without needing to start a development schedule from scratch each time.
Rapid application development alleviates the complications found in traditional software development methods, focusing on customer satisfaction through early and continuous delivery of valuable, working software. While speed is emphasized, specific time frames are not recommended. RAD welcomes changing requirements, even late in development. All stakeholders communicate frequently and in real time to measure progress, solve problems, and improve efficiency. Having the customer actively involved throughout the development cycle reduces the risk of non-conformance with user requirements, saving time and money. Although RAD has changed over the years, these four basic steps provide some continuity over the years.
- Define the requirements:At the very beginning, rapid application development sets itself apart from traditional software development models. It doesn’t require you to sit with end users and get a detailed list of specifications; instead, it asks for a broad requirement.
- Prototype:This is where the actual development takes place. Instead of following a strict set of requirements, developers create prototypes with different features and functions as fast as they can.
- Receive Feedback:In this stage, feedback on what’s good, what’s not, what works, and what doesn’t is shared. Feedback isn’t limited to just pure functionality, but also visuals and interfaces.
- Finalize Software:Here, features, functions, aesthetics, and interface of the software are finalized with the client. Stability, usability, and maintainability are of paramount importance before delivering to the client.
The next is Joint Application Design, which is s a process that accelerates the design of information technology solutions. JAD uses customer involvement and group dynamics to accurately depict the user’s view of the business need and to jointly develop a solution.
JAD can be used on implementing new systems, enhancing existing systems, converting old systems, and purchasing systems. In general, a project that would be best suited for JAD would involve several groups of end-users whose accountability characterize the organization’s department or division margins, is considered essential to the future achievement of the business, includes keen users, is a first-time development for the business, or has a troubled development relationship between the business systems and end-user organizations.
The Joint Application Development workshop can encompass many aspects of the traditional methods for determining requirements. Within the Joint Application Development workshop, you can not only interview the individuals, but you can review business documents, and also observe how each individual uses the system. This all will help the analyst analyze the system in search for; problems with the existing system, determine solutions in collation with the company’s organizational direction, examine proprietary information processing circumstances that may not be identified or anticipated with the new system, and understand why the current systems are designed the way they are to successfully integrate them with other systems without losing key functionality and maintaining as familiar of a user interface as possible to lessen the need for further training.
JAD may not be the answer to every organization’s needs, but it does provide a much more inclusive and flowing environment than some of its iterative cousins. There are several ways to handle the Software Development Life Cycle, and they all have been proved effective in one situation or another. However, in the modern industry, customer relationship management is a growing concern and JAD is a process that can give your customer autonomy and a more satisfactory product in the end.
The last and final aspect in designing process is the logical design architecture. It is commonly agreed that architecture design is essential for development of complicated software and that depending on viewpoints software architecture can be captured in various views. Among them, the logical view is the earliest and foremost view that software developers should consider because it shapes the later phase of architecture design and the subsequent development. The main characteristic of the language and the design method are that they support recursive top-down design so that logical architectures for software systems of any scale and complexity can be designed. We apply them to a realistic system and show their efficacy.
A logical architecture identifies the software components needed to implement a solution, showing the interrelationships among the components. The logical architecture and the quality of service requirements determined during the technical requirements phase form a deployment scenario. The deployment scenario is the basis for designing the deployment architecture, which occurs in the next phase, deployment design. When developing a logical architecture you need to identify not only the components that provide services to users, but also other components that provide necessary middleware and platform services.
By Mannu Mathew | Sub Editor | ELE Times