انت هنا الان : شبكة جامعة بابل > موقع الكلية > نظام التعليم الالكتروني > مشاهدة المحاضرة

Lecture 1

الكلية كلية تكنولوجيا المعلومات     القسم قسم البرامجيات     المرحلة 7
أستاذ المادة احمد سليم عباس الصفار       24/02/2017 16:36:07
Chapter 07
From Modules to Objects
Topics:
• What is a Module?
• Cohesion.
• Coupling.
• Data Encapsulation.
• Abstract Data Types.
• Information Hiding.
• Objects.
• Inheritance, Polymorphism, and Dynamic Binding.
• The Object-Oriented Paradigm.
What is a Module?
• Software products are broken down into smaller pieces, called modules.
• Object-oriented paradigm is the development of theory of modularity.
• Operation of a module - What it does?
• Logic of a module - How it performs its operation?
• Context of a module - Specific use of module?
Cohesion
• Module cohesion - Degree of interaction within a module.
• Defined at seven levels.
• Figure 7.4

1- Coincidental Cohesion
• Module performs multiple, unrelated operations.
• Consequence of enforcing minimum or maximum size limits.
• Drawbacks.
o Degrading maintainability.
o Lack of reusability.
2- Logical Cohesion
• Module performs a series of related operations, one of which is selected by calling module.
• E.g., performing all input and output.
• Drawbacks
o Interface difficult to understand.
o Maintenance problems with intertwined operations.
3- Temporal Cohesion
• Module performs a series of operations related in time.
• E.g., open old master file, open new master file, open transaction file.
• Unlikely to be reusable in a different product.
4- Procedural Cohesion
• Module performs a series of operations related by sequences of steps to be followed by the product.
• E.g., read part number, update record.
• Better than temporal cohesion, but still weakly connected.
• Unlikely to be reusable in another product.
• Should be broken into separate modules.
5- Communicational Cohesion
• Module performs a series of operations related by the sequence of steps to be followed by the product, and all operations are performed on same data.
• E.g., update record in database, write it to audit trail.
• Better than procedural cohesion, but modules cannot be reused.
• Should be broken into separate modules.
• Flowchart cohesion refers to temporal, procedural, and communication cohesion.
• Operation performed by modules adjacent in the product flowchart.
6- Functional Cohesion
• Module performs exactly one operation or achieves a single goal.
• E.g., calculate sales commission.
• Modules often can be reused.
• Maintenance easier to perform.
• Valuable when extending a product.
7- Informational Cohesion
• Module performs a number of operations, each with its own entry point, with independent code for each operation, and all operations are performed on same data structure
• Different from logical cohesion: Operations not intertwined.
• Example of separation of concerns.
• Implementation of an abstract data type.
Cohesion Example


Coupling
• Module coupling - Degree of interaction between two modules.
• Defined at five levels.
• Figure 7.8

1- Content Coupling
• One module directly references contents of the other.
• Any change to a module requires changing the other.
• Reuse of one module requires reusing the other.
2- Common Coupling
• Both modules have access to the same global data.
• Drawbacks.
o Contradicts spirit of structured programming: Resulting code unreadable.
o Entire module must be read to find out what it does.
o Change in global variable requires changes in all accessing modules.
o Difficult to reuse without identical listing of global data.
o Number of instances of common coupling can change drastically.
o New modules using same global data (clandestine common coupling).
o A module may be exposed to more data than it needs.
• If absolutely necessary: Must be done in a controlled way.
o Large number of descriptors to be used by many modules.
o Without having to be passed as arguments.
o Initialized in one module.
o No other module changes the value.
3- Control Coupling
• One module passes an element of control to the other module: One module explicitly controls the logic of the other.
• E.g., a function code is passed to a module.
• Two modules are not independent, reducing possibility of reuse.
• Generally associated with logical cohesion: Similar drawbacks.
4- Stamp Coupling
• One module passes a data structure as an argument to the other module, and the called module operates on only some of the components of that data structure.
• Drawbacks
o Difficult to understand the interface.
o Uncontrolled data access.
5- Data Coupling
• All arguments are homogenous data items (simple arguments or data structures in which all elements are used by the called module).
• Example of separation of concerns.
• A desirable goal.
• Maintenance is easier
Coupling Example
• Figure 7.11

• Figure 7.12 and Figure 7.13

