SlideShare a Scribd company logo
Object Oriented Design (OO-D)
Good, Bad and Ugly
Amod Kadam
Cloud Manthan Software Solutions Pvt. Ltd.
Sep 2012
V 1.0 Cloud Manthan Software Solutions Pvt. Ltd. 1
MODULE 2 – DESIGN
Objective(s)
• To understand the why and what of design
V 1.0 Cloud Manthan Software Solutions Pvt. Ltd. 2
Topics
• What and Why of Design ?
• Design Characteristics
• Design Process
• Design Principles
• Design Heuristics
What is DESIGN ?
V 1.0 Cloud Manthan Software Solutions Pvt. Ltd. 3
What comes to mind ?
V 1.0 Cloud Manthan Software Solutions Pvt. Ltd. 4
Design Perspective
V 1.0 Cloud Manthan Software Solutions Pvt. Ltd. 5
What influences design ?
V 1.0 Cloud Manthan Software Solutions Pvt. Ltd. 6
Defining Design
V 1.0 Cloud Manthan Software Solutions Pvt. Ltd. 7
Some Design Definitions
• “It’s where you stand with a foot in two worlds—the world of
technology and the world of people and human purposes—and
you try to bring the two together”
- Creator of Lotus Notes - Mitch Kapor
• Software design is a process of problem solving and planning for
a software solution. After the purpose and specifications of
software are determined, software developers will design or
employ designers to develop a plan for a solution
- Wikipedia
V 1.0 Cloud Manthan Software Solutions Pvt. Ltd. 8
WHY DESIGN ?
‘Writing a clever piece of code that works is one thing ; designing
something that can support a long lasting business is quite another’
V 1.0 Cloud Manthan Software Solutions Pvt. Ltd. 9
Purpose of Design
• Solve problem
• Satisfy need
• Create mental model before building it
• Communicate with stakeholders
• Visualize Solution / Problem !
• Understand Complexity
• Create better experience
• Make Happy
V 1.0 Cloud Manthan Software Solutions Pvt. Ltd. 10
Impact of Design
• Results in long lasting system
• Makes things work without problem
• Tries to avoid potential problem during construction or after
construction
• Gives pleasure
• Feel good
• Promotions
• Adverse Management Policy
• Sad
• Frustration
• Loosing jobs
V 1.0 Cloud Manthan Software Solutions Pvt. Ltd. 11
DESIGN CONCEPTS
“Design is not the narrow application of formal skills, it is a way of
thinking”
- Chris Pullman
V 1.0 Cloud Manthan Software Solutions Pvt. Ltd. 12
Context
V 1.0 Cloud Manthan Software Solutions Pvt. Ltd. 13
Functionality
V 1.0 Cloud Manthan Software Solutions Pvt. Ltd. 14
Easy to Use
V 1.0 Cloud Manthan Software Solutions Pvt. Ltd. 15
Easy to Understand
V 1.0 Cloud Manthan Software Solutions Pvt. Ltd. 16
Intuitive
V 1.0 Cloud Manthan Software Solutions Pvt. Ltd. 17
Easy to maintain
V 1.0 Cloud Manthan Software Solutions Pvt. Ltd. 18
What else ?
• Feel Good
• Easy to explain
• …
V 1.0 Cloud Manthan Software Solutions Pvt. Ltd. 19
SOFTWARE DESIGN CHARACTERISTICS
V 1.0 Cloud Manthan Software Solutions Pvt. Ltd. 20
Rigidity
• Tendency for software to be difficult to change, even in simple ways
• Every change causes a cascade of subsequent changes in dependent
modules
• Don’t know, with any reliability, when the change will be finished
• Manager fears to allow changes to software
• Official rigidity sets in
• Starts with design deficiency but leads to adverse management policy
V 1.0 Cloud Manthan Software Solutions Pvt. Ltd. 21
Fragility
• Tendency of the software to break in many places every time it is
changed
• Breakage occurs in areas that have no conceptual relationship with
the area that was changed
• Fills the hearts of managers with a feeling that something bad will
happen
• Every time managers authorize a fix, they fear that the software
will break in some unexpected way
• Impossible to maintain
V 1.0 Cloud Manthan Software Solutions Pvt. Ltd. 22
Immobility
• Inability to reuse software from other projects or from parts of the
same project
• Similar modules exists but with too much baggage
• Work and risk required to separate the desirable parts of the
software from the undesirable parts are too great to tolerate
• Simply rewritten instead of reused
V 1.0 Cloud Manthan Software Solutions Pvt. Ltd. 23
Viscosity…
• Viscosity of the design
– Comes about when changes sets in and there are more than one ways to
make the change
– Some of the ways preserve the design, others do not (i.e. they are hacks.)
– Design preserving methods are harder to employ than the hacks, then the
viscosity of the design is high
– It is easy to do the wrong thing, but hard to do the right thing
V 1.0 Cloud Manthan Software Solutions Pvt. Ltd. 24
… Viscosity
• Viscosity of the environment
– Comes about when the development environment is slow and inefficient
– High Compile Time
• Engineers will be tempted to make changes that don’t force large recompiles, even
though those changes are not optimal from a design point of view
– High Check in/Checkout
• Hours to check in just a few files
V 1.0 Cloud Manthan Software Solutions Pvt. Ltd. 25
Modularity
• Separately named addressable components
• Allows a program to be intellectually manageable
• Easier to solve a complex problem when you break it into manageable
pieces
– Ease of development
– Ease of planning
– Software increments can be defined and delivered
– Changes can be more easily accommodated
– Testing and debugging can be conducted more effectively
• Don’t over modularize
– The simplicity of each small module will be overshadowed by the complexity
of Integration
V 1.0 Cloud Manthan Software Solutions Pvt. Ltd. 26
Functional Independence
• Modules should have
– single-minded function
– aversion to excessive interaction with other modules
• Promote reuse and/or repurpose
• Easier to maintain and test
• Cohesion
– Qualitative Indication of Functional Independence
• Coupling
– Qualitative indication of the degree to which a module is connected to other
modules and outside world
V 1.0 Cloud Manthan Software Solutions Pvt. Ltd. 27
Cohesion
• Degree to which the elements of a module belong together
• Coincidental cohesion (ugly)
– parts of a module are grouped arbitrarily (misc. classes)
• Logical Cohesion
– parts of a module are grouped because they logically are categorized to do the
same thing, even if they are different by nature
– e.g. grouping all mouse and keyboard input handling routines
• Temporal Cohesion
– parts of a module are grouped by when they are processed - the parts are
processed at a particular time in program execution
– E.g. catch an exception and close open files, creates an error log , notify user
V 1.0 Cloud Manthan Software Solutions Pvt. Ltd. 28
…Cohesion
• Procedural Cohesion
– parts of a module are grouped because they always follow a certain sequence
of execution
– (e.g. a function which checks file permissions and then opens the file)
• Sequential Cohesion
– parts of a module are grouped because the output from one part is the input
to another part like an assembly line
– e.g. a function which reads data from a file and processes the data
• Functional Cohesion (Good)
– Parts of a module are grouped because they all contribute to a single well-
defined task of the module
– e.g. tokenizing a string of XML
V 1.0 Cloud Manthan Software Solutions Pvt. Ltd. 29
Consequences of Low Cohesion
• Increased difficulty in understanding modules
• Increased difficulty in maintaining a system, because logical
changes in the domain affect multiple modules, and because
changes in one module require changes in related modules
• Increased difficulty in reusing a module because most applications
won’t need the random set of operations provided by a module
V 1.0 Cloud Manthan Software Solutions Pvt. Ltd. 30
Coupling…
• In computing and systems design a loosely coupled system is one in
which each of its components has, or makes use of, little or no
knowledge of the definitions of other separate components
- Wikipedia
• In software engineering, coupling or dependency is the
degree to which each program module relies on each one of
the other modules.
- Wikipedia
• Software modules, objects will always have some form of
coupling
V 1.0 Cloud Manthan Software Solutions Pvt. Ltd. 31
…Coupling…
• Content Coupling
– one module modifies or relies on the internal workings of another module
(e.g., accessing local data of another module)
• Global Coupling (common coupling)
– Sharing same global data
• External Coupling
– Sharing externally imposed data format , communication protocol
• Control Coupling
– Control coupling is one module controlling the flow of another, by passing it
information on what to do (e.g., passing a what-to-do flag)
V 1.0 Cloud Manthan Software Solutions Pvt. Ltd. 32
Coupling…
• Data Structured Coupling (stamp)
– Share a composite data structure and use only a part of it, possibly a different
part
• Data Coupling
– share data through, for example, parameters
• Message Coupling
– message passing
• No Coupling
– Modules do not communicate at all with one another
V 1.0 Cloud Manthan Software Solutions Pvt. Ltd. 33
…Coupling
V 1.0 Cloud Manthan Software Solutions Pvt. Ltd. 34
- Wikipedia
Implications of Tight Coupling
•One module usually forces a ripple
effect of changes in other modules
•Assembly of modules might require
more effort and/or time due to the
increased inter-module dependency
•A particular module might be
harder to reuse and/or test because
dependent modules must be
included
DESIGN PROCESS
V 1.0 Cloud Manthan Software Solutions Pvt. Ltd. 35
Design Process
• Incremental
• Iterative
• Focus on essential
aspects
• Intellectual
• Creative
• Rational
• Early designs never an
exact match of shipped
version
• Sloppy Process
• Nondeterministic
V 1.0 Cloud Manthan Software Solutions Pvt. Ltd. 36
Sloppy Process
• Finished design looks well-organized ,clean but Process is Sloppy
• Process is Myopic
– Take False Steps and go down blind alleys
• Making mistakes is the point of design
• Design corrections are simpler than correcting after full blown code
• Hard to know when design is good enough ?
– Good Solution is subtly different than a poor one
• How much details is enough ?
• How do you know - When are you done ?
V 1.0 Cloud Manthan Software Solutions Pvt. Ltd. 37
Nondeterministic
• Same problem is solved differently by each person
• Person Dependent ?
• No. of ways to solve problem
• Which one is correct ?
V 1.0 Cloud Manthan Software Solutions Pvt. Ltd. 38
All about Tradeoffs
• Choosing one over another
• Is Fast Response Rate is a more important or minimizing development
time ?
• Is Scale critical or performance ?
• Is it configurability or performance ?
• Should be easy to use or development time critical ?
• ….
V 1.0 Cloud Manthan Software Solutions Pvt. Ltd. 39
Heuristic Process
• Rules of Thumb
• Things to try which works in most of the cases
• Involves trial and error
• Not a repeatable process
• No guarantee that you will produce the exact same software design
elements
V 1.0 Cloud Manthan Software Solutions Pvt. Ltd. 40
Controlling Possibilities
• Design should create possibilities
– Legal possibilities
– Consistent mechanism – way of doing
• Design should Partly restrict possibilities
– Bring discipline
– Prevent ad-hoc way of doing the things
– E.g. Constructing object in no. of ways - problematic
V 1.0 Cloud Manthan Software Solutions Pvt. Ltd. 41
Refinement
• Process of elaboration
• Part of top-down design strategy
• Helps designer to specify the low-level details as design progresses
V 1.0 Cloud Manthan Software Solutions Pvt. Ltd. 42
How to Create Good Design ?
• Design Principles
– Guiding philosophy
• Design Heuristics
– Rules of Thumb
• Refactoring
– Process of improving internal structure of code without modifying its
functionality
V 1.0 Cloud Manthan Software Solutions Pvt. Ltd. 43
DESIGN PRINCIPLES
V 1.0 Cloud Manthan Software Solutions Pvt. Ltd. 44
Principles , Patterns & Practices
V 1.0 Cloud Manthan Software Solutions Pvt. Ltd. 45
Principles
Practices
Establish overriding
philosophy for guiding
designer
Design
Representations
(UML)
Software
Design
Guides in building
Heuristics
Patterns
Software Engineering Principles
• The Reason It All Exists - To provide value to its users
• Keep it Simple , Stupid ! (KISS)
• Maintain the Vision - Avoids ‘two [or more] minds’ about itself
• What You Produce, Others Will Consume
• Be Open to the Future
• Plan ahead for reuse
V 1.0 Cloud Manthan Software Solutions Pvt. Ltd. 46
Design Modeling Principles
• Design should be traceable to the analysis model
• Design in the context of Architecture
• Design of data is as important as design of processing functions
• Interfaces must be designed with care
• User Interface design should be tuned to the needs of an end user
• Component-level design should be functionally independent
• Components should be loosely coupled to one another and to the external
environment
• Design representations should be easily understandable
• Strive for design simplicity with each iteration
V 1.0 Cloud Manthan Software Solutions Pvt. Ltd. 47
SOFTWARE DESIGN HEURISTICS
V 1.0 Cloud Manthan Software Solutions Pvt. Ltd. 48
Definition : Heuristics
• Heuristic ( Greek: "find" or "discover") refers to experience-based
techniques for problem solving, learning, and discovery
• Where an exhaustive search is impractical, heuristic methods are used to
speed up the process of finding a satisfactory solution
• Examples : a rule of thumb, an educated guess, an intuitive judgment,
or common sense
V 1.0 Cloud Manthan Software Solutions Pvt. Ltd. 49
Where do we stand
• Day 1
– Module 1 – Setting the Context
– Module 2 – Design
– Module 3 – Object Oriented (OO) Paradigm
• Day 2
– Module 4 – OO Principles
– Module 5 – Design Patterns
– Module 6 – Creational Patterns
V 1.0 Cloud Manthan Software Solutions Pvt. Ltd. 50
Cloud Manthan Software Solutions
Pvt. Ltd.
http://www.cloudmanthan.com
V 1.0 www.cloudmanthan.com 51
Cloud Manthan Software Solutions Private Limited
E-3,Lokmanya Pan Bazar,Opp. Everard Nagar
Chunabhatti (E) , Eastern Express Highway, Sion
Mumbai - 400 022
amod.kadam@cloudmanthan.com
+91 98923 00901

