SlideShare a Scribd company logo
1 of 79
Programming in the large
Naveen Muguda
Two kinds of medicines
• Over the counter
• Prescription
programming in small
• activity of writing a small program.
• Small programs are typified by being small in terms of their source
code size,
• are easy to specify, quick to code and typically perform one task or a
few very closely related tasks very well.
• Programming in the large
• by larger groups of people or by smaller groups over longer time periods
• program changes can become difficult
• If a change operates across module boundaries, the work of many people
may need re-doing.
Laws of Software Evolution
• An E-program is written to perform some real-world activity;
• how it should behave is strongly linked to the environment in which
it runs,
• needs to adapt to varying requirements and circumstances in that
environment
Laws of Software Evolution
• "Continuing Change" —must be continually adapted or it becomes
progressively less satisfactory.
• "Increasing Complexity" —its complexity increases unless work is done to
maintain or reduce it.
• "Conservation of Organisational Stability (invariant work rate)" — the
average effective global activity rate in an evolving system is invariant over
the product's lifetime.
• "Continuing Growth" — the functional content of a system must be
continually increased to maintain user satisfaction over its lifetime.
• "Declining Quality" — the quality of a system will appear to be declining
unless it is rigorously maintained and adapted to operational environment
changes.
Price of being reactive
continuity
Effort,
unpredicatability
Complexity
• Complexity reflects the number and nature of entities that comprise
the software, and the number and nature of interactions between
them.
Complex
• a complex issue is one in which you can’t get a firm handle on the
parts and there are no rules, algorithms, or natural laws.
• "Things that are complex have no such degree of order, control, or
predictability"
• A complex thing is much more challenging--and different--than the
sum of its parts, because its parts can interact in unpredictable ways.
Complicated
• "the components can be separated and dealt with in a systematic
and logical way that relies on a set of rules or algorithms.”
• allows you to deal with it in a repeatable manner.
Size | Nature Simple Complex Complicated
small ✓
large ✓ ✓
complicated
• order, control, predictability
• rules, algorithms, laws, recipes
Complicatedness
• “Liberties constrain, constraints liberate”
goal of programming in the large
• Make system “complicated” instead of being complex
complexity
• Inherent needs to be managed
• Accidental needs to be reduced/eliminated
perspective
• programming properly should be regarded as an activity by which the
programmers form or achieve a certain kind of insight, a theory, of
the matters at hand. This suggestion is in contrast to what appears to
be a more common notion, that programming should be regarded as
a production of a program and certain other texts.” - Peter Naur
perspective
• programming properly should be regarded as an activity by which the
programmers form or achieve a certain kind of insight, a theory, of
the matters at hand. This suggestion is in contrast to what appears to
be a more common notion, that programming should be regarded as
a production of a program and certain other texts.” -Peter Naur
Problem solving
• apply the model
• create/change/delete the model
When you drive
• apply the model
• create/change/delete the model
Programming in the large
• apply the model
• create/change/delete the model
Models allow us to deal with new situations
• They expedite reasoning
• “seems like pub-sub system”
• “looks like a bounded buffer”
• “it’s going to be master slave system”
Model
• General idea behind many specific ones
• People remember abstractions
experiments
multiplication
That vs How
• 5 * 6 => knowing that
• 47 * 78 => knowing how
• knowing that doesn’t scale
• knowing how scales
• People remember methods/mechanisms
• “will use a builder”
• “will wrap that in a optional”
• “will use a circuit breaker”
• Theories “compress” knowledge.
• int relationshipStatus
• Enum RelationShipStatus { Single, Married, Divorced}
struct Stack {
int top;
unsigned capacity;
int* array;
};
void push(struct Stack* stack, int item)
{
if (isFull(stack))
return;
stack->array[++stack->top] = item;
}
int pop(struct Stack* stack)
{
if (isEmpty(stack))
return INT_MIN;
return stack->array[stack->top--];
}
class Stack {
private int top;
private int a[] =
public boolean push(int x)
{
}
public int pop()
{
}
• Anti pattern: Primitive obsession, Procedural Programming, Beans
Bad practice
• Anemic Domain Model
• “ domain model where the domain objects contain little or
no business logic (validations, calculations, business rules etc.)”
• 39865 / 17
• composability
• On the criteria to be used in decomposing systems into
modules David L Parnas, 1971
• “that it is almost always incorrect to begin the decomposition of a
system into modules on the basis of a flowchart”
“axis of change”
• “We propose instead that one begins with a list of difficult design
decisions or design decisions which are likely to change.
• Each module is then designed to hide such a decision from the
others”
• Bad practice: controller based decomposition
Categories of models
Domain Solution
RDD
Design patterns
Architecture Styles
Coding Styles
Math, Logic
Logic
Set Theory
Discrete Maths
Category Theory
Infrastructure
Concurrency Model,
Process model
Database, Event Queue, Data Structures
Distributed Systems
• Models should be filtered, precise, compressed and organized
perceptions of knowledge.
Inspiration of models
• Theory | Story | Observation| Math | Metaphor
CRC
• Model for reasoning about objects/classes
• Identify a class’s
• responsibilities
• collaborations
Responsibility Driven Design
• objects play specific roles and occupy well-known positions.
• community of objects.
• Each object is accountable for a specific portion of the work.
• Objects collaborate in clearly-defined ways.
Responsibility Driven Design
• object(class)’s role determines its responsibility
Stereotypes
Information holder
Structurer
Coordinator
Controller
Interfacer
Service provider
Control styles
• Centralized control style
• Delegated control style
• Clustered control style
• Dispersed control style
• Preferred control style
RDD: #1 :MVCRDD #1
MVC
• Model: manages the data, logic and rules of the application.
• View: output representation of information
• Controller: accepts input and converts it to commands for the model
or view
RDD: #2 EBI
• How to design the model
• Entity : Represent the business objects and contain business logic
• Boundary: model the interface with the system
• Interactor: Use case
RDD: Clean
Architecture
• The outer circles are mechanisms. The inner circles are policies.
• The overriding rule that makes this architecture work is The
Dependency Rule. This rule says that source code dependencies can
only point inwards. Nothing in an inner circle can know anything at all
about something in an outer circle.
• Independent of Frameworks.
• Testable. The business rules can be tested without the UI, Database,
Web Server, or any other external element.
• Independent of UI.
• Independent of Database. Your business rules are not bound to the
database.
• Independent of any external agency.
Domain Driven Design
• Entity
• Value object
• Domain Event
• Service
• Factory
• Repository
Clean
Architecture
complex
complicated
Bounded Context
Partially applied Abstractions
Patterns
Architectural Styles
Structure
Component-based
Monolithic application
Layered
Pipes and filters
Shared memory
Database-centric
Blackboard
Rule-based
Messaging
Event-driven aka implicit invocation
Publish-subscribe
Asynchronous messaging
Adaptive systems
Plug-ins
Microkernel
Reflection
Domain specific languages
Distributed systems
Client-server (2-tier, 3-tier, n-tier exhibit this style)
Shared nothing architecture
Space-based architecture
Object request broker
Peer-to-peer
Representational state transfer (REST)
Service-oriented
Cloud computing patterns

More Related Content

Similar to Programming in the large

Coupling coheshion tps
Coupling coheshion tpsCoupling coheshion tps
Coupling coheshion tpsPreeti Mishra
 
Adbms 1 object oriented modeling
Adbms 1 object oriented modelingAdbms 1 object oriented modeling
Adbms 1 object oriented modelingVaibhav Khanna
 
Introduction to Design Patterns in Javascript
Introduction to Design Patterns in JavascriptIntroduction to Design Patterns in Javascript
Introduction to Design Patterns in JavascriptSanthosh Kumar Srinivasan
 
Software Eng S3 ( Software Design ).pptx
Software Eng S3 ( Software Design ).pptxSoftware Eng S3 ( Software Design ).pptx
Software Eng S3 ( Software Design ).pptxgauriVarshney8
 
Puppet Camp Austin 2015: Getting Started with Puppet
Puppet Camp Austin 2015: Getting Started with PuppetPuppet Camp Austin 2015: Getting Started with Puppet
Puppet Camp Austin 2015: Getting Started with PuppetPuppet
 
8 oo approach&uml-23_feb
8 oo approach&uml-23_feb8 oo approach&uml-23_feb
8 oo approach&uml-23_febRaj Shah
 
oomd-unit-i-cgpa.ppt
oomd-unit-i-cgpa.pptoomd-unit-i-cgpa.ppt
oomd-unit-i-cgpa.pptPavan992098
 
Algorithms and Data Structures
Algorithms and Data StructuresAlgorithms and Data Structures
Algorithms and Data Structuressonykhan3
 
Neo4j Theory and Practice - Tareq Abedrabbo @ GraphConnect London 2013
Neo4j Theory and Practice - Tareq Abedrabbo @ GraphConnect London 2013Neo4j Theory and Practice - Tareq Abedrabbo @ GraphConnect London 2013
Neo4j Theory and Practice - Tareq Abedrabbo @ GraphConnect London 2013Neo4j
 
Data structures and algorithms Module-1.pdf
Data structures and algorithms Module-1.pdfData structures and algorithms Module-1.pdf
Data structures and algorithms Module-1.pdfDukeCalvin
 
Csld phan tan va song song
Csld phan tan va song songCsld phan tan va song song
Csld phan tan va song songLê Anh Trung
 
Diksha sda presentation
Diksha sda presentationDiksha sda presentation
Diksha sda presentationdikshagupta111
 
Traditional to Agile Development
Traditional to Agile DevelopmentTraditional to Agile Development
Traditional to Agile DevelopmentVijaya Devi S
 
The art of architecture
The art of architectureThe art of architecture
The art of architectureADDQ
 
Architecture Design in Software Engineering
Architecture Design in Software EngineeringArchitecture Design in Software Engineering
Architecture Design in Software Engineeringcricket2ime
 

Similar to Programming in the large (20)

Coupling coheshion tps
Coupling coheshion tpsCoupling coheshion tps
Coupling coheshion tps
 
Software Design - SDLC Model
Software Design - SDLC ModelSoftware Design - SDLC Model
Software Design - SDLC Model
 
Adbms 1 object oriented modeling
Adbms 1 object oriented modelingAdbms 1 object oriented modeling
Adbms 1 object oriented modeling
 
Introduction to Design Patterns in Javascript
Introduction to Design Patterns in JavascriptIntroduction to Design Patterns in Javascript
Introduction to Design Patterns in Javascript
 
Software Eng S3 ( Software Design ).pptx
Software Eng S3 ( Software Design ).pptxSoftware Eng S3 ( Software Design ).pptx
Software Eng S3 ( Software Design ).pptx
 
Puppet Camp Austin 2015: Getting Started with Puppet
Puppet Camp Austin 2015: Getting Started with PuppetPuppet Camp Austin 2015: Getting Started with Puppet
Puppet Camp Austin 2015: Getting Started with Puppet
 
Real-Time Design Patterns
Real-Time Design PatternsReal-Time Design Patterns
Real-Time Design Patterns
 
8 oo approach&uml-23_feb
8 oo approach&uml-23_feb8 oo approach&uml-23_feb
8 oo approach&uml-23_feb
 
oomd-unit-i-cgpa.ppt
oomd-unit-i-cgpa.pptoomd-unit-i-cgpa.ppt
oomd-unit-i-cgpa.ppt
 
Patterns
PatternsPatterns
Patterns
 
Algorithms and Data Structures
Algorithms and Data StructuresAlgorithms and Data Structures
Algorithms and Data Structures
 
Neo4j Theory and Practice - Tareq Abedrabbo @ GraphConnect London 2013
Neo4j Theory and Practice - Tareq Abedrabbo @ GraphConnect London 2013Neo4j Theory and Practice - Tareq Abedrabbo @ GraphConnect London 2013
Neo4j Theory and Practice - Tareq Abedrabbo @ GraphConnect London 2013
 
Data structures and algorithms Module-1.pdf
Data structures and algorithms Module-1.pdfData structures and algorithms Module-1.pdf
Data structures and algorithms Module-1.pdf
 
Csld phan tan va song song
Csld phan tan va song songCsld phan tan va song song
Csld phan tan va song song
 
Diksha sda presentation
Diksha sda presentationDiksha sda presentation
Diksha sda presentation
 
Object oriented programming
Object oriented programmingObject oriented programming
Object oriented programming
 
Traditional to Agile Development
Traditional to Agile DevelopmentTraditional to Agile Development
Traditional to Agile Development
 
The art of architecture
The art of architectureThe art of architecture
The art of architecture
 
Architecture Design in Software Engineering
Architecture Design in Software EngineeringArchitecture Design in Software Engineering
Architecture Design in Software Engineering
 
Design Patterns - GOF
Design Patterns - GOFDesign Patterns - GOF
Design Patterns - GOF
 

More from Naveenkumar Muguda

More from Naveenkumar Muguda (12)

Ads quality
Ads qualityAds quality
Ads quality
 
Components: An overlooked abstraction
Components: An overlooked abstractionComponents: An overlooked abstraction
Components: An overlooked abstraction
 
Powerful software linkedin
Powerful software linkedinPowerful software linkedin
Powerful software linkedin
 
Yin Yangs of Software Development
Yin Yangs of Software DevelopmentYin Yangs of Software Development
Yin Yangs of Software Development
 
Abstract Algebra and Category Theory
Abstract Algebra and Category Theory Abstract Algebra and Category Theory
Abstract Algebra and Category Theory
 
Fp
FpFp
Fp
 
Invariants & inversions
Invariants & inversionsInvariants & inversions
Invariants & inversions
 
Functional Programming, simplified
Functional Programming, simplifiedFunctional Programming, simplified
Functional Programming, simplified
 
Software Development: Beyond Training wheels
Software Development: Beyond Training wheelsSoftware Development: Beyond Training wheels
Software Development: Beyond Training wheels
 
Log* with Cassandra
Log* with CassandraLog* with Cassandra
Log* with Cassandra
 
Refactoring et al
Refactoring et alRefactoring et al
Refactoring et al
 
System design
System designSystem design
System design
 

Recently uploaded

Call Girls Service Nashik Vaishnavi 7001305949 Independent Escort Service Nashik
Call Girls Service Nashik Vaishnavi 7001305949 Independent Escort Service NashikCall Girls Service Nashik Vaishnavi 7001305949 Independent Escort Service Nashik
Call Girls Service Nashik Vaishnavi 7001305949 Independent Escort Service NashikCall Girls in Nagpur High Profile
 
Model Call Girl in Narela Delhi reach out to us at 🔝8264348440🔝
Model Call Girl in Narela Delhi reach out to us at 🔝8264348440🔝Model Call Girl in Narela Delhi reach out to us at 🔝8264348440🔝
Model Call Girl in Narela Delhi reach out to us at 🔝8264348440🔝soniya singh
 
Call Girls Service Nagpur Tanvi Call 7001035870 Meet With Nagpur Escorts
Call Girls Service Nagpur Tanvi Call 7001035870 Meet With Nagpur EscortsCall Girls Service Nagpur Tanvi Call 7001035870 Meet With Nagpur Escorts
Call Girls Service Nagpur Tanvi Call 7001035870 Meet With Nagpur EscortsCall Girls in Nagpur High Profile
 
OSVC_Meta-Data based Simulation Automation to overcome Verification Challenge...
OSVC_Meta-Data based Simulation Automation to overcome Verification Challenge...OSVC_Meta-Data based Simulation Automation to overcome Verification Challenge...
OSVC_Meta-Data based Simulation Automation to overcome Verification Challenge...Soham Mondal
 
UNIT-V FMM.HYDRAULIC TURBINE - Construction and working
UNIT-V FMM.HYDRAULIC TURBINE - Construction and workingUNIT-V FMM.HYDRAULIC TURBINE - Construction and working
UNIT-V FMM.HYDRAULIC TURBINE - Construction and workingrknatarajan
 
Introduction and different types of Ethernet.pptx
Introduction and different types of Ethernet.pptxIntroduction and different types of Ethernet.pptx
Introduction and different types of Ethernet.pptxupamatechverse
 
(ANVI) Koregaon Park Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...
(ANVI) Koregaon Park Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...(ANVI) Koregaon Park Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...
(ANVI) Koregaon Park Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...ranjana rawat
 
Structural Analysis and Design of Foundations: A Comprehensive Handbook for S...
Structural Analysis and Design of Foundations: A Comprehensive Handbook for S...Structural Analysis and Design of Foundations: A Comprehensive Handbook for S...
Structural Analysis and Design of Foundations: A Comprehensive Handbook for S...Dr.Costas Sachpazis
 
(PRIYA) Rajgurunagar Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...
(PRIYA) Rajgurunagar Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...(PRIYA) Rajgurunagar Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...
(PRIYA) Rajgurunagar Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...ranjana rawat
 
Top Rated Pune Call Girls Budhwar Peth ⟟ 6297143586 ⟟ Call Me For Genuine Se...
Top Rated  Pune Call Girls Budhwar Peth ⟟ 6297143586 ⟟ Call Me For Genuine Se...Top Rated  Pune Call Girls Budhwar Peth ⟟ 6297143586 ⟟ Call Me For Genuine Se...
Top Rated Pune Call Girls Budhwar Peth ⟟ 6297143586 ⟟ Call Me For Genuine Se...Call Girls in Nagpur High Profile
 
Booking open Available Pune Call Girls Koregaon Park 6297143586 Call Hot Ind...
Booking open Available Pune Call Girls Koregaon Park  6297143586 Call Hot Ind...Booking open Available Pune Call Girls Koregaon Park  6297143586 Call Hot Ind...
Booking open Available Pune Call Girls Koregaon Park 6297143586 Call Hot Ind...Call Girls in Nagpur High Profile
 
Sheet Pile Wall Design and Construction: A Practical Guide for Civil Engineer...
Sheet Pile Wall Design and Construction: A Practical Guide for Civil Engineer...Sheet Pile Wall Design and Construction: A Practical Guide for Civil Engineer...
Sheet Pile Wall Design and Construction: A Practical Guide for Civil Engineer...Dr.Costas Sachpazis
 
HARMONY IN THE NATURE AND EXISTENCE - Unit-IV
HARMONY IN THE NATURE AND EXISTENCE - Unit-IVHARMONY IN THE NATURE AND EXISTENCE - Unit-IV
HARMONY IN THE NATURE AND EXISTENCE - Unit-IVRajaP95
 
(MEERA) Dapodi Call Girls Just Call 7001035870 [ Cash on Delivery ] Pune Escorts
(MEERA) Dapodi Call Girls Just Call 7001035870 [ Cash on Delivery ] Pune Escorts(MEERA) Dapodi Call Girls Just Call 7001035870 [ Cash on Delivery ] Pune Escorts
(MEERA) Dapodi Call Girls Just Call 7001035870 [ Cash on Delivery ] Pune Escortsranjana rawat
 
High Profile Call Girls Dahisar Arpita 9907093804 Independent Escort Service ...
High Profile Call Girls Dahisar Arpita 9907093804 Independent Escort Service ...High Profile Call Girls Dahisar Arpita 9907093804 Independent Escort Service ...
High Profile Call Girls Dahisar Arpita 9907093804 Independent Escort Service ...Call girls in Ahmedabad High profile
 
High Profile Call Girls Nagpur Meera Call 7001035870 Meet With Nagpur Escorts
High Profile Call Girls Nagpur Meera Call 7001035870 Meet With Nagpur EscortsHigh Profile Call Girls Nagpur Meera Call 7001035870 Meet With Nagpur Escorts
High Profile Call Girls Nagpur Meera Call 7001035870 Meet With Nagpur EscortsCall Girls in Nagpur High Profile
 
VIP Call Girls Service Kondapur Hyderabad Call +91-8250192130
VIP Call Girls Service Kondapur Hyderabad Call +91-8250192130VIP Call Girls Service Kondapur Hyderabad Call +91-8250192130
VIP Call Girls Service Kondapur Hyderabad Call +91-8250192130Suhani Kapoor
 

Recently uploaded (20)

Call Girls Service Nashik Vaishnavi 7001305949 Independent Escort Service Nashik
Call Girls Service Nashik Vaishnavi 7001305949 Independent Escort Service NashikCall Girls Service Nashik Vaishnavi 7001305949 Independent Escort Service Nashik
Call Girls Service Nashik Vaishnavi 7001305949 Independent Escort Service Nashik
 
Model Call Girl in Narela Delhi reach out to us at 🔝8264348440🔝
Model Call Girl in Narela Delhi reach out to us at 🔝8264348440🔝Model Call Girl in Narela Delhi reach out to us at 🔝8264348440🔝
Model Call Girl in Narela Delhi reach out to us at 🔝8264348440🔝
 
Call Us -/9953056974- Call Girls In Vikaspuri-/- Delhi NCR
Call Us -/9953056974- Call Girls In Vikaspuri-/- Delhi NCRCall Us -/9953056974- Call Girls In Vikaspuri-/- Delhi NCR
Call Us -/9953056974- Call Girls In Vikaspuri-/- Delhi NCR
 
Call Girls Service Nagpur Tanvi Call 7001035870 Meet With Nagpur Escorts
Call Girls Service Nagpur Tanvi Call 7001035870 Meet With Nagpur EscortsCall Girls Service Nagpur Tanvi Call 7001035870 Meet With Nagpur Escorts
Call Girls Service Nagpur Tanvi Call 7001035870 Meet With Nagpur Escorts
 
OSVC_Meta-Data based Simulation Automation to overcome Verification Challenge...
OSVC_Meta-Data based Simulation Automation to overcome Verification Challenge...OSVC_Meta-Data based Simulation Automation to overcome Verification Challenge...
OSVC_Meta-Data based Simulation Automation to overcome Verification Challenge...
 
UNIT-V FMM.HYDRAULIC TURBINE - Construction and working
UNIT-V FMM.HYDRAULIC TURBINE - Construction and workingUNIT-V FMM.HYDRAULIC TURBINE - Construction and working
UNIT-V FMM.HYDRAULIC TURBINE - Construction and working
 
Introduction and different types of Ethernet.pptx
Introduction and different types of Ethernet.pptxIntroduction and different types of Ethernet.pptx
Introduction and different types of Ethernet.pptx
 
(ANVI) Koregaon Park Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...
(ANVI) Koregaon Park Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...(ANVI) Koregaon Park Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...
(ANVI) Koregaon Park Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...
 
Roadmap to Membership of RICS - Pathways and Routes
Roadmap to Membership of RICS - Pathways and RoutesRoadmap to Membership of RICS - Pathways and Routes
Roadmap to Membership of RICS - Pathways and Routes
 
Structural Analysis and Design of Foundations: A Comprehensive Handbook for S...
Structural Analysis and Design of Foundations: A Comprehensive Handbook for S...Structural Analysis and Design of Foundations: A Comprehensive Handbook for S...
Structural Analysis and Design of Foundations: A Comprehensive Handbook for S...
 
(PRIYA) Rajgurunagar Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...
(PRIYA) Rajgurunagar Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...(PRIYA) Rajgurunagar Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...
(PRIYA) Rajgurunagar Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...
 
Top Rated Pune Call Girls Budhwar Peth ⟟ 6297143586 ⟟ Call Me For Genuine Se...
Top Rated  Pune Call Girls Budhwar Peth ⟟ 6297143586 ⟟ Call Me For Genuine Se...Top Rated  Pune Call Girls Budhwar Peth ⟟ 6297143586 ⟟ Call Me For Genuine Se...
Top Rated Pune Call Girls Budhwar Peth ⟟ 6297143586 ⟟ Call Me For Genuine Se...
 
Booking open Available Pune Call Girls Koregaon Park 6297143586 Call Hot Ind...
Booking open Available Pune Call Girls Koregaon Park  6297143586 Call Hot Ind...Booking open Available Pune Call Girls Koregaon Park  6297143586 Call Hot Ind...
Booking open Available Pune Call Girls Koregaon Park 6297143586 Call Hot Ind...
 
Sheet Pile Wall Design and Construction: A Practical Guide for Civil Engineer...
Sheet Pile Wall Design and Construction: A Practical Guide for Civil Engineer...Sheet Pile Wall Design and Construction: A Practical Guide for Civil Engineer...
Sheet Pile Wall Design and Construction: A Practical Guide for Civil Engineer...
 
HARMONY IN THE NATURE AND EXISTENCE - Unit-IV
HARMONY IN THE NATURE AND EXISTENCE - Unit-IVHARMONY IN THE NATURE AND EXISTENCE - Unit-IV
HARMONY IN THE NATURE AND EXISTENCE - Unit-IV
 
(MEERA) Dapodi Call Girls Just Call 7001035870 [ Cash on Delivery ] Pune Escorts
(MEERA) Dapodi Call Girls Just Call 7001035870 [ Cash on Delivery ] Pune Escorts(MEERA) Dapodi Call Girls Just Call 7001035870 [ Cash on Delivery ] Pune Escorts
(MEERA) Dapodi Call Girls Just Call 7001035870 [ Cash on Delivery ] Pune Escorts
 
DJARUM4D - SLOT GACOR ONLINE | SLOT DEMO ONLINE
DJARUM4D - SLOT GACOR ONLINE | SLOT DEMO ONLINEDJARUM4D - SLOT GACOR ONLINE | SLOT DEMO ONLINE
DJARUM4D - SLOT GACOR ONLINE | SLOT DEMO ONLINE
 
High Profile Call Girls Dahisar Arpita 9907093804 Independent Escort Service ...
High Profile Call Girls Dahisar Arpita 9907093804 Independent Escort Service ...High Profile Call Girls Dahisar Arpita 9907093804 Independent Escort Service ...
High Profile Call Girls Dahisar Arpita 9907093804 Independent Escort Service ...
 
High Profile Call Girls Nagpur Meera Call 7001035870 Meet With Nagpur Escorts
High Profile Call Girls Nagpur Meera Call 7001035870 Meet With Nagpur EscortsHigh Profile Call Girls Nagpur Meera Call 7001035870 Meet With Nagpur Escorts
High Profile Call Girls Nagpur Meera Call 7001035870 Meet With Nagpur Escorts
 
VIP Call Girls Service Kondapur Hyderabad Call +91-8250192130
VIP Call Girls Service Kondapur Hyderabad Call +91-8250192130VIP Call Girls Service Kondapur Hyderabad Call +91-8250192130
VIP Call Girls Service Kondapur Hyderabad Call +91-8250192130
 

Programming in the large

