SlideShare a Scribd company logo
1 of 51
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

What's hot

Software Engineering - Ch8
Software Engineering - Ch8Software Engineering - Ch8
Software Engineering - Ch8Siddharth Ayer
 
Pressman ch-11-component-level-design
Pressman ch-11-component-level-designPressman ch-11-component-level-design
Pressman ch-11-component-level-designOliver Cheng
 
SE2018_Lec 18_ Design Principles and Design Patterns
SE2018_Lec 18_ Design Principles and Design PatternsSE2018_Lec 18_ Design Principles and Design Patterns
SE2018_Lec 18_ Design Principles and Design PatternsAmr E. Mohamed
 
Pressman ch-11-component-level-design
Pressman ch-11-component-level-designPressman ch-11-component-level-design
Pressman ch-11-component-level-designOliver Cheng
 
SE18_Lec 05_Agile Software Development
SE18_Lec 05_Agile Software DevelopmentSE18_Lec 05_Agile Software Development
SE18_Lec 05_Agile Software DevelopmentAmr E. Mohamed
 
Extreme programming - Kent Beck
Extreme programming - Kent BeckExtreme programming - Kent Beck
Extreme programming - Kent BeckAngelLuisBlasco
 
SWE-401 - 7. Software Design Strategies
SWE-401 - 7. Software Design StrategiesSWE-401 - 7. Software Design Strategies
SWE-401 - 7. Software Design Strategiesghayour abbas
 
Pressman ch-3-prescriptive-process-models
Pressman ch-3-prescriptive-process-modelsPressman ch-3-prescriptive-process-models
Pressman ch-3-prescriptive-process-modelsNoor Ul Hudda Memon
 
SE2018_Lec 21_ Software Configuration Management (SCM)
SE2018_Lec 21_ Software Configuration Management (SCM)SE2018_Lec 21_ Software Configuration Management (SCM)
SE2018_Lec 21_ Software Configuration Management (SCM)Amr E. Mohamed
 
Chapter 21 project management concepts
Chapter 21 project management conceptsChapter 21 project management concepts
Chapter 21 project management conceptsSHREEHARI WADAWADAGI
 
Information system development & programming language
Information system development & programming languageInformation system development & programming language
Information system development & programming languageMuhammad Shahid
 
Unit IV Software Engineering
Unit IV Software EngineeringUnit IV Software Engineering
Unit IV Software EngineeringNandhini S
 
Design concepts and design principles
Design concepts and design principlesDesign concepts and design principles
Design concepts and design principlesDhruvin Nakrani
 
Chapter 4 software design
Chapter 4  software designChapter 4  software design
Chapter 4 software designCliftone Mullah
 

What's hot (19)

Software Engineering - Ch8
Software Engineering - Ch8Software Engineering - Ch8
Software Engineering - Ch8
 
Pressman ch-11-component-level-design
Pressman ch-11-component-level-designPressman ch-11-component-level-design
Pressman ch-11-component-level-design
 
Component level design
Component   level designComponent   level design
Component level design
 
SE2018_Lec 18_ Design Principles and Design Patterns
SE2018_Lec 18_ Design Principles and Design PatternsSE2018_Lec 18_ Design Principles and Design Patterns
SE2018_Lec 18_ Design Principles and Design Patterns
 
Pressman ch-11-component-level-design
Pressman ch-11-component-level-designPressman ch-11-component-level-design
Pressman ch-11-component-level-design
 
SE18_Lec 05_Agile Software Development
SE18_Lec 05_Agile Software DevelopmentSE18_Lec 05_Agile Software Development
SE18_Lec 05_Agile Software Development
 
Ppt nardeep
Ppt nardeepPpt nardeep
Ppt nardeep
 
Extreme programming - Kent Beck
Extreme programming - Kent BeckExtreme programming - Kent Beck
Extreme programming - Kent Beck
 
SWE-401 - 7. Software Design Strategies
SWE-401 - 7. Software Design StrategiesSWE-401 - 7. Software Design Strategies
SWE-401 - 7. Software Design Strategies
 
