Wednesday, 29 April 2020

Software Architecture and Design


Software Architecture and Design
Software architecture is a high-level structure of software, a discipline of creating such structures, and the documentation of these structures. Software design process allocates the requirements to either software or hardware systems by establishing an overall software architecture. Software design involves identifying and describing the essential software abstractions and their relationships.
Software design is an explanation of the structure of the software to be implemented, data models, structures used by the system, interfaces between system components, and algorithms used. Designers do not enter at a finished design instantly but develop the design iteratively. They insert requirement and element as they develop their design with stable backtracking to accurate former designs. Activities of design process are as:

1. Architectural design exposes the top-level design and permits a designer to reason about satisfaction of software requirements in terms of assignment of functionality to design elements and allows designers to develop recurring patterns of software organization. There is different architectural design style such as:
  • Data-Flow Architecture (Pipes and Filters)
  • Data-Flow Architecture (Batch Sequential)
  • Data-Centered Architecture
  • Layered Architecture (OS Type)
  • Layered Architecture (Protocol Layer Type)
  • Call and Return Architecture 
  • Client-Server Architecture
2. Interface design is part of software and is designed as it is expected to provide the user. Interface design focuses on anticipating what users might need to do and ensuring that the interface has elements that are easy to understand, access, and use to facilitate those actions. User interface brings together concepts from interaction design, visual design, and information architecture. User interface (UI) is divided into two categories: command line interface (CLI) and graphical user interface (GUI).
There are numerous tools available using which the designers can develop complete GUI on a mouse click. Some tools can be embedded into the software environment such as integrated development environment (IDE).GUI implementation tools provide dominant array of GUI controls. For software customization, software designers can change the code consequently. There are different segments of GUI tools according to their different use and platform. For example: Computer GUI, Mobile GUI, Touch-Screen GUI etc. Here is a list of some tools which is used to create GUI:
  • FLUID
  • LucidChart
  • AppInventor (Android)
  • Wavemaker
  • Visual Studio
3. Component design is a design specification for adaptable components. Using the generation procedure set of these components is implemented for certain products and software. For example: A component design is a specification for an adaptable component that can be used to assemble a draft application work product. The adaptation specification defines the adaptation parameters for this adaptable component. The interface specification is parameterized where suitable in terms of these adaptation parameters.

4. Database design is a process of developing a detailed data model of database which contains all the needed physical and logical design. Physical storage parameters needed to generate a design in a data definition language which can then be used to create a database. For example: The unified modeling language (UML) is used to expressing complex systems in visual way which is created in an object oriented language. For instance, an entity is known as a class in UML.

Software architecture usually refers to the bigger structures of software and it deals with how many software processes assist to carry out their tasks. Software design refers to the smaller structures and it deals with the internal design of a single software process. Software architecture is a program or computing system which depicts the system that aids in understanding how the system will perform and work.
The architecture design process focuses on the decomposition of a system into different components and their relations to satisfy functional and non-functional requirements. The key inputs to software architecture are: 

  1.The requirements produced by the analysis tasks.
         2.The hardware architecture. 

The result or output of the architecture design process is an architectural depiction. The basic architecture design process is composed in three steps: understand the problem, evaluate the architecture design, and transform the architecture design. Software architecture is essential because it affects the maintainability, performance, availability, and robustness of software. The non-functional requirements depend on the software architecture in which these components are planned and communicated. It is a creative process because the activities within the process depend on the type of system being developed, the exact requirements for the system, and the background and experience of the system architect.
Software design generally involves problem solving and planning a software solution. This includes both a low level component and algorithm design, and a high level component and architecture design. Software architecture serves as the blueprint for both the project and the system developing it, defining the work assignments that must be carried out by design and implementation teams. The architecture is the major carrier of system qualities such as usability, performance, modifiability, reliability, and security. None of which can be achieved without a unifying architectural rules and vision. Architecture is an object for early analysis to make confident that a design approach will give up an acceptable system. By developing an effective architecture, we can identify design problems and risks which mitigate them early in the software development process.
Software architecture is the worthy study of the large scale structures of software systems. From its qualitative descriptions of useful software organizations, software architecture has matured to include wide explorations of notations, analysis techniques, tools, and creation methods. Initially the research area interpreted software practice and offers concrete direction for complex software design. Software architecture interacts and overlaps with the study of software families, software design, domain specific design, specific classes of components, component based reuse, and program analysis. It is not productive to try strict division among these areas.
For software design and architecture, to mature into a robust area capable of handling the issues posed by emerging applications, advances in numerous areas are essential. First is sufficient support for moving from architecture to implementation and gracefully moving between design and coding. If design does not eventually support development of a satisfactory implementation then it is an unsuccessful effort. Various existing design approaches fall silent when it comes to coding. Second is capacity to characterize stakeholder’s interests. Various interests and multiple perspectives enforce demands for assessing or guaranteeing consistency of design decisions as well as demands for several presentations of select design data. Third, as software applications become gradually interwoven into an organization there is a need to develop co-design of software. Fourth is the design of applications as seen and practiced by users. 
























0 comments:

Post a Comment