SlideShare a Scribd company logo
Philosophy 
A theory or attitude 
that acts as a guiding principle 
for behaviour 
Praveen Nair, PMP MVP 
blog.ninethsense.com
Any fool can write code that a computer can understand. 
Good programmers write code that humans can understand. 
-Martin Fowler, 2008
Abstraction Principle 
“Each significant piece of functionality in a program 
should be implemented in just one place in the source 
code. Where similar functions are carried out by distinct 
pieces of code, it is generally beneficial to combine them 
into one by abstracting out the varying parts”
DRY – Don’t repeat yourself 
Every piece of knowledge must have a 
single, unambiguous, authoritative representation 
within a system.
SSOT – Single Source of Truth 
refers to the practice of structuring information models 
and associated schemata such that every data element is 
stored exactly once
Code Smells 
any symptom in the source code of a program that 
possibly indicates a deeper problem
Refactoring 
process of restructuring existing computer code 
without changing its external behavior
S O L I D 
Guidelines that can be applied while working on software to remove code smells by causing the 
programmer to refactor the software's source code until it is both legible and extensible. 
1. Single Responsibility 
2. Open-Closed 
3. Liskov Substitution 
4. Interface Segregation 
5. Dependency Inversion
Single Responsibility Principle 
every context (class, function, variable, etc.) should 
have a single responsibility
LSP – Liskov Substitution Principle 
objects in a program should be replaceable with 
instances of their subtypes without altering the 
correctness of that program
Interface Segregation Principle 
no client should be forced to 
depend on methods it does not use
Dependency Inversion Principle 
Decouple software modules 
• High-level modules should not depend on low-level modules. 
• Abstractions should not depend on details. Details should depend on 
abstractions.
Database Normalization 
process of organizing the fields and tables of a 
relational database to minimize redundancy
KISS – Keep it simple, stupid! 
most systems work best if they are kept simple rather 
than made complicated
YAGNI – You ain’t gonna need it 
Always implement things when you actually need them, 
never when you just foresee that you need them
Code bloat 
production of code that is perceived as unnecessarily 
long, slow, or otherwise wasteful of resources
MoSCoW 
MUST 
SHOULD 
COULD 
WON’T
Agile Manifesto 
1. Our highest priority is to satisfy the customer through early and 
continuous delivery of valuable software. 
2. Welcome changing requirements, even late in development. Agile 
processes harness change for the customer's competitive 
advantage. 
3. Deliver working software frequently, from a couple of weeks to a 
couple of months, with a preference to the shorter timescale.
Agile Manifesto 
4. Business people and developers must work together daily 
throughout the project. 
5. Build projects around motivated individuals. Give them the 
environment and support they need, and trust them to get the job 
done. 
6. The most efficient and effective method of conveying information to 
and within a development team is face-to-face conversation.
Agile Manifesto 
7. Working software is the primary measure of progress. 
8. Agile processes promote sustainable development. The sponsors, 
developers, and users should be able to maintain a constant pace 
indefinitely. 
9. Continuous attention to technical excellence and good design 
enhances agility.
Agile Manifesto 
10. Simplicity--the art of maximizing the amount of work not done--is 
essential. 
11. The best architectures, requirements, and designs emerge from 
self-organizing teams. 
12. At regular intervals, the team reflects on how to become more 
effective, then tunes and adjusts its behavior accordingly.
Self-organizing team 
A group of motivated individuals, who work together 
toward a goal, have the ability and authority to take 
decisions and readily adapt to changing demands
CI - Continuous Integration 
Practice of merging all developer working copies with a 
shared mainline several times a day. Its main aim is to 
prevent integration problems (i.e., integration hell)
RAD 
Rapid Application Development
UML - Unified Modeling Language 
a general-purpose modeling language which is 
designed to provide a standard way to visualize the 
design of a system
UML - Unified Modeling Language 
a general-purpose modeling language which is 
designed to provide a standard way to visualize the 
design of a system
TDD – Test Driven Development 
first write automated test code 
next write some code to pass that test
80:20 rule 
20 percent of the code has 80 percent of the errors. 
Find them, fix them!
if it ain’t broke, don’t fix it 
Leave something alone; 
avoid attempting to correct, fix, or improve 
what is already sufficient.
if it ain’t broke, don’t fix it 
Leave something alone; 
avoid attempting to correct, fix, or improve 
what is already sufficient.
Code Reuse 
Code reuse, also called software reuse, is the use of 
existing software, or software knowledge, 
to build new software
Design Patterns 
a general reusable solution to a 
commonly occurring problem
Anti Patterns 
specific repeated practices that appear initially to be 
beneficial, but ultimately result in bad consequences 
that outweigh the hoped-for advantages
Architectural Patterns 
a widely recognized and reused solution 
to a recurring design problem
Quality attributes 
Design Qualities 
1. Conceptual Integrity 
2. Maintainability 
3. Reusability
Quality attributes 
Run-time Qualities 
1. Availability 
2. Interoperability 
3. Manageability 
4. Performance 
5. Reliability 
6. Scalability 
7. Security
Quality attributes 
System Qualities 
1. Supportability 
2. Testability 
User Qualities 
1. Usability
Software Documentation 
1. Requirements 
2. Architecture / Design 
3. Technical 
4. End User 
5. Marketing
Project Triangle 
Scope 
Cost Time
Separation of Concerns 
a design principle for separating a computer 
program into distinct sections