Pressman ch-3-prescriptive-process-models
Pressman ch-3-prescriptive-process-modelsPressman ch-3-prescriptive-process-models
Pressman ch-3-prescriptive-process-models
 
SE2018_Lec 21_ Software Configuration Management (SCM)
SE2018_Lec 21_ Software Configuration Management (SCM)SE2018_Lec 21_ Software Configuration Management (SCM)
SE2018_Lec 21_ Software Configuration Management (SCM)
 
Chapter 21 project management concepts
Chapter 21 project management conceptsChapter 21 project management concepts
Chapter 21 project management concepts
 
Information system development & programming language
Information system development & programming languageInformation system development & programming language
Information system development & programming language
 
SE UNIT-3.pdf
SE UNIT-3.pdfSE UNIT-3.pdf
SE UNIT-3.pdf
 
Unit IV Software Engineering
Unit IV Software EngineeringUnit IV Software Engineering
Unit IV Software Engineering
 
Unit2
Unit2Unit2
Unit2
 
Design concepts and design principles
Design concepts and design principlesDesign concepts and design principles
Design concepts and design principles
 
Chapter 4 software design
Chapter 4  software designChapter 4  software design
Chapter 4 software design
 
Unit 5
Unit 5Unit 5
Unit 5
 

Viewers also liked

ขั้นตอนการทำโครงงานคอมพิวเตอร์
ขั้นตอนการทำโครงงานคอมพิวเตอร์ขั้นตอนการทำโครงงานคอมพิวเตอร์
ขั้นตอนการทำโครงงานคอมพิวเตอร์tangonjr
 
мезозой 2016
мезозой 2016мезозой 2016
мезозой 2016ANNA_SH77
 
Evaluation question 4
Evaluation question 4Evaluation question 4
Evaluation question 4danwj
 
Manifesto Gündem Trend Raporu Aralık 2015
Manifesto Gündem Trend Raporu Aralık 2015Manifesto Gündem Trend Raporu Aralık 2015
Manifesto Gündem Trend Raporu Aralık 2015Manifesto
 
Sports events a boost in india tourism
Sports events  a boost in india tourismSports events  a boost in india tourism
Sports events a boost in india tourismNeoNiche Integrated
 
Question 1111111
Question 1111111Question 1111111
Question 1111111danwj
 
Product review reminder allows you to send your clients email reminders autom...
Product review reminder allows you to send your clients email reminders autom...Product review reminder allows you to send your clients email reminders autom...
Product review reminder allows you to send your clients email reminders autom...Joe Hendrix
 
Bai tap hay khao sat ham so toan 12
Bai tap hay khao sat ham so toan 12Bai tap hay khao sat ham so toan 12
Bai tap hay khao sat ham so toan 12ruanwende
 
CXPA Customer Experience Superhero Success Guide
CXPA Customer Experience Superhero Success GuideCXPA Customer Experience Superhero Success Guide
CXPA Customer Experience Superhero Success GuideKarl Sharicz
 
Today’s branding is a function of media fragmentation: Prateek Kumarrateek Kumar
Today’s branding is a function of media fragmentation: Prateek Kumarrateek KumarToday’s branding is a function of media fragmentation: Prateek Kumarrateek Kumar
Today’s branding is a function of media fragmentation: Prateek Kumarrateek KumarNeoNiche Integrated
 
Question 4 5
Question 4 5Question 4 5
Question 4 5danwj
 
Can depression be cured?
Can depression be cured?Can depression be cured?
Can depression be cured?Fausto Petrone
 
Создание логотипов, фирменных стилей в Набережных Челнах, Нижнекамске, Елабуге
Создание логотипов, фирменных стилей в Набережных Челнах, Нижнекамске, ЕлабугеСоздание логотипов, фирменных стилей в Набережных Челнах, Нижнекамске, Елабуге
Создание логотипов, фирменных стилей в Набережных Челнах, Нижнекамске, ЕлабугеAro Aro
 