More Related Content

PDF
Software Engineering - Ch11
PPTX
Strategy of software design
PPT
Ch 11-component-level-design
PPT
Unit4
PPT
Software design methodologies
PDF
Information System Development
PPTX
Design process and concepts
DOCX
Unit i software design principles 9
Software Engineering - Ch11
Strategy of software design
Ch 11-component-level-design
Unit4
Software design methodologies
Information System Development
Design process and concepts
Unit i software design principles 9

What's hot (19)

PDF
Software Engineering - Ch8
PPT
Pressman ch-11-component-level-design
PPTX
Component level design
PDF
SE2018_Lec 18_ Design Principles and Design Patterns
PPT
Pressman ch-11-component-level-design
PDF
SE18_Lec 05_Agile Software Development
PPTX
Ppt nardeep
ODP
Extreme programming - Kent Beck
PDF
SWE-401 - 7. Software Design Strategies
PPT
Pressman ch-3-prescriptive-process-models
PDF
SE2018_Lec 21_ Software Configuration Management (SCM)
PPT
Chapter 21 project management concepts
PPT
Information system development & programming language
PDF
SE UNIT-3.pdf
PPT
Unit IV Software Engineering
PPT
Unit2
PDF
Design concepts and design principles
DOC
Chapter 4 software design
PPT
Unit 5
Software Engineering - Ch8
Pressman ch-11-component-level-design
Component level design
SE2018_Lec 18_ Design Principles and Design Patterns
Pressman ch-11-component-level-design
SE18_Lec 05_Agile Software Development
Ppt nardeep
Extreme programming - Kent Beck
SWE-401 - 7. Software Design Strategies
Pressman ch-3-prescriptive-process-models
SE2018_Lec 21_ Software Configuration Management (SCM)
Chapter 21 project management concepts
Information system development & programming language
SE UNIT-3.pdf
Unit IV Software Engineering
Unit2
Design concepts and design principles
Chapter 4 software design
Unit 5
Ad