More Related Content

What's hot

4. ch 3-agile process
4. ch 3-agile process4. ch 3-agile process
4. ch 3-agile process
Delowar hossain
 
Design Sprints
Design SprintsDesign Sprints
Design Sprints
Kate Hanson
 
Extreme Programming (XP) for Dummies
Extreme Programming (XP) for DummiesExtreme Programming (XP) for Dummies
Extreme Programming (XP) for Dummies
Jon McNestrie
 
Extreme Programming (XP) as A Popular Agile methodology.
Extreme Programming (XP) as A Popular Agile methodology.Extreme Programming (XP) as A Popular Agile methodology.
Extreme Programming (XP) as A Popular Agile methodology.Ali Shaikh
 
Introduction to Extreme Programming
Introduction to Extreme ProgrammingIntroduction to Extreme Programming
Introduction to Extreme Programming
Naresh Jain
 
01 fse software&sw-engineering
01 fse software&sw-engineering01 fse software&sw-engineering
01 fse software&sw-engineeringMohesh Chandran
 
Agiel sw development
Agiel sw developmentAgiel sw development
Agiel sw development
Noor Ul Hudda Memon
 
Cu32604607
Cu32604607Cu32604607
Cu32604607
IJERA Editor
 
Quality Software Development
Quality Software DevelopmentQuality Software Development
Quality Software Development
Srinivasan Hariharan
 
Invincible React States with Domain Driven Design
Invincible React States with Domain Driven Design Invincible React States with Domain Driven Design
Invincible React States with Domain Driven Design
Prateek
 
XP In 10 slides
XP In 10 slidesXP In 10 slides
XP In 10 slides
Robert Burrell Donkin
 
Extreme programming - a quick and agile overview !
Extreme programming - a quick and agile overview !Extreme programming - a quick and agile overview !
Extreme programming - a quick and agile overview !
Vinit Kumar Singh
 
To document or not to document? An exploratory study on developers' motivatio...
To document or not to document? An exploratory study on developers' motivatio...To document or not to document? An exploratory study on developers' motivatio...
To document or not to document? An exploratory study on developers' motivatio...
Hayim Makabee
 
Introduction To Extreme Programming
Introduction To Extreme ProgrammingIntroduction To Extreme Programming
Introduction To Extreme Programming
Joe Drumgoole
 
What is agile model
What is agile modelWhat is agile model
What is agile model
Software Testing Books
 
Sterling Barton Movemements of a Hypnotic Nature
Sterling Barton Movemements of a Hypnotic NatureSterling Barton Movemements of a Hypnotic Nature
Sterling Barton Movemements of a Hypnotic Nature
Brent Barton
 
Extreme programming
Extreme programmingExtreme programming
Extreme programmingMr SMAK
 
Xp exterme-programming-model
Xp exterme-programming-modelXp exterme-programming-model
Xp exterme-programming-modelAli MasudianPour
 
extreme Programming
extreme Programmingextreme Programming
extreme Programming
Bilal Shah
 

What's hot (20)

4. ch 3-agile process
4. ch 3-agile process4. ch 3-agile process
4. ch 3-agile process
 
Design Sprints
Design SprintsDesign Sprints
Design Sprints
 
Extreme Programming (XP) for Dummies
Extreme Programming (XP) for DummiesExtreme Programming (XP) for Dummies
Extreme Programming (XP) for Dummies
 
Extreme Programming (XP) as A Popular Agile methodology.
Extreme Programming (XP) as A Popular Agile methodology.Extreme Programming (XP) as A Popular Agile methodology.
Extreme Programming (XP) as A Popular Agile methodology.
 
Introduction to Extreme Programming
Introduction to Extreme ProgrammingIntroduction to Extreme Programming
Introduction to Extreme Programming
 
01 fse software&sw-engineering
01 fse software&sw-engineering01 fse software&sw-engineering
01 fse software&sw-engineering
 
Agiel sw development
Agiel sw developmentAgiel sw development
Agiel sw development
 
Cu32604607
Cu32604607Cu32604607
Cu32604607
 
Quality Software Development
Quality Software DevelopmentQuality Software Development
Quality Software Development
 
Invincible React States with Domain Driven Design
Invincible React States with Domain Driven Design Invincible React States with Domain Driven Design
Invincible React States with Domain Driven Design
 
XP In 10 slides
XP In 10 slidesXP In 10 slides
XP In 10 slides
 
Extreme programming - a quick and agile overview !
Extreme programming - a quick and agile overview !Extreme programming - a quick and agile overview !
Extreme programming - a quick and agile overview !
 
