Object-Oriented Software Engineering Practical Software Development using UML and Java Chapitre 3: Basing Software Development on Reusable Technology.