Viewers also liked (20)

PPTX
ขั้นตอนการทำโครงงานคอมพิวเตอร์
PPTX
мезозой 2016
PPTX
Evaluation question 4
PDF
Manifesto Gündem Trend Raporu Aralık 2015
PDF
Sports events a boost in india tourism
PDF
Doing_business_with_BSTDB_2012
DOCX
resume_franklin
PPTX
Question 1111111
PDF
Product review reminder allows you to send your clients email reminders autom...
DOC
Bai tap hay khao sat ham so toan 12
PDF
CXPA Customer Experience Superhero Success Guide
PDF
Today’s branding is a function of media fragmentation: Prateek Kumarrateek Kumar
PPTX
Question 4 5
PPT
Introduction to Talon
PPTX
Can depression be cured?
PPTX
OOW-IMC-final
PPT
Создание логотипов, фирменных стилей в Набережных Челнах, Нижнекамске, Елабуге
PDF
Awethu Scaffold Profile PDFb 2015
PPTX
Question 6
PDF
Gündem Trend Raporu-Temmuz 2016
ขั้นตอนการทำโครงงานคอมพิวเตอร์
мезозой 2016
Evaluation question 4
Manifesto Gündem Trend Raporu Aralık 2015
Sports events a boost in india tourism
Doing_business_with_BSTDB_2012
resume_franklin
Question 1111111
Product review reminder allows you to send your clients email reminders autom...
Bai tap hay khao sat ham so toan 12
CXPA Customer Experience Superhero Success Guide
Today’s branding is a function of media fragmentation: Prateek Kumarrateek Kumar
Question 4 5
Introduction to Talon
Can depression be cured?
OOW-IMC-final
Создание логотипов, фирменных стилей в Набережных Челнах, Нижнекамске, Елабуге
Awethu Scaffold Profile PDFb 2015
Question 6
Gündem Trend Raporu-Temmuz 2016
Ad