To document or not to document? An exploratory study on developers' motivatio...
To document or not to document? An exploratory study on developers' motivatio...To document or not to document? An exploratory study on developers' motivatio...
To document or not to document? An exploratory study on developers' motivatio...
 
Introduction To Extreme Programming
Introduction To Extreme ProgrammingIntroduction To Extreme Programming
Introduction To Extreme Programming
 
What is agile model
What is agile modelWhat is agile model
What is agile model
 
Sterling Barton Movemements of a Hypnotic Nature
Sterling Barton Movemements of a Hypnotic NatureSterling Barton Movemements of a Hypnotic Nature
Sterling Barton Movemements of a Hypnotic Nature
 
07 fse implementation
07 fse implementation07 fse implementation
07 fse implementation
 
Extreme programming
Extreme programmingExtreme programming
Extreme programming
 
Xp exterme-programming-model
Xp exterme-programming-modelXp exterme-programming-model
Xp exterme-programming-model
 
extreme Programming
extreme Programmingextreme Programming
extreme Programming
 

Similar to Software development philosophies v1

Code Craftsmanship Checklist
Code Craftsmanship ChecklistCode Craftsmanship Checklist
Code Craftsmanship Checklist
Ryan Polk
 
Top 10 clean code practices to reduce technical debt
Top 10 clean code practices to reduce technical debtTop 10 clean code practices to reduce technical debt
Top 10 clean code practices to reduce technical debt
Sparity1
 
Various Process of Software Engineering notes
Various Process of Software Engineering notesVarious Process of Software Engineering notes
Various Process of Software Engineering notes
Dr Anuranjan Misra
 
Lect3 conventional vs modern spm
Lect3 conventional vs modern spmLect3 conventional vs modern spm
Lect3 conventional vs modern spm
meena466141
 
Soft.Engg. UNIT 1.pptx
Soft.Engg. UNIT 1.pptxSoft.Engg. UNIT 1.pptx
Soft.Engg. UNIT 1.pptx
Kalpna Saharan
 
Lect7
Lect7Lect7
Software development life cycle
Software development life cycleSoftware development life cycle
Software development life cycle
Afrasiyab Haider
 
Software design.edited (1)
Software design.edited (1)Software design.edited (1)
Software design.edited (1)
FarjanaAhmed3
 
Software enginneering
Software enginneeringSoftware enginneering
Software enginneering
chirag patil
 
Lecture 1 SE.pptx
Lecture 1 SE.pptxLecture 1 SE.pptx
Lecture 1 SE.pptx
MaryamMahjabeenYouni
 
Lecture1422914635
Lecture1422914635Lecture1422914635
Flavours of agile software engineering
Flavours of agile software engineeringFlavours of agile software engineering
Flavours of agile software engineeringZeeshan Masood S
 
Flavours of agile software engineering
Flavours of agile software engineeringFlavours of agile software engineering
Flavours of agile software engineering
Zeeshan Masood S
 
Software engineering introduction
Software engineering introductionSoftware engineering introduction
Software engineering introduction
Vishal Singh
 
Agile Values, Principles and Practices
Agile Values, Principles and PracticesAgile Values, Principles and Practices
Agile Values, Principles and Practices
jackcrews
 
Software Engineering (Short & Long Questions)
Software Engineering (Short & Long Questions)Software Engineering (Short & Long Questions)
Software Engineering (Short & Long Questions)
MuhammadTalha436
 
Software Engineering Solved Past Paper 2020
Software Engineering Solved Past Paper 2020 Software Engineering Solved Past Paper 2020
Software Engineering Solved Past Paper 2020
MuhammadTalha436
 
Different Methodologies Used By Programming Teams
Different Methodologies Used By Programming TeamsDifferent Methodologies Used By Programming Teams
Different Methodologies Used By Programming Teams
Nicole Gomez
 
A littlebook about agile
A littlebook about agileA littlebook about agile
A littlebook about agile
Maris Prabhakaran M
 
Chapter1 Advanced Software Engineering overview
Chapter1 Advanced Software Engineering overviewChapter1 Advanced Software Engineering overview
Chapter1 Advanced Software Engineering overview
Bule Hora University
 

Similar to Software development philosophies v1 (20)

Code Craftsmanship Checklist
Code Craftsmanship ChecklistCode Craftsmanship Checklist
Code Craftsmanship Checklist
 
Top 10 clean code practices to reduce technical debt
Top 10 clean code practices to reduce technical debtTop 10 clean code practices to reduce technical debt
Top 10 clean code practices to reduce technical debt
 
Various Process of Software Engineering notes
Various Process of Software Engineering notesVarious Process of Software Engineering notes
Various Process of Software Engineering notes
 
Lect3 conventional vs modern spm
Lect3 conventional vs modern spmLect3 conventional vs modern spm
Lect3 conventional vs modern spm
 
Soft.Engg. UNIT 1.pptx
Soft.Engg. UNIT 1.pptxSoft.Engg. UNIT 1.pptx
Soft.Engg. UNIT 1.pptx
 
