Tip #23 – Design for migration within the product line
Graceful migration within a product line is an often overlooked design trait but is critical for effective systematic reuse. Your products get upgraded or downgraded within a product line. Think of when you switched phone plans from a single user to a family plan or when you signed up for viewing premium content on an online website. Your design needs to support this in a seamless fashion. The design could support some form of licensing, a policy manager that knows your valid subscriptions and entitlements, and a means to migrate or setup data for a different flavor of a product. You cannot lose customer data and preferences if they upgrade to a different plan or a product in a product line. Reusable assets have to store, access, and update relevant data as a new version is introduced or bug fixes are made.