Similar to Object Oriented Design - Good , Bad and Ugly (20)

PPTX
unit3_.pptx abchjgghikojhrdsiiiooojrrddy
PPTX
unit3_.pptx ghhu hhiiiiiiiihggguuugggggij
PPTX
System software design1
PPTX
SOFTWARE DESIGN ENGINEERING UNIT-3 PPT.pptx
PPT
Software Engineering Lec 8-design-
PDF
Software Design and Architecture - 1 -Chapter One.pdf
PPT
PPT
SE-4 software engineering nekdnhjnrindnj
PDF
software _Desing_Methodology-partI.pptx.pdf
PPTX
Principles and Practices of Effective Software Design and Architecture.pptx
PPT
Software Design vs. Software Architecture
PDF
Chapter 2 of advanced Software Process.pdf
PPTX
Software Eng S3 ( Software Design ).pptx
PPT
Software design
PPT
5 software design
PDF
Understanding Microservices
PPTX
Monolith to microservices journey
PDF
META for Microservices: Getting your enterprise migration in motion
PPTX
Unit3 Software engineering UPTU
PPTX
unit 1 introudction of the file and sepm
unit3_.pptx abchjgghikojhrdsiiiooojrrddy
unit3_.pptx ghhu hhiiiiiiiihggguuugggggij
System software design1
SOFTWARE DESIGN ENGINEERING UNIT-3 PPT.pptx
Software Engineering Lec 8-design-
Software Design and Architecture - 1 -Chapter One.pdf
SE-4 software engineering nekdnhjnrindnj
software _Desing_Methodology-partI.pptx.pdf
Principles and Practices of Effective Software Design and Architecture.pptx
Software Design vs. Software Architecture
Chapter 2 of advanced Software Process.pdf
Software Eng S3 ( Software Design ).pptx
Software design
5 software design
Understanding Microservices
Monolith to microservices journey
META for Microservices: Getting your enterprise migration in motion
Unit3 Software engineering UPTU
unit 1 introudction of the file and sepm