Lect7
Lect7Lect7
Lect7
 
Software development life cycle
Software development life cycleSoftware development life cycle
Software development life cycle
 
Software design.edited (1)
Software design.edited (1)Software design.edited (1)
Software design.edited (1)
 
Software enginneering
Software enginneeringSoftware enginneering
Software enginneering
 
Lecture 1 SE.pptx
Lecture 1 SE.pptxLecture 1 SE.pptx
Lecture 1 SE.pptx
 
Lecture1422914635
Lecture1422914635Lecture1422914635
Lecture1422914635
 
Flavours of agile software engineering
Flavours of agile software engineeringFlavours of agile software engineering
Flavours of agile software engineering
 
Flavours of agile software engineering
Flavours of agile software engineeringFlavours of agile software engineering
Flavours of agile software engineering
 
Software engineering introduction
Software engineering introductionSoftware engineering introduction
Software engineering introduction
 
Agile Values, Principles and Practices
Agile Values, Principles and PracticesAgile Values, Principles and Practices
Agile Values, Principles and Practices
 
Software Engineering (Short & Long Questions)
Software Engineering (Short & Long Questions)Software Engineering (Short & Long Questions)
Software Engineering (Short & Long Questions)
 
Software Engineering Solved Past Paper 2020
Software Engineering Solved Past Paper 2020 Software Engineering Solved Past Paper 2020
Software Engineering Solved Past Paper 2020
 
Different Methodologies Used By Programming Teams
Different Methodologies Used By Programming TeamsDifferent Methodologies Used By Programming Teams
Different Methodologies Used By Programming Teams
 
A littlebook about agile
A littlebook about agileA littlebook about agile
A littlebook about agile
 
Chapter1 Advanced Software Engineering overview
Chapter1 Advanced Software Engineering overviewChapter1 Advanced Software Engineering overview
Chapter1 Advanced Software Engineering overview
 

More from Praveen Nair

Securing the Skies: Navigating Cloud Security Challenges and Beyond
Securing the Skies: Navigating Cloud Security Challenges and BeyondSecuring the Skies: Navigating Cloud Security Challenges and Beyond
Securing the Skies: Navigating Cloud Security Challenges and Beyond
Praveen Nair
 
Introduction to Azure monitor
Introduction to Azure monitorIntroduction to Azure monitor
Introduction to Azure monitor
Praveen Nair
 
Introduction to Agile-Scrum
Introduction to Agile-ScrumIntroduction to Agile-Scrum
Introduction to Agile-Scrum
Praveen Nair
 
Introduction to Power Platform
Introduction to Power PlatformIntroduction to Power Platform
Introduction to Power Platform
Praveen Nair
 
Global Azure Bootcamp - Azure Logic Apps in practice by Praveen Nair
Global Azure Bootcamp - Azure Logic Apps in practice by Praveen NairGlobal Azure Bootcamp - Azure Logic Apps in practice by Praveen Nair
Global Azure Bootcamp - Azure Logic Apps in practice by Praveen Nair
Praveen Nair
 
DevOps Introduction session by Praveen Nair at Kochi DevOps Day
DevOps Introduction session by Praveen Nair at Kochi DevOps DayDevOps Introduction session by Praveen Nair at Kochi DevOps Day
DevOps Introduction session by Praveen Nair at Kochi DevOps Day
Praveen Nair
 
Diagramming the Architecture
Diagramming the ArchitectureDiagramming the Architecture
Diagramming the Architecture
Praveen Nair
 
Mirosoft Cognitive Services by Praveen Nair
Mirosoft Cognitive Services by Praveen NairMirosoft Cognitive Services by Praveen Nair
Mirosoft Cognitive Services by Praveen Nair
Praveen Nair
 
K-MUG Azure Machine Learning
K-MUG Azure Machine LearningK-MUG Azure Machine Learning
K-MUG Azure Machine Learning
Praveen Nair
 
MobConf - session on C# async-await on 18june2016 at Kochi
MobConf - session on C# async-await on 18june2016 at KochiMobConf - session on C# async-await on 18june2016 at Kochi
MobConf - session on C# async-await on 18june2016 at Kochi
Praveen Nair
 
MobConf 2016 - Global Adoption Trends for Mobility
MobConf 2016 - Global Adoption Trends for MobilityMobConf 2016 - Global Adoption Trends for Mobility
MobConf 2016 - Global Adoption Trends for Mobility
Praveen Nair
 
Microsoft Build 2015 highlights
Microsoft Build 2015 highlightsMicrosoft Build 2015 highlights
Microsoft Build 2015 highlights
Praveen Nair
 
Introduction to Software Architecture
Introduction to Software ArchitectureIntroduction to Software Architecture
Introduction to Software Architecture
Praveen Nair
 
What is new in visual studio "14"
What is new in visual studio "14"What is new in visual studio "14"
What is new in visual studio "14"
Praveen Nair
 
