Developing Extensible Software

Pluralsight
Course Summary
This course will teach you patterns that allow you to build your software out of swappable building blocks, as well as allow future developers to extend it easily. You'll learn how to make your applications easier to maintain even while constantly changing and evolving, all while maintaining complete testability.
-
+
Course Description
In today's competitive world of software development, using methodologies such as Agile lets us get products to market quicker and in a controlled fashion, but that's not enough. Applications need to be able to grow without being totally rewritten. Sure, there eventually comes a time when every app needs a major overhaul, but if applications are written to be extensible in the first place, the overhaul can be performed in pieces; and in the meantime, new features can be added or existing features changed without bringing the app down. This "extensibility" in our design is becoming more and more important every day as software shops compete with each other for work and even with other countries. There have been many articles and design documents written on things like inversion of control in the UI tiers. Many books have dedicated chapters to injecting objects into MVC controllers or WPF ViewModels, but not many have focused on the meat of a system, the business tiers. These are the tiers that are accessible to the UI of a system, more than one in many cases. And these are the tiers that can be most volatile and subject to change and enhancement. In this course, I'll show you some of my favorite extensibility designs and techniques which will let you write software in building blocks that can be connected and interconnected in different ways. I'll keep most of my focus on the business tiers, which despite the lack of user-centric visual glamour, is where you get to exercise the most creativity. You'll be able to roll out applications and continuously add or change things without affecting the core infrastructure in place. To me, this not only makes the software better, but more fun to write!
-
+
Course Syllabus
Welcome and Course Description- 3m 52s
—The Course 2m 9s
—Course Agenda 1m 42sImportance of Extensibility- 9m 48s
—Not Just For Plug-Ins 1m 38s
—Danger: Beware Of Explosion 1m 45s
—It's All About Decoupledness and Abstraction 1m 5s
—Commerce Engine Case-Study 1m 32s
—Commerce Engine Client Walkthrough 0m 49s
—Commerce Engine Walkthrough 2m 14s
—Why Was That Bad? 0m 43sAbstraction and Dependency Injection- 18m 15sImplementing Providers- 33m 58sImplementing Modules- 53m 0sAdvanced Module Usage- 23m 26sPipelines- 43m 0sProcedural Overriding- 18m 33sUsing MEF- 20m 56sConclusion- 1m 34s