Chapter 6 - (Software Engineering - Global Edition - 2019 10th Sommerville)
MVC is called
Model, View, Controller
What are some features of the repository architecture ?
Description All data in a system is managed in a central repository that is accessible to all system components. Components do not interact directly, only through the repository. Example Figure 6.11 is an example of an IDE where the components use a repository of system design information. Each software tool generates information, which is then available for use by other tools. When used You should use this pattern when you have a system in which large volumes of information are generated that has to be stored for a long time. You may also use it in data-driven systems where the inclusion of data in the repository triggers an action or tool. Advantages Components can be independent; they do not need to know of the existence of other components. Changes made by one component can be propagated to all components. All data can be managed consistently (e.g., backups done at the same time) as it is all in one place. Disadvantages The repository is a single point of failure so problems in the repository affect the whole system. May be inefficiencies in organizing all communication through the repository. Distributing the repository across several computers may be difficult.
What are some features of the client-server architecture ?
Description In a client-server architecture, the system is presented as a set of services, with each service delivered by a separate server. Clients are users of these services and access servers to make use of them. Example Figure 6.13 is an example of a film and video/DVD library organized as a client-server system. When used Used when data in a shared database has to be accessed from a range of locations. Because servers can be replicated, may also be used when the load on a system is variable. Advantages The principal advantage of this model is that servers can be distributed across a network. General functionality (e.g., a printing service) can be available to all clients and does not need to be implemented by all services. Disadvantages Each service is a single point of failure and so is susceptible to denial-of-service attacks or server failure. Performance may be unpredictable because it depends on the network as well as the system. Management problems may arise if servers are owned by different organizations
Interpreted language such as ruby or pythin use generic architecture which components does it use ?
1. A lexical analyzer, which takes input language tokens and converts them into an internal form. 2. A symbol table, which holds information about the names of entities (variables, class names, object names, etc.) used in the text that is being translated. 3. A syntax analyzer, which checks the syntax of the language being translated. It uses a defined grammar of the language and builds a syntax tree. 4. A syntax tree, which is an internal structure representing the program being compiled. 5. A semantic analyzer, which uses information from the syntax tree and the sym- bol table to check the semantic correctness of the input language text. 6. A code generator, which "walks" the syntax tree and generates abstract machine code.
What is 4+1 view model of software architecture ?
1. A logical view, which shows the key abstractions in the system as objects or object classes. It should be possible to relate the system requirements to entities in this logical view. 2. A process view, which shows how, at runtime, the system is composed of inter- acting processes. This view is useful for making judgments about non-func- tional system characteristics such as performance and availability. 3. A development view, which shows how the software is decomposed for develop- ment; that is, it shows the breakdown of the software into components that are implemented by a single developer or development team. This view is useful for software managers and programmers. 4. A physical view, which shows the system hardware and how software compo- nents are distributed across the processors in the system. This view is useful for systems engineers planning a system deployment.
The major components of of client-server architecture model is ?
1. A set of servers that offer services to other components. Examples of servers include print servers that offer printing services, file servers that offer file man- agement services, and a compile server that offers programming language com- pilation services. Servers are software components, and several servers may run on the same computer. 2. A set of clients that call on the services offered by servers. There will normally be several instances of a client program executing concurrently on different computers. 3. A network that allows the clients to access these services. Client-server sys- tems are usually implemented as distributed systems, connected using Internet protocols.
There are two software architectures of abstraction what are they ?
1. Architecture in the small is concerned with the architecture of individual pro- grams. At this level, we are concerned with the way that an individual pro- gram is decomposed into components. This chapter is mostly concerned with program architectures. 2. Architecture in the large is concerned with the architecture of complex enter- prise systems that include other systems, programs, and program components. These enterprise systems may be distributed over different computers, which may be owned and managed by different companies. (I cover architecture in the large in Chapters 17 and 18.)
As a software designer, you can use models of application architecture in a number of ways, what are they ?
1. As a starting point for the architectural design process If you are unfamiliar with the type of application that you are developing, you can base your initial design on a generic application architecture. You then specialize this for the specific system that is being developed. 2. As a design checklist If you have developed an architectural design for an appli- cation system, you can compare this with the generic application architecture. You can check that your design is consistent with the generic architecture. 3. As a way of organizing the work of the development team The application archi- tectures identify stable structural features of the system architectures, and in many cases, it is possible to develop these in parallel. You can assign work to group members to implement different components within the architecture. 4. As a means of assessing components for reuse If you have components you might be able to reuse, you can compare these with the generic structures to see whether there are comparable components in the application architecture. 5. As a vocabulary for talking about applications If you are discussing a specific application or trying to compare applications, then you can use the concepts identified in the generic architecture to talk about these applications.
The apparent contradictions between architectural theory and industrial practice arise because there are two ways in which an architectural model of a program is used, what are they ?
1. As a way of encouraging discussions about the system design A high-level architectural view of a system is useful for communication with system stake- holders and project planning because it is not cluttered with detail. Stakeholders can relate to it and understand an abstract view of the system. They can then discuss the system as a whole without being confused by detail. The architectural model identifies the key components that are to be devel- oped so that managers can start assigning people to plan the development of these systems. 2. As a way of documenting an architecture that has been designed The aim here is to produce a complete system model that shows the different components in a system, their interfaces and their connections. The argument for such a model is that such a detailed architectural description makes it easier to understand and evolve the system.
Architectural style and structure should depend on the non-functional requirements of the system what are they ?
1. Performance If performance is a critical requirement, the architecture should be designed to localize critical operations within a small number of components, with these components deployed on the same computer rather than distributed across the network. This may mean using a few relatively large components rather than small, finer-grain components. Using large components reduces the number of component communications, as most of the interactions between related system features take place within a component. You may also consider runtime system organizations that allow the system to be replicated and exe- cuted on different processors. 2. Security If security is a critical requirement, a layered structure for the architecture should be used, with the most critical assets protected in the innermost lay- ers and a high level of security validation applied to these layers. 3. Safety If safety is a critical requirement, the architecture should be designed so that safety-related operations are co-located in a single component or in a small number of components. This reduces the costs and problems of safety validation and may make it possible to provide related protection systems that can safely shut down the system in the event of failure. 4. Availability If availability is a critical requirement, the architecture should be designed to include redundant components so that it is possible to replace and update components without stopping the system. I describe fault-tolerant sys- tem architectures for high-availability systems in Chapter 11. 5. Maintainability If maintainability is a critical requirement, the system architec- ture should be designed using fine-grain, self-contained components that may readily be changed. Producers of data should be separated from consumers, and shared data structures should be avoided.
Designing and documenting software architecture has three advantages what are they ?
1. 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. 2. 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 require- ments such as performance, reliability, and maintainability. 3. Large-scale reuse An architectural model 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. As I explain in Chapter 15, product-line architectures are an approach to reuse where the same architecture is reused across a range of related systems.
Abstract application architecture can be illustrated in two ways, what are they ?
1. Transaction processing applications Transaction processing applications are database-centered applications that process user requests for information and update the information in a database. These are the most common types of inter- active business systems. They are organized in such a way that user actions can't interfere with each other and the integrity of the database is maintained. This class of system includes interactive banking systems, e-commerce systems, information systems, and booking systems. 2. Language processing systems Language processing systems are systems in which the user's intentions are expressed in a formal language, such as a pro- gramming language. The language processing system processes this language into an internal format and then interprets this internal representation. The best- known language processing systems are compilers, which translate high-level language programs into machine code. However, language processing systems are also used to interpret command languages for databases and information systems, and markup languages such as XML.
Give few examples of application types ?
Data processing applications Transaction processing application Event Processing systems Language processing system
What are some features of layered architecture ?
Description Organizes the system into layers, with related functionality associated with each layer. A layer provides services to the layer above it, so the lowest level layers represent core services that are likely to be used throughout the system. See Figure 6.8. Example A layered model of a digital learning system to support learning of all subjects in schools (Figure 6.9). When used Used when building new facilities on top of existing systems; when the development is spread across several teams with each team responsibility for a layer of functionality; when there is a requirement for multilevel security. Advantages Allows replacement of entire layers as long as the interface is maintained. Redundant facilities (e.g., authentication) can be provided in each layer to increase the dependability of the system. Disadvantages In practice, providing a clean separation between layers is often difficult, and a high-level layer may have to interact directly with lower-level layers rather than through the layer immediately below it. Performance can be a problem because of multiple levels of interpretation of a service request as it is processed at each layer.
What is some of the features of MVC ?
Description Separates presentation and interaction from the system data. The system is structured into three logical components that interact with each other. The Model component manages the system data and associated operations on that data. The View component defines and manages how the data is presented to the user. The Controller compo- nent manages user interaction (e.g., key presses, mouse clicks, etc.) and passes these interactions to the View and the Model. See Figure 6.5. Example Figure 6.6 shows the architecture of a web-based application system organized using the MVC pattern. When used Used when there are multiple ways to view and interact with data. Also used when the future requirements for interaction and presentation of data are unknown. Advantages Allows the data to change independently of its representation and vice versa. Supports presentation of the same data in different ways, with changes made in one representation shown in all of them. Disadvantages May involve additional code and code complexity when the data model and interactions are simple.
What are some features of the pipe and filter architecture ?
Description The processing of the data in a system is organized so that each processing component (filter) is discrete and carries out one type of data transformation. The data flows (as in a pipe) from one component to another for processing. Example Figure 6.15 is an example of a pipe and filter system used for processing invoices. When used Commonly used in data-processing applications (both batch and transaction-based) where inputs are processed in separate stages to generate related outputs. Advantages Easy to understand and supports transformation reuse. Workflow style matches the structure of many business processes. Evolution by adding transformations is straightforward. Can be implemented as either a sequential or concurrent system. Disadvantages The format for data transfer has to be agreed between communicating transformations. Each transformation must parse its input and unparse its output to the agreed form. This increases system overhead and may mean that it is impossible to reuse architectural components that use incompatible data structures.
What is SOLID principles ?
Single responsibility Open-Closed Liskov substituion Interface segregation Dependency inversion
Chapter 6 Key Points
■ A software architecture is a description of how a software system is organized. Properties of a system such as performance, security, and availability are influenced by the architecture used. ■ Architectural design decisions include decisions on the type of application, the distribution of the system, the architectural styles to be used, and the ways in which the architecture should be documented and evaluated. ■ Architectures may be documented from several different perspectives or views. Possible views include a conceptual view, a logical view, a process view, a development view, and a physical view. ■ Architectural patterns are a means of reusing knowledge about generic system architectures. They describe the architecture, explain when it may be used, and point out its advantages and disadvantages. ■ Commonly used Architectural patterns include model-view-controller, layered architecture, repository, client-server, and pipe and filter. ■ Generic models of application systems architectures help us understand the operation of appli- cations, compare applications of the same type, validate application system designs, and assess large-scale components for reuse. ■ Transaction processing systems are interactive systems that allow information in a database to be remotely accessed and modified by a number of users. Information systems and resource management systems are examples of transaction processing systems.