Python and Data Analysis
Python and Data AnalysisPython and Data Analysis
Python and Data Analysis
Praveen Nair
 
R programming basics
R programming basicsR programming basics
R programming basics
Praveen Nair
 
Big data and Microsoft
Big data and MicrosoftBig data and Microsoft
Big data and MicrosoftPraveen Nair
 
Project Management for beginners
Project Management for beginnersProject Management for beginners
Project Management for beginnersPraveen Nair
 
Html5 Introduction
Html5 IntroductionHtml5 Introduction
Html5 IntroductionPraveen Nair
 
Career Progression
Career Progression Career Progression
Career Progression Praveen Nair
 

More from Praveen Nair (20)

Securing the Skies: Navigating Cloud Security Challenges and Beyond
Securing the Skies: Navigating Cloud Security Challenges and BeyondSecuring the Skies: Navigating Cloud Security Challenges and Beyond
Securing the Skies: Navigating Cloud Security Challenges and Beyond
 
Introduction to Azure monitor
Introduction to Azure monitorIntroduction to Azure monitor
Introduction to Azure monitor
 
Introduction to Agile-Scrum
Introduction to Agile-ScrumIntroduction to Agile-Scrum
Introduction to Agile-Scrum
 
Introduction to Power Platform
Introduction to Power PlatformIntroduction to Power Platform
Introduction to Power Platform
 
Global Azure Bootcamp - Azure Logic Apps in practice by Praveen Nair
Global Azure Bootcamp - Azure Logic Apps in practice by Praveen NairGlobal Azure Bootcamp - Azure Logic Apps in practice by Praveen Nair
Global Azure Bootcamp - Azure Logic Apps in practice by Praveen Nair
 
DevOps Introduction session by Praveen Nair at Kochi DevOps Day
DevOps Introduction session by Praveen Nair at Kochi DevOps DayDevOps Introduction session by Praveen Nair at Kochi DevOps Day
DevOps Introduction session by Praveen Nair at Kochi DevOps Day
 
Diagramming the Architecture
Diagramming the ArchitectureDiagramming the Architecture
Diagramming the Architecture
 
Mirosoft Cognitive Services by Praveen Nair
Mirosoft Cognitive Services by Praveen NairMirosoft Cognitive Services by Praveen Nair
Mirosoft Cognitive Services by Praveen Nair
 
K-MUG Azure Machine Learning
K-MUG Azure Machine LearningK-MUG Azure Machine Learning
K-MUG Azure Machine Learning
 
MobConf - session on C# async-await on 18june2016 at Kochi
MobConf - session on C# async-await on 18june2016 at KochiMobConf - session on C# async-await on 18june2016 at Kochi
MobConf - session on C# async-await on 18june2016 at Kochi
 
MobConf 2016 - Global Adoption Trends for Mobility
MobConf 2016 - Global Adoption Trends for MobilityMobConf 2016 - Global Adoption Trends for Mobility
MobConf 2016 - Global Adoption Trends for Mobility
 
Microsoft Build 2015 highlights
Microsoft Build 2015 highlightsMicrosoft Build 2015 highlights
Microsoft Build 2015 highlights
 
Introduction to Software Architecture
Introduction to Software ArchitectureIntroduction to Software Architecture
Introduction to Software Architecture
 
What is new in visual studio "14"
What is new in visual studio "14"What is new in visual studio "14"
What is new in visual studio "14"
 
Python and Data Analysis
Python and Data AnalysisPython and Data Analysis
Python and Data Analysis
 
R programming basics
R programming basicsR programming basics
R programming basics
 
Big data and Microsoft
Big data and MicrosoftBig data and Microsoft
Big data and Microsoft
 
Project Management for beginners
Project Management for beginnersProject Management for beginners
Project Management for beginners
 
Html5 Introduction
Html5 IntroductionHtml5 Introduction
Html5 Introduction
 
Career Progression
Career Progression Career Progression
Career Progression
 

Recently uploaded

Need for Speed: Removing speed bumps from your Symfony projects ⚡️
Need for Speed: Removing speed bumps from your Symfony projects ⚡️Need for Speed: Removing speed bumps from your Symfony projects ⚡️
Need for Speed: Removing speed bumps from your Symfony projects ⚡️
Łukasz Chruściel
 
Automated software refactoring with OpenRewrite and Generative AI.pptx.pdf
Automated software refactoring with OpenRewrite and Generative AI.pptx.pdfAutomated software refactoring with OpenRewrite and Generative AI.pptx.pdf
Automated software refactoring with OpenRewrite and Generative AI.pptx.pdf
timtebeek1
 
Artificia Intellicence and XPath Extension Functions
Artificia Intellicence and XPath Extension FunctionsArtificia Intellicence and XPath Extension Functions
Artificia Intellicence and XPath Extension Functions
Octavian Nadolu
 
