The document discusses architectural design in software engineering. Architectural design determines how a system will be organized and structured. It identifies the main components of a system and their relationships. The output is an architectural model describing how the system is organized as communicating components. Common architectural patterns and styles are also described, such as model-view-controller, layered architectures, and client-server architectures. Non-functional requirements like performance and security impact architectural decisions.
The document discusses architectural design in software engineering. Architectural design determines how a system will be organized and structured. It identifies the main components of a system and their relationships. The output is an architectural model describing how the system is organized as communicating components. Common architectural patterns and styles are also described, such as model-view-controller, layered architectures, and client-server architectures. Non-functional requirements like performance and security impact architectural decisions.
The document discusses architectural design in software engineering. Architectural design determines how a system will be organized and structured. It identifies the main components of a system and their relationships. The output is an architectural model describing how the system is organized as communicating components. Common architectural patterns and styles are also described, such as model-view-controller, layered architectures, and client-server architectures. Non-functional requirements like performance and security impact architectural decisions.
The document discusses architectural design in software engineering. Architectural design determines how a system will be organized and structured. It identifies the main components of a system and their relationships. The output is an architectural model describing how the system is organized as communicating components. Common architectural patterns and styles are also described, such as model-view-controller, layered architectures, and client-server architectures. Non-functional requirements like performance and security impact architectural decisions.
This design is concerned with understanding how a
system should be organized and designing the overall structure of that system. Architectural design is the first stage in the software design process. It is the 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. Levels of Software architecture abstraction Architecture in the Small ◦ It 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 ◦ It 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. Advantages of designing architecture 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 ◦ 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 Architectural Design Decisions Architectural design is a creative process where you design a system organization that will satisfy the functional and non-functional requirements of a system. it is a creative process, so the activities within the process depend on the type of system being developed, the background and experience of the system architect. During the architectural design process, system architects have to make a number of structural decisions that profoundly affect the system and its development process. Question that can be asked before Architectural Design. Is there a generic application architecture that can act as a template for the system that is being designed? How will the system be distributed across a number of cores or processors? What architectural patterns or styles might be used? What will be the fundamental approach used to structure the system? How will the structural components in the system be decomposed into subcomponents? Question that can be asked before Architectural Design. What strategy will be used to control the operation of the components in the system? What architectural organization is best for delivering the non-functional requirements sof the system? How will the architectural design be evaluated? How should the architecture of the system be documented? Architectural Design Continue The architecture of a software system may be based on a particular architectural pattern or style. An architectural pattern is a description of a system organization such as a client–server organization or a layered architecture. Architectural patterns capture the essence of an architecture that has been used in different software systems. You should be aware of common patterns, where they can be used, and their strengths and weaknesses when making decisions about the architecture of a system. Non functional requirements affects AD Performance Security Safety Availability Maintainability Architectural Views A logical view, shows the key abstractions in the system as objects or object classes. A process view, shows how, at run-time, the system is composed of interacting processes. This view judgments about nonfunctional system characteristics such as performance and availability. A development view, which shows how the software is decomposed for development, that is, it shows the breakdown of the software into components that are implemented by a single developer or development team. A physical view, shows the system hardware and how software components are distributed across the processors in the system. Architectural Views Conceptual view is an abstract view of the system that can be the basis for decomposing high-level requirements into more detailed specifications. It help engineers make decisions about components that can be reused, and represent a product line rather than a single system. Conceptual views are almost always developed during the design process and are used to support architectural decision making. The UML was designed for describing object- oriented systems and, at the architectural design stage, you often want to describe systems at a higher level of abstraction. MVC Pattern 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 component manages user interaction (e.g., key presses, mouse clicks, etc.) and passes these interactions to the View and the Model. MVC Pattern Continue MVC Pattern Above figure shows the architecture of a web-based application system organized using the MVC pattern. It is 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. It 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. Can involve additional code and code complexity when the data model and interactions are simple. Layered Architecture The layered architecture pattern is another way of achieving separation and independence. In this pattern, the system functionality is organized into separate layers, and each layer only relies on the facilities and services offered by the layer immediately beneath it. This layered approach supports the incremental development of systems. As layered systems localize machine dependencies in inner layers, this makes it easier to provide multi-platform implementations of an application system. Layered Architecture 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. 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 multi-level security. Allows replacement of entire layers so long as the interface is maintained. Redundant facilities (e.g., authentication) can be provided in each layer to increase the dependability of the system. 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. Layered Architecture Repository Architecture All data in a system is managed in a central repository that is accessible to all system components. 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. 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 as it is all in one place. 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. Repository Architecture Client Server Architecture In a client–server architecture, the functionality of the system is organized into services, with each service delivered from a separate server. Clients are users of these services and access servers to make use of them. 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. The principal advantage of this model is that servers can be distributed across a network. Each service is a single point of failure so chances of denial of service attacks. Performance may be unpredictable because it depends on the network as well as the system. Client Server Architecture Pipe and Filter Architecture 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. Commonly used in data processing applications (both batch- and transaction-based) where inputs are processed in separate stages to generate related outputs. Easy to understand and supports transformation reuse. Workflow style matches the structure of many business processes. The format for data transfer has to be agreed upon between communicating transformations. Each transformation must parse its input and unparse its Pipe and filter architecture Application Architecture Application architectures encapsulate the principal characteristics of a class of systems. For example, in real-time systems, there might be generic architectural models of different system types, such as data collection systems or monitoring systems. The common architectural structure can be reused when developing new systems of the same type. The application architecture may be re-implemented when developing new systems but, for many business systems, application reuse is possible without reimplementation. In these systems, a generic system is configured and adapted to create a specific business application. Ways to model application architecture As a starting point for the architectural design process. As a design checklist. As a way of organizing the work of the development team. As a means of assessing components for reuse. As a vocabulary for talking about types of applications. Transaction Processing System TPS are designed to process user requests for information from a database, or requests to update a database. Technically, a database transaction is sequence of operations that is treated as a single unit (an atomic unit). All of the operations in a transaction have to be completed before the database changes are made permanent. This ensures that failure of operations within the transaction does not lead to inconsistencies in the database. A transaction is any coherent sequence of operations that satisfies a goal, such as ‘find the times of flights from Pokhara to Kathmandu’. Transaction Processing System Information System All systems that involve interaction with a shared database can be considered to be transaction- based information systems. An information system allows controlled access to a large base of information, such as a library catalog, a flight timetable, or the records of patients in a hospital. Increasingly, information systems are web-based systems that are accessed through a web browser. The system is modeled using a layered approach where the top layer supports the user interface and the bottom layer is the system database. Explain Layered Architecture The top layer is responsible for implementing the user interface. In this case, the UI has been implemented using a web browser. Second layer includes form and menu management components that present information to users, and data validation components that check information consistency. The third layer implements the functionality of the system and provides components that implement system security. Finally, the lowest layer, which is built using a commercial database management system, provides transaction management and persistent data storage. Fig: Layered Architecture Information System Layered Architecture and Client Server Architecture. The web server is responsible for all user communications, with the user interface implemented using a web browser; The application server is responsible for implementing application-specific logic as well as information storage and retrieval requests; The database server moves information to and from the database and handles transaction management. Language Processing System Language processing systems translate a natural or artificial language into another representation of that language and, for programming languages, may also execute the resulting code. In software engineering, compilers translate an artificial programming language into machine code. Other language-processing systems may translate an XML data description into commands to query a database or to an alternative XML representation. Language Processing System Architecture General Architecture of LPS A lexical analyzer, which takes input language tokens and converts them to an internal form. 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. 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. A syntax tree, which is an internal structure representing the program being compiled. A semantic analyzer that uses information from the syntax tree and the symbol table to check the semantic correctness of the input language text. A code generator that ‘walks’ the syntax tree and generates abstract machine code.