Download Software architecture design and more Exams Software Engineering in PDF only on Docsity!
Software Architecture Introduction
- The concept of software architecture is similar to the architecture of building.
- The architecture is not an operational software.
- The software architecture focuses on the role of software components.
- Software components consist of a simple program module or an object oriented class in an architectural design.
- The architecture design extended and it consists of the database and the middleware that allows the configuration of a network of clients and servers.
Importance of software architecture
Following are the reasons for the importance of software architecture.
- The representation of software architecture allows the communication between all stakeholder and the developer.
- The architecture focuses on the early design decisions that impact on all software engineering work and it is the ultimate success of the system.
- The software architecture composes a small and intellectually graspable model.
- This model helps the system for integrating the components using which the components are work together.
The architectural style
- The architectural style is a transformation and it is applied to the design of an entire system.
- The main aim of architectural style is to build a structure for all components of the system.
- An architecture of the system is redefined by using the architectural style.
- (^) An architectural pattern such as architectural style introduces a transformation on the design of an architecture.
- (^) The software is constructed for computer based system and it shows one of the architectural style from many of style. The design categories of architectural styles includes:
- A set of components such as database, computational modules which perform the function required by the system.
- A set of connectors that allows the communication, coordination and cooperation between the components.
- The constraints which define the integration of components to form the system.
- Semantic model allows a designer to understand the overall properties of a system by using analysis of elements.
Architectural design
- The architectural design starts then the developed software is put into the context.
- The information is obtained from the requirement model and other information collect during the requirement engineering. Representing the system in context
All the following entities communicates with the target system through the interface that is small rectangles shown in above figure.
Superordinate system These system use the target system like a part of some higher-level processing scheme.
Subordinate system This systems is used by the target system and provide the data mandatory to complete target system functionality.
Peer-level system These system interact on peer-to-peer basis means the information is consumed by the target system and the peers.
Actors
4. Consider the quality attribute in segregation The quality attributes for architectural design consist of reliability, performance, security, maintainability, flexibility, testability, portability, re-usability etc. 5. Identify the quality attributes sensitivity - The sensitivity of quality attributes achieved by making the small changes in the architecture and find the sensitivity of the quality attribute which affects the performance. - The attributes affected by the variation in the architecture are known as sensitivity points.
The architectural styles that are used while designing the software as follows:
1. Data-centered architecture
- (^) The data store in the file or database is occupying at the center of the architecture.
- (^) Store data is access continuously by the other components like an update, delete, add, modify from the data store.
- (^) Data-centered architecture helps integrity.
- Pass data between clients using the blackboard mechanism.
- (^) The processes are independently executed by the client components.
2. Data-flow architecture
- This architecture is applied when the input data is converted into a series of manipulative components into output data.
- A pipe and filter pattern is a set of components called as filters.
- Filters are connected through pipes and transfer data from one component to the next component.
- The flow of data degenerates into a single line of transform then it is known as batch sequential.
3. Call and return architectures
This architecture style allows to achieve a program structure which is easy to modify.
Following are the sub styles exist in this category:
Component design introduction
- A software component is a modular building block for the computer software.
- Component is defined as a modular, deployable and replaceable part of the system which encloses the implementation and exposes a set of interfaces.
Components view
The components has different views as follows:
1. An object-oriented view - An object-oriented view is a set of collaborating classes. - The class inside a component is completely elaborated and it consists of all the attributes and operations which are applicable to its implementation. - To achieve object-oriented design it elaborates analysis classes and the infrastructure classes. 2. The traditional view - A traditional component is known as module. - It resides in the software and serves three important roles which are control component, a problem domain component and an infrastructure component. - A control component coordinate is an invocation of all other problem domain components. - A problem domain component implements a complete function which is needed by the customer. - An infrastructure component is responsible for function which support the processing needed in the problem domain. 3. The Process related view - This view highlights the building system out of existing components. - The design patterns are selected from a catalog and used to populate the architecture.
Class-based design components
The principles for class-based design component are as follows:
Open Closed Principle (OCP) Any module in OCP should be available for extension and modification.
The Liskov Substitution Principle (LSP)
- The subclass must be substitutable for their base class.
- This principle was suggested by Liskov. Dependency Inversion Principle (DIP)
- It depends on the abstraction and not on concretion.
- Abstraction is the place where the design is extended without difficulty. The Interface Segregation Principle (ISP) Many client specific interfaces is better than the general purpose interface.
The Release Reuse Equivalency Principle (REP)
- A fragment of reuse is the fragment of release.
- The class components are designed for reuse which is an indirect contract between the developer and the user. The common closure principle (CCP) The classes change and belong together i.e the classes are packaged as part of design which should have the same address and functional area.
The Common Reuse Principle (CRP) The classes that are not reused together should not be grouped together.
User Interface design
- User interface design helps in successing most of the software.
- It is part of the user and computer.
- Good interface design is user friendly. **Types of user interface:
- Command Interpreter** Commands help the user to communicate with the computer system. 2. Graphical User Interfaces (GUI)
- It is another approach to communicate with system.
- It allows a mouse-based, window-menu-based systems as an interface.
The Golden Rules
The golden rules are known as interface design principles.
The golden rule are as follows:
1. Place the user in control - The interaction should be defined in such a way that the user is not forced to implement unnecessary actions. - The technical internal details must be hidden from the casual user.
WebApp Interface design
The principles for designing the WebApp are as follows:
1. Anticipation A WebApp should be designed so that it can anticipate the user's next move. 2. Communication The interface must communicate the status of any activity initiated by the user. 3. Consistency Throughout the WebApp the use of navigation control, menus, icons, decorative parts should be consistent. 4. Efficiency The design of WebApp and its interfaces must optimize the user's work efficiency and not the efficiency of developer. 5. Flexibility The system must be flexible to accommodate the need of user. 6. Focus The WebApp interface and the content present in it must focus on the users task. 7. Readability The presented information must be readable to all the users. 8. Learnability - A WebApp interface must be designed to minimize the learning time. - After learned, It is necessary to minimize the relearning when the WebApp is revisited. 9. Metaphors An interface uses an interaction metaphor that is easier to learn and use until the metaphor is appropriate for the application and the user. 10. Maintain the integrity of work product A work product should be saved automatically so it does not lose an error message which has occurred automatically.
Risk Management:
There are two characteristics of risk i.e. uncertainty and loss.
Following are the categories of the risk:
1. Project risk - If the project risk is real then it is probable that the project schedule will slip and the cost of the project will increase. - It identifies the potential schedule, resource, stakeholders and the requirements problems and their impact on a software project. 2. Technical risk - If the technical risk is real then the implementation becomes impossible. - (^) It identifies potential design, interface, verification and maintenance of the problem. 3. Business risk If the business risk is real then it harms the project or product.
There are five sub-categories of the business risk:
1. Market risk - Creating an excellent system that no one really wants. 2. Strategic risk - Creating a product which no longer fit into the overall business strategy for companies. 3. Sales risk - The sales force does not understand how to sell a creating product. 4. Management risk - Loose a support of senior management because of a change in focus. 5. Budget risk - losing a personal commitment.
Other risk categories
These categories suggested by Charette.
1. Known risks : These risk are unwrapped after the project plan is evaluated. 2. Predictable risks : These risks are estimated from previous project experience. 3. Unpredictable risks : These risks are unknown and are extremely tough to identify in advance.
Principles of risk management
Maintain a global perspective - View software risks in the context of a system and the business problem planned to solve.
Take a forward looking view – Think about the risk which may occur in the future and create future plans for managing the future events.
Encourage open communication – Encourage all the stakeholders and users
- Risk avoidance or mitigation - It is the primary strategy which is fulfilled through a plan.
- Risk monitoring - The project manager monitors the factors and gives an indication whether the risk is becoming more or less.
- Risk management and planning - It assumes that the mitigation effort failed and the risk is a reality.
RMMM Plan
- It is a part of the software development plan or a separate document.
- The RMMM plan documents all work executed as a part of risk analysis and used by the project manager as a part of the overall project plan.
- The risk mitigation and monitoring starts after the project is started and the documentation of RMMM is completed.
Software Quality Assurance:
Software Quality
Software quality is an effective software process applied in a way which
creates a useful product and the product provides measurable value for those who produce and use it.
Software quality factors
Following are the software quality factors:
- McCall's Quality factors
- ISO 9126 Quality factors
McCall's Quality Factors
McCall's software quality factors focus on following aspect of a software product.
1. Operational characteristic of software product - Correctness – A program satisfies specification and fulfills the customer requirements. - Reliability – A program is expected to perform the intended function with needed precision.
- Efficiency – Amount of computing resources and the code required by a program to perform its functions.
- Integrity – The efforts are taken to handle access authorization.
- Usability – The efforts are needed to learn, operate, prepare input and interpret the output of a program. 2. Ability to undergo change or the product transition
- Portability – Transfer the program from one system (hardware or software) environment to another.
- Reusability – Extent to that a program or a part of a program is reused in other applications.
- Interoperability – The efforts are needed to couple one system to another. 3. Adaptability to new environment or product revision
- Maintainability – The efforts are needed to locate and fix an error in the program.
- Flexibility – The efforts are needed to modify an operational program.
- Testability – The effort needed to test a program to check that it performs its intended function.
ISO 9126 Quality factors
It is developed in an attempt to recognize the quality attributes.
The standard identifies the following quality attributes: I. Functionality II. Reliability III. Usability
- Scalability - The distributed operating system should be scalable to accommodate the increase service load.
- Fault tolerance - The system should continue to function properly after the fault has occurred.
Aspect-Oriented Software Engineering(AOSE)
- The relationship between various program components and their requirement are complex.
- One single component can be used for various requirements. To achieve this, AOSE is used.
- To make programming easier and maintaining reusability AOSE is used.
- AOSE supports the separation of concerns into independent elements is the benefit of it. Separation concerns
- For the software design and its implementation the separation concerns are the basic principle.
- These concerns are arranged in a way in the software that perform only one job.
SOA (Software Oriented Architecture)
- SOA refers in building a reliable distribution system.
- SOA is a collection of services that are communicating with each other.
- The communication consists of simple data processing or two or more services coordinate with some activity.
- In SOA, loose coupling between the services interacting each other.
- SOA develops distributed system in which the components are stand- alone service.
- These services can be executed on different computers from different service provider.
- The standard protocols are developed for supporting service communication and information exchange.
- Architecture and services are the two important terms with respect to the SOA.
- The architecture includes the description of the overall system like purpose, function properties and various interfaces.
- Business services, entity services, functional services, utility services are the types of services used in SOA system.
- The services are strong reusable business function and these are communicated via message passing system.
- The above figure shows the basic service oriented architecture. It includes the service provider and service user.
- The user requests for a service by sending request message and the service provider reply message to the service consumer.
- The way of defining request and successive response connections is understandable to both the service provider and service user. This way of defining is achieved using SOAP, WSDL etc. these are explained in following point SOA and web services. Advantages of SOA
- Services are provided locally or outsource to external providers.
- The services are language independent.
SOA and Web services
- Web services are a realization of SOA.
- SOA is an architectural model which is independent of any technology platform and web service is the popular approach of SOA.
- The web services provide services over the web.
- All the computers are able to connect to the internet by building web services on HTTP. This protocol is used for securing the web service communication.
- After taking the decision of protocol for communication need to decide the language for communication. For that purpose XML is chosen because it is platform independent and various systems can easily understand it.
- Using XML information is an organized in the required way.
- To process the unstructured data and display a formatted data, XML is widely used.
- In web services, Web Service Description Language(WSDL) is similar to the method signature. WSDL document is written in XML for the better understanding of any web service to the users.
- WSDL consist of parameters and its data type, methods or functions.
- Through an application oriented interface like WSDL the web services are available to the users.
- In web services, method signature is accomplished through Simple Object Access Protocol (SOAP).