ObjectOriented Software Engineering Anton Elins Vrije Universiteit Amsterdam
Object-Oriented Software Engineering Anton Eliëns Vrije Universiteit, Amsterdam http: //www. cs. vu. nl/~eliens/online/courses/oo Postacademische Cursus Informatie Technologie vrije Universiteit amsterdam
Topics: • • • Basic OO technology Application Framework(s) Universal Modeling Language Design Patterns Project Management Current developments and trends Postacademische Cursus Informatie Technologie vrije Universiteit amsterdam
Introduction If OO is the Answer, What is the Question? Postacademische Cursus Informatie Technologie vrije Universiteit amsterdam
Keywords and phrases • • • the OO lifecycle -- modelling encapsulation, inheritance, delegation, polymorphism specification and implementation inheritance design by contract interfaces, components and frameworks idioms, patterns, software architecture Postacademische Cursus Informatie Technologie vrije Universiteit amsterdam
Themes and Variations • • • abstraction -- the object metaphor modeling -- understanding structure and behavior software architecture -- mastering complexity frameworks -- patterns for problem solving components -- scalable software Postacademische Cursus Informatie Technologie vrije Universiteit amsterdam
Object Terminology • • • objects -- packet containing data and procedures methods -- deliver service message -- request to execute a method class -- template for creating objects instance -- an object that belongs to a class encapsulation -- information hiding by objects inheritance -- allowing the reuse of class spec. s class hierarchy -- tree structure inheritance relations polymorphism -- to hide different implementations Postacademische Cursus Informatie Technologie vrije Universiteit amsterdam
Features of OOP • • information hiding: state, autonomous behavior data abstraction: emphasis on what rather than how dynamic binding: binding at runtime, polymorphism , virtual inheritance: incremental changes (specialization), reusability Postacademische Cursus Informatie Technologie vrije Universiteit amsterdam functions
Benefits of OOP • OO = encapsulation + inheritance • modularity -- autonomous entities, cooperation through exchanges of messages • deferred commitment -- the internal workings of an object can be redefined without changing other parts of the system • reusability -- refining classes through inheritance • naturalness -- object-oriented analysis/design, modeling Postacademische Cursus Informatie Technologie vrije Universiteit amsterdam
The San Francisco Framework How useful is an OO framework? Postacademische Cursus Informatie Technologie vrije Universiteit amsterdam
• Example - San Francisco Framework Postacademische Cursus Informatie Technologie vrije Universiteit amsterdam
A framework is. . . • • a collection of components a generic solution for a class of problems a frame of mind for solving problems a set of architectural constraints Postacademische Cursus Informatie Technologie vrije Universiteit amsterdam
The San Francisco Framework • • • is meant to develop business applications is based on Java technology may solve 70% of your problem leaves 30% (minimum) to solve for you may set a standard or may fail to do so. . . Postacademische Cursus Informatie Technologie vrije Universiteit amsterdam
San Francisco - motivation • The project was started when several software vendors asked IBM to help modernizing their application products • However, there were several barriers preventing them from being able to update their applications Postacademische Cursus Informatie Technologie vrije Universiteit amsterdam
Barriers to modernizing • (1) The problem of how to retrain their development staff to effectively use OO technology. • (2) The risk involved in moving to a new technology. • (3) moving -> the cost of the change • The software developers realized they needed some basic infrastructure. • Many companies could not develop this infrastructure themselves. Postacademische Cursus Informatie Technologie vrije Universiteit amsterdam
San Francisco - the press • The San Francisco project helps to solve these problems by offering developers Business Process Components, • designed as frameworks that provides an object oriented infrastructure, • a consistent application programming model, and • some default business logic • The frameworks make it easier to move to OO technology because developers use well-tested services instead of building their own. Postacademische Cursus Informatie Technologie vrije Universiteit amsterdam
Postacademische Cursus Informatie Technologie vrije Universiteit amsterdam
San Francisco Framework - layers • Core Business Process Layer - the highest • Common Business Objects Layer - middle • Foundation Layer - lowest Postacademische Cursus Informatie Technologie vrije Universiteit amsterdam
Core Business Processes • The objective for this layer is to create a sound architecture and highly extensible OO implementation for the basic structure and behavior which any application provider delivering a solution in the application doamin would require: • Accounts Receivable/Payable Ledger • General Ledger Framework • Sales Order Management Framework • Purchase Order Management Postacademische Cursus Informatie Technologie vrije Universiteit amsterdam
Postacademische Cursus Informatie Technologie vrije Universiteit amsterdam
Common Business Objects • • Business Objects common to multiple domains Common Application level Services CBO: Business Partner Address Number - decimal structure Currency - how many euros in a dollar? Postacademische Cursus Informatie Technologie vrije Universiteit amsterdam
Foundation Layer • Foundation Object Model Classes • Utilities • in other words: it provides the infrastructure • comment: reinventing the wheel is not a big problem, because the wheel is a terrific invention Postacademische Cursus Informatie Technologie vrije Universiteit amsterdam
Foundation Object Model Classes • • • Command Entity Dependent Collection/Iterator Factory • you need to study Design Patterns to appreciate these. . . Postacademische Cursus Informatie Technologie vrije Universiteit amsterdam
Using the San Francisco Framework • … The San Francisco Frameworks are designed to make many types of extensions easy for application developers: • overriding the default business logic in supplied methods • adding additional attributes to existing classes • adding additional methods to existing classes • from the report: Complete documentation will be provided … Postacademische Cursus Informatie Technologie vrije Universiteit amsterdam
Example • • Two classes: Receipt and Purchase order Line default attributes, methods default business logic: inspect Quality on receipt Extension: enhance this logic subclass Receipt override inspection method change logic to include checks against supplier tables, and hazardous or high value products Postacademische Cursus Informatie Technologie vrije Universiteit amsterdam
Postacademische Cursus Informatie Technologie vrije Universiteit amsterdam
San Francisco - issues • • Standards: OMG/CORBA Business Issues Technology Integration: Compound Documents: Lotus Notes, Java. Beans, Active X Business process Modeling and Control: workflow engines may be used as glue … • Internet/Intranet and Java: applications may be designed …. • Conclusions: … a bit premature. . . Postacademische Cursus Informatie Technologie vrije Universiteit amsterdam
Beyond Object-Orientation? Postacademische Cursus Informatie Technologie vrije Universiteit amsterdam
Trends -- modeling patterns -- examples of design UML -- Unified Modeling Language Technologies -- components Web -- global infrastructure CORBA/DCOM - the software bus Java -- the platform? Challenges Applications -> Frameworks <- Patterns Postacademische Cursus Informatie Technologie vrije Universiteit amsterdam
Challenges in O-O • • • vertical framework development -- finance, medical care, insurance separation of 'logic' from 'control' -- business rules distributed object technology -- heterogeneous systems visualisation -- structure and processes knowledge intensive applications -- declarative heterogeneous systems - fragmented applications Postacademische Cursus Informatie Technologie vrije Universiteit amsterdam
Universal Modeling Language • • • … why you need models? Models are necessary to communicate, to stabilize abstractions as a reference for the implementation and maintenance and you need an agreement on the notation and formalisms in which you express your models Postacademische Cursus Informatie Technologie vrije Universiteit amsterdam
Unified Modeling Language Introduction Class diagrams Use cases Interaction diagrams Package and deployment diagrams State and activity diagrams Discussion Postacademische Cursus Informatie Technologie vrije Universiteit amsterdam
The Unified Modeling Language (UML) resulted from a joint effort of leading experts in object-oriented analysis and design, Grady Booch, Jim Rumbaugh and Ivar Jacobson, also known as the three amigos, all currently employees of Rational. Postacademische Cursus Informatie Technologie vrije Universiteit amsterdam
Unified Modeling Language UML • • • class diagrams -- conceptual structure use cases -- functional requirements interaction diagrams -- operational characteristics package and deployment diagrams -- implementation state and activity diagrams -- dynamic behavior See http: //www. rational. com/uml and UML Distilled, [Fowler 97]. Postacademische Cursus Informatie Technologie vrije Universiteit amsterdam
Class diagrams Postacademische Cursus Informatie Technologie vrije Universiteit amsterdam
Use cases Postacademische Cursus Informatie Technologie vrije Universiteit amsterdam
Interaction diagrams Postacademische Cursus Informatie Technologie vrije Universiteit amsterdam
Package and component diagrams Postacademische Cursus Informatie Technologie vrije Universiteit amsterdam
State and activity diagrams Postacademische Cursus Informatie Technologie vrije Universiteit amsterdam
Event annotations event(arguments)[conditions]/action Postacademische Cursus Informatie Technologie vrije Universiteit amsterdam
Discussion Postacademische Cursus Informatie Technologie vrije Universiteit amsterdam
The UML toolbox is very rich. It allows you to model every conceivable aspect of the system. Nevertheless, to my mind, graphical models are not always appropriate. But, on the other hand, most people like them and they often make a good impression, suggesting clarity. . . Postacademische Cursus Informatie Technologie vrije Universiteit amsterdam
Examples - interactive drawing tool - the reactor pattern (events) - business process modeling - the observer pattern Postacademische Cursus Informatie Technologie vrije Universiteit amsterdam
Interactive drawing tool Postacademische Cursus Informatie Technologie vrije Universiteit amsterdam
Reactor (event-handling) pattern Postacademische Cursus Informatie Technologie vrije Universiteit amsterdam
Reactor - Interaction diagram (events) Postacademische Cursus Informatie Technologie vrije Universiteit amsterdam
Business process modeling Postacademische Cursus Informatie Technologie vrije Universiteit amsterdam
(simulation) event state transition diagram Postacademische Cursus Informatie Technologie vrije Universiteit amsterdam
Observer Pattern Postacademische Cursus Informatie Technologie vrije Universiteit amsterdam
Basic OO Technology determines the effectiveness of the approach Postacademische Cursus Informatie Technologie vrije Universiteit amsterdam
Concepts • • Encapsulation Data hiding Inheritance Polymorphism Postacademische Cursus Informatie Technologie vrije Universiteit amsterdam
Encapsulation • • An object contains data and methods It provides a boundary: to the world outside to its ‘children’ Postacademische Cursus Informatie Technologie vrije Universiteit amsterdam
Information hiding • • Reduces complexity Allows you to defer implementations Remember: Ignorance is bliss Helps in decoupling components Postacademische Cursus Informatie Technologie vrije Universiteit amsterdam
Inheritance • • A mechanism for code-sharing Supports incremental development Organize by classification Allows for abstract interfaces Postacademische Cursus Informatie Technologie vrije Universiteit amsterdam
Polymorphism • • • An object may have multiple types An abstract type: when it is used A concrete type: when it is created An object’s type is determined by its behavior An object’s type is determined by the messages it allows Postacademische Cursus Informatie Technologie vrije Universiteit amsterdam
Postacademische Cursus Informatie Technologie vrije Universiteit amsterdam
Design by Contract • formal basis -- pre and post conditions • refinement -- by inheritance or polymorphism • runtime checks -- division of responsibility see Ch. 3, Contracts Postacademische Cursus Informatie Technologie vrije Universiteit amsterdam
Design by Contract Abstract Data Types ADT = state + behavior Object-Oriented Modeling data oriented Postacademische Cursus Informatie Technologie vrije Universiteit amsterdam
Responsibilities what rather than how to specify behavior Client client/server model makes request to perform a service Server provides service upon request Postacademische Cursus Informatie Technologie vrije Universiteit amsterdam
object = information + responsibilities Contracts a set of services Behavioral refinement improving contracts Postacademische Cursus Informatie Technologie vrije Universiteit amsterdam
Conformance -- behavioral refinement if B refines A then B may be used wherever A is allowed Postacademische Cursus Informatie Technologie vrije Universiteit amsterdam
Attributes more information refine Services better services Contracts more and better services A better service fewer restrictions for the client more obligations for the server Postacademische Cursus Informatie Technologie vrije Universiteit amsterdam
Object-Oriented Modeling prototyping, specification, refinement, interactions OOP = Contracts + Refinements Postacademische Cursus Informatie Technologie vrije Universiteit amsterdam
Idioms and Patterns • • polymorphism -- inheritance and delegation idioms -- realizing concrete types patterns -- a catalogue of design patterns events -- the reactor pattern Additional keywords and phrases: generic types, assertions, canonical classes, event-driven computation Postacademische Cursus Informatie Technologie vrije Universiteit amsterdam
A catalogue of design patterns Subsections: Creational Patterns Structural Patterns Behavioral Patterns Postacademische Cursus Informatie Technologie vrije Universiteit amsterdam
A Catalogue of Design Patterns • • a common design vocabulary documentation and learning aid an adjunct to existing methods a target for redesign Postacademische Cursus Informatie Technologie vrije Universiteit amsterdam
The Pattern Schema 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 Postacademische Cursus Informatie Technologie vrije Universiteit amsterdam
design for change Causes for Redesign • 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 Postacademische Cursus Informatie Technologie vrije Universiteit amsterdam
• algorithm dependence -- Iterator, Strategy, Template Method, Visitor • extending functionality by subclassing -- Bridge, Composite, Decorator, Observer • tight coupling -- Abstract Factory, Bridge, Chain of Responsibilities, Command, Facade, Mediator, Observer • inability to alter classes conveniently -- Adaptor, Decorator, Postacademische Cursus Informatie Technologie vrije Universiteit amsterdam
Creational Patterns Postacademische Cursus Informatie Technologie vrije Universiteit amsterdam
Creational Patterns • • Factory -- hide concrete classes Factory Method -- virtual constructors Prototype -- dynamic creation by cloning Singleton -- one instance only Postacademische Cursus Informatie Technologie vrije Universiteit amsterdam
Structural Patterns object and class composition Pattern Composite Flyweight Adaptor Bridge Decorator Facade Proxy Postacademische Cursus Informatie Technologie Alias Remarks part/whole collections of components part/whole* extrinsic state, many objects wrapper resolves inconsistencies handle/body abstraction to implementation wrapper to introduce functionality wrapper* provides unified interface surrogate to defer. . . remote, virtual, protection vrije Universiteit amsterdam
Behavioral Patterns cooperation algorithms and the assignment of responsibilities between objects class Template Method -- the skeleton of an algorithm Interpreter -- to evaluate expressions object composition Mediator -- provides indirection Chain of Responsibility -- connect objects to interact Observer -- to handle dependencies Postacademische Cursus Informatie Technologie vrije Universiteit amsterdam
Encapsulating behavior • • • objectify! Command -- action + undo Strategy -- choice of algorithms Visitor -- decouple traversal and operations Iterator -- access and traversal State -- object state -> behavioral change Postacademische Cursus Informatie Technologie vrije Universiteit amsterdam
The Observer Pattern Observer one-to-many dependencies and notification Consequences abstract coupling between subject and observer constraint propagation deals with unexpected updates Postacademische Cursus Informatie Technologie vrije Universiteit amsterdam
Postacademische Cursus Informatie Technologie vrije Universiteit amsterdam
Component Technology • • • objects versus components -- definitions interoperability requirements for distribution a simple workgroup application extending hush with CORBA Additional keywords and phrases: (D)COM, Java, CORBA, OLE, persistent objects, ODMG, workgroup Postacademische Cursus Informatie Technologie vrije Universiteit amsterdam
Objects versus components Subsections: Definitions The technology matrix Component myths Postacademische Cursus Informatie Technologie vrije Universiteit amsterdam
Definitions Component substitutability unit of independent deployment unit of third party composition no persistent state Object identity unit of instantiation (persistent) state encapsulation of state and behavior Postacademische Cursus Informatie Technologie vrije Universiteit amsterdam
A software component is a unit of composition with contractually specified interfaces and explicit context dependencies only. A software component can be deployed independently and is subject to composition by third parties. Szyperski Postacademische Cursus Informatie Technologie vrije Universiteit amsterdam
The technology matrix COM DCOM CORBA Java/Beans Java/RMI Voyager distribution mobility language platform * +/+ * * classes Java * + objects Java * Postacademische Cursus Informatie Technologie reflection +/+/+/+ + + vrije Universiteit amsterdam
Components: Myths and Reality component-ware allows for combining components if semantical issues can be resolved component-ware simplifies software distribution and maintenance development becomes more complex component-ware support mega applications it affects performance significantly component-ware is a revolution wrong, it is an evolution from OO and C/S Postacademische Cursus Informatie Technologie unknown source vrije Universiteit amsterdam
Component Questions • How to describe the interaction between components? • How to manage variety and flexibility? • How to guarantee critical system-wide properties? Postacademische Cursus Informatie Technologie vrije Universiteit amsterdam
Software architecture • • • architecture -- components and boundaries case study -- a framework for multimedia feature detection native objects -- the language boundary embedded logic -- the paradigm boundary architectural styles -- distributed object technology cross-platform development -- Unix versus Windows Additional keywords and phrases: components, information architecture, multimedia information retrieval, feature detection, portability Postacademische Cursus Informatie Technologie vrije Universiteit amsterdam
Elements of Architecture [Wolf] • processing elements -- transformation on data • data elements -- contain information • connections -- glue that holds elements together Postacademische Cursus Informatie Technologie vrije Universiteit amsterdam
Models and Views [Kruchten 95] • • • logical -- functional requirements process -- performance, availability, distribution physical -- scalability, configuration development -- organization of software modules scenarios -- instances of use cases Definitions http: //www. sei. cmu. edu/architecture/definitions. html Postacademische Cursus Informatie Technologie vrije Universiteit amsterdam
The software architecture of a program or computing system is the structure of the system, which comprises software components, the externally visible properties of those components, and their interrelationships. Bass et al. Postacademische Cursus Informatie Technologie vrije Universiteit amsterdam
Technological infrastructure [CS 2001] • • client-platform -- hardware, OS presentation services -- windows, multimedia application software -- code, business logic network -- communication support middleware -- distribution, (object) brokers server platform -- hardware, OS database -- data management system Postacademische Cursus Informatie Technologie vrije Universiteit amsterdam
Distributed Object Patterns [Corba. Patterns] Framework (class hierarchies) Applications (wrappers) System Enterprise (horizontal, vertical, metadata) (reference models, infrastructure, policies) Intra/Internet Postacademische Cursus Informatie Technologie (standards) vrije Universiteit amsterdam
Conclusions • OO offers – – a valid metaphor for SE powerful technology maturing design methods and notations a rich set of patterns Postacademische Cursus Informatie Technologie vrije Universiteit amsterdam
Yet beware of • • the learning curve simplified hype cutting edge technology (over) ambitious projects Postacademische Cursus Informatie Technologie vrije Universiteit amsterdam
Assignments: • Write a paper about one of the following topics. The paper may discuss concepts or focus on a case study. – The Unified Modelling Language -- UML – Frameworks -- for example San Francisco • 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. Postacademische Cursus Informatie Technologie vrije Universiteit amsterdam
Course material • Chapter 1 • Additional material – Ch 3: Design by Contract – Ch 11: 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 -- San Francisco Technical Summary Postacademische Cursus Informatie Technologie vrije Universiteit amsterdam
- Slides: 92