software engineering general architecture. architectural components: program organisation overview...
TRANSCRIPT
Software Engineering
General architecture
General architecture
Architectural components: Program organisation overview
Major building blocks in a system Definition of each building block’s area of
responsibility A building block should know as little as possible
about other building blocks’ areas of responsibility Communication rules for each building block
should be well defined
General architecture
Major classes Responsibilities of each major class Interaction with other classes Class hierarchies State transitions Object persistence Organisation of classes in subsystems
General architecture
Data design Major files and table designs to be used Access policies (sequential, direct, etc.) Storage policies High-level organisation and contents of data
and databases
Typically, data should be accessed directly by only one class or subsystem
General architecture
Business rules
Using the terminology of General Systems Theory, environmental rules that affect the behaviour of the system
General architecture
User interface design
Interface paradigm(s)
Architecture should be such that interface could be replaced without affecting other parts of the system
General architecture
Resource management
Database connections Threads Handles Memory
General architecture
Security
Manipulation of buffers Rules for handling untrusted data Encryption Level of detail contained in error messages Protection of data in memory
General architecture
Performance issues Performance goals Performance bottlenecks
Scalability
Interoperability
General architecture
Internationalisation / localisation Obs: issue of growing importance nowadays
Input / Output I/O policy (look ahead, look behind, just in
time) I/O error detection level (field, record, stream,
file, etc.)
General architecture
Error processing Corrective versus detective Active versus passive Error propagation policy Conventions for handling error messages Exception handling policy
At what levels are errors handled? What is the level of responsibility of each class for
validating input data? Tailor made error processing or use
development environment pre-fabricated solutions?
General architecture
Fault tolerance Expected fault tolerance Fault tolerance strategies
Architectural feasibility Is proposed design viable, considering
available resources and proposed requirements?
Overengineering How to ensure system level robustness?
General architecture
“Buy” or build?
Reuse decisions
Architecture recurring revision strategy
General architecture
General architecture quality How to preserve conceptual integrity Clearly stated architecture’s objectives Motivations for all major decisions Machine- and language-independent
architecture Multiple views
NO COMPROMISING!