Chair of Software Engineering ATOT - Lecture 2, 2 April Advanced Topics in Object Technology Bertrand Meyer
Chair of Software Engineering ATOT - Lecture 2, 2 April Lecture 2: EiffelStudio and project presentation By Karine Arnout
Chair of Software Engineering ATOT - Lecture 2, 2 April Agenda for today EiffelStudio: The ISE Eiffel environment Project presentation
Chair of Software Engineering ATOT - Lecture 2, 2 April Agenda for today EiffelStudio: The ISE Eiffel environment Project presentation
Chair of Software Engineering ATOT - Lecture 2, 2 April EiffelStudio Introduction to the IDE The Diagram Tool Documentation generation Debugging Demo
Chair of Software Engineering ATOT - Lecture 2, 2 April Material available online Guided tour:
Chair of Software Engineering ATOT - Lecture 2, 2 April EiffelStudio Introduction to the IDE The Diagram Tool Documentation generation Debugging Demo
Chair of Software Engineering ATOT - Lecture 2, 2 April Introduction to the IDE One development window divided into four panels: Editor Context tool Clusters pane Features pane + Search and Favorites Toolbar customization Pick-and-drop mechanism
Chair of Software Engineering ATOT - Lecture 2, 2 April The editor Syntax highlighting Syntax completion (CTRL+Space) Class name completion (SHIFT+CTRL+Space) Smart indenting Block indent or exdent Block commenting or uncommenting Infinite level of Undo/Redo (reset after a save) Quick search features (F3 and SHIFT+F3)
Chair of Software Engineering ATOT - Lecture 2, 2 April The compiler Fast Produces efficient code Supports.NET Project Settings Tool
Chair of Software Engineering ATOT - Lecture 2, 2 April EiffelStudio Introduction to the IDE The Diagram Tool Documentation generation Debugging Demo
Chair of Software Engineering ATOT - Lecture 2, 2 April Class types: Cluster: A quick run through BON * DEFERRE D + EFFECTIV E ● PERSISTEN T ▲ INTERFACE D REUSED ROOT_CLASS ROOT_CLUSTER ▲ INTERFACED
Chair of Software Engineering ATOT - Lecture 2, 2 April A quick run through BON (cont’d) Inheritance link: Client links: + EFFECTIV E * DEFERRE D ROOT_CLASS REUSED ROOT_CLASS REUSED f expanded_f
Chair of Software Engineering ATOT - Lecture 2, 2 April The Diagram tool Provides “Real time” roundtrip reverse engineering Synchronized at each compilation Allows for different views
Chair of Software Engineering ATOT - Lecture 2, 2 April EiffelStudio Introduction to the IDE The Diagram Tool Documentation generation Debugging Demo
Chair of Software Engineering ATOT - Lecture 2, 2 April Documentation generation Multiple predefined formats Extendible formats Extremely powerful HTML generation with clickable diagrams
Chair of Software Engineering ATOT - Lecture 2, 2 April Metrics Hundreds of different metrics available Can be publicized on web sites for future comparison
Chair of Software Engineering ATOT - Lecture 2, 2 April EiffelStudio Introduction to the IDE The Diagram Tool Documentation generation Debugging Demo
Chair of Software Engineering ATOT - Lecture 2, 2 April Getting started with the debugger The system must be melted/frozen (finalized systems cannot be debugged) Use the Project Settings Tool to specify command line arguments Click the launch button
Chair of Software Engineering ATOT - Lecture 2, 2 April Setting breakpoints Use the flat formats to add breakpoints Tip: An efficient way of adding breakpoints consists in dropping a feature in the context tool Click in the margin to enable/disable single breakpoints Use the toolbar debug buttons to enable or disable all breakpoints globally
Chair of Software Engineering ATOT - Lecture 2, 2 April Running the application New display of the Development Window to include debugging information about: The current object (Object Tool) The arguments to the function being debugged (local variables) Possibility to control the number of elements the debugger displays for special objects (Arrays, Strings) Once on a breakpoint: possibility to step over / into / out next statement Possibility to interrupt the application at anytime (Pause Application button or SHIFT+CTRL+F5)
Chair of Software Engineering ATOT - Lecture 2, 2 April EiffelStudio Introduction to the IDE The Diagram Tool Documentation generation Debugging Demo
Chair of Software Engineering ATOT - Lecture 2, 2 April Agenda for today EiffelStudio: The ISE Eiffel environment Project presentation
Chair of Software Engineering ATOT - Lecture 2, 2 April Grading Exam (2h): 40% 2 July 2003 Project: 60% Development of a “Pattern Wizard” Deadline: 18 June 2003
Chair of Software Engineering ATOT - Lecture 2, 2 April The project Pattern Wizard Design + implementation in Eiffel GUI + Business model Documentation User guide: how to use the tool Developer guide: description of the architecture, main classes, limitations, how to extend the tool Test suite Thorough set of test cases
Chair of Software Engineering ATOT - Lecture 2, 2 April The Pattern Wizard Should cover at least the 10 following design patterns: Abstract Factory, Factory Method, Builder, Prototype, Singleton Adapter, Bridge, Composite, Decorator, Proxy (More is a bonus) Should be extendible to all design patterns described by Gamma et al. (Reference: Gamma et al.: Design Patterns, Addison-Wesley, 1995.)
Chair of Software Engineering ATOT - Lecture 2, 2 April Grading criteria Design (30 points) Soundness (5 points) Extendibility (5 points) Ease of use (5 points) Minimal requirements (15 points) Quality of contracts (20 points) Documentation (20 points) User guide (10 points) Developer guide (10 points) Test (10 points) Quality of test suite (5 points) Correctness of the tool (5 points) Quality of code (10 points) Style guidelines (5 points) Quality of code (5 points) Effort devoted to the project (10 points)
Chair of Software Engineering ATOT - Lecture 2, 2 April Pattern Wizard: onto the details… The template classes to be generated will be provided; for example: indexing description: "Abstract factory" deferred class FACTORY feature -- Factory methods new_product_a: PRODUCT_A is -- New product A deferred ensure product_a_not_void: Result /= Void end new_product_b: PRODUCT_B is -- New product B deferred ensure product_b_not_void: Result /= Void end
Chair of Software Engineering ATOT - Lecture 2, 2 April End of lecture 2