Introducing Crescat - Event Management Software for Venues, Festivals and Eve...
Introducing Crescat - Event Management Software for Venues, Festivals and Eve...Introducing Crescat - Event Management Software for Venues, Festivals and Eve...
Introducing Crescat - Event Management Software for Venues, Festivals and Eve...
Crescat
 
Utilocate provides Smarter, Better, Faster, Safer Locate Ticket Management
Utilocate provides Smarter, Better, Faster, Safer Locate Ticket ManagementUtilocate provides Smarter, Better, Faster, Safer Locate Ticket Management
Utilocate provides Smarter, Better, Faster, Safer Locate Ticket Management
Utilocate
 
Transform Your Communication with Cloud-Based IVR Solutions
Transform Your Communication with Cloud-Based IVR SolutionsTransform Your Communication with Cloud-Based IVR Solutions
Transform Your Communication with Cloud-Based IVR Solutions
TheSMSPoint
 
2024 eCommerceDays Toulouse - Sylius 2.0.pdf
2024 eCommerceDays Toulouse - Sylius 2.0.pdf2024 eCommerceDays Toulouse - Sylius 2.0.pdf
2024 eCommerceDays Toulouse - Sylius 2.0.pdf
Łukasz Chruściel
 
Essentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FMEEssentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FME
Safe Software
 
Vitthal Shirke Java Microservices Resume.pdf
Vitthal Shirke Java Microservices Resume.pdfVitthal Shirke Java Microservices Resume.pdf
Vitthal Shirke Java Microservices Resume.pdf
Vitthal Shirke
 
Using Xen Hypervisor for Functional Safety
Using Xen Hypervisor for Functional SafetyUsing Xen Hypervisor for Functional Safety
Using Xen Hypervisor for Functional Safety
Ayan Halder
 
GraphSummit Paris - The art of the possible with Graph Technology
GraphSummit Paris - The art of the possible with Graph TechnologyGraphSummit Paris - The art of the possible with Graph Technology
GraphSummit Paris - The art of the possible with Graph Technology
Neo4j
 
OpenMetadata Community Meeting - 5th June 2024
OpenMetadata Community Meeting - 5th June 2024OpenMetadata Community Meeting - 5th June 2024
OpenMetadata Community Meeting - 5th June 2024
OpenMetadata
 
A Sighting of filterA in Typelevel Rite of Passage
A Sighting of filterA in Typelevel Rite of PassageA Sighting of filterA in Typelevel Rite of Passage
A Sighting of filterA in Typelevel Rite of Passage
Philip Schwarz
 
Graspan: A Big Data System for Big Code Analysis
Graspan: A Big Data System for Big Code AnalysisGraspan: A Big Data System for Big Code Analysis
Graspan: A Big Data System for Big Code Analysis
Aftab Hussain
 
Custom Healthcare Software for Managing Chronic Conditions and Remote Patient...
Custom Healthcare Software for Managing Chronic Conditions and Remote Patient...Custom Healthcare Software for Managing Chronic Conditions and Remote Patient...
Custom Healthcare Software for Managing Chronic Conditions and Remote Patient...
Mind IT Systems
 
AI Fusion Buddy Review: Brand New, Groundbreaking Gemini-Powered AI App
AI Fusion Buddy Review: Brand New, Groundbreaking Gemini-Powered AI AppAI Fusion Buddy Review: Brand New, Groundbreaking Gemini-Powered AI App
AI Fusion Buddy Review: Brand New, Groundbreaking Gemini-Powered AI App
Google
 
APIs for Browser Automation (MoT Meetup 2024)
APIs for Browser Automation (MoT Meetup 2024)APIs for Browser Automation (MoT Meetup 2024)
APIs for Browser Automation (MoT Meetup 2024)
Boni García
 
Launch Your Streaming Platforms in Minutes
Launch Your Streaming Platforms in MinutesLaunch Your Streaming Platforms in Minutes
Launch Your Streaming Platforms in Minutes
Roshan Dwivedi
 
GOING AOT WITH GRAALVM FOR SPRING BOOT (SPRING IO)
GOING AOT WITH GRAALVM FOR  SPRING BOOT (SPRING IO)GOING AOT WITH GRAALVM FOR  SPRING BOOT (SPRING IO)
GOING AOT WITH GRAALVM FOR SPRING BOOT (SPRING IO)
Alina Yurenko
 
AI Genie Review: World’s First Open AI WordPress Website Creator
AI Genie Review: World’s First Open AI WordPress Website CreatorAI Genie Review: World’s First Open AI WordPress Website Creator
AI Genie Review: World’s First Open AI WordPress Website Creator
Google
 

Recently uploaded (20)

Need for Speed: Removing speed bumps from your Symfony projects ⚡️
Need for Speed: Removing speed bumps from your Symfony projects ⚡️Need for Speed: Removing speed bumps from your Symfony projects ⚡️
Need for Speed: Removing speed bumps from your Symfony projects ⚡️
 
