Note
Starting at week 4 slides, slide 34
Architectural design
Architectural patterns
Pipe and filter architecture
- functional transformations process their inputs to produce outputs
- may be referred to as a “pipe and filter model” (in UNIX shell)
- data is transformed → forwarded to next stage of processing
- used when: data processing applications (batch & transaction-based) where inputs are processed in separate stages to generate related outputs
- advantages:
- easy to understand and supports transformation reuse
- workflow style matches structure of many business processes
- evolution by adding transformations is straightforward
- can be implemented as a sequential or concurrent system
- disadvantages:
- format for data transfer has to be agreed upon between communicating transformations
- each transformation must parse its input and un-parse its output to the agreed form
- increases system overhead and may mean it is impossible to reuse functional transformations that use incompatible data structures
flowchart LR A[Invoices] --> B(Read issued invoices) C[Payments] --> D(Identify payments) B --> D D --> E(Issue receipts) E --> F[Receipts] D --> G(Find payments due) G --> H(Issue payment reminder) H --> I[Reminders]
Application architectures
- meta system which supplies a framework to the business
- businesses have much in common → their application systems also tend to have a common architecture that reflects the application requirements
- generic application architecture: an architecture for a type of software system that may be configured and adapted to create a system that meets specific requirements
- contains common elements for the app domain
- within this meta application, we can have design patterns to implement the system at the architectural level
Uses of application architectures
- as a starting point for architectural design
- 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 application types
Examples of application systems
Data processing applications
Transaction processing applications
- E-commerce systems
- reservation systems
- process user requests for information from a database or requests to update the database
- from a user perspective, a transaction is any coherent sequence of operations that satisfies a goal
- e.g. find the times of flights from London to Paris
- users make async requests for service which are then processed by a transaction manager
Event processing system
Language processing systems
- command interpreters - XML to new document format - XML to extract a query which defines an SQL match
- accept a natural or artificial language as input and generate some other representation of that language
- may include an interpreter to act on the instructions in the language that is being processed
- used in situations where the easiest way to solve a problem is to describe an algorithm or describe the system data
- meta-case tools process tools descriptions, method rules, etc. and generate tools
flowchart TD SL["Source language instructions"] --> T["<div style='font-weight:700'>Translator</div><div style='border-top:1px solid #999;margin:4px 0'></div>Check syntax<br/>Check semantics<br/>Generate"] T --> AM["Abstract m/c instructions"] AM --> I["<div style='font-weight:700'>Interpreter</div><div style='border-top:1px solid #999;margin:4px 0'></div>Fetch<br/>Execute"] D["Data"] --> I I --> R["Results"]
Note
End of week 4 slides, moving on to week 5
Design & Implementation
Build or buy
- in many domains, it is now possible to buy off-the-shelf systems (COTS) that can be adapted and tailored to the users requirements
- design becomes figuring out how to morph the package to the business needs
- is building it yourself more beneficial than buying a premade system?
- consider cost, dev time, maintenance, etc.
- disadvantages to buying:
- package restrictions (functional limitations)
OO design
- requires several models
- context model
- can provide the super class with defines the major components of the system
- provides context to how the system will interact with the environment
Object class identification
- grammatical approach
Note
take notes up to slide 26
Note
Ended at week 5, slide 26