In: Computer Science
Submit a DRAFT of ARCHITECTURAL DESIGN SPECIFICATIONS (designed with the Client-Server Approach).
Answer:
Draft:
Architectural design is concerned with understanding how a system should be organized and designing the overall structure of that system. In the model of the software development process. Architectural design is the first stage in the software design process. It is the critical link between design and requirements engineering, as it identifies the main structural components in a system and the relationships between them. The output of the architectural design process is an architectural model that describes how the system is organized as a set of communicating components.
In agile processes, it is generally accepted that an early stage of the development process should be concerned with establishing an overall system architecture. Incremental development of architectures is not usually successful. While refactoring components in response to changes is usually relatively easy, refactoring a system architecture is likely to be expensive.
In practice, there is a significant overlap between the processes of requirements engineering and architectural design. Ideally, a system specification should not include any design information. This is unrealistic except for very small systems.
Architectural decomposition is usually necessary to structure and organize the specification. Therefore, as part of the requirements engineering process, you might propose an abstract system architecture where you associate groups of system functions or features with large-scale components or sub-systems. You can then use this decomposition to discuss the requirements and features of the system with stakeholders.
You can design software architectures at two levels of abstraction, which Sommerville calls architecture in the small and architecture in the large:
Architecture in the small is concerned with the architecture of individual programs. At this level, we are concerned with the way that an individual program is decomposed into components.
Architecture in the large is concerned with the architecture of complex enterprise systems that include other systems, programs, and program components. These enterprise systems are distributed over different computers, which may be owned and managed by different companies.
The three main advantages of explicitly designing and documenting a software architecture are:
Stakeholder communication. The architecture is a high-level presentation of the system that may be used as a focus for discussion by a range of different stakeholders.
System analysis. Making the system architecture explicit at an early stage in the system development requires some analysis. Architectural design decisions have a profound effect on whether or not the system can meet critical requirements such as performance, reliability, and maintainability.
Large-scale reuse. A model of a system architecture is a compact, manageable description of how a system is organized and how the components interoperate. The system architecture is often the same for systems with similar requirements and so can support large-scale software reuse.
Requirement Specification:
Functional requirements:
Info-miner shall accept a list of keywords and return a list of URL’s whose descriptions contain any of the given keywords.
Info-miner shall use another software system as a component, KWIC, in order to efficiently maintain a database of URL’s and the corresponding descriptions.
Non-functional requirements:
Easily understandable – the system should be easy to learn and understand
Portable – the system should run on many platforms, browsers and operating Systems
Enhanceable – the system should allow for enhancement without major code rewrites or architectural changes
Reusable – the components of the system should be reusable
Good performance – the system should provide good performance on all Platforms
User-friendly – the system should be intuitive and easy to use
Responsive – the system should respond to user actions quickly
Adaptive – the system should be able to adapt to changes
During architectural design the system should be decomposed onto a set of communicating subsystems. These subsystems will work together in order to provide overall system functionalities and also to meet the non-functional requirements. As the context model clarified, we have a couple of systems that we supposed to be present: an inventory system provides information about the available products, the shipping system is responsible for handle the delivery of products that our customers purchased.
This means that have legacy systems that we need to communicate with. We did not emphasize it yet but existing systems will also influence the requirements of our systems. It is because they have some existing interfaces how they can be used so it is not up to our architects' design decisions. Some of the systems in the ecosystem might be replaced from time to time (new releases, change of supplier, etc.), or sometimes we need to prepare our system to work with several existing systems of the same domain. A good example for that is when delivery is performed by several companies which have systems with diverse interfaces but we want to support our customers with the possibility of tracking the status of the order regardless which provider delivers the package.
Note: If you have any related doubts, queries, feel free to ask by commenting down below.
And if my answer suffice your requirements, then kindly upvote.
Happy Learning