















































Study with the several resources on Docsity
Earn points by helping other students or get them with a premium plan
Prepare for your exams
Study with the several resources on Docsity
Earn points to download
Earn points by helping other students or get them with a premium plan
Various aspects of object-oriented software engineering, focusing on forward engineering, object design, and component selection. It covers topics such as the importance of changing the object model before generating code, the role of roundtrip engineering, object design issues, and component selection. The document also touches upon information hiding design principles, expressing constraints in UML, and restructuring activities.
Typology: Essays (high school)
1 / 55
This page cannot be seen from the preview
Don't miss anything!
















































w Customers access the store via the Web, browse product information, input their address and payment information, and purchase products. w Suppliers can add new products, update product information, and receive orders. w The store owner sets the retail prices, makes tailored offers to customers based on their purchasing profiles, and provides marketing services.
Product CustomerInfo SupplierInfo Order Anonymous GetInfo() Create() Customer GetInfo() GetPrice()
UpdateInfo() Create()
Supplier Create() GetInfo() UpdateInfo()
UpdateInfo() Process()
StoreAdministrator UpdatePrice() VerifyInfo() Create() Examine()
Web Browser (UI Framework)
Web Server
HTTP
State Profil
A1: Application Server
State State State State
State
A2: Application Server
Profil Profil Profil
Profil
Database Server (Database Framework)
♦ Reverse Engineering:
w Discovery (or Recovery) of an object model from the code.
♦ Forward Engineering:
w Automatic generation of code from an object model w Requirements Engineering, Requirements Analysis, System Design, Object Design, Implementation, Testing, Delivery
♦ Discipline:
w Always change the object model, then generate code (for sure do this when you change the interface of a public method/class.) t Generate code under time pressure
♦ Roundtrip Engineering
w Forward Engineering + reverse engineering w Inventory analysis: Determine the Delta between OM and Code w Together-J and Rationale have tools for reverse engineering
♦ Reengineering (Project Management Issue):
w New functionality (customer dreams up new stuff) w New technology (technology enablers)
w System Design t Decomposition into subsystems w Object Design t Implementation language chosen t Data structures and algorithms chosen
w Preliminary Design t Decomposition into subsystems t Data structures are chosen w Detailed Design t Algorithms are chosen t Data structures are refined t Implementation language is chosen t Typically in parallel with preliminary design, not separate stage
w Identifies attributes and operations without specifying their types or their parameters.
w Add visibility information w Add type signature information w Add contracts (Bertrand Meyer, Eiffel)
w A private attribute can be accessed only by the class in which it is defined. w A private operation can be invoked only by the class in which it is defined. w Private attributes and operations cannot be accessed by subclasses or other classes.
w A protected attribute or operation can be accessed by the class in which it is defined and on any descendent of the class.
w A public attribute or operation can be accessed by any class.
w Access attributes only via operations.
w Define abstract class interfaces which mediate between system and external world as well as between subsystems
w Write a new operation that combines the two operations.
Hashtable
+put(key:Object,entry:Object) +get(key:Object):Object +remove(key:Object) +containsKey(key:Object):boolean +size():int
-numElements:int
Hashtable
+put() +get() +remove() +containsKey() +size()
-numElements:int
w OCL allows constraints to be formally specified on single model elements or groups of model elements w A constraint is expressed as an OCL expression returning the value true or false. OCL is not a procedural language (cannot constrain control flow).
w Invariant: t context Hashtable inv: numElements >= 0
w Precondition: t context Hashtable::put(key, entry) pre:!containsKey(key)
Context is a class OCL expression operation
w Post-condition: t context Hashtable::put(key, entry) post: containsKey(key) and get(key) = entry
HashTable
put(key,entry:Object) get(key):Object remove(key:Object) containsKey(key:Object):boolean
<
<
<
<
size():int
numElements:int