Object-Oriented Software Engineering with Eiffel (Addison-Wesley Eiffel in Practice Series)