Object-Oriented Software Engineering Anton Eliens Vrije Universiteit, Amsterdam CMG Course - 10 juni 1998 ------------------------------------- http://www.cs.vu.nl/~eliens/online/courses/cmg/oo Topics: OO technology The OO life cycle Project Management Application Frameworks Current developments and trends Section: Introduction If OO is the Answer, What is the Question? Keywords and phrases the OO lifecycle -- modeling encapsulation, inheritance, delegation, polymorphism specification and implementation inheritance design by contract interfaces, components and frameworks idioms, patterns, software architecture Characterizations OO = encapsulation + inheritance OO = data abstraction + polymorphism OO = interfaces + components OO = types + implementations OO = CORBA + Application Frameworks OO = Java + nothing else OO = a metaphor + hype OO = everything I can sell ... Let's have a look at the Introduction from Principles of Object-Oriented Software Development Section: Managing O-O Projects Did YOU ever manage a project? Critical Success Factors use incremental scheduling and staging find and fix failing ideas develop a habit of delivering Get: sponsor, project manager, technical leader Key Failure Indicators absence of incremental development use of C++ in commercial IS see Surviving Object-Oriented Projects: A managers Guide OO - Success and Failure OO = technology + mind-set it might be new technology to your organisation developers love it! requires and enables communication between groups adopting OO may succeed or fail! Possible benefits - responsiveness responsiveness - variations on a theme responsiveness to change! time-to-market communication - developers, users, executives maintenance, reuse, productivity GUI development morale -- cutting-edge technology Drawbacks Are YOU underestimating? productivity takes time hazards of C++ (and Java, ...) reuse is difficult establishing a software process business-modeling or software design? CASE helps? You will pay for: training, experience, tools, consultants, ... The hazards of C++? C++ won the language war over Eiffel, Objective-C, SOM, C@+, and Java? Java -- relative simplicity and portability Managing (the complexity of) C++ misconception: C++ is like C consider using another language Why does C++ exist? - engineering and systems programming create a subset of the language design and coding standards use people with knowledge! Risk-reduction Strategies look carefully all around the project detect the risks! list the risks in order work on the risks in order of danger see Risk Avoidance Patterns Section: Case studies: Application Framework Applications Frameworks The hush Framework Section: Technology and Trends UML Risks Java Frameworks Contracts CORBA Patterns DOT Subsection: UML The Unified Modeling Language use case diagram class diagram behavior diagrams: statechart diagram activity diagram interaction diagrams: sequence diagram collaboration diagram implementation diagrams: component diagram deployment diagram ------------------------------------- For some background see: Ch. 11: Methods and Tools Subsection: UML - Quick Reference and Overview See the Rational Rose Quick Reference at http://www.rational.com/uml Subsection: Contracts Design by Contract formal basis -- pre and post conditions refinement -- by inheritance or polymorphis runtime checks -- division of responsibility see Ch. 3, Contracts Subsection: Frameworks Frameworks = Components + Patterns Ralph Johnson, CACM Nov. 1997 Self-documentation Principle Bertrand Meyer, OO Software Construction 2nd ed. the designer of a module should strive to make all information about the module part of the module itself ... Section: The benefits of frameworks stem from the inversion of control A Framework defines an Architecture? Software Architecture = a set of rules, guidelines, interfaces, and conventions used to define how components and applications communicate and interoperate with eachother ... see patterns Subsection: Patterns A Catalogue of Design patterns a common design vocabulary documentation and learning aid an adjunct to existing methods a target for redesign see the GOF Design Patterns and the Patterns Homepage The Pattern Schema structure Name - handle increases design vocabulary Problem - when to apply explains the problem and the conflict Solution - general arrangement design, responsibilities, collaborations Consequences - tradeoffs to understand the costs and benefits Causes for Redesign design for change creating an object by specifying a class explicitly -- Abstract Factory, Factory Method, Prototype dependence on specific operations Chain of Responsibilty, Command dependence on hardware & software platforms -- Abstract Factory, bridge dependence on object implementation or representation Abstract Factory, Bridge, Memento, Proxy algorithm dependence -- Builder, Iterator, Strategy, Template Method, Visitor extending functionality by subclassing -- Bridge, Chain, Composite, Decorator, Observer tight coupling -- Abstract Factpry, Bridge, Chain of Responsibilities, Command, Facade, Mediator, Observer inability to alter classes conveniently -- Adaptor, Decorator, Visitor Kinds of Patterns creational patterns -- factory, singleton, ... structural patterns -- adaptor, composite, bridge, ... behavioral patterns -- mediator, observer, command, ... see also see UML Subsection: Java If Java is the Answer, What is the Question? see Ted Lewis, IEEE Computer, March 1997, p. 136 The dream: UNCOL Java is pervasive remember, most of Java is just warmed-up C/C++ UNCOL = Universal Common Language (1963) Algol -> PL/I -> Pascal -> Ada -> C++ -> ... Java as UNCOL: the dial-tone of the Internet if todays languages are inadequate for Software then Java must be inadequate too ... Hostages of legacy code our responsibility is that future applications (built with Java) are well-behaved legacy systems US DOD: 30 billion in year 2000 problem maintaining legacy COBOL from the 70's is a major industry ... by 2010, Java will be the maintenance tail wagging the software dog! Is Java doomed to repeat history? elegant minimalism is one of the goals of Java, remember Pascal, a toy language! Java lacks IO, OS support ... Java = watered-down C++, retrofitting Pascal Problems syntax: int i = ++i--; unruly scope rules: C++ plus f i n a l, n a t i v e, s y n c h r o n i z e d, ... threads: potential deadlocks Java: a better mousetrap? requirements: no support (assert) defacts: syntax, non-standard APIs components: Beans <-> ActiveX, CORBA, OpenDoc cycle time: Java does little to accommodate Internet time, like script languages do complexity: Java does not advance the intellectual frontier! Subsection: CORBA CORBA the issue is standardization by means of interfaces looking for consensus this differs from a de-facto standard imposed by market share ... See Ch 6: Component Technology and see frameworks Subsection: Risk Avoidance Patterns Dimensions of Risks Knowledge Teaming Productivity Ownership Distractions Don't discuss risks, unless you know how to do Project Management Section: Risk Reduction Strategies knowledge clear the fog -- get to the real issues early and regular delivery -- discover what you don't know prototype! -- discover how it really works create microcosm -- do something real, but with care teaming holistic diversity -- coordinate specialists! productivity gold rush -- start immediatly, adjust slowly ownership function / component owners -- create responsibility distraction someone always makes progress -- no total interruption team per task -- a subteam deals with diversions sacrifice one person -- and preserve the team training day care -- hire an expert to take care of novices Section: Conclusions OO offers a valid metaphor for SE powerful technology maturing design methods and notations a rich set of patterns Yet beware of the learning curve simplified hype cutting edge technology (over) ambitious projects Section: Assignments Assignments: (nederlandse versie) Write a paper about one of the following topics. The paper may discuss concepts or focus on a case study. The Unified Modeling Language -- UML Frameworks -- for example Sanfrancisco Write a comparative study of object-oriented analysis and design methods, focussing on aspects of project management. Describe a case study concerning the deployment of design patterns. Section: Course material Course Material Chapter 1 Additional material Ch 3: Design by Contract Ch 3: Methods and Tools ------------------------------------- Object Tutorials Resources http://www.rational.com -- Rational Rose, UML http://www.ibm.com/java/sanfrancisco -- IBM Java San Francisco Framework Papers and Reports http://www.rational.com/uml/html/summary -- UML Summary http://www.ibm.com/Java/Sanfrancisco/prd_summary.html -- Sanfrancisco Technical Summary