140 likes | 153 Views
Explore architectural components, major building blocks, data design, user interface design, security, performance issues, error processing, fault tolerance, and more in software engineering. Learn about best practices and strategies for building robust systems.
E N D
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!