Awethu Scaffold Profile PDFb 2015
Awethu Scaffold Profile PDFb 2015Awethu Scaffold Profile PDFb 2015
Awethu Scaffold Profile PDFb 2015Gerrie Burger
 
Question 6
Question 6Question 6
Question 6danwj
 
Gündem Trend Raporu-Temmuz 2016
Gündem Trend Raporu-Temmuz 2016Gündem Trend Raporu-Temmuz 2016
Gündem Trend Raporu-Temmuz 2016Manifesto
 

Viewers also liked (20)

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

Similar to Object Oriented Design - Good , Bad and Ugly

System software design1
System software design1System software design1
System software design1PrityRawat2
 
Software Engineering Lec 8-design-
Software Engineering Lec 8-design-Software Engineering Lec 8-design-
Software Engineering Lec 8-design-Taymoor Nazmy
 
Understanding Microservices
Understanding Microservices Understanding Microservices
Understanding Microservices M A Hossain Tonu
 
META for Microservices: Getting your enterprise migration in motion
META for Microservices: Getting your enterprise migration in motionMETA for Microservices: Getting your enterprise migration in motion
META for Microservices: Getting your enterprise migration in motionMatt McLarty
 
Unit3 Software engineering UPTU
Unit3 Software engineering UPTUUnit3 Software engineering UPTU
Unit3 Software engineering UPTUMohammad Faizan
 
MicroserviceArchitecture in detail over Monolith.
MicroserviceArchitecture in detail over Monolith.MicroserviceArchitecture in detail over Monolith.
MicroserviceArchitecture in detail over Monolith.PLovababu
 
Crm saturday madrid 2017 razwan - d365 solution release management
Crm saturday madrid 2017   razwan - d365 solution release managementCrm saturday madrid 2017   razwan - d365 solution release management
Crm saturday madrid 2017 razwan - d365 solution release managementDemian Raschkovan
 
Software Engineering Unit 3 PPT Software Design
Software Engineering Unit 3 PPT Software DesignSoftware Engineering Unit 3 PPT Software Design
Software Engineering Unit 3 PPT Software Designmayanksingh678141
 
Software design, software engineering
Software design, software engineeringSoftware design, software engineering
Software design, software engineeringRupesh Vaishnav
 
INTRODUCTION TO SOFTWARE ENGINEERING
INTRODUCTION TO SOFTWARE ENGINEERINGINTRODUCTION TO SOFTWARE ENGINEERING
INTRODUCTION TO SOFTWARE ENGINEERINGPreeti Mishra
 
Chapter 5 Software Design of software engineering.pptx
Chapter 5 Software Design of software engineering.pptxChapter 5 Software Design of software engineering.pptx
Chapter 5 Software Design of software engineering.pptxgadisaAdamu
 
Chapter five software Software Design.pptx
Chapter five software  Software Design.pptxChapter five software  Software Design.pptx
Chapter five software Software Design.pptxgadisaAdamu
 

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

System software design1
System software design1System software design1
System software design1
 
Software Engineering Lec 8-design-
Software Engineering Lec 8-design-Software Engineering Lec 8-design-
Software Engineering Lec 8-design-
 
Week 6
Week 6Week 6
Week 6
 
Software design
Software designSoftware design
Software design
 
5 software design
5 software design5 software design
5 software design
 
Understanding Microservices
Understanding Microservices Understanding Microservices
Understanding Microservices
 
Monolith to microservices journey
Monolith to microservices journeyMonolith to microservices journey
Monolith to microservices journey
 
META for Microservices: Getting your enterprise migration in motion
META for Microservices: Getting your enterprise migration in motionMETA for Microservices: Getting your enterprise migration in motion
META for Microservices: Getting your enterprise migration in motion
 
Unit3 Software engineering UPTU
Unit3 Software engineering UPTUUnit3 Software engineering UPTU
Unit3 Software engineering UPTU
 
Software Design - SDLC Model
Software Design - SDLC ModelSoftware Design - SDLC Model
Software Design - SDLC Model
 
Class 2013 presentation
Class 2013 presentationClass 2013 presentation
Class 2013 presentation
 
