CEN 4010 - Ninth Lecture Introduction to Software Engineering (CEN-4010) Instructor: Masoud Sadjadi Object Design.

Slides:



Advertisements
Similar presentations
Ch:8 Design Concepts S.W Design should have following quality attribute: Functionality Usability Reliability Performance Supportability (extensibility,
Advertisements

Conquering Complex and Changing Systems Object-Oriented Software Engineering Chapter 7, Object Design.
Using UML, Patterns, and Java Object-Oriented Software Engineering Chapter 8, Object Design: Reuse and Patterns (Lecture I)
©2007 · Georges Merx and Ronald J. NormanSlide 1 Chapter 5 Architecture-Driven Component Development.
Conquering Complex and Changing Systems Object-Oriented Software Engineering Chapter 7, Object Design.
“Chapter 9” Managing Object Design Done By: Alia Waled.
©Ian Sommerville 2006Software Engineering, 8th edition. Chapter 8 Slide 1 System models.
Using UML, Patterns, and Java Object-Oriented Software Engineering Chapter 8, Object Design: Reuse and Patterns.
Modified from Sommerville’s originalsSoftware Engineering, 7th edition. Chapter 8 Slide 1 System models.
Chapter 8, Object Design Introduction to Design Patterns
© 2006 Pearson Addison-Wesley. All rights reserved4-1 Chapter 4 Data Abstraction: The Walls.
Using UML, Patterns, and Java Object-Oriented Software Engineering Chapter 8, Object Design: Reuse and Patterns I.
Chapter 7, Object Design.
Creating Architectural Descriptions. Outline Standardizing architectural descriptions: The IEEE has published, “Recommended Practice for Architectural.
Modified from Sommerville’s originalsSoftware Engineering, 7th edition. Chapter 8 Slide 1 System models.
Conquering Complex and Changing Systems Object-Oriented Software Engineering Chapter 7, Object Design.
Feb. 23, 2004CS WPI1 CS 509 Design of Software Systems Lecture #5 Monday, Feb. 23, 2004.
Chapter 8 Object Design Reuse and Patterns. Finding Objects The hardest problems in object-oriented system development are: –Identifying objects –Decomposing.
Reuse Activities Selecting Design Patterns and Components
Bernd Bruegge & Allen Dutoit Object-Oriented Software Engineering: Conquering Complex and Changing Systems 1 Object Design  Object design  Detail requirements.
1 An introduction to design patterns Based on material produced by John Vlissides and Douglas C. Schmidt.
Using UML, Patterns, and Java Object-Oriented Software Engineering Chapter 8, Object Design: Reuse and Patterns I.
©Ian Sommerville 2006Software Engineering, 8th edition. Chapter 18 Slide 1 Software Reuse.
Software Engineering Muhammad Fahad Khan
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 18 Slide 1 Software Reuse.
The Design Discipline.
Design Patterns.
© 2007 Pearson Education, Inc. Publishing as Pearson Addison-Wesley 1 Detailed Design Overview and Mid-Level Class Modeling.
Implementation Yaodong Bi. Introduction to Implementation Purposes of Implementation – Plan the system integrations required in each iteration – Distribute.
Chapter 4 System Models A description of the various models that can be used to specify software systems.
System models Abstract descriptions of systems whose requirements are being analysed Abstract descriptions of systems whose requirements are being analysed.
SWE 316: Software Design and Architecture – Dr. Khalid Aljasser Objectives Lecture 11 : Frameworks SWE 316: Software Design and Architecture  To understand.
An Introduction to Software Architecture
Ceg860 (Prasad)L6MR1 Modularity Extendibility Reusability.
©Ian Sommerville 2000 Software Engineering, 6th edition. Slide 1 Component-based development l Building software from reusable components l Objectives.
Software Requirements Engineering CSE 305 Lecture-2.
An Introduction to Design Patterns. Introduction Promote reuse. Use the experiences of software developers. A shared library/lingo used by developers.
SOFTWARE DESIGN (SWD) Instructor: Dr. Hany H. Ammar
R R R 1 Frameworks III Practical Issues. R R R 2 How to use Application Frameworks Application developed with Framework has 3 parts: –framework –concrete.
Chapter 7 System models.
Using UML, Patterns, and Java Object-Oriented Software Engineering Chapter 8, Object Design: Reuse and Patterns.
System models l Abstract descriptions of systems whose requirements are being analysed.
Modified by Juan M. Gomez Software Engineering, 6th edition. Chapter 7 Slide 1 Chapter 7 System Models.
Systems Analysis and Design in a Changing World, 3rd Edition
Sommerville 2004,Mejia-Alvarez 2009Software Engineering, 7th edition. Chapter 8 Slide 1 System models.
Chapter 8 Object Design Reuse and Patterns. Object Design Object design is the process of adding details to the requirements analysis and making implementation.
CS 4850: Senior Project Fall 2014 Object-Oriented Design.
Design Model Lecture p6 T120B pavasario sem.
1 CSCD 326 Data Structures I Software Design. 2 The Software Life Cycle 1. Specification 2. Design 3. Risk Analysis 4. Verification 5. Coding 6. Testing.
Lecture 18: Object-Oriented Design
Design Patterns Software Engineering CS 561. Last Time Introduced design patterns Abstraction-Occurrence General Hierarchy Player-Role.
Review of Parnas’ Criteria for Decomposing Systems into Modules Zheng Wang, Yuan Zhang Michigan State University 04/19/2002.
February 8, 2006copyright Thomas Pole , all rights reserved 1 Lecture 3: Reusable Software Packaging: Source Code and Text Chapter 2: Dealing.
Analysis Yaodong Bi. Introduction to Analysis Purposes of Analysis – Resolve issues related to interference, concurrency, and conflicts among use cases.
CMSC 345 Fall 2000 OO Design. Characteristics of OOD Objects are abstractions of real-world or system entities and manage themselves Objects are independent.
CSIS 4850: CS Senior Project – Spring 2009 CSIS 4850: Senior Project Spring 2009 Object-Oriented Design.
CEN th Lecture Advance Software Engineering (CEN-5011) Instructor: Masoud Sadjadi Object Design: Specifying.
Object Design More Design Patterns Object Constraint Language Object Design Specifying Interfaces Review Exam 2 CEN 4010 Class 18 – 11/03.
Banaras Hindu University. A Course on Software Reuse by Design Patterns and Frameworks.
CLASSIFICATION OF DESIGN PATTERNS Hladchuk Maksym.
Why is Design so Difficult? Analysis: Focuses on the application domain Design: Focuses on the solution domain –The solution domain is changing very rapidly.
CompSci 280 S Introduction to Software Development
Chapter 8 Object Design: Reuse and Patterns 1.
Chapter 5 Designing the Architecture Shari L. Pfleeger Joanne M. Atlee
Introduction to Software Engineering (CEN-4010)
Chapter 8, Object Design: Reuse and Patterns
An Introduction to Software Architecture
Chapter 8, Object Design: Reuse and Patterns
Chapter 8, Object Design: Reuse and Patterns I
Design Yaodong Bi.
Presentation transcript:

CEN Ninth Lecture Introduction to Software Engineering (CEN-4010) Instructor: Masoud Sadjadi Object Design

Ninth LectureCEN 4010: Introduction to Software Engineering 2 Acknowledgements  Dr. Bernd Bruegge  Dr. Allen Dutoit Overview: Overview Reuse Concepts Inher., Deleg. Comp., FW, Lib Documentation JavaDoc & Pack. Summary

Ninth LectureCEN 4010: Introduction to Software Engineering 3 Agenda  Overview of Object Design  Reuse Concepts  Inheritance and Delegation  Components, Frameworks, and Libraries  System and Object Design Document  JavaDoc and Packaging  Summary Overview: Overview Reuse Concepts Inher., Deleg. Comp., FW, Lib Documentation JavaDoc & Pack. Summary

Ninth LectureCEN 4010: Introduction to Software Engineering 4 Object Design  Object design –is the process of adding details to the requirements analysis and making implementation decisions –The object designer must choose among different ways to implement the analysis model with the goal to minimize execution time, memory and other measures of cost.  Requirements Analysis: –Use cases, functional and dynamic model deliver operations for object model  Object Design: –Iterates on the models, in particular the object model and refine the models –Object Design serves as the basis of implementation Overview: Overview Reuse Concepts Inher., Deleg. Comp., FW, Lib Documentation JavaDoc & Pack. Summary

Ninth LectureCEN 4010: Introduction to Software Engineering 5 Object Design: Closing the Gap Overview: Overview Reuse Concepts Inher., Deleg. Comp., FW, Lib Documentation JavaDoc & Pack. Summary

Ninth LectureCEN 4010: Introduction to Software Engineering 6 App. vs. Solution Domain Objects  Application objects –also called domain objects. –represent concepts of the domain that are relevant to the system. –They are identified by the application domain specialists and by the end users.  Solution objects –represent concepts that do not have a counterpart in the application domain. –They are identified by the developers. –Examples: Persistent data stores, user interface objects, middleware. Overview: Overview Reuse Concepts Inher., Deleg. Comp., FW, Lib Documentation JavaDoc & Pack. Summary

Ninth LectureCEN 4010: Introduction to Software Engineering 7 Example Incident Report Requirements Analysis (Language of Application Domain) Incident ReportForm Object Design (Language of Solution Domain) Text boxMenuScrollbar Overview: Overview Reuse Concepts Inher., Deleg. Comp., FW, Lib Documentation JavaDoc & Pack. Summary

Ninth LectureCEN 4010: Introduction to Software Engineering 8 Refining App. Domain Objects  New objects are often needed during object design: –The use of design patterns introduces new classes –The implementation of algorithms may necessitate objects to hold values –New low-level operations may be needed during the decomposition of high-level operations  Example: The EraseArea() operation in a drawing program. –Conceptually very simple –Implementation  Area represented by pixels  Repair () cleans up objects partially covered by the erased area  Redraw() draws objects uncovered by the erasure  Draw() erases pixels in background color not covered by other objects Overview: Overview Reuse Concepts Inher., Deleg. Comp., FW, Lib Documentation JavaDoc & Pack. Summary

Ninth LectureCEN 4010: Introduction to Software Engineering 9 Examples of Object Design Activities  Identification of existing components  Full definition of associations  Full definition of classes –System Design => Service –Object Design => API  Specifying the contract for each component  Choosing algorithms and data structures  Identifying possibilities of reuse  Detection of solution-domain classes  Optimization  Increase of inheritance  Decision on control  Packaging Overview: Overview Reuse Concepts Inher., Deleg. Comp., FW, Lib Documentation JavaDoc & Pack. Summary

Ninth LectureCEN 4010: Introduction to Software Engineering 10 Object Design Activities (1) Specifying constraints Specifying types & signatures Identifying patterns Adjusting patterns Identifying missing attributes & operations Specifying visibility Specification Specifying exceptions Reuse Identifying components Adjusting components Select Subsystem Overview: Overview Reuse Concepts Inher., Deleg. Comp., FW, Lib Documentation JavaDoc & Pack. Summary

Ninth LectureCEN 4010: Introduction to Software Engineering 11 Object Design Activities (1) Collapsing classes RestructuringOptimization Revisiting inheritance Optimizing access paths Caching complex computations Delaying complex computations Check Use Cases Realizing associations Overview: Overview Reuse Concepts Inher., Deleg. Comp., FW, Lib Documentation JavaDoc & Pack. Summary

Ninth LectureCEN 4010: Introduction to Software Engineering 12 Agenda  Overview of Object Design  Reuse Concepts  Inheritance and Delegation  Components, Frameworks, and Libraries  System and Object Design Document  JavaDoc and Packaging  Summary Overview: Overview Reuse Concepts Inher., Deleg. Comp., FW, Lib Documentation JavaDoc & Pack. Summary

Ninth LectureCEN 4010: Introduction to Software Engineering 13 Reuse Motivation  Observation about Modeling of the Real World in [Gamma et al 94] –Strict modeling of the real world leads to a system that reflects today’s realities but not necessarily tomorrow’s. –There is a need for reusable and flexible designs. –Design knowledge complements application domain knowledge and solution domain knowledge. Overview: Overview Reuse Concepts Inher., Deleg. Comp., FW, Lib Documentation JavaDoc & Pack. Summary

Ninth LectureCEN 4010: Introduction to Software Engineering 14 Reuse Heuristics  Look for existing classes in class libraries –JSAPI, JTAPI,....  Select data structures appropriate to the algorithms –Container classes –Arrays, lists, queues, stacks, sets, trees,...  Define new internal classes and operations only if necessary –Complex operations defined in terms of lower-level operations might need new classes and operations Overview: Overview Reuse Concepts Inher., Deleg. Comp., FW, Lib Documentation JavaDoc & Pack. Summary

Ninth LectureCEN 4010: Introduction to Software Engineering 15 Reuse  Main goal: –Reuse knowledge and functionality from previous experience to current problem. –Approaches: Inheritance and Delegation  Inheritance –Interface inheritance  Used for concept classifications  type hierarchies –Implementation inheritance  Used for code reuse.  Delegation –An alternative to implementation inheritance.  Used for code reuse. Overview: Overview Reuse Concepts Inher., Deleg. Comp., FW, Lib Documentation JavaDoc & Pack. Summary

Ninth LectureCEN 4010: Introduction to Software Engineering 16 Agenda  Overview of Object Design  Reuse Concepts  Inheritance and Delegation  Components, Frameworks, and Libraries  System and Object Design Document  JavaDoc and Packaging  Summary Overview: Overview Reuse Concepts Inher., Deleg. Comp., FW, Lib Documentation JavaDoc & Pack. Summary

Ninth LectureCEN 4010: Introduction to Software Engineering 17 Metamodel for Inheritance  Inheritance is used to achieve two different goals: Taxonomies and Reuse. Inheritance Interface Inheritance Implementation Inheritance for Reuse Taxonomy Inheritance detected by generalization Inheritance detected by specialization Analysis activity Object Design Overview: Overview Reuse Concepts Inher., Deleg. Comp., FW, Lib Documentation JavaDoc & Pack. Summary

Ninth LectureCEN 4010: Introduction to Software Engineering 18 Taxonomy Example Mammal Tiger Wolf Wale Overview: Overview Reuse Concepts Inher., Deleg. Comp., FW, Lib Documentation JavaDoc & Pack. Summary

Ninth LectureCEN 4010: Introduction to Software Engineering 19 Implementation Inheritance  A very similar class is already implemented that does almost the same as the desired class implementation.  Example: –I have a List class, I need a Stack class. –How about subclassing the Stack class from the List class and providing three methods, Push() and Pop(), Top()? Add() Remove() List Push() Pop() Stack Top() “Already implemented” Overview: Overview Reuse Concepts Inher., Deleg. Comp., FW, Lib Documentation JavaDoc & Pack. Summary

Ninth LectureCEN 4010: Introduction to Software Engineering 20 Problems  Problem with implementation inheritance: –Some of the inherited operations might exhibit unwanted behavior. –What happens if the Stack user calls Remove() instead of Pop()? –What happens if the superclass implementation is modified? –The subclass developer is exposed to internal information about the superclass and this may result in tight coupling of subclass to superclass. Overview: Overview Reuse Concepts Inher., Deleg. Comp., FW, Lib Documentation JavaDoc & Pack. Summary

Ninth LectureCEN 4010: Introduction to Software Engineering 21 Impl. vs Interface Inheritance  Implementation inheritance –Also called class inheritance –Goal: Extend an application’s functionality by reusing functionality in parent class –Inherit from an existing class with some or all operations already implemented  Interface inheritance –Also called subtyping –Inherit from an abstract class with all operations specified, but not yet implemented Overview: Overview Reuse Concepts Inher., Deleg. Comp., FW, Lib Documentation JavaDoc & Pack. Summary

Ninth LectureCEN 4010: Introduction to Software Engineering 22 Delegation  Delegation –is an alternative to implementation inheritance. –is as powerful as implementation inheritance.  In Delegation two objects are involved in handling a request –A receiving object delegates operations to its delegate. –The developer can make sure that the receiving object does not allow the client to misuse the delegate object. Client Receiver Delegate Delegates to calls Overview: Overview Reuse Concepts Inher., Deleg. Comp., FW, Lib Documentation JavaDoc & Pack. Summary

Ninth LectureCEN 4010: Introduction to Software Engineering 23 Delegation vs. Impl. Inheritance  Inheritance: Extending a base class by a new operation or overwriting an operation.  Delegation: Catching an operation and sending it to another object.  Which of the following models is better for implementing a stack? +Add() +Remove() List Stack +Push() +Pop() +Top() +Push() +Pop() +Top() Stack Add() Remove() List Overview: Overview Reuse Concepts Inher., Deleg. Comp., FW, Lib Documentation JavaDoc & Pack. Summary

Ninth LectureCEN 4010: Introduction to Software Engineering 24 Comparison  Delegation –Pro:  Flexibility: Any object can be replaced at run time by another one (as long as it has the same type) –Con:  Inefficiency: Objects are encapsulated.  Inheritance –Pro:  Straightforward to use  Supported by many programming languages  Easy to implement new functionality –Con:  Inheritance exposes a subclass to the details of its parent class  Any change in the parent class implementation forces the subclass to change (which requires recompilation of both) Overview: Overview Reuse Concepts Inher., Deleg. Comp., FW, Lib Documentation JavaDoc & Pack. Summary

Ninth LectureCEN 4010: Introduction to Software Engineering 25 Agenda  Overview of Object Design  Reuse Concepts  Inheritance and Delegation  Components, Frameworks, and Libraries  System and Object Design Document  JavaDoc and Packaging  Summary Overview: Overview Reuse Concepts Inher., Deleg. Comp., FW, Lib Documentation JavaDoc & Pack. Summary

Ninth LectureCEN 4010: Introduction to Software Engineering 26 Reuse Code  Select existing code –class libraries –frameworks –components  Adjust the class libraries, framework or components –Change the API if you have the source code. –Use the adapter or bridge pattern if you don’t have access  What are the differences among class libraries, frameworks, and components? –They are all composed of a set of related classes. Overview: Overview Reuse Concepts Inher., Deleg. Comp., FW, Lib Documentation JavaDoc & Pack. Summary

Ninth LectureCEN 4010: Introduction to Software Engineering 27 Frameworks  A framework is a reusable partial application that can be specialized to produce custom applications.  Frameworks are targeted to particular technologies, such as data processing or cellular communications, or to application domains, such as user interfaces or real-time avionics. Overview: Overview Reuse Concepts Inher., Deleg. Comp., FW, Lib Documentation JavaDoc & Pack. Summary

Ninth LectureCEN 4010: Introduction to Software Engineering 28 Key Benefits  Reusability –leverages of the application domain knowledge and prior effort of experienced developers.  Extensibility –is provided by hook methods, which are overwritten by the application to extend the framework. –Hook methods systematically decouple the interfaces and behaviors of an application domain from the variations required by an application in a particular context. Overview: Overview Reuse Concepts Inher., Deleg. Comp., FW, Lib Documentation JavaDoc & Pack. Summary

Ninth LectureCEN 4010: Introduction to Software Engineering 29 Classification of Frameworks  White-Box Frameworks –Extensibility achieved through inheritance and dynamic binding. –Existing functionality is extended by subclassing framework base classes and overriding predefined hook methods –Often design patterns such as the template method pattern are used to override the hook methods.  Black-Box Frameworks –Extensibility achieved by defining interfaces for components that can be plugged into the framework. –Existing functionality is reused by defining components that conform to a particular interface –These components are integrated with the framework via delegation. Overview: Overview Reuse Concepts Inher., Deleg. Comp., FW, Lib Documentation JavaDoc & Pack. Summary

Ninth LectureCEN 4010: Introduction to Software Engineering 30 Another Classification of Frameworks  Infrastructure frameworks –aim to simplify the software development process –System infrastructure frameworks are used internally within a software project and are usually not delivered to a client.  Middleware frameworks –are used to integrate existing distributed applications and components. –Examples: MFC, DCOM, Java RMI, WebObjects, WebSphere, WebLogic Enterprise Application [BEA].  Enterprise application frameworks –are application specific and focus on domains –Example domains: telecommunications, avionics, environmental modeling, manufacturing, financial engineering, enterprise business activities. Overview: Overview Reuse Concepts Inher., Deleg. Comp., FW, Lib Documentation JavaDoc & Pack. Summary

Ninth LectureCEN 4010: Introduction to Software Engineering 31 Class libraries and Frameworks  Class Libraries: –Less domain specific –Provide a smaller scope of reuse. –Class libraries are passive; no constraint on control flow.  Framework: –Classes cooperate for a family of related applications. –Frameworks are active; affect the flow of control.  In practice, developers often use both: –Frameworks often use class libraries internally to simplify the development of the framework. –Framework event handlers use class libraries to perform basic tasks (e.g. string processing, file management, numerical analysis…. ) Overview: Overview Reuse Concepts Inher., Deleg. Comp., FW, Lib Documentation JavaDoc & Pack. Summary

Ninth LectureCEN 4010: Introduction to Software Engineering 32 Components and Frameworks  Components –Self-contained instances of classes. –Plugged together to form complete applications. –Defines a cohesive set of operations –Can be used based on the syntax and semantics of the interface. –Components may even be reused on the binary code level.  The advantage is that applications do not always have to be recompiled when components change.  Frameworks: –Often used to develop components. –Components are often plugged into black-box frameworks. Overview: Overview Reuse Concepts Inher., Deleg. Comp., FW, Lib Documentation JavaDoc & Pack. Summary

Ninth LectureCEN 4010: Introduction to Software Engineering 33 Agenda  Overview of Object Design  Reuse Concepts  Inheritance and Delegation  Components, Frameworks, and Libraries  System and Object Design Document  JavaDoc and Packaging  Summary Overview: Overview Reuse Concepts Inher., Deleg. Comp., FW, Lib Documentation JavaDoc & Pack. Summary

Ninth LectureCEN 4010: Introduction to Software Engineering 34 Documenting the System Design  Purpose –System design is documented in the System Design Document (SDD). It describes design goals set by the project, subsystem decomposition (with UML class diagrams), hardware/software mapping (with UML deployment diagrams), data management, access control, control flow mechanisms, and boundary conditions. The SDD is used to define interfaces between teams of developers and serve as a reference when architecture-level decisions need to be revisited.  Audience –The audience for the SDD includes the project management, the system architects (i.e., the developers who participate in the system design), and the developers who design and implement each subsystem.  Template – mentTemplate Overview: Overview Reuse Concepts Inher., Deleg. Comp., FW, Lib Documentation JavaDoc & Pack. Summary

Ninth LectureCEN 4010: Introduction to Software Engineering 35 SDD Template Outline 1.Introduction 1.1 Purpose of the system 1.2 Design goals 1.3 Definitions, acronyms, and abbreviations 1.4 References 1.5 Overview 2.Current software architecture 3.Proposed software architecture 1.Overview 2.Subsystem decomposition 3.Hardware/software mapping 4.Persistent data management 5.Access control and security 6.Global software control 7.Boundary conditions 4.Subsystem services Glossary Overview: Overview Reuse Concepts Inher., Deleg. Comp., FW, Lib Documentation JavaDoc & Pack. Summary

Ninth LectureCEN 4010: Introduction to Software Engineering 36 Documenting the Object Design  Purpose –Object design is documented in the Object Design Document (ODD). It describes object design trade- offs made by developers, guidelines they followed for subsystem interfaces, the decomposition of subsystems into packages and classes, and the class interfaces. The ODD is used to exchange interface information among teams and as a reference during testing.  Audience –The audience for the ODD includes system architects (i.e., the developers who participate in the system design), developers who implement each subsystem, and testers.  Template – ocumentTemplate Overview: Overview Reuse Concepts Inher., Deleg. Comp., FW, Lib Documentation JavaDoc & Pack. Summary

Ninth LectureCEN 4010: Introduction to Software Engineering 37 ODD Template (1) Outline 1.Introduction 1.Object design trade-offs e.g., buy vs. build, memory space vs. response time 2.Interface documentation guidelines e.g., naming conventions, boundary cases, exception handling mechanisms 3.Definitions, acronyms, and abbreviation 4.References 2.Packages describes the decomposition of subsystems into packages and the file organization of the code. This includes an overview of each package, its dependencies with other packages, and its expected usage.3. 3.Class interfaces Glossary Overview: Overview Reuse Concepts Inher., Deleg. Comp., FW, Lib Documentation JavaDoc & Pack. Summary

Ninth LectureCEN 4010: Introduction to Software Engineering 38 Alternative Approaches for ODD  Self-Contained ODD generated from model –Write and maintain a UML model and generate the document automatically –con: redundancy with the RAD and source code, hard to maintain consistency.  ODD as extension of the RAD –The set of application objects augmented with solution objects. –pro: easier to maintain consistency with the RAD. –con: polluting the RAD with irrelevant information for the user and client, also it may not be possible.  ODD embedded into source code –represent the ODD using a modeling tool. –Once it becomes stable, generate class stubs. –Complete the source code and comments. –Generate the ODD using a tool such as JavaDoc. Overview: Overview Reuse Concepts Inher., Deleg. Comp., FW, Lib Documentation JavaDoc & Pack. Summary

Ninth LectureCEN 4010: Introduction to Software Engineering 39 RAD Document analysis Analysis Analysis model Object design Initial object design model Generate class stubs Initial class stubs ODD Document object design System design Implementation Commented code Subsystem decomposition Design goals Embedded ODD approach Overview: Overview Reuse Concepts Inher., Deleg. Comp., FW, Lib Documentation JavaDoc & Pack. Summary

Ninth LectureCEN 4010: Introduction to Software Engineering 40 Agenda  Overview of Object Design  Reuse Concepts  Inheritance and Delegation  Components, Frameworks, and Libraries  System and Object Design Document  JavaDoc and Packaging  Summary Overview: Overview Reuse Concepts Inher., Deleg. Comp., FW, Lib Documentation JavaDoc & Pack. Summary

Ninth LectureCEN 4010: Introduction to Software Engineering 41 JavaDoc  Add documentation comments to the source code.  A doc comment consists of characters between /** and */  When JavaDoc parses a doc comment, leading * characters on each line are discarded. First, blanks and tabs preceding the initial * characters are also discarded.  Doc comments may include HTML tags  Example of a doc comment: /** * This is a doc comment */ Overview: Overview Reuse Concepts Inher., Deleg. Comp., FW, Lib Documentation JavaDoc & Pack. Summary

Ninth LectureCEN 4010: Introduction to Software Engineering 42 More on JavaDoc  Doc comments are only recognized when placed immediately before class, interface, constructor, method or field declarations.  When you embed HTML tags within a doc comment, you should not use heading tags such as and, because JavaDoc creates an entire structured document and these structural tags interfere with the formatting of the generated document.  Class and Interface Doc Tags  Constructor and Method Doc Tags Overview: Overview Reuse Concepts Inher., Deleg. Comp., FW, Lib Documentation JavaDoc & Pack. Summary

Ninth LectureCEN 4010: Introduction to Software Engineering 43 Class and Interface Doc name-text –Creates an “Author” version-text –Creates a “Version” classname –Creates a hyperlink “See Also since-text –Adds a “Since” entry. Usually used to specify that a feature or change exists since the release number of the software specified in the deprecated-text –Adds a comment that this method can no longer be used. Convention is to describe method that serves as replacement Replaced by setBounds(int, int, int, int). Overview: Overview Reuse Concepts Inher., Deleg. Comp., FW, Lib Documentation JavaDoc & Pack. Summary

Ninth LectureCEN 4010: Introduction to Software Engineering 44 Constructor and Method Doc Tags  Can as well parameter-name description Adds a parameter to the "Parameters" section. The description may be continued on the next description Adds a "Returns" section, which contains the description of the return fully-qualified-class-name description Adds a "Throws" section, which contains the name of the exception that may be thrown by the method. The exception is linked to its class classname Adds a hyperlink "See Also" entry to the method. Overview: Overview Reuse Concepts Inher., Deleg. Comp., FW, Lib Documentation JavaDoc & Pack. Summary

Ninth LectureCEN 4010: Introduction to Software Engineering 45 Example of a Class Doc Comment /** * A class representing a window on the screen. * For example: * * Window win = new Window(parent); * win.show(); * Sami Shaio %I%, %G% java.awt.BaseWindow java.awt.Button */ class Window extends BaseWindow {... Overview: Overview Reuse Concepts Inher., Deleg. Comp., FW, Lib Documentation JavaDoc & Pack. Summary

Ninth LectureCEN 4010: Introduction to Software Engineering 46 Example of a Method Doc Comment /** * Returns the character at the specified index. An index * ranges from 0 to length() - 1. * index the index of the desired character. the desired character. StringIndexOutOfRangeException * if the index is not in the range 0 * to length()-1. java.lang.Character#charValue() */ public char charAt(int index) {... } Overview: Overview Reuse Concepts Inher., Deleg. Comp., FW, Lib Documentation JavaDoc & Pack. Summary

Ninth LectureCEN 4010: Introduction to Software Engineering 47 Example of a Field Doc Comment  A field comment can contain tags /** * The X-coordinate of the window. * window#1 */ int x = ; Overview: Overview Reuse Concepts Inher., Deleg. Comp., FW, Lib Documentation JavaDoc & Pack. Summary

Ninth LectureCEN 4010: Introduction to Software Engineering 48 Example: Specifying a Service /** Office is a physical structure in a building. It is possible to create an instance of a office; add an occupant; get the name and the number of occupants */ public class Office { /** Adds an occupant to the office */ NAME name is a nonempty string */ public void AddOccupant(string name); Returns the name of the office. Requires, that Office has been initialized with a name */ public string GetName();.... } Overview: Overview Reuse Concepts Inher., Deleg. Comp., FW, Lib Documentation JavaDoc & Pack. Summary

Ninth LectureCEN 4010: Introduction to Software Engineering 49 Package it all up  Pack up design into discrete physical units that can be edited, compiled, linked, reused  Construct physical modules –Ideally use one package for each subsystem –System decomposition might not be good for implementation.  Two design principles for packaging –Minimize coupling:  Classes in client-supplier relationships are usually loosely coupled  Large number of parameters in some methods mean strong coupling (> 4-5)  Avoid global data –Maximize cohesion:  Classes closely connected by associations => same package Overview: Overview Reuse Concepts Inher., Deleg. Comp., FW, Lib Documentation JavaDoc & Pack. Summary

Ninth LectureCEN 4010: Introduction to Software Engineering 50 Packaging Heuristics  Each subsystem service is made available by one or more interface objects within the package  Start with one interface object for each subsystem service –Try to limit the number of interface operations (7+-2)  If the subsystem service has too many operations, reconsider the number of interface objects  If you have too many interface objects, reconsider the number of subsystems  Difference between interface objects and Java interfaces –Interface object : Used during requirements analysis, system design and object design. Denotes a service or API –Java interface: Used during implementation in Java (A Java interface may or may not implement an interface object) Overview: Overview Reuse Concepts Inher., Deleg. Comp., FW, Lib Documentation JavaDoc & Pack. Summary

Ninth LectureCEN 4010: Introduction to Software Engineering 51 Agenda  Overview of Object Design  Reuse Concepts  Inheritance and Delegation  Components, Frameworks, and Libraries  System and Object Design Document  JavaDoc and Packaging  Summary Overview: Overview Reuse Concepts Inher., Deleg. Comp., FW, Lib Documentation JavaDoc & Pack. Summary

Ninth LectureCEN 4010: Introduction to Software Engineering 52 Summary  Object design closes the gap between the requirements and the machine.  Object design is the process of adding details to the requirements analysis and making implementation decisions  Object design activities include: Identification of Reuse Identification of Inheritance and Delegation opportunities Select existing code –Interface specification (next lecture) –Object model restructuring –Object model optimization  Object design is documented in the Object Design Document, which can be automatically generated from a specification using tools such as JavaDoc. Overview: Overview Reuse Concepts Inher., Deleg. Comp., FW, Lib Documentation JavaDoc & Pack. Summary