A software development team must choose a type of programming design that will provide them with the ability to make changes to the code at any time during the development cycle. Also, the design must enable the developers to easily reuse code in other programs. What programming design should the team choose?