SE-software design.ppt
SE-software design.pptSE-software design.ppt
SE-software design.ppt
 
MicroserviceArchitecture in detail over Monolith.
MicroserviceArchitecture in detail over Monolith.MicroserviceArchitecture in detail over Monolith.
MicroserviceArchitecture in detail over Monolith.
 
CHAPTER12.ppt
CHAPTER12.pptCHAPTER12.ppt
CHAPTER12.ppt
 
Crm saturday madrid 2017 razwan - d365 solution release management
Crm saturday madrid 2017   razwan - d365 solution release managementCrm saturday madrid 2017   razwan - d365 solution release management
Crm saturday madrid 2017 razwan - d365 solution release management
 
Software Engineering Unit 3 PPT Software Design
Software Engineering Unit 3 PPT Software DesignSoftware Engineering Unit 3 PPT Software Design
Software Engineering Unit 3 PPT Software Design
 
Software design, software engineering
Software design, software engineeringSoftware design, software engineering
Software design, software engineering
 
INTRODUCTION TO SOFTWARE ENGINEERING
INTRODUCTION TO SOFTWARE ENGINEERINGINTRODUCTION TO SOFTWARE ENGINEERING
INTRODUCTION TO SOFTWARE ENGINEERING
 
Chapter 5 Software Design of software engineering.pptx
Chapter 5 Software Design of software engineering.pptxChapter 5 Software Design of software engineering.pptx
Chapter 5 Software Design of software engineering.pptx
 
Chapter five software Software Design.pptx
Chapter five software  Software Design.pptxChapter five software  Software Design.pptx
Chapter five software Software Design.pptx
 

More from amodkadam

Cloud Manthn Software Solutions Pvt Ltd - What we do ?
Cloud Manthn Software Solutions Pvt Ltd - What we do ?Cloud Manthn Software Solutions Pvt Ltd - What we do ?
Cloud Manthn Software Solutions Pvt Ltd - What we do ?amodkadam
 
AWS Foundation Overview Course - Online
AWS Foundation Overview Course - OnlineAWS Foundation Overview Course - Online
AWS Foundation Overview Course - Onlineamodkadam
 
AWS Foundation Course - Outline
AWS Foundation Course - OutlineAWS Foundation Course - Outline
AWS Foundation Course - Outlineamodkadam
 
Q & A - Amazon WorkSpaces
Q & A - Amazon WorkSpaces Q & A - Amazon WorkSpaces
Q & A - Amazon WorkSpaces amodkadam
 
Amazon WorkSpaces-Virtual Desktops in Cloud
Amazon WorkSpaces-Virtual Desktops in CloudAmazon WorkSpaces-Virtual Desktops in Cloud
Amazon WorkSpaces-Virtual Desktops in Cloudamodkadam
 
JEE Foundation Course for non Java professionals
JEE Foundation Course for non Java professionalsJEE Foundation Course for non Java professionals
JEE Foundation Course for non Java professionalsamodkadam
 
Lecture on Cloud Computing at Mumbai Education Trust Mumbai , India
Lecture on Cloud Computing at Mumbai Education Trust Mumbai , India Lecture on Cloud Computing at Mumbai Education Trust Mumbai , India
Lecture on Cloud Computing at Mumbai Education Trust Mumbai , India amodkadam
 

More from amodkadam (7)

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

Recently uploaded

Ronisha Informatics Private Limited Catalogue
Ronisha Informatics Private Limited CatalogueRonisha Informatics Private Limited Catalogue
Ronisha Informatics Private Limited Catalogueitservices996
 
GraphSummit Madrid - Product Vision and Roadmap - Luis Salvador Neo4j
GraphSummit Madrid - Product Vision and Roadmap - Luis Salvador Neo4jGraphSummit Madrid - Product Vision and Roadmap - Luis Salvador Neo4j
GraphSummit Madrid - Product Vision and Roadmap - Luis Salvador Neo4jNeo4j
 
