General
Several standards are defined by International Software Qualification Board, such as the iSAQB standard for architecture. iSAQB certifies via it\’s Certified Professional for Software Architect (CPSA) program. There are several levels, which can be archievd:
- CPSA-Foundation Level (CPSA-F)
- CPSA-Advanced Level (CPSA-A)
- CPSA-Expert Level (CPSA-E)
Structure
From my perspective the training material for iSAQB is not well structured, as many activities can be executed in parallel. Most training material – such as the one from Cert-IT GmbH – is missing a red-line to follow up. Therefore I structured the most important topics by the application lifecycle.
Software Architecture can be generally structured in the following areas, which also represent organizational hierarchies:
- Enterprise Architecture
Management - Business Architecture
(Business Processes) - IT Enterprise
Architecture - Software
Architecture - Hardware
Architecture - Infrastructure
Architecture
Software Architects
Software Architects require a wild mix of soft and hardskills to fulfill their role and responsibility. Vitruvius defined the ideal architect as:
a person of letters, a mathematician, familiar with historical studies, a diligent student of philosophy, acquainted with music, not ignorant of medicine, learned in the response of jurisconsults, familiar with astronomy and astronomical calculations.
– Vitruvius, 25 BC
As software architects fulfill a central role in software projects, they need to bring together related development phases (cfg. Project Management Phases), such as:
- Analysis
- Design
- Implementation
- Management
- Operations
Due to the versatility of stakeholders and multiplicities of their interests, the knowledge of software architects must be wide spread. Some deep understanding for technologies is topping their profile off, but is not as much required as having a broad understanding of topics. The responsibility for software architects normally correlates to quality characteristics of software. Such characteristics are defined by ISO/IEC 25010:
Functional Suitability | Reliability | Usability | Performance Efficiency | Security | Maintainability | Compatibility | Portability |
---|---|---|---|---|---|---|---|
Functional Completeness | Maturity | Appropriateness | Time Behavior | Confidentiality | Modularity | Co-existence | Adaptability |
Functional Correctness | Availability | Recognizability | Resource Utilization | Integrity | Reusability | Interoperability | Installability |
Functional Appropriateness | Fault Tolerance | Operatibility | Capacity | Non-repudiation | Analysability | Replaceability | |
Recoverability | User Error Protection | Authenticity | Modifiability | ||||
User Interface Aesthetics | Accountability | Testability | |||||
Accessability |