The Importance of Coupling
• Coupling is an important metric.
• Changing modules during integration and post delivery maintenance.
• Stronger the coupling: The greater the fault-proneness.
• A design in which modules have high cohesion and low coupling is a good design.
How can such a design be achieved?
Qualities that identify a good design achieved.
Data Encapsulation
• Data encapsulation - A data structure, together with the operations to be performed on that data structure.
• An example of separation of concerns.
• An example of abstraction: Means of achieving stepwise refinement by suppressing unnecessary details and accentuating relevant details.
o Data encapsulation: An example of data abstraction.
o Functions: Examples of procedural abstraction.
Abstract Data Types
• Abstract data type - A data type with the operations performed on instantiations of that data type.
• Widely applicable design tool.
• Supports both data abstraction and procedural abstraction.
Information Hiding
• Information hiding - Structuring the design so that the resulting implementation details are hidden from other modules
• A more general design concept including abstraction.
Objects
• Object - An instantiation (instance) of a class.
• Class - An abstract data type that supports inheritance.
• Class X a subclass of Class Y
o X derived class of Y
o X inherits (has all) attributes of Y
o X is A Y
• Four basic relationships of classes
o Specialization - X class a specialization of Y class.
o Generalization - Y class a generalization of X class.
o Aggregation - Components of a class: Group related items.
o Association - A relationship of some kind between two apparently unrelated classes.
Inheritance, Polymorphism, and Dynamic Binding
• Inheritance - New data types can be defined as extensions of previously defined types.
o Supported by all object-oriented programming languages (Smalltalk, C++, Java).
• Dynamic binding - Connecting an object to the appropriate method at run time.
• Polymorphism - Methods that can be applied to objects of different classes.
• Advantage of polymorphism and dynamic binding:
o Developers not concerned with precise argument types when a message is sent.
• Disadvantages of polymorphism and dynamic binding:
o Invoked method not known at compile time, resulting in difficulty in determining the cause of failures.
o Negative impacts on maintenance, due to multiple possibilities.
The Object-Oriented Paradigm
• Classical paradigm classified into two groups:
o Operation-oriented - Considering the operations of the product, and data are of secondary importance.
o Data-oriented - Emphasis on the data of the product, and operations are considered within the framework of the data.
• Object-oriented technique gives equal weight to data and operations: Operations work on data and data cannot change without operations.
• Data and operations given equal importance during workflows.
• Advantages of object-oriented paradigm:
o A well- designed object models all aspects of one physical entity Clear mapping between real-world entity and the object, High cohesion and low coupling.
o Hidden details and well-defined interface: Communication through messages.
o Can be maintained easily and safely.
o Objects are reusable.
o Objects are independent components of a product: Combined to construct a large-scale product.
o Development of the product and management of that development is easier and less likely to induce faults.
Why has classical paradigm had so much success?
• Adopted at the time when software engineering not widely practiced: software simply written.
• As products grow in size, inadequacies become apparent.
How to know object-oriented paradigm is superior?
• No data to prove beyond all doubt.
• Overwhelming majority of organization that adopted paradigm report favorably.
Issues are with object-oriented paradigm.
• Learning curve.
o High initial cost in terms of effort and time.
o Particularly noticeable when the product has a graphical user interface.
o Great improvements after initial use.
• Inheritance.
o Fragile base class problem: A change to a class directly affects all its descendants in the inheritance hierarchy.
o Storage problem: Objects lower in the inheritance hierarchy can get large.
o Inheritance wherever appropriate, not wherever possible.
• Polymorphism and dynamic binding.
o Difficulty in maintenance.
o Considerations by the programmers.
• Possible to write bad code in any language
o Ensuring the code is of highest quality
• Possibility of someday having something better than the object-oriented paradigm
o Object-oriented not the ultimate answer.
o Software engineers are looking beyond objects.
o Will be superseded by methodologies of the future.
o Aspect-oriented programming (AOP) may play a role.

Reference
• Schach, S.R. (2010). Object-Oriented and Classical Software Engineering, Eighth Edition. McGraw-Hill, ISBN: 978-0-07-337618-9.


المادة المعروضة اعلاه هي مدخل الى المحاضرة المرفوعة بواسطة استاذ(ة) المادة . وقد تبدو لك غير متكاملة . حيث يضع استاذ المادة في بعض الاحيان فقط الجزء الاول من المحاضرة من اجل الاطلاع على ما ستقوم بتحميله لاحقا . في نظام التعليم الالكتروني نوفر هذه الخدمة لكي نبقيك على اطلاع حول محتوى الملف الذي ستقوم بتحميله .