  • 1. Programming in the large Naveen Muguda
  • 2. Two kinds of medicines • Over the counter • Prescription
  • 3.
  • 4. programming in small • activity of writing a small program. • Small programs are typified by being small in terms of their source code size, • are easy to specify, quick to code and typically perform one task or a few very closely related tasks very well.
  • 5. • Programming in the large • by larger groups of people or by smaller groups over longer time periods • program changes can become difficult • If a change operates across module boundaries, the work of many people may need re-doing.
  • 6. Laws of Software Evolution • An E-program is written to perform some real-world activity; • how it should behave is strongly linked to the environment in which it runs, • needs to adapt to varying requirements and circumstances in that environment
  • 7. Laws of Software Evolution • "Continuing Change" —must be continually adapted or it becomes progressively less satisfactory. • "Increasing Complexity" —its complexity increases unless work is done to maintain or reduce it. • "Conservation of Organisational Stability (invariant work rate)" — the average effective global activity rate in an evolving system is invariant over the product's lifetime. • "Continuing Growth" — the functional content of a system must be continually increased to maintain user satisfaction over its lifetime. • "Declining Quality" — the quality of a system will appear to be declining unless it is rigorously maintained and adapted to operational environment changes.
  • 8.
  • 9. Price of being reactive
  • 10.
  • 11.
  • 13. • Complexity reflects the number and nature of entities that comprise the software, and the number and nature of interactions between them.
  • 14.
  • 15.
  • 16. Complex • a complex issue is one in which you can’t get a firm handle on the parts and there are no rules, algorithms, or natural laws. • "Things that are complex have no such degree of order, control, or predictability" • A complex thing is much more challenging--and different--than the sum of its parts, because its parts can interact in unpredictable ways.
  • 17.
  • 18. Complicated • "the components can be separated and dealt with in a systematic and logical way that relies on a set of rules or algorithms.” • allows you to deal with it in a repeatable manner.
  • 19. Size | Nature Simple Complex Complicated small ✓ large ✓ ✓
  • 20. complicated • order, control, predictability • rules, algorithms, laws, recipes
  • 22.
  • 23. goal of programming in the large • Make system “complicated” instead of being complex
  • 24. complexity • Inherent needs to be managed • Accidental needs to be reduced/eliminated
  • 25. perspective • programming properly should be regarded as an activity by which the programmers form or achieve a certain kind of insight, a theory, of the matters at hand. This suggestion is in contrast to what appears to be a more common notion, that programming should be regarded as a production of a program and certain other texts.” - Peter Naur
  • 26. perspective • programming properly should be regarded as an activity by which the programmers form or achieve a certain kind of insight, a theory, of the matters at hand. This suggestion is in contrast to what appears to be a more common notion, that programming should be regarded as a production of a program and certain other texts.” -Peter Naur
  • 27. Problem solving • apply the model • create/change/delete the model
  • 28. When you drive • apply the model • create/change/delete the model
  • 29. Programming in the large • apply the model • create/change/delete the model
  • 30.
  • 31.
  • 32. Models allow us to deal with new situations • They expedite reasoning
  • 33. • “seems like pub-sub system” • “looks like a bounded buffer” • “it’s going to be master slave system”
  • 34. Model • General idea behind many specific ones • People remember abstractions
  • 36. That vs How • 5 * 6 => knowing that • 47 * 78 => knowing how
  • 37. • knowing that doesn’t scale • knowing how scales • People remember methods/mechanisms
  • 38. • “will use a builder” • “will wrap that in a optional” • “will use a circuit breaker”
  • 40. • int relationshipStatus • Enum RelationShipStatus { Single, Married, Divorced}
  • 41. struct Stack { int top; unsigned capacity; int* array; }; void push(struct Stack* stack, int item) { if (isFull(stack)) return; stack->array[++stack->top] = item; } int pop(struct Stack* stack) { if (isEmpty(stack)) return INT_MIN; return stack->array[stack->top--]; }
  • 42. class Stack { private int top; private int a[] = public boolean push(int x) { } public int pop() { }
  • 43.
  • 44. • Anti pattern: Primitive obsession, Procedural Programming, Beans
  • 45. Bad practice • Anemic Domain Model • “ domain model where the domain objects contain little or no business logic (validations, calculations, business rules etc.)”
  • 47.
  • 48.
  • 50. • On the criteria to be used in decomposing systems into modules David L Parnas, 1971 • “that it is almost always incorrect to begin the decomposition of a system into modules on the basis of a flowchart”
  • 51. “axis of change” • “We propose instead that one begins with a list of difficult design decisions or design decisions which are likely to change. • Each module is then designed to hide such a decision from the others”
  • 52. • Bad practice: controller based decomposition
  • 53. Categories of models Domain Solution RDD Design patterns Architecture Styles Coding Styles Math, Logic Logic Set Theory Discrete Maths Category Theory Infrastructure Concurrency Model, Process model Database, Event Queue, Data Structures Distributed Systems
  • 54. • Models should be filtered, precise, compressed and organized perceptions of knowledge.
  • 55.
  • 56. Inspiration of models • Theory | Story | Observation| Math | Metaphor
  • 57. CRC • Model for reasoning about objects/classes • Identify a class’s • responsibilities • collaborations
  • 58. Responsibility Driven Design • objects play specific roles and occupy well-known positions. • community of objects. • Each object is accountable for a specific portion of the work. • Objects collaborate in clearly-defined ways.
  • 59. Responsibility Driven Design • object(class)’s role determines its responsibility
  • 61. Control styles • Centralized control style • Delegated control style • Clustered control style • Dispersed control style • Preferred control style
  • 63. MVC • Model: manages the data, logic and rules of the application. • View: output representation of information • Controller: accepts input and converts it to commands for the model or view
  • 64. RDD: #2 EBI • How to design the model • Entity : Represent the business objects and contain business logic • Boundary: model the interface with the system • Interactor: Use case
  • 65.
  • 67. • The outer circles are mechanisms. The inner circles are policies. • The overriding rule that makes this architecture work is The Dependency Rule. This rule says that source code dependencies can only point inwards. Nothing in an inner circle can know anything at all about something in an outer circle.
  • 68. • Independent of Frameworks. • Testable. The business rules can be tested without the UI, Database, Web Server, or any other external element. • Independent of UI. • Independent of Database. Your business rules are not bound to the database. • Independent of any external agency.
  • 69. Domain Driven Design • Entity • Value object • Domain Event • Service • Factory • Repository
  • 74.
  • 75.
  • 76.
  • 79. Architectural Styles Structure Component-based Monolithic application Layered Pipes and filters Shared memory Database-centric Blackboard Rule-based Messaging Event-driven aka implicit invocation Publish-subscribe Asynchronous messaging Adaptive systems Plug-ins Microkernel Reflection Domain specific languages Distributed systems Client-server (2-tier, 3-tier, n-tier exhibit this style) Shared nothing architecture Space-based architecture Object request broker Peer-to-peer Representational state transfer (REST) Service-oriented Cloud computing patterns