iSAQB® Certified Professional for Software Architecture - Foundation Level
-
between 07-02-26 and 14-02-26
Italy - Online
English
Description
Licensed Certified Professional for Software Architecture – Foundation Level (CPSA-F) trainings will provide participants with the knowledge and skills required to design, specify and document a software architecture adequate to fulfil the respective requirements for small and medium-sized systems. Based upon their individual practical experience and existing skills participants will learn to derive architectural decisions from an existing system vision and adequately detailed requirements. CPSA-F trainings teach methods and principles for design, documentation and evaluation of software architectures, independent of specific development processes.
Focus is education and training of the following skills:
- Discuss and reconcile fundamental architectural decisions with stakeholders from requirements, management, development, operations and test
- Understand the essential activities of software architecture, and carry out those for small- to medium sized systems
- Document and communicate software architectures based upon architectural views, architecture patterns and technical concepts.
Chapter 1: Basic concepts of software architecture
- Discuss definitions of software architecture.
- Understand and identify the benefits of software architecture.
- Understand software architecture as part of the software life cycle.
- Understand software architects' tasks and responsibilities.
- Relate the role of software architects to other stakeholders.
- Can explain the correlation between development approaches and software architecture.
- Differentiate between short- and long-term goals.
- Distinguish explicit statements and implicit assumptions.
- Responsibilities of software architects within the greater architectural context.
- Differentiate types of IT systems
Chapter 2: Design and development of software architectures
- Select and use approaches and heuristics for architecture development.
- Design software architectures.
- Identify and consider factors influencing software architecture.
- Design and implement cross-cutting concerns.
- Describe, explain and appropriately apply important architectural patterns.
- Explain and use design principles.
- Planning dependencies between building blocks.
- Achieve quality requirements with appropriate approaches and techniques.
- Design and define interfaces.
Chapter 3: Specification and communication of software architectures
- Explain and consider the quality of technical documentation.
- Describe and communicate software architectures.
- Explain and apply notations/models to describe software architecture.
- Explain and use architectural views.
- Explain and apply context view of systems.
- Document and communicate cross-cutting concerns.
- Describe interfaces.
- Explain and document architectural decisions.
- Use documentation as written communication.
- Know additional resources and tools for documentation.
Chapter 4: Software architecture and quality
- Discuss quality models and quality characteristics.
- Clarify quality requirements for software architectures.
- Qualitative analysis and asessment of software architectures.
- Quantitative evaluation of software architectures.
Chapter 5: Examples of Software architectures
- Know the relation between requirements, constraints, and solutions.
- Know the rationale of a solution’s technical implementation.
Target Audience
This curriculum reflects the contents currently considered by the iSAQB members to be necessary and useful for achieving the learning goals of CPSA-F. It is not a comprehensive description of the entire domain of 'software architecture'.
Requirements
Participants should have the following knowledge and/or experience. In particular, substantial practical experience from software development in a team is an important prerequisite for understanding the learning material and successful certification.
- More than 18 months of practical experience with software development, gained through team-based development of several systems outside of formal education
- Knowledge of and practical experience with at least one higher programming language, especially:
- Concepts of
- modularization (packages, namespaces, etc.)
- parameter-passing (call-by-value, call-by-reference)
- scope, i.e. of type- and variable declaration and definition
- Basics of type systems (static vs. dynamic typing, generic data types)
- Error- and exception handling in software
- Potential problems of global state and global variables
- Concepts of
- Basic knowledge of:
- modelling and abstraction
- algorithms and data structures (i.e. Lists, Trees, HashTable, Dictionary/Map)
- UML (class, package, component and sequence diagrams) and their relation to source code
Furthermore, the following will be useful for understanding several concepts:
- Basics and differences of imperative, declarative, object-oriented and functional programming
- Practical experience in:
- an object-oriented programming language (i.e. Java or C#)
- designing and implementing distributed applications, such as client-server systems or web applications
- technical documentation, especially documenting source code, system design or technical concepts