You are here

Software Architecture Principles And Practice

Description:

A software architect needs to demonstrate diverse skills that are technical and non-technical. This includes the ability to understand the context of a software project, to extract requirements that go beyond functionality, to apply engineering principles and practices in designing a solution, to realize the solution as a concrete product while interacting with diverse stakeholders.

This training program provides the knowledge any software architect should necessarily possess.

The training introduces software architecture principles and demonstrates how they are applied in practice. Participants are also required to demonstrate successful learning and skills growth by completing individual projects which include numerous tasks entrusted to software architects.

Target Groups:

  1. Software architects who wants to enhance their knowledge
  2. Software developers who want to grow their architectural skills

Prerequisites:

  1. This training program is not for those who are new to software engineering. At a minimum, you should already be familiar with writing software. The specific programing language or languages you are familiar with is not important. Contact us in case you need assistance in determining to participate.

Communication Language:

English

Duration:

  • 5 days of classroom training (40 hours)
  • 1 day of project assessment activities (all participants should participate for this as well)
  • 3 weeks after the first 5 days of training are given for the completion of the individual project. After this, the assessment activities (1 day) happens.

Facilitator:

Kamal Wickramanayake (Profile)

Training Content:

  1. Introduction
    • Defining software architecture
    • Concerns addressed by software architecture
    • Why is software architecture important?
    • Design versus architecture
    • Architectural and non-architectural aspects of software
  2. Architecture influencers
    • Identifying stakeholder communities and their needs
    • Establishing a strong architectural vision
    • Understanding the development organization
    • Technical environment and architect's experience
  3. The Context of Enterprise Applications
    • Overview of enterprise architecture
    • How do business projects translate into IT projects and software projects?
    • Understanding the effect of program and portfolio management efforts
    • Formation of vision and principles that drive IT and software efforts
    • Effect of enterprise architecture on software architecture
    • Identifying meaningful software architecture drivers for enterprise when enterprise architecture guidelines are missing
  4. Software Development Processes
    • Overview of different software development processes
    • Analyzing the qualities of different software development processes
    • How to select a suitable process?
    • Relationship between software architecture and process
    • Architectural effort consumption at different phases of a project
  5. Software Structures
    • What is a structure?
    • Different types of structures found in software
    • Module structures
    • Component and connector structures
    • Allocation structures
    • Why analysing multiple structures are important?
    • Benefits of analysing different structures to different stakeholders
  6. Expressing Software Architecture
    • Model, views, view points
    • Difference between architecture and architecture representation
    • Graphical representation of some common structures
    • Extending UML for architecture modeling
    • What amount of architecture documentation is sufficient?
    • Selecting the relevant views
    • Detailing views (and using a good template)
    • Documenting other details (details that do not appear in individual views)
    • Organization of the architecture documentation suite
  7. Requirements
    • Different types of requirements
    • Types of requirements that are often forgotten, but act as architectural drivers
    • Techniques for describing different types of requirements
  8. Quality Attributes
    • What are quality attributes?
    • Different types of quality attributes
    • Expressing quality attributes clearly (and quantification when possible)
    • Quality attribute scenarios
  9. Creating Architecture
    • Patterns, reference models, reference architectures, styles
    • Achieving quality attributes
    • Architectural tactics
    • Which structure(s) to be focused on first?
    • Prioritizing architectural drivers
    • Taking a breadth-first approach
    • When to stop?
    • Criteria used for system decomposition
    • Balancing tradeoffs
  10. Software Architecture Process
    • Designing the architecture
    • Forming team(s)
    • Creating a skeletal system
    • Enforcing architecture
    • Working on evolution
  11. Performing Architecture Reviews
    • Establishing review criteria
    • The review process
    • Reporting the outcomes
  12. Architecture Skills Framework
    • Role of an architect
    • The skills needed
    • The depth of knowledge needed
    • Leading a team
  13. Assessment Test
    This is for the assessment of participants.
  14. Project
    This is for the assessment of participants. Each participant is to complete an individual project within 3 weeks after the training finishes. As part of the exercise, participants should also review several projects of other participants in compliance with the review process tought during the training program. The successful completion of this exercise includes success in own project, ability to present it clearly and justify the solutions, ability to critically evaluate the architectures created by others and suggest improvements.