Software Engineering Exam 1 Ch.6
Conceptual View
abstract view of the system that can be the basis for decomposing high-level requirements into more detailed specifications; developed during the design process
Software Architecture
affects the performance, robustness, distributability, and maintainability of a system; dominant influence on the non-functional system characteristics
Safety Critical Requirement
architecture should be designed so that safety-related operations are co-located in a single component or in a small number of components
Availability Critical Requirement
architecture should be designed to include redundant components so that it is possible to replace and update components without stopping the system
Performance Critical Requirement
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 a nework; may mean using few relatively large components rather than small, finer-grain components
Model-View-Controller Pattern
basis of interaction management in many web-based systems and is supported by most language frameworks;Seperates presentation and interaction from the system data, system is structured into three logical components that interact with each other; Used when there are multiple ways to view and interact with data, also when the future requirements for interaction and presentation of data are unknown; Supports presentation of the same data in different ways; May involve additional code and code complexity when the data model and interactions are simple
Architecture in the Large
concerned with the architecture of complex enterprise systems that include other systems, programs, and program components
Architecture in the Small
concerned with the architecture of individual programs; concerned with the way that an individual program is decomposed into components
Architectural design
concerned with understanding how a software system should be organized and designing the overall structure of that system; is the first stage in the software design process; is the critical link between design and requirements engineering; identifies the main structural components in a system and the relationships between them
Transaction Processing Applications
database-centered applications that process user requests for information and update the information in a database
Vocabulary for Discussion
if 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
Design Checklist
if the architectural design is developed for an application system, you can compare this with generic application architecture; can check that your design in consistent with the generic architecture
Starting Point
if unfamiliar with the application that is being developed, base intial design on a generic application architecture, then specialize for the specific system being developed
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
Client-Server Architecture
illustrates a commonly used runtime organization for distributed systems; important benefit is sepration and independence;most important advantage is that it is a distributed architecture; system is presented as a set of services, with each service delivered by a seperate server; used when data in a shared database has to be accessed from a range of locations; principal advantage of this model is that servers can be distributed across a network, general functionality can be available to all clients and does not need to be implemented by all services; each service is a single point of failure and so is susceptible to denial-of-service attacks or server failure
4+1 View Model
suggests that there should be four fundamental architectural views; logical view, process view, development view, physical view
Maintainability Critical Requirement
system architecture should be designed using fine-grain, self contained components that may readily be changed
Two Levels of Abstractions in Software Architectures
Architecture in the Small, Architecture in the Large
Three Advantages of Documenting System Architecture
Stakeholder Communicaion, System analysis, Large-scale resuse
Organizing Work
Application architecture identify stable structural features of the system arcchitecture, and in many cases, it is possible to develop these in parallel; can assign work to group members to implement different components in the application architecture
Use of Models of Application Architectures
As a Starting Point for Architectural design process, As a design checklist, As a way of organizing the work of the development team, As a means of accessing components for reuse, As a vocabulary for talking about discussions
Two ways in which an Architectural Model is Used
As a way of encouraging discussions about the system design, As a way of documenting an architecture that has been designed
Three Tier Layered Web Application Architecture
Display- user interface implemented using a web browser, Business Logic - responsible for implementing application specific logic as well as information storage and retrieval requests, Database - moves information to and from the database and handles transaction management
Critical Non-Functional Requirements
Performance, Security, Safety, Availability, Maintainability; have a close relationship with system architecture; architectural style and structure dependent on this;
Application Architectures
Transaction Processsing Applications, Language Processing Systems
Repository Architecture Pattern
describes how a set of interacting components can share data; suited to applications where in which data is generated by one component and used by another; all data in the system is managed in a central place that is only accesible 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; components can be independent, they do not need to know of the existence of other components; repository is a single point of failure so problems in the repository affect the whole system
Architectural Pattern (or Style)
description of a system organization, such as a client-server or layered architecture; captures the essence of an architecture that has been used in different software systems;stylized abstract description of good practice, which has been tried and tested in different systems and environments
Security Critical Requirement
layered strucuture for the architecture should be used, with the most critical assets protected in the inntermost layers and a high level of security validation applied to these layers
Pipe and Filter Architecture
runtime organization of a system where functional transformations process their inputs and produce outputs; data flows from one to another and is transformed as it moves through the sequence; 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 seperate stages to generate related outputs; easy to understand and supports transformation reuse; format for data transfer has to be agreed between communicating transformations
Development View
shows how the software is decomposed for development, shows the breakdown of the software into components that are implemented by a single developer or development team
Process View
shows how, at runtime, the system is composed of interacting processes
Physical View
shows the system hardware and how software components are distributed across the processors in the system
Layered Architecture Pattern
system functionality is organized into seperate layers, and each layer only relies on the facilities and services offered by the layer immeditaely beneath it; another way of achieving seperation and independence; supports the incremental development of systems; changeable and portable; used when building new facilities on top of existing systems; allows replacements of entire layers as long as the interface is maintained; providing a clean seperation between layers is often difficult, performance can also be a problem because of multiple layers of interpretation
Language Processing Systems
systems in which the user's intentions are expressed in a formal language, such as a programming language; compilers and markup languages such as XML
Logical View
which shows the key abstractions in the system as objects or object classes; should be possible to relate the system requirements to entities in this view