[ CNCF Q1 2024 ] Intro to Continuous Profiling and Grafana Pyroscope.pdf
[ CNCF Q1 2024 ] Intro to Continuous Profiling and Grafana Pyroscope.pdf[ CNCF Q1 2024 ] Intro to Continuous Profiling and Grafana Pyroscope.pdf
[ CNCF Q1 2024 ] Intro to Continuous Profiling and Grafana Pyroscope.pdfSteve Caron
 
Pros and Cons of Selenium In Automation Testing_ A Comprehensive Assessment.pdf
Pros and Cons of Selenium In Automation Testing_ A Comprehensive Assessment.pdfPros and Cons of Selenium In Automation Testing_ A Comprehensive Assessment.pdf
Pros and Cons of Selenium In Automation Testing_ A Comprehensive Assessment.pdfkalichargn70th171
 
Large Language Models for Test Case Evolution and Repair
Large Language Models for Test Case Evolution and RepairLarge Language Models for Test Case Evolution and Repair
Large Language Models for Test Case Evolution and RepairLionel Briand
 
What’s New in VictoriaMetrics: Q1 2024 Updates
What’s New in VictoriaMetrics: Q1 2024 UpdatesWhat’s New in VictoriaMetrics: Q1 2024 Updates
What’s New in VictoriaMetrics: Q1 2024 UpdatesVictoriaMetrics
 
2024-04-09 - From Complexity to Clarity - AWS Summit AMS.pdf
2024-04-09 - From Complexity to Clarity - AWS Summit AMS.pdf2024-04-09 - From Complexity to Clarity - AWS Summit AMS.pdf
2024-04-09 - From Complexity to Clarity - AWS Summit AMS.pdfAndrey Devyatkin
 
Introduction to Firebase Workshop Slides
Introduction to Firebase Workshop SlidesIntroduction to Firebase Workshop Slides
Introduction to Firebase Workshop Slidesvaideheekore1
 
Mastering Project Planning with Microsoft Project 2016.pptx
Mastering Project Planning with Microsoft Project 2016.pptxMastering Project Planning with Microsoft Project 2016.pptx
Mastering Project Planning with Microsoft Project 2016.pptxAS Design & AST.
 
