Introduction to Software Architecture, its principles and methods

 

 

Duration:

2 days It can be extended to 3 days, or tailored to the needs of a particular organization.

Audience:

Developers, designers, analysis, and software project managers.

Pre-requisite

Familiarity with software design and the software development methods.

Brief Description

An introduction to the discipline of software architecture, practices, notations, and its place in the software development lifecycle.

 

Description:

The architectural design of a system serves as a bridge between requirements and implementation. This course examines the role of architectural design in the system development lifecycle and reviews underlying principles, concepts and methodologies. Topics include: architectural representation, desirable qualities of a software architecture, the role of architecture in managing risk, common architectural frameworks, object-oriented approaches, the impact of commercial off-the-shelf products (COTS) and standards, and how & where architectural design fits in an iterative software development lifecycle, such as the Rational Unified Process (RUP).

 

Course Outline:

What is software architecture?

Software architecture is intuitively easy to understand, but very hard to define. We will look at the relationship of software architecture to software design, software development, system development, and define.

Why should we bother?

What are the economic, business drivers behind software architecture? What are the benefits of having a focus on software architecture? What good does it do to a project? Which projects will benefit most?

How do we represent software architecture?

One approach to better define software architecture is to define a way to represent it, to document it, to make it an objective, tangible artifact that we can transmit, examine, discuss. But architecture of a software intensive system is a rather complex things, and most architectural representation use multiple coordinated views. Can I use UML to represent architecture? How, and what elements of UML? What is the use of an architecture description language (ADL)?

Who are the architects?

Who plays the role of the software architect? How does this role differ from software developer or project manager? What are the skills and competences of a software architect? How do you train software architects?

How do you select or create an architecture?

Where does architecture fit in the development process and the development lifecycle?

Is there an architectural process? A systematic way of developing, validating, assessing an architecture? How does software architecture fit in an iterative development lifecycle?

We will look at a few architectural design approaches.

How do you validate an architecture?

How to perform an architectural review and assessment? How to test an architectural prototype?

 

Delivery

This course is delivered using a combination of lecture, question and answers and group projects. Group projects are a simulation of the agile software development process where participants actively engage in the construction of a small project such as constructing a small toy house. While this workshop is more exciting when delivered in person, it can also be delivered as a virtual course. A group writing assignment is substituted for the agile construction project.