High cohesion and low coupling are characteristics of good design that make software components more independent and modular. Cohesion refers to how related the responsibilities of a component are, while coupling refers to interdependencies between components. The document defines and provides examples of different types of cohesion and coupling, from ideal to poor, to help understand their impacts on maintenance and modifiability.
This ppt covers the following topics
Introduction
The software component
Designing class-based components
Designing conventional components
Thus it covers Component level design
This ppt covers the following topics
Introduction
The software component
Designing class-based components
Designing conventional components
Thus it covers Component level design
*A modular design reduces complexity
*The concept of functional independence is a direct outgrowth of modularity and the
concepts of abstraction and information hiding
*functional independence is a key to good design, and design is the key to software quality
*A modular design reduces complexity
*The concept of functional independence is a direct outgrowth of modularity and the
concepts of abstraction and information hiding
*functional independence is a key to good design, and design is the key to software quality
Palestine last event orientationfvgnh .pptxRaedMohamed3
An EFL lesson about the current events in Palestine. It is intended to be for intermediate students who wish to increase their listening skills through a short lesson in power point.
How to Make a Field invisible in Odoo 17Celine George
It is possible to hide or invisible some fields in odoo. Commonly using “invisible” attribute in the field definition to invisible the fields. This slide will show how to make a field invisible in odoo 17.
Honest Reviews of Tim Han LMA Course Program.pptxtimhan337
Personal development courses are widely available today, with each one promising life-changing outcomes. Tim Han’s Life Mastery Achievers (LMA) Course has drawn a lot of interest. In addition to offering my frank assessment of Success Insider’s LMA Course, this piece examines the course’s effects via a variety of Tim Han LMA course reviews and Success Insider comments.
A Strategic Approach: GenAI in EducationPeter Windle
Artificial Intelligence (AI) technologies such as Generative AI, Image Generators and Large Language Models have had a dramatic impact on teaching, learning and assessment over the past 18 months. The most immediate threat AI posed was to Academic Integrity with Higher Education Institutes (HEIs) focusing their efforts on combating the use of GenAI in assessment. Guidelines were developed for staff and students, policies put in place too. Innovative educators have forged paths in the use of Generative AI for teaching, learning and assessments leading to pockets of transformation springing up across HEIs, often with little or no top-down guidance, support or direction.
This Gasta posits a strategic approach to integrating AI into HEIs to prepare staff, students and the curriculum for an evolving world and workplace. We will highlight the advantages of working with these technologies beyond the realm of teaching, learning and assessment by considering prompt engineering skills, industry impact, curriculum changes, and the need for staff upskilling. In contrast, not engaging strategically with Generative AI poses risks, including falling behind peers, missed opportunities and failing to ensure our graduates remain employable. The rapid evolution of AI technologies necessitates a proactive and strategic approach if we are to remain relevant.
Biological screening of herbal drugs: Introduction and Need for
Phyto-Pharmacological Screening, New Strategies for evaluating
Natural Products, In vitro evaluation techniques for Antioxidants, Antimicrobial and Anticancer drugs. In vivo evaluation techniques
for Anti-inflammatory, Antiulcer, Anticancer, Wound healing, Antidiabetic, Hepatoprotective, Cardio protective, Diuretics and
Antifertility, Toxicity studies as per OECD guidelines
Welcome to TechSoup New Member Orientation and Q&A (May 2024).pdfTechSoup
In this webinar you will learn how your organization can access TechSoup's wide variety of product discount and donation programs. From hardware to software, we'll give you a tour of the tools available to help your nonprofit with productivity, collaboration, financial management, donor tracking, security, and more.
2. Characteristics of Good Design
• Component independence
– High cohesion
– Low coupling
• Exception identification and handling
• Fault prevention and fault tolerance
3. Coupling: Degree of dependence
among components
No dependencies Loosely coupled-some dependencies
Highly coupled-many dependencies
High coupling makes modifying
parts of the system difficult, e.g.,
modifying a component affects all
the components to which the
component is connected.
5. Content coupling
• Definition: One component references
contents of another
• Example:
– Component directly modifies another’s data
– Component refers to local data of another
component in terms of numerical
displacement
– Component modifies another’s code, e.g.,
jumps into the middle of a routine
6. Example of Content Coupling-1
Part of program handles lookup for customer.
When customer not found, component adds
customer by directly modifying the contents of
the data structure containing customer data.
7. Example of Content Coupling-2
Part of program handles lookup for customer.
When customer not found, component adds
customer by directly modifying the contents of
the data structure containing customer data.
Improvement:
When customer not found, component calls the
AddCustomer() method that is responsible for
maintaining customer data.
8. Common Coupling
• Definition: Two components share data
– Global data structures
– Common blocks
• Usually a poor design choice because
– Lack of clear responsibility for the data
– Reduces readability
– Difficult to determine all the components that affect
a data element (reduces maintainability)
– Difficult to reuse components
– Reduces ability to control data accesses
9. Example-1
Each source process writes directly to global data
store. Each sink process reads directly from global
data store.
Process control component maintains current data
about state of operation. Gets data from multiple
sources. Supplies data to multiple sinks.
10. Example-2
Each source process writes directly to global
data store. Each sink process reads directly
from global data store.
Improvement
Data manager component is responsible for
data in data store. Processes send data to and
request data from data manager.
Process control component maintains current data
about state of operation. Gets data from multiple
sources. Supplies data to multiple sinks.
11. Control Coupling
• Definition: Component passes control
parameters to coupled components.
• May be either good or bad, depending on
situation.
– Bad when component must be aware of
internal structure and logic of another module
– Good if parameters allow factoring and reuse
of functionality
12. Example
• Acceptable: Module p calls module q and q
passes back flag that says it cannot complete
the task, then q is passing data
• Not Acceptable: Module p calls module q and q
passes back flag that says it cannot complete
the task and, as a result, writes a specific
message.
13. Stamp Coupling
• Definition: Component passes a data structure
to another component that does not have access
to the entire structure.
• Requires second component to know how to
manipulate the data structure (e.g., needs to
know about implementation)
• May be necessary due to efficiency factors: this
is a choice made by insightful designer, not lazy
programmer.
14. Example-1
The print routine of the customer billing
accepts a customer data structure as an
argument, parses it, and prints the name,
address, and billing information.
Customer billing system
15. Example-2
The print routine of the customer billing
accepts a customer data structure as an
argument, parses it, and prints the name,
address, and billing information.
Improvement
The print routine takes the customer name,
address, and billing information as an
argument.
Customer Billing System
16. Data Coupling
• Definition: Two components are data
coupled if there are homogeneous data
items.
• Every argument is simple argument or
data structure in which all elements are
used
• Good, if it can be achieved.
• Easy to write contracts for this and modify
component independently.
17. Key Idea in Object-Oriented
Programming
• Object-oriented designs tend to have low
coupling.
18. Cohesion
• Definition: The degree to which all elements of a
component are directed towards a single task
and all elements directed towards that task are
contained in a single component.
• Internal glue with which component is
constructed
• All elements of component are directed toward
and essential for performing the same task
• High is good
19. Range of Cohesion
High Cohesion
Low
Functional
Informational
Sequential
Communicational
Procedural
Temporal
Logical
Coincidental
20. Coincidental Cohesion
• Definition: Parts of the component are only
related by their location in source code
• Elements needed to achieve some
functionality are scattered throughout the
system.
• Accidental
• Worst form
21. Example
• Print next line
• Reverse string of characters in second
argument
• Add 7 to 5th argument
• Convert 4th argument to float
22. Logical Cohesion
• Definition: Elements of component are
related logically and not functionally.
• Several logically related elements are in
the same component and one of the
elements is selected by the client
component.
23. Example-1
• A component reads inputs from tape, disk,
and network. All the code for these
functions are in the same component.
• Operations are related, but the functions are
significantly different.
24. Example-2
• A component reads inputs from tape, disk,
and network. All the code for these
functions are in the same component.
Operations are related, but the functions
are significantly different.
Improvement
• A device component has a read operation
that is overridden by sub-class
components. The tape sub-class reads
from tape. The disk sub-class reads from
disk. The network sub-class reads from the
network.
25. Temporal Cohesion
• Definition: Elements of a component are
related by timing.
• Difficult to change because you may have
to look at numerous components when a
change in a data structure is made.
• Increases chances of regression fault
• Component unlikely to be reusable.
26. Example-1
• A system initialization routine: this routine
contains all of the code for initializing all of the
parts of the system. Lots of different activities
occur, all at init time.
27. Example-2
• A system initialization routine: this routine
contains all of the code for initializing all of
the parts of the system. Lots of different
activities occur, all at init time.
Improvement
• A system initialization routine sends an
initialization message to each component.
• Each component initializes itself at
component instantiation time.
28. Procedural Cohesion
• Definition: Elements of a component are
related only to ensure a particular order of
execution.
• Actions are still weakly connected and
unlikely to be reusable
29. Example
...
Read part number from
data base
update repair record on
maintenance file.
...
• May be useful to
abstract the intent of
this sequence. Make
the data base and
repair record
components handle
reading and updating.
Make component that
handles more
abstract operation.
30. Communicational Cohesion
• Definition: Module performs a series of
actions related by a sequence of steps to
be followed by the product and all actions
are performed on the same data
31. Example
• Update record in data
base and send it to
the printer.
• database.Update
(record).
• record.Print().
32. Sequential Cohesion
• The output of one component is the input to
another.
• Occurs naturally in functional programming
languages
• Good situation
33. Informational Cohesion
• Definition: Module performs a number of
actions, each with its own entry point, with
independent code for each action, all
performed on the same data.
• Different from logical cohesion
– Each piece of code has single entry and single exit
– In logical cohesion, actions of module intertwined
• ADT and object-oriented paradigm promote
34. Functional Cohesion
• Definition: Every essential element to a
single computation is contained in the
component.
• Every element in the component is
essential to the computation.
• Ideal situation.
35. Examples of Cohesion-1
Function A
Function
B
Function
D
Function
C
Function
E
Coincidental
Parts unrelated
Function A
Function A’
Function A’’
logic
Logical
Similar functions
Time t0
Time t0 + X
Time t0 + 2X
Temporal
Related by time
Function A
Function B
Function C
Procedural
Related by order of functions
36. Examples of Cohesion-2
Function A part 1
Function A part 2
Function A part 3
Functional
Sequential with complete, related functions
Function A
Function B
Function C
Communicational
Access same data
Function A
Function B
Function C
Sequential
Output of one is input to another
37. Study
• P1: What is the effect of cohesion on
maintenance?
• P2: What is the effect of coupling on
maintenance?
• P3: Produce an example of each type of
cohesion. Justify your answers.
• P4: Produce an example of each type of
coupling. Justify your answers.