Before registering for this course, participants should have
- experience in the development of software-reliant systems
- some familiarity with modern software engineering concepts
Although the term software architecture is used frequently in today's software industry, its meaning is not universally understood.
- What is software architecture?
- How do you use software architectures in practice?
- What does a software architect do for an organization?
- What value does software architecture provide?
This course introduces the essential concepts of software architecture. A software architecture is an abstract view of a software system distinct from the details of implementation, algorithms, and data representation. Architecture is, increasingly, a crucial part of a software organization's business strategy. Software architectures can
- provide flexibility and adaptability in changing markets
- allow for interoperability with other players in the marketplace
- provide leverage of control in a marketplace
- help developers focus on a niche in the marketplace
- be used as a sales and marketing tool
- help reduce maintenance costs and amortize development costs
- assist in workforce organization and with project oversight and control
- establish a common corporate vocabulary
- shorten learning time
This course emphasizes the importance of the business (or mission) context in which systems are designed and introduces participants to software architectures in a real-world setting. "Industrial-strength" case studies and course exercises illuminate the key technical and organizational issues regarding software architectures.
Objectives
This course provides attendees with a thorough overview of software architectures. After attending this course, participants will have a better understanding of
- what is a software architecture
- why a software architecture is important
- the architecture influence cycle
- the relationships between system qualities and software architectures
- software architectural patterns and tactics, and their relationship to system qualities
- attribute-driven design
- software architecture documentation
- software architecture evaluation
- architectural reuse via software product lines
- architectures in Agile projects
Topics
- definition and overview of software architecture
- the architecture influence cycle: what influences software architects and software architecture
- understanding and achieving quality attributes
- architecture design using patterns and tactics
- documenting software architecture
- evaluating software architecture
- architecture reuse via product lines
- architecture in Agile projects