|
What do we cover?
The course is broken up into five areas as follows, each tackling a different part of the software architecture story.
| What is software architecture? |
"Architecture" is a very misunderstood term within the software industry, so we start out by defining what it means to us, talking about how it differs to design and introducing the context for the rest of the course. We cover architecture at different levels; from application architecture through to enterprise architecture.
|
| What is the role of a software architect? |
With a definition of architecture under our belts, we move on to clarify the role of an architect by looking at roles and responsibilities in software teams, which leads us to the conclusion that the architect role is different from that of a lead developer. We explore everything from the technical skills and knowledge needed by a hands-on software architect through to leadership and soft skills.
|
| How do you define software architecture? |
Software architecture doesn't exist in a vacuum and is driven by the functional requirements, the non-functional requirements, constraints and principles. We take a look at all of them to understand the impact that they have and the trade-offs that need to be made when defining architectures. Architecture definition is a large part of the course and is reinforced by a case study.
|
| How do you share software architecture? |
Architectures don't live in isolation and we focus on this to explore how software architecture involves more than a single view of the system, with those views being important to different stakeholders. We take a look at the various views that you might include in a software architecture document along with some other ways to collaborate on and share software architectures.
|
| How do you deliver software architecture? |
We look at the processes used by and involvement that an architect might have during a typical software development lifecycle, all of which is applicable regardless of whether you're using a traditional, iterative or agile methodology. We also look at how you can successfully evaluate, test and deliver a software architecture with complex non-functional requirements such as performance and scalability.
|
What about technology?
Although the course is technology agnostic, there is lots of technical content and we relate this back to Java and Microsoft .NET in order to provide some real world context and guidance. After all, this course is about architecture within the context of software development!
