Log In
Or create an account ->
Imperial Library
Home
About
News
Upload
Forum
Help
Login/SignUp
Index
Cover
About the Author
Title
Copyright
Preface
Content
Table of Contents
1 Introduction
1.1 Software architecture as an aspect of software engineering
1.2 iSAQB: The International Software Architecture Qualification Board
1.3 Certified Professional for Software Architecture – Foundation and Advanced Level
1.4 The aim of this book
1.5 Prerequisites
1.6 Reader’s guide
1.7 Target audience
1.8 Acknowledgements
2 Software Architecture Fundamentals
2.1 Integration with the iSAQB curriculum
2.1.1 Learning goals
2.2 Software-intensive systems and software architectures
2.2.1 What is a software-intensive system?
2.2.2 Types of software-intensive systems
2.2.3 The importance of software architecture for a software-intensive system
2.3 Fundamental software architecture concepts
2.3.1 What is a software architecture?
2.3.2 Building blocks, interfaces, and configurations
2.3.3 Concepts for describing software architectures
2.3.4 Architectural description and architectural levels
2.3.5 Interactions between software architecture and environment
2.3.6 Quality and value of a software architecture
2.4 A bird’s-eye view of software architecture design
2.4.1 Objectives and functions of software architecture design
2.4.2 Overview of software architecture design
2.4.3 Interplay between activities and abstraction levels within the design
2.4.4 A software architect’s tasks and relationships with other roles
2.5 Test your knowledge
3 Designing Software Architectures
3.1 Integration with the iSAQB curriculum
3.1.1 Learning goals
3.2 Overview of the architecture design process
3.3 Design principles and heuristics
3.3.1 Top-down and bottom-up
3.3.2 Hierarchical (de)composition
3.3.2.1 Divide and conquer
3.3.2.2 Decomposition principles
3.3.2.3 The “as-simple-as-possible” principle
3.3.2.4 Separation of concerns
3.3.3 Lean interfaces and information hiding
3.3.3.1 Information hiding
3.3.3.2 Use of interfaces
3.3.4 Regular refactoring and redesign
3.4 Architecture-centric development approaches
3.4.1 Domain-driven design
3.4.1.1 Functional models as the basis for a design
3.4.1.2 Systematic management of domain objects
3.4.1.3 Structuring of the functional domain
3.4.1.4 Types of domains
3.4.1.5 Integration of domains
3.4.2 MDA
3.4.3 Reference architectures
3.4.3.1 Generative creation of system building blocks
3.4.3.2 Aspect orientation
3.4.3.3 Object orientation
3.4.3.4 Procedural approaches
3.5 Techniques for a good design
3.5.1 Degenerated design
3.5.2 Loose coupling
3.5.3 High cohesion
3.5.4 The open/closed principle
3.5.5 Dependency inversion
3.5.6 Separation of interfaces
3.5.7 Resolving cyclic dependencies
3.5.8 Liskov’s substitution principle
3.6 Architectural patterns
3.6.1 Adaptable systems
3.6.1.1 Dependency Injection
3.6.2 Interactive systems
3.6.2.1 Model-view-controller pattern
3.6.2.2 Model-view-presenter pattern
3.6.2.3 Presentation-abstraction-control
3.6.3 From chaos to structure
3.6.3.1 Layered architecture
3.6.3.2 Pipes and filters
3.6.3.3 Blackboard
3.6.4 Distributed systems
3.6.4.1 Broker
3.6.4.2 Service orientation
3.6.4.3 Modularization
3.6.4.4 Microservices
3.7 Design patterns
3.7.1 Adapter
3.7.2 Observer
3.7.3 Decorator
3.7.4 Proxy
3.7.5 Facade
3.7.6 Bridge
3.7.7 State
3.7.8 Mediator
3.8 Test your knowledge
4 Description and Communication of Software Architectures
4.1 Integration with the iSAQB curriculum
4.1.1 Learning goals
4.2 The CoCoME example
4.2.1 Use cases in the CoCoME system
4.2.2 Overview of the structure of the CoCoME system
4.3 Views and templates
4.3.1 Well-established views as defined by the iSAQB
4.3.2 UML diagrams as a notation tool in view descriptions
4.3.3 View description: high-level structure and an example
4.3.3.1 High-level structure: template-type view description
4.3.3.2 Example: Excerpt from a view description for a building block view
4.3.4 Context view (or context diagram)
4.3.5 Building block view
4.3.6 Runtime view
4.3.7 Deployment/infrastructure view
4.3.8 Interdependencies of architecture views
4.3.9 Hierarchical refinement of architecture views
4.4 Technical/cross-cutting concepts in software architectures
4.4.1 Technical/cross-cutting concepts - sample dimensions
4.4.2 Error handling
4.4.3 Security
4.5 Architecture and implementation
4.5.1 Sample implementation
4.6 Common document types for software architectures
4.6.1 Central architecture description
4.6.2 Architecture overview
4.6.3 Document overview
4.6.4 Overview presentation
4.6.5 Architecture wallpaper
4.6.6 Documentation handbook
4.6.7 Technical Information
4.6.8 Documentation of external interfaces
4.6.9 Template
4.7 Best-practice rules for documentation
4.7.1 Rule 1: Write from the readers’ perspective
4.7.2 Rule 2: Avoid unnecessary repetition
4.7.3 Rule 3: Avoid ambiguity
4.7.4 Rule 4: Standardized organizational structure or templates
4.7.5 Rule 5: Justify important decisions in writing
4.7.6 Rule 6: Check the documentation’s suitability for use
4.7.7 Rule 7: Uncluttered diagrams
4.7.8 Rule 8: Regular updates
4.8 Examples of alternative architecture frameworks
4.8.1 The 4+1 framework
4.8.2 RM-ODP
4.8.3 SAGA
4.9 Test your knowledge
5 Software Architectures and Quality
5.1 Integration with the iSAQB curriculum
5.1.1 Learning goals
5.2 Evaluating software architectures
5.2.1 Qualitative evaluation
5.2.1.1 DIN ISO/IEC 25010
5.2.1.2 Quality characteristics
5.2.1.3 Additional quality characteristics
5.2.1.4 Effects of specific quality characteristics
5.2.1.5 Tactics and practices for fulfilling quality requirements
5.2.2 Quantitative evaluation
5.2.2.1 Checking architecture compliance
5.2.2.2 Metrics
5.2.2.3 Cyclomatic complexity
5.3 Prototypes and technical proof of concept
5.3.1 Technical proof of concept
5.3.2 Prototype
5.3.2.1 Benefits and disadvantages of software prototypes
5.3.2.2 Types of software prototypes
5.4 Architecture analysis
5.4.1 The ATAM method
5.5 Test your knowledge
6 Tools for Software Architects
6.1 Integration with the iSAQB curriculum
6.1.1 Learning goals
6.2 General information
6.2.1 Costs
6.2.2 Licenses and licensing conditions
6.3 Requirements management tools
6.3.1 Requirements and decision criteria
6.3.2 Challenges faced by requirements management tools
6.3.3 Examples
6.4 Modeling tools
6.4.1 Requirements and decision criteria
6.4.2 Challenges faced by modeling tools
6.4.3 Examples
6.5 Generation tools
6.5.1 Requirements and decision criteria
6.5.2 Challenges faced by code generators
6.5.3 Examples
6.6 Static code analysis tools
6.6.1 Requirements and decision criteria
6.6.2 Challenges faced by static code analysis tools
6.6.3 Examples
6.7 Dynamic analysis tools
6.7.1 Requirements and decision criteria
6.7.2 Challenges faced by dynamic analysis tools
6.7.3 Examples
6.8 Build management tools
6.8.1 Requirements and decision criteria
6.8.2 Challenges faced by build management tools
6.8.3 Examples
6.9 Configuration and version management tools
6.9.1 Requirements and decision criteria
6.9.2 Challenges faced by configuration and version management tools
6.9.3 Examples
6.10 Code management tools
6.10.1 Challenges faced by code management tools
6.10.2 Examples
6.11 Testing tools
6.11.1 Requirements and decision criteria
6.11.2 Challenges faced by test tools
6.11.3 Examples
6.12 Documentation tools
6.12.1 Requirements and decision criteria
6.12.2 Challenges faced by documentation tools
6.12.3 Examples
6.13 Test your knowledge
Appendix
A Sample Questions
A.1 Excerpts from the examination regulations
A.2 Sample Questions
B List of Abbreviations
C Glossary
D References
← Prev
Back
Next →
← Prev
Back
Next →