Chapter 6 - Architectural Design
advantages of layers
allows replacement of entire layers as long as the interface is maintained
disadvantages of the MVC
can involve additional code and code complexity when the data model and interactions are simple
true or false: systems in the same domain often have very different architectures.
false: systems in the same domain usually have similar architectures that reflect the domain concepts.
process view
shows how, at runtime, the system is composed of interacting processes
logical view
shows the key abstractions in the system as objects or object classes
physical view
shows the system hardware and how software components are distributed across the processors in the system
what are architectural views?
views or perspective that are useful when designing and documenting a system architecture
what is large-scale reuse?
when the architecture may be reusable across a large range of systems
what is client-server architecture
when the functionality of the system is organized into services, with each service delivered from a separate server
availability
include redundant components and mechanisms for fault intolerance
web-based information systems
info and resource management systems
true or false: the architecture of a system may be designed around one or more architectural patterns/styles.
true: architecture can be instantiated in different ways.
maintainability
use fine-grain, replaceable components
what are MVC view objects?
- they represent user interface components. in each use case -actors interact with at least one view object - they collect info from actors that the model and controller can use
layered architecture pattern
a layer provides services to the layer above it, so the lowest-level layers represent core services that are used throughout the system
advantages of the MVC
allows the data to change independently of its representation and vice versa. aka the same data can be presented in different ways. if data in one presentation is changed, the change is supported in all of them
system analysis
analysis of whether the system can meet its functional and non-functional requirements
stakeholder communication
architecture may be used as a focus of a discussion system by stakeholders
disadvantages of layers
clean separation of layers is often difficult
large scale architecture
concerned with the architecture of complex enterprise systems that include other systems, programs, and program components
small scale architecture
concerned with the way an individual program is decomposed into components
what are the 5 architecture and system characteristics?
performance, security, safety, availability, and maintainability
true or false: designing overall system architecture is an early stage of agile development
true: architecture specification is a focal point of agile development because having to refactor the system is very expensive.
security
use layered architecture with critical assets in the inner layers
performance
localize critical operations and minimize communications
what are architectural patterns?
- a means of representing, sharing, and reusing knowledge - a stylized description of good design practice, which has been tried and tested in different environments
application architecture can be used as:
- a starting point for architectural design - a design checklist - a way of organizing work of the development team - a means of assessing components for reuse - a vocab for talking about application types
what are MVC controller objects?
- coordinates the model and view objects - have no physical counterpart irl - represent application control flows - collect info from view objects for dispatch to model objects
CHAPTER TAKEAWAYS (part 1):
- establish your system architecture in the early stages of program development. - know how to describe your architecture at both large and small scales. - learn how to draw informal block diagrams to represent your architecture. - learn how to have application product lines that can be sold to customers with similar (but slightly different) different requirements.
information systems architecture
- have a generic architecture that can be organized as a layered architecture - systems are transaction-based
CHAPTER TAKEAWAYS (part 2):
- know how to describe/give examples of each type of the 4 architectural views - represent architectural patterns with both tabular and graphical descriptions - in an MVC architecture, identify which objects are model, view, or controller - know how MVC model, view, and controller interact
how should you present MVC model objects?
- represent persistent information maintained by your application - map parts of speech ("doing", "having", "being" verbs, adjectives, etc) to model components (classes, objects, etc)
architectural design decisions
- the process differs depending on the type of system being developed - common decisions span all processes, and they affect both functional and nonfunctional characteristics - (view picture for decision examples)
what are transaction processing systems?
- they process users' requests for information from a database - asynchronous requests for services are processed by transaction manager
what are two languages that are used to represent architectural views?
UML - Unified Modeling Language ADL - Architectural description languages (might be a blanket term for different arch languages, not sure)
architectural design is the critical link between:
design and requirements engineering
pipe and filter architecture advantages
it's easy to understand and supports transformation reuse. workflow style matches structure of many business processes
safety
localize safety-critical features in a small number of sub-systems
name the 4 architectural views
logical, physical, development, and process view
pipe and filter architecture
organized so that each processing component is discrete and carries out one type of data transformation - note: NOT suitable for interactive systems
layered architecture
organizes the system into layers that provide a set of services
client-server advantages
servers an be distributed across a network, and general functionality can be available to all clients
what is the most frequently used method for documenting software architectures?
simple, informal, and very abstract block diagrams - often useful for communicating with stakeholders and project planning
client-server disadvantages
since each service is a single point, they're more susceptible to service attacks/failure
what is repository architecture?
sub-systems exchange and share data. components interact through the repository (not directly)
model-view-controller (MVC) pattern
system structured into three logical components: - model component manages the system data and associated operations on that data - view component defines and manages how the data is presented to the user - controller component manages the user interaction (ex: mouse clicks, key presses, etc.) and passes then to the view and model. (view diagram to see more interaction between the three components)
server implementation
systems that are often implemented as multi-tier client server/architectures
patterns maybe represented using either ______ or ______ descriptions
tabular; graphical
NOTE TO READERS
the first 38 flash cards are stuff that we covered in the midterm, so if you wanna study the new stuff, start after the "chapter takeaways" cards (also helpful video of this guy explaining the different types of architectures that are in this chapter: https://youtu.be/oHg5SJYRHA0)
pipe and filter architecture disadvantages
the format for data transfer has to be agreed upon between communicating transformations
what is an architectural model?
the output of architectural design process that describes how the system is organized as a set of communicating components
what is architectural design?
the overall structure and organization of a software system
what are language processing systems?
they accept either natural or artificial language as input and generate another representation of that language
architecture reuse - what are application product lines?
they are built around a core architecture with variants that satisfy particular customer requirements.
what are two very widely used generic application architectures?
transaction processing systems and language processing systems
true or false: each architectural model only shows ONE view or perspective of the system.
true. the different models are related using uses cases or scenarios.