Agile methodologies embrace change, and system design and architecture must often evolve as well. This course will teach you concepts, patterns, and approaches that help systems adapt to change while ensuring architectural requirements are met.
Most software systems will be exposed to unexpected change in many dimensions over their lifespan. Architectural aspects of a system can be hard to change once implemented, so how can a system’s architecture accommodate change? In this course, ICAgile (ICP-ASD): Evolving Architecture and Design, you’ll learn fundamental software engineering concepts, patterns, and approaches that affect a system’s adaptability. First, you'll discover how to apply measurement and automation to aid a system’s adaptability. Next, you'll also see how to ensure important architectural goals. Finally, you learn how constraints continue to be met as the system changes. When you’re finished with this course, you’ll have an understanding of how architectures can be made more responsive to changing needs and environments.
Course Overview Hi. I'm Jim Weaver, and I'm a software developer who's spent decades working with teams to build complex software systems in many industries. Quite a few of those systems were in use with features being added to them regularly for 10 years or more. When systems last that long, which, of course you hope they will, adopting them to changes in technology, the business environment, and unanticipated feature sets can be very challenging. In this course, we'll learn ways to help build in evolvability into systems so that they can better adapt to changes over time. We'll learn commonly used architectural patterns along with their strengths and weaknesses with respect to accommodating change. We'll learn ways to integrate architectural work and planning with feature work, how to take advantage of design patterns in code, and discuss key design principles that can help build flexible systems. We'll even discuss how to decide on the most important architectural characteristics of your system and measure those characteristics as the code evolves to determine if changes make a system better or worse with regards to those characteristics. By the end of this course, you'll be familiar with common architectural patterns and design principles and have a good idea as to how to guide the evolution of your software systems.