Software Architecture (iSAQB)

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:

  1. Enterprise Architecture
    Management
  2. Business Architecture
    (Business Processes)
  3. IT Enterprise
    Architecture
  4. Software
    Architecture
  5. Hardware
    Architecture
  6. 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 SuitabilityReliabilityUsabilityPerformance EfficiencySecurityMaintainabilityCompatibilityPortability
Functional CompletenessMaturityAppropriatenessTime BehaviorConfidentialityModularityCo-existenceAdaptability
Functional CorrectnessAvailabilityRecognizabilityResource UtilizationIntegrityReusabilityInteroperabilityInstallability
Functional AppropriatenessFault ToleranceOperatibilityCapacityNon-repudiationAnalysability Replaceability
 RecoverabilityUser Error Protection AuthenticityModifiability  
  User Interface Aesthetics AccountabilityTestability  
  Accessability