More from amodkadam (7)

PDF
Cloud Manthn Software Solutions Pvt Ltd - What we do ?
PDF
AWS Foundation Overview Course - Online
PDF
AWS Foundation Course - Outline
PDF
Q & A - Amazon WorkSpaces
PDF
Amazon WorkSpaces-Virtual Desktops in Cloud
PPTX
JEE Foundation Course for non Java professionals
PPTX
Lecture on Cloud Computing at Mumbai Education Trust Mumbai , India
Cloud Manthn Software Solutions Pvt Ltd - What we do ?
AWS Foundation Overview Course - Online
AWS Foundation Course - Outline
Q & A - Amazon WorkSpaces
Amazon WorkSpaces-Virtual Desktops in Cloud
JEE Foundation Course for non Java professionals
Lecture on Cloud Computing at Mumbai Education Trust Mumbai , India

Recently uploaded (20)

PDF
Which alternative to Crystal Reports is best for small or large businesses.pdf
PPT
Introduction Database Management System for Course Database
PPTX
Introduction to Artificial Intelligence
PPTX
history of c programming in notes for students .pptx
PDF
T3DD25 TYPO3 Content Blocks - Deep Dive by André Kraus
PDF
Design an Analysis of Algorithms I-SECS-1021-03
PPTX
Agentic AI : A Practical Guide. Undersating, Implementing and Scaling Autono...
PPTX
Transform Your Business with a Software ERP System
PPTX
Computer Software and OS of computer science of grade 11.pptx
PDF
Wondershare Filmora 15 Crack With Activation Key [2025
PDF
Adobe Illustrator 28.6 Crack My Vision of Vector Design
PDF
Why TechBuilder is the Future of Pickup and Delivery App Development (1).pdf
PDF
How to Choose the Right IT Partner for Your Business in Malaysia
PDF
System and Network Administration Chapter 2
PDF
PTS Company Brochure 2025 (1).pdf.......
PPTX
VVF-Customer-Presentation2025-Ver1.9.pptx
PDF
Digital Systems & Binary Numbers (comprehensive )
PDF
Internet Downloader Manager (IDM) Crack 6.42 Build 41
PPTX
L1 - Introduction to python Backend.pptx
PDF
Design an Analysis of Algorithms II-SECS-1021-03
Which alternative to Crystal Reports is best for small or large businesses.pdf
Introduction Database Management System for Course Database
Introduction to Artificial Intelligence
history of c programming in notes for students .pptx
T3DD25 TYPO3 Content Blocks - Deep Dive by André Kraus
Design an Analysis of Algorithms I-SECS-1021-03
Agentic AI : A Practical Guide. Undersating, Implementing and Scaling Autono...
Transform Your Business with a Software ERP System
Computer Software and OS of computer science of grade 11.pptx
Wondershare Filmora 15 Crack With Activation Key [2025
Adobe Illustrator 28.6 Crack My Vision of Vector Design
Why TechBuilder is the Future of Pickup and Delivery App Development (1).pdf
How to Choose the Right IT Partner for Your Business in Malaysia
System and Network Administration Chapter 2
PTS Company Brochure 2025 (1).pdf.......
VVF-Customer-Presentation2025-Ver1.9.pptx
Digital Systems & Binary Numbers (comprehensive )
Internet Downloader Manager (IDM) Crack 6.42 Build 41
L1 - Introduction to python Backend.pptx
Design an Analysis of Algorithms II-SECS-1021-03

Object Oriented Design - Good , Bad and Ugly

  • 1. Object Oriented Design (OO-D) Good, Bad and Ugly Amod Kadam Cloud Manthan Software Solutions Pvt. Ltd. Sep 2012 V 1.0 Cloud Manthan Software Solutions Pvt. Ltd. 1
  • 2. MODULE 2 – DESIGN Objective(s) • To understand the why and what of design V 1.0 Cloud Manthan Software Solutions Pvt. Ltd. 2 Topics • What and Why of Design ? • Design Characteristics • Design Process • Design Principles • Design Heuristics
  • 3. What is DESIGN ? V 1.0 Cloud Manthan Software Solutions Pvt. Ltd. 3
  • 4. What comes to mind ? V 1.0 Cloud Manthan Software Solutions Pvt. Ltd. 4
  • 5. Design Perspective V 1.0 Cloud Manthan Software Solutions Pvt. Ltd. 5
  • 6. What influences design ? V 1.0 Cloud Manthan Software Solutions Pvt. Ltd. 6
  • 7. Defining Design V 1.0 Cloud Manthan Software Solutions Pvt. Ltd. 7
  • 8. Some Design Definitions • “It’s where you stand with a foot in two worlds—the world of technology and the world of people and human purposes—and you try to bring the two together” - Creator of Lotus Notes - Mitch Kapor • Software design is a process of problem solving and planning for a software solution. After the purpose and specifications of software are determined, software developers will design or employ designers to develop a plan for a solution - Wikipedia V 1.0 Cloud Manthan Software Solutions Pvt. Ltd. 8
  • 9. WHY DESIGN ? ‘Writing a clever piece of code that works is one thing ; designing something that can support a long lasting business is quite another’ V 1.0 Cloud Manthan Software Solutions Pvt. Ltd. 9
  • 10. Purpose of Design • Solve problem • Satisfy need • Create mental model before building it • Communicate with stakeholders • Visualize Solution / Problem ! • Understand Complexity • Create better experience • Make Happy V 1.0 Cloud Manthan Software Solutions Pvt. Ltd. 10
  • 11. Impact of Design • Results in long lasting system • Makes things work without problem • Tries to avoid potential problem during construction or after construction • Gives pleasure • Feel good • Promotions • Adverse Management Policy • Sad • Frustration • Loosing jobs V 1.0 Cloud Manthan Software Solutions Pvt. Ltd. 11
  • 12. DESIGN CONCEPTS “Design is not the narrow application of formal skills, it is a way of thinking” - Chris Pullman V 1.0 Cloud Manthan Software Solutions Pvt. Ltd. 12
  • 13. Context V 1.0 Cloud Manthan Software Solutions Pvt. Ltd. 13
  • 14. Functionality V 1.0 Cloud Manthan Software Solutions Pvt. Ltd. 14
  • 15. Easy to Use V 1.0 Cloud Manthan Software Solutions Pvt. Ltd. 15
  • 16. Easy to Understand V 1.0 Cloud Manthan Software Solutions Pvt. Ltd. 16
  • 17. Intuitive V 1.0 Cloud Manthan Software Solutions Pvt. Ltd. 17
  • 18. Easy to maintain V 1.0 Cloud Manthan Software Solutions Pvt. Ltd. 18
  • 19. What else ? • Feel Good • Easy to explain • … V 1.0 Cloud Manthan Software Solutions Pvt. Ltd. 19
  • 20. SOFTWARE DESIGN CHARACTERISTICS V 1.0 Cloud Manthan Software Solutions Pvt. Ltd. 20
  • 21. Rigidity • Tendency for software to be difficult to change, even in simple ways • Every change causes a cascade of subsequent changes in dependent modules • Don’t know, with any reliability, when the change will be finished • Manager fears to allow changes to software • Official rigidity sets in • Starts with design deficiency but leads to adverse management policy V 1.0 Cloud Manthan Software Solutions Pvt. Ltd. 21
  • 22. Fragility • Tendency of the software to break in many places every time it is changed • Breakage occurs in areas that have no conceptual relationship with the area that was changed • Fills the hearts of managers with a feeling that something bad will happen • Every time managers authorize a fix, they fear that the software will break in some unexpected way • Impossible to maintain V 1.0 Cloud Manthan Software Solutions Pvt. Ltd. 22
  • 23. Immobility • Inability to reuse software from other projects or from parts of the same project • Similar modules exists but with too much baggage • Work and risk required to separate the desirable parts of the software from the undesirable parts are too great to tolerate • Simply rewritten instead of reused V 1.0 Cloud Manthan Software Solutions Pvt. Ltd. 23
  • 24. Viscosity… • Viscosity of the design – Comes about when changes sets in and there are more than one ways to make the change – Some of the ways preserve the design, others do not (i.e. they are hacks.) – Design preserving methods are harder to employ than the hacks, then the viscosity of the design is high – It is easy to do the wrong thing, but hard to do the right thing V 1.0 Cloud Manthan Software Solutions Pvt. Ltd. 24
  • 25. … Viscosity • Viscosity of the environment – Comes about when the development environment is slow and inefficient – High Compile Time • Engineers will be tempted to make changes that don’t force large recompiles, even though those changes are not optimal from a design point of view – High Check in/Checkout • Hours to check in just a few files V 1.0 Cloud Manthan Software Solutions Pvt. Ltd. 25
  • 26. Modularity • Separately named addressable components • Allows a program to be intellectually manageable • Easier to solve a complex problem when you break it into manageable pieces – Ease of development – Ease of planning – Software increments can be defined and delivered – Changes can be more easily accommodated – Testing and debugging can be conducted more effectively • Don’t over modularize – The simplicity of each small module will be overshadowed by the complexity of Integration V 1.0 Cloud Manthan Software Solutions Pvt. Ltd. 26
  • 27. Functional Independence • Modules should have – single-minded function – aversion to excessive interaction with other modules • Promote reuse and/or repurpose • Easier to maintain and test • Cohesion – Qualitative Indication of Functional Independence • Coupling – Qualitative indication of the degree to which a module is connected to other modules and outside world V 1.0 Cloud Manthan Software Solutions Pvt. Ltd. 27
  • 28. Cohesion • Degree to which the elements of a module belong together • Coincidental cohesion (ugly) – parts of a module are grouped arbitrarily (misc. classes) • Logical Cohesion – parts of a module are grouped because they logically are categorized to do the same thing, even if they are different by nature – e.g. grouping all mouse and keyboard input handling routines • Temporal Cohesion – parts of a module are grouped by when they are processed - the parts are processed at a particular time in program execution – E.g. catch an exception and close open files, creates an error log , notify user V 1.0 Cloud Manthan Software Solutions Pvt. Ltd. 28
  • 29. …Cohesion • Procedural Cohesion – parts of a module are grouped because they always follow a certain sequence of execution – (e.g. a function which checks file permissions and then opens the file) • Sequential Cohesion – parts of a module are grouped because the output from one part is the input to another part like an assembly line – e.g. a function which reads data from a file and processes the data • Functional Cohesion (Good) – Parts of a module are grouped because they all contribute to a single well- defined task of the module – e.g. tokenizing a string of XML V 1.0 Cloud Manthan Software Solutions Pvt. Ltd. 29
  • 30. Consequences of Low Cohesion • Increased difficulty in understanding modules • Increased difficulty in maintaining a system, because logical changes in the domain affect multiple modules, and because changes in one module require changes in related modules • Increased difficulty in reusing a module because most applications won’t need the random set of operations provided by a module V 1.0 Cloud Manthan Software Solutions Pvt. Ltd. 30
  • 31. Coupling… • In computing and systems design a loosely coupled system is one in which each of its components has, or makes use of, little or no knowledge of the definitions of other separate components - Wikipedia • In software engineering, coupling or dependency is the degree to which each program module relies on each one of the other modules. - Wikipedia • Software modules, objects will always have some form of coupling V 1.0 Cloud Manthan Software Solutions Pvt. Ltd. 31
  • 32. …Coupling… • Content Coupling – one module modifies or relies on the internal workings of another module (e.g., accessing local data of another module) • Global Coupling (common coupling) – Sharing same global data • External Coupling – Sharing externally imposed data format , communication protocol • Control Coupling – Control coupling is one module controlling the flow of another, by passing it information on what to do (e.g., passing a what-to-do flag) V 1.0 Cloud Manthan Software Solutions Pvt. Ltd. 32
  • 33. Coupling… • Data Structured Coupling (stamp) – Share a composite data structure and use only a part of it, possibly a different part • Data Coupling – share data through, for example, parameters • Message Coupling – message passing • No Coupling – Modules do not communicate at all with one another V 1.0 Cloud Manthan Software Solutions Pvt. Ltd. 33
  • 34. …Coupling V 1.0 Cloud Manthan Software Solutions Pvt. Ltd. 34 - Wikipedia Implications of Tight Coupling •One module usually forces a ripple effect of changes in other modules •Assembly of modules might require more effort and/or time due to the increased inter-module dependency •A particular module might be harder to reuse and/or test because dependent modules must be included
  • 35. DESIGN PROCESS V 1.0 Cloud Manthan Software Solutions Pvt. Ltd. 35
  • 36. Design Process • Incremental • Iterative • Focus on essential aspects • Intellectual • Creative • Rational • Early designs never an exact match of shipped version • Sloppy Process • Nondeterministic V 1.0 Cloud Manthan Software Solutions Pvt. Ltd. 36
  • 37. Sloppy Process • Finished design looks well-organized ,clean but Process is Sloppy • Process is Myopic – Take False Steps and go down blind alleys • Making mistakes is the point of design • Design corrections are simpler than correcting after full blown code • Hard to know when design is good enough ? – Good Solution is subtly different than a poor one • How much details is enough ? • How do you know - When are you done ? V 1.0 Cloud Manthan Software Solutions Pvt. Ltd. 37
  • 38. Nondeterministic • Same problem is solved differently by each person • Person Dependent ? • No. of ways to solve problem • Which one is correct ? V 1.0 Cloud Manthan Software Solutions Pvt. Ltd. 38
  • 39. All about Tradeoffs • Choosing one over another • Is Fast Response Rate is a more important or minimizing development time ? • Is Scale critical or performance ? • Is it configurability or performance ? • Should be easy to use or development time critical ? • …. V 1.0 Cloud Manthan Software Solutions Pvt. Ltd. 39
  • 40. Heuristic Process • Rules of Thumb • Things to try which works in most of the cases • Involves trial and error • Not a repeatable process • No guarantee that you will produce the exact same software design elements V 1.0 Cloud Manthan Software Solutions Pvt. Ltd. 40
  • 41. Controlling Possibilities • Design should create possibilities – Legal possibilities – Consistent mechanism – way of doing • Design should Partly restrict possibilities – Bring discipline – Prevent ad-hoc way of doing the things – E.g. Constructing object in no. of ways - problematic V 1.0 Cloud Manthan Software Solutions Pvt. Ltd. 41
  • 42. Refinement • Process of elaboration • Part of top-down design strategy • Helps designer to specify the low-level details as design progresses V 1.0 Cloud Manthan Software Solutions Pvt. Ltd. 42
  • 43. How to Create Good Design ? • Design Principles – Guiding philosophy • Design Heuristics – Rules of Thumb • Refactoring – Process of improving internal structure of code without modifying its functionality V 1.0 Cloud Manthan Software Solutions Pvt. Ltd. 43
  • 44. DESIGN PRINCIPLES V 1.0 Cloud Manthan Software Solutions Pvt. Ltd. 44
  • 45. Principles , Patterns & Practices V 1.0 Cloud Manthan Software Solutions Pvt. Ltd. 45 Principles Practices Establish overriding philosophy for guiding designer Design Representations (UML) Software Design Guides in building Heuristics Patterns
  • 46. Software Engineering Principles • The Reason It All Exists - To provide value to its users • Keep it Simple , Stupid ! (KISS) • Maintain the Vision - Avoids ‘two [or more] minds’ about itself • What You Produce, Others Will Consume • Be Open to the Future • Plan ahead for reuse V 1.0 Cloud Manthan Software Solutions Pvt. Ltd. 46
  • 47. Design Modeling Principles • Design should be traceable to the analysis model • Design in the context of Architecture • Design of data is as important as design of processing functions • Interfaces must be designed with care • User Interface design should be tuned to the needs of an end user • Component-level design should be functionally independent • Components should be loosely coupled to one another and to the external environment • Design representations should be easily understandable • Strive for design simplicity with each iteration V 1.0 Cloud Manthan Software Solutions Pvt. Ltd. 47
  • 48. SOFTWARE DESIGN HEURISTICS V 1.0 Cloud Manthan Software Solutions Pvt. Ltd. 48
  • 49. Definition : Heuristics • Heuristic ( Greek: "find" or "discover") refers to experience-based techniques for problem solving, learning, and discovery • Where an exhaustive search is impractical, heuristic methods are used to speed up the process of finding a satisfactory solution • Examples : a rule of thumb, an educated guess, an intuitive judgment, or common sense V 1.0 Cloud Manthan Software Solutions Pvt. Ltd. 49
  • 50. Where do we stand • Day 1 – Module 1 – Setting the Context – Module 2 – Design – Module 3 – Object Oriented (OO) Paradigm • Day 2 – Module 4 – OO Principles – Module 5 – Design Patterns – Module 6 – Creational Patterns V 1.0 Cloud Manthan Software Solutions Pvt. Ltd. 50
  • 51. Cloud Manthan Software Solutions Pvt. Ltd. http://www.cloudmanthan.com V 1.0 www.cloudmanthan.com 51 Cloud Manthan Software Solutions Private Limited E-3,Lokmanya Pan Bazar,Opp. Everard Nagar Chunabhatti (E) , Eastern Express Highway, Sion Mumbai - 400 022 amod.kadam@cloudmanthan.com +91 98923 00901

Editor's Notes

  • #6: Define : Integrative : Combining and coordinating diverse elements into a whol
  • #7: Define: viable : Capable of working successfully; feasible: "the proposed investment was economically viable". Define : feasible : Likely; probable, Possible to do easily or conveniently.
  • #8: Design : A visual defect in which distant objects appear blurred because their images are focused in front of the retina rather than on it; nearsightedness. Also called short sight.
  • #18: Intuitive : The ability to understand something immediately, without the need for conscious reasoning.
  • #22: 2 day change to one module grows into a multiweek marathon of change in module after module
  • #23: Foreboding : Fearful apprehension; a feeling that something bad will happen
  • #24: Slide Objective Slide Notes It often happens that one engineer will discover that he needs a module that is similar to one that another engineer wrote. However, it also often happens that the module in question has too much baggage that it depends upon. After much work, the engineers discover that the work and risk required to separate the desirable parts of the software from the undesirable parts are too great to tolerate. And so the software is simply rewritten instead of reused
  • #27: Development can be easily planned
  • #30: http://en.wikipedia.org/wiki/Cohesion_(computer_science)
  • #32: Examples Message Driven , Asynchronous, Web Services , Tibco - RV
  • #38: Sloppy : (of semifluid matter) Watery and disagreeable or unsatisfactory: "do not make the concrete too sloppy". 2) Careless and unsystematic; excessively casual.
  • #44: Philosophy is the study of general and fundamental problems, such as those connected with reality, existence, knowledge, values, reason, mind, and language.[1][2] Philosophy is distinguished from other ways of addressing such problems by its critical, generally systematic approach and its reliance on rational argument.[3] The word "philosophy" comes from the Greek φιλοσοφία (philosophia), which literally means "love of wisdom".[4][5][6]
  • #46: Slide Objective To set the context for the design Slide Notes Fundamental, primary, or general law or truth from which others are derived Dictionary.com
  • #47: Slide Objective To set the context for principles Slide Notes Clear vision is essential to the success of a software project.
  • #48: Slide Objective To set the context for principles Slide Notes Clear vision is essential to the success of a software project.