The Ultimate Guide to Performance Testing in Low-Code, No-Code Environments (...
The Ultimate Guide to Performance Testing in Low-Code, No-Code Environments (...The Ultimate Guide to Performance Testing in Low-Code, No-Code Environments (...
The Ultimate Guide to Performance Testing in Low-Code, No-Code Environments (...kalichargn70th171
 
Zer0con 2024 final share short version.pdf
Zer0con 2024 final share short version.pdfZer0con 2024 final share short version.pdf
Zer0con 2024 final share short version.pdfmaor17
 
Amazon Bedrock in Action - presentation of the Bedrock's capabilities
Amazon Bedrock in Action - presentation of the Bedrock's capabilitiesAmazon Bedrock in Action - presentation of the Bedrock's capabilities
Amazon Bedrock in Action - presentation of the Bedrock's capabilitiesKrzysztofKkol1
 
2024 DevNexus Patterns for Resiliency: Shuffle shards
2024 DevNexus Patterns for Resiliency: Shuffle shards2024 DevNexus Patterns for Resiliency: Shuffle shards
2024 DevNexus Patterns for Resiliency: Shuffle shardsChristopher Curtin
 
JavaLand 2024 - Going serverless with Quarkus GraalVM native images and AWS L...
JavaLand 2024 - Going serverless with Quarkus GraalVM native images and AWS L...JavaLand 2024 - Going serverless with Quarkus GraalVM native images and AWS L...
JavaLand 2024 - Going serverless with Quarkus GraalVM native images and AWS L...Bert Jan Schrijver
 
The Role of IoT and Sensor Technology in Cargo Cloud Solutions.pptx
The Role of IoT and Sensor Technology in Cargo Cloud Solutions.pptxThe Role of IoT and Sensor Technology in Cargo Cloud Solutions.pptx
The Role of IoT and Sensor Technology in Cargo Cloud Solutions.pptxRTS corp
 
Keeping your build tool updated in a multi repository world
Keeping your build tool updated in a multi repository worldKeeping your build tool updated in a multi repository world
Keeping your build tool updated in a multi repository worldRoberto Pérez Alcolea
 
OpenChain AI Study Group - Europe and Asia Recap - 2024-04-11 - Full Recording
OpenChain AI Study Group - Europe and Asia Recap - 2024-04-11 - Full RecordingOpenChain AI Study Group - Europe and Asia Recap - 2024-04-11 - Full Recording
OpenChain AI Study Group - Europe and Asia Recap - 2024-04-11 - Full RecordingShane Coughlan
 
SAM Training Session - How to use EXCEL ?
SAM Training Session - How to use EXCEL ?SAM Training Session - How to use EXCEL ?
SAM Training Session - How to use EXCEL ?Alexandre Beguel
 
Strategies for using alternative queries to mitigate zero results
Strategies for using alternative queries to mitigate zero resultsStrategies for using alternative queries to mitigate zero results
Strategies for using alternative queries to mitigate zero resultsJean Silva
 
Understanding Flamingo - DeepMind's VLM Architecture
Understanding Flamingo - DeepMind's VLM ArchitectureUnderstanding Flamingo - DeepMind's VLM Architecture
Understanding Flamingo - DeepMind's VLM Architecturerahul_net
 

Recently uploaded (20)

Ronisha Informatics Private Limited Catalogue
Ronisha Informatics Private Limited CatalogueRonisha Informatics Private Limited Catalogue
Ronisha Informatics Private Limited Catalogue
 
GraphSummit Madrid - Product Vision and Roadmap - Luis Salvador Neo4j
GraphSummit Madrid - Product Vision and Roadmap - Luis Salvador Neo4jGraphSummit Madrid - Product Vision and Roadmap - Luis Salvador Neo4j
GraphSummit Madrid - Product Vision and Roadmap - Luis Salvador Neo4j
 
[ CNCF Q1 2024 ] Intro to Continuous Profiling and Grafana Pyroscope.pdf
[ CNCF Q1 2024 ] Intro to Continuous Profiling and Grafana Pyroscope.pdf[ CNCF Q1 2024 ] Intro to Continuous Profiling and Grafana Pyroscope.pdf
[ CNCF Q1 2024 ] Intro to Continuous Profiling and Grafana Pyroscope.pdf
 
Pros and Cons of Selenium In Automation Testing_ A Comprehensive Assessment.pdf
Pros and Cons of Selenium In Automation Testing_ A Comprehensive Assessment.pdfPros and Cons of Selenium In Automation Testing_ A Comprehensive Assessment.pdf
Pros and Cons of Selenium In Automation Testing_ A Comprehensive Assessment.pdf
 
Large Language Models for Test Case Evolution and Repair
Large Language Models for Test Case Evolution and RepairLarge Language Models for Test Case Evolution and Repair
Large Language Models for Test Case Evolution and Repair
 
What’s New in VictoriaMetrics: Q1 2024 Updates
What’s New in VictoriaMetrics: Q1 2024 UpdatesWhat’s New in VictoriaMetrics: Q1 2024 Updates
What’s New in VictoriaMetrics: Q1 2024 Updates
 
2024-04-09 - From Complexity to Clarity - AWS Summit AMS.pdf
2024-04-09 - From Complexity to Clarity - AWS Summit AMS.pdf2024-04-09 - From Complexity to Clarity - AWS Summit AMS.pdf
2024-04-09 - From Complexity to Clarity - AWS Summit AMS.pdf
 
Introduction to Firebase Workshop Slides
Introduction to Firebase Workshop SlidesIntroduction to Firebase Workshop Slides
Introduction to Firebase Workshop Slides
 
Mastering Project Planning with Microsoft Project 2016.pptx
Mastering Project Planning with Microsoft Project 2016.pptxMastering Project Planning with Microsoft Project 2016.pptx
Mastering Project Planning with Microsoft Project 2016.pptx
 
The Ultimate Guide to Performance Testing in Low-Code, No-Code Environments (...
The Ultimate Guide to Performance Testing in Low-Code, No-Code Environments (...The Ultimate Guide to Performance Testing in Low-Code, No-Code Environments (...
The Ultimate Guide to Performance Testing in Low-Code, No-Code Environments (...
 
Zer0con 2024 final share short version.pdf
Zer0con 2024 final share short version.pdfZer0con 2024 final share short version.pdf
Zer0con 2024 final share short version.pdf
 
Amazon Bedrock in Action - presentation of the Bedrock's capabilities
Amazon Bedrock in Action - presentation of the Bedrock's capabilitiesAmazon Bedrock in Action - presentation of the Bedrock's capabilities
Amazon Bedrock in Action - presentation of the Bedrock's capabilities
 
2024 DevNexus Patterns for Resiliency: Shuffle shards
2024 DevNexus Patterns for Resiliency: Shuffle shards2024 DevNexus Patterns for Resiliency: Shuffle shards
2024 DevNexus Patterns for Resiliency: Shuffle shards
 
JavaLand 2024 - Going serverless with Quarkus GraalVM native images and AWS L...
JavaLand 2024 - Going serverless with Quarkus GraalVM native images and AWS L...JavaLand 2024 - Going serverless with Quarkus GraalVM native images and AWS L...
JavaLand 2024 - Going serverless with Quarkus GraalVM native images and AWS L...
 
The Role of IoT and Sensor Technology in Cargo Cloud Solutions.pptx
The Role of IoT and Sensor Technology in Cargo Cloud Solutions.pptxThe Role of IoT and Sensor Technology in Cargo Cloud Solutions.pptx
The Role of IoT and Sensor Technology in Cargo Cloud Solutions.pptx
 
Keeping your build tool updated in a multi repository world
Keeping your build tool updated in a multi repository worldKeeping your build tool updated in a multi repository world
Keeping your build tool updated in a multi repository world
 
OpenChain AI Study Group - Europe and Asia Recap - 2024-04-11 - Full Recording
OpenChain AI Study Group - Europe and Asia Recap - 2024-04-11 - Full RecordingOpenChain AI Study Group - Europe and Asia Recap - 2024-04-11 - Full Recording
OpenChain AI Study Group - Europe and Asia Recap - 2024-04-11 - Full Recording
 
SAM Training Session - How to use EXCEL ?
SAM Training Session - How to use EXCEL ?SAM Training Session - How to use EXCEL ?
SAM Training Session - How to use EXCEL ?
 
Strategies for using alternative queries to mitigate zero results
Strategies for using alternative queries to mitigate zero resultsStrategies for using alternative queries to mitigate zero results
Strategies for using alternative queries to mitigate zero results
 
Understanding Flamingo - DeepMind's VLM Architecture
Understanding Flamingo - DeepMind's VLM ArchitectureUnderstanding Flamingo - DeepMind's VLM Architecture
Understanding Flamingo - DeepMind's VLM Architecture
 

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

  1. Define : Integrative : Combining and coordinating diverse elements into a whol
  2. Define: viable : Capable of working successfully; feasible: "the proposed investment was economically viable". Define : feasible : Likely; probable, Possible to do easily or conveniently.
  3. 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.
  4. Intuitive : The ability to understand something immediately, without the need for conscious reasoning.
  5. 2 day change to one module grows into a multiweek marathon of change in module after module
  6. Foreboding : Fearful apprehension; a feeling that something bad will happen
  7. 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
  8. Development can be easily planned
  9. http://en.wikipedia.org/wiki/Cohesion_(computer_science)
  10. Examples Message Driven , Asynchronous, Web Services , Tibco - RV
  11. Sloppy : (of semifluid matter) Watery and disagreeable or unsatisfactory: "do not make the concrete too sloppy". 2) Careless and unsystematic; excessively casual.
  12. 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]
  13. 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
  14. Slide Objective To set the context for principles Slide Notes Clear vision is essential to the success of a software project.
  15. Slide Objective To set the context for principles Slide Notes Clear vision is essential to the success of a software project.