Automated software refactoring with OpenRewrite and Generative AI.pptx.pdf
Automated software refactoring with OpenRewrite and Generative AI.pptx.pdfAutomated software refactoring with OpenRewrite and Generative AI.pptx.pdf
Automated software refactoring with OpenRewrite and Generative AI.pptx.pdf
 
Artificia Intellicence and XPath Extension Functions
Artificia Intellicence and XPath Extension FunctionsArtificia Intellicence and XPath Extension Functions
Artificia Intellicence and XPath Extension Functions
 
Introducing Crescat - Event Management Software for Venues, Festivals and Eve...
Introducing Crescat - Event Management Software for Venues, Festivals and Eve...Introducing Crescat - Event Management Software for Venues, Festivals and Eve...
Introducing Crescat - Event Management Software for Venues, Festivals and Eve...
 
Utilocate provides Smarter, Better, Faster, Safer Locate Ticket Management
Utilocate provides Smarter, Better, Faster, Safer Locate Ticket ManagementUtilocate provides Smarter, Better, Faster, Safer Locate Ticket Management
Utilocate provides Smarter, Better, Faster, Safer Locate Ticket Management
 
Transform Your Communication with Cloud-Based IVR Solutions
Transform Your Communication with Cloud-Based IVR SolutionsTransform Your Communication with Cloud-Based IVR Solutions
Transform Your Communication with Cloud-Based IVR Solutions
 
2024 eCommerceDays Toulouse - Sylius 2.0.pdf
2024 eCommerceDays Toulouse - Sylius 2.0.pdf2024 eCommerceDays Toulouse - Sylius 2.0.pdf
2024 eCommerceDays Toulouse - Sylius 2.0.pdf
 
Essentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FMEEssentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FME
 
Vitthal Shirke Java Microservices Resume.pdf
Vitthal Shirke Java Microservices Resume.pdfVitthal Shirke Java Microservices Resume.pdf
Vitthal Shirke Java Microservices Resume.pdf
 
Using Xen Hypervisor for Functional Safety
Using Xen Hypervisor for Functional SafetyUsing Xen Hypervisor for Functional Safety
Using Xen Hypervisor for Functional Safety
 
GraphSummit Paris - The art of the possible with Graph Technology
GraphSummit Paris - The art of the possible with Graph TechnologyGraphSummit Paris - The art of the possible with Graph Technology
GraphSummit Paris - The art of the possible with Graph Technology
 
OpenMetadata Community Meeting - 5th June 2024
OpenMetadata Community Meeting - 5th June 2024OpenMetadata Community Meeting - 5th June 2024
OpenMetadata Community Meeting - 5th June 2024
 
A Sighting of filterA in Typelevel Rite of Passage
A Sighting of filterA in Typelevel Rite of PassageA Sighting of filterA in Typelevel Rite of Passage
A Sighting of filterA in Typelevel Rite of Passage
 
Graspan: A Big Data System for Big Code Analysis
Graspan: A Big Data System for Big Code AnalysisGraspan: A Big Data System for Big Code Analysis
Graspan: A Big Data System for Big Code Analysis
 
Custom Healthcare Software for Managing Chronic Conditions and Remote Patient...
Custom Healthcare Software for Managing Chronic Conditions and Remote Patient...Custom Healthcare Software for Managing Chronic Conditions and Remote Patient...
Custom Healthcare Software for Managing Chronic Conditions and Remote Patient...
 
AI Fusion Buddy Review: Brand New, Groundbreaking Gemini-Powered AI App
AI Fusion Buddy Review: Brand New, Groundbreaking Gemini-Powered AI AppAI Fusion Buddy Review: Brand New, Groundbreaking Gemini-Powered AI App
AI Fusion Buddy Review: Brand New, Groundbreaking Gemini-Powered AI App
 
APIs for Browser Automation (MoT Meetup 2024)
APIs for Browser Automation (MoT Meetup 2024)APIs for Browser Automation (MoT Meetup 2024)
APIs for Browser Automation (MoT Meetup 2024)
 
Launch Your Streaming Platforms in Minutes
Launch Your Streaming Platforms in MinutesLaunch Your Streaming Platforms in Minutes
Launch Your Streaming Platforms in Minutes
 
GOING AOT WITH GRAALVM FOR SPRING BOOT (SPRING IO)
GOING AOT WITH GRAALVM FOR  SPRING BOOT (SPRING IO)GOING AOT WITH GRAALVM FOR  SPRING BOOT (SPRING IO)
GOING AOT WITH GRAALVM FOR SPRING BOOT (SPRING IO)
 
AI Genie Review: World’s First Open AI WordPress Website Creator
AI Genie Review: World’s First Open AI WordPress Website CreatorAI Genie Review: World’s First Open AI WordPress Website Creator
AI Genie Review: World’s First Open AI WordPress Website Creator
 

Software development philosophies v1

  • 1. Philosophy A theory or attitude that acts as a guiding principle for behaviour Praveen Nair, PMP MVP blog.ninethsense.com
  • 2. Any fool can write code that a computer can understand. Good programmers write code that humans can understand. -Martin Fowler, 2008
  • 3. Abstraction Principle “Each significant piece of functionality in a program should be implemented in just one place in the source code. Where similar functions are carried out by distinct pieces of code, it is generally beneficial to combine them into one by abstracting out the varying parts”
  • 4. DRY – Don’t repeat yourself Every piece of knowledge must have a single, unambiguous, authoritative representation within a system.
  • 5. SSOT – Single Source of Truth refers to the practice of structuring information models and associated schemata such that every data element is stored exactly once
  • 6. Code Smells any symptom in the source code of a program that possibly indicates a deeper problem
  • 7. Refactoring process of restructuring existing computer code without changing its external behavior
  • 8. S O L I D Guidelines that can be applied while working on software to remove code smells by causing the programmer to refactor the software's source code until it is both legible and extensible. 1. Single Responsibility 2. Open-Closed 3. Liskov Substitution 4. Interface Segregation 5. Dependency Inversion
  • 9. Single Responsibility Principle every context (class, function, variable, etc.) should have a single responsibility
  • 10. LSP – Liskov Substitution Principle objects in a program should be replaceable with instances of their subtypes without altering the correctness of that program
  • 11. Interface Segregation Principle no client should be forced to depend on methods it does not use
  • 12. Dependency Inversion Principle Decouple software modules • High-level modules should not depend on low-level modules. • Abstractions should not depend on details. Details should depend on abstractions.
  • 13. Database Normalization process of organizing the fields and tables of a relational database to minimize redundancy
  • 14. KISS – Keep it simple, stupid! most systems work best if they are kept simple rather than made complicated
  • 15. YAGNI – You ain’t gonna need it Always implement things when you actually need them, never when you just foresee that you need them
  • 16. Code bloat production of code that is perceived as unnecessarily long, slow, or otherwise wasteful of resources
  • 17. MoSCoW MUST SHOULD COULD WON’T
  • 18. Agile Manifesto 1. Our highest priority is to satisfy the customer through early and continuous delivery of valuable software. 2. Welcome changing requirements, even late in development. Agile processes harness change for the customer's competitive advantage. 3. Deliver working software frequently, from a couple of weeks to a couple of months, with a preference to the shorter timescale.
  • 19. Agile Manifesto 4. Business people and developers must work together daily throughout the project. 5. Build projects around motivated individuals. Give them the environment and support they need, and trust them to get the job done. 6. The most efficient and effective method of conveying information to and within a development team is face-to-face conversation.
  • 20. Agile Manifesto 7. Working software is the primary measure of progress. 8. Agile processes promote sustainable development. The sponsors, developers, and users should be able to maintain a constant pace indefinitely. 9. Continuous attention to technical excellence and good design enhances agility.
  • 21. Agile Manifesto 10. Simplicity--the art of maximizing the amount of work not done--is essential. 11. The best architectures, requirements, and designs emerge from self-organizing teams. 12. At regular intervals, the team reflects on how to become more effective, then tunes and adjusts its behavior accordingly.
  • 22. Self-organizing team A group of motivated individuals, who work together toward a goal, have the ability and authority to take decisions and readily adapt to changing demands
  • 23. CI - Continuous Integration Practice of merging all developer working copies with a shared mainline several times a day. Its main aim is to prevent integration problems (i.e., integration hell)
  • 24. RAD Rapid Application Development
  • 25. UML - Unified Modeling Language a general-purpose modeling language which is designed to provide a standard way to visualize the design of a system
  • 26. UML - Unified Modeling Language a general-purpose modeling language which is designed to provide a standard way to visualize the design of a system
  • 27. TDD – Test Driven Development first write automated test code next write some code to pass that test
  • 28. 80:20 rule 20 percent of the code has 80 percent of the errors. Find them, fix them!
  • 29. if it ain’t broke, don’t fix it Leave something alone; avoid attempting to correct, fix, or improve what is already sufficient.
  • 30. if it ain’t broke, don’t fix it Leave something alone; avoid attempting to correct, fix, or improve what is already sufficient.
  • 31. Code Reuse Code reuse, also called software reuse, is the use of existing software, or software knowledge, to build new software
  • 32. Design Patterns a general reusable solution to a commonly occurring problem
  • 33. Anti Patterns specific repeated practices that appear initially to be beneficial, but ultimately result in bad consequences that outweigh the hoped-for advantages
  • 34. Architectural Patterns a widely recognized and reused solution to a recurring design problem
  • 35. Quality attributes Design Qualities 1. Conceptual Integrity 2. Maintainability 3. Reusability
  • 36. Quality attributes Run-time Qualities 1. Availability 2. Interoperability 3. Manageability 4. Performance 5. Reliability 6. Scalability 7. Security
  • 37. Quality attributes System Qualities 1. Supportability 2. Testability User Qualities 1. Usability
  • 38. Software Documentation 1. Requirements 2. Architecture / Design 3. Technical 4. End User 5. Marketing
  • 40. Separation of Concerns a design principle for separating a computer program into distinct sections