SlideShare une entreprise Scribd logo
1  sur  27
Télécharger pour lire hors ligne
HIGH MAINTAINABLE SOFTWARE
Nguyen Cuong viet
@ Septeni Technology
Ha noi - 12/2013
make it changeable
ABOUT ME
 8 years- experiences software developer, basically
base on LAMP environment
 ..
 Tratu.soha.vn
 Go.vn
 Pyxis-social.com
AGENDA
1. Understanding the important of “maintainability”
2. How to improve
 Design patterns
 Code refactor
 Jenkins
3. Discussion
I. WHAT, WHO, WHEN, WHY
THE MAINTAINABILITY PROBLEM
 Software systems are built under high pressure to meet
deadlines, and with initial emphasis on performance,
reliability, and usability.
 The software attributes relating to later changes in the
software => maintainability
SOFTWARE QUALITY FACTORS
 ISO 9126
SOFTWARE QUALITY FACTORS
 ISO 9126
->WHO ?
WHEN - DEPENDENCIES
 Do you need to care about Maintainability?
It depend on:
Project size
Life time of project
Quality of code
Design
THE MAINTAINABLE CODE CHECKLIST..
PYXIS USECASE
 20 developers
 +2 years
 10 lines of code/days x 20 x365 = 70.000 line of code/ year?
COMPLAINS..
 Bug fixes: ask Mr.A because he developed it!!
 Readable: New Member?
 understand project business by researching source
code ?
 everyone is new member with other modules!
 Simple development still has a lot of bugs!
 Throw it away, let rebuild this function!
SO..
• Imagine about our source code this
time next year..
READABLE?
CHANGEABLE?
HOW TO
Design pattern
Refactoring source code
Jenkins..
DESIGN PATTERNS
Design patterns can speed up the development process by
providing tested, proven development paradigms
PATTERNS
CODE REVIEW
Bad Smells in Code ..
CODE SMELLS ..
 Duplicated Code
 Long Method
 Large Class
 Long Parameter list
 Divergent Change
 Shotgun Surgery
 Feature Envy
 Feature Envy
 Data Clumn ..
 Primitive bsession
 Switch tatements
 Parallel
 Inheritance
 Hierarchies Lazy
 Class Speculative
 Generality
 Temporary Field
 Message Chains ..
REFACTOR - EXAMPLE
String foundPerson(String[] people){
for (int i = 0; i < people.length; i++) {
if (people[i].equals ("Don")){
return "Don";
}
if (people[i].equals ("John")){
return "John";
}
if (people[i].equals ("Kent")){
return "Kent";
}
}
return "";
}
String foundPerson(String[] people){
List candidates = Arrays.asList(new
String[] {"Don", "John", "Kent"});
for (int i=0; i &lt; people.length; i++)
if (candidates.contains(people[i]))
return people[i];
return "";
}
source refactored
REFACTOR - EXAMPLE
void printOwing(double amount) {
printBanner();
//print details
System.out.println ("name:" +
_name);
System.out.println ("amount" +
amount);
}
void printOwing(double amount) {
printBanner();
printDetails(amount);
}
void printDetails (double amount) {
System.out.println ("name:" +
_name);
System.out.println ("amount" +
amount);
}
source refactored
JENKINS
Automation tool..
JENKINS
 CHECKSTYLE(for processing PHP_CodeSniffer logfiles in
Checkstyle format)
 CLOVER(for processing PHPUnit code coverage xml output)
 DRY(for processing phpcpd logfiles in PMD-CPD format)
 JDepend (for processing PHP_Depend logfiles in JDepend
format)
 PMD (for processing PHPMD logfiles in PMD format)
 Violations (for processing various logfiles)
 xUnit (for processing PHPUnit logfiles in JUnit format)
JENKINS - SAMPLE
 Duplication
JENKINS - SAMPLE
 Duplication
JENKINS- SAMPLE: JDEPEND
 JDepend traverses Java class file directories and
generates design quality metrics for each Java
package. JDepend allows you to automatically measure
the quality of a design in terms of its extensibility,
reusability, and maintainability to manage package
dependencies effectively.
JDEPEND REPORT
REFERENCE
 Maintainbility in software engineering
 http://codebetter.com/jeremymiller/2006/12/06/on-
writing-maintainable-code/ (check list)
 A practice model for mesuaring maintainability
 http://sourcemaking.com/ very good resource for high
quality code
 http://jenkins-php.org/
THANK YOU!
Discussion..

Contenu connexe

En vedette

Մխիթար Սեբաստացու կենսագրությունը
Մխիթար Սեբաստացու կենսագրությունըՄխիթար Սեբաստացու կենսագրությունը
Մխիթար Սեբաստացու կենսագրությունը
ganyan
 
Comet: by pushing server data, we push the web forward
Comet: by pushing server data, we push the web forwardComet: by pushing server data, we push the web forward
Comet: by pushing server data, we push the web forward
NOLOH LLC.
 
Get Your Head in the Cloud
Get Your Head in the CloudGet Your Head in the Cloud
Get Your Head in the Cloud
Claris Networks
 
A Healthier Appetite
A Healthier AppetiteA Healthier Appetite
A Healthier Appetite
Thrive! Meetings & Events
 

En vedette (12)

Home depotdisputev4
Home depotdisputev4Home depotdisputev4
Home depotdisputev4
 
Hr manager competencies
Hr manager competencies Hr manager competencies
Hr manager competencies
 
Մխիթար Սեբաստացու կենսագրությունը
Մխիթար Սեբաստացու կենսագրությունըՄխիթար Սեբաստացու կենսագրությունը
Մխիթար Սեբաստացու կենսագրությունը
 
IMC Institute's Training Schedule Q2 2014
IMC Institute's Training Schedule Q2 2014IMC Institute's Training Schedule Q2 2014
IMC Institute's Training Schedule Q2 2014
 
RUMI and me
RUMI and me RUMI and me
RUMI and me
 
Comet: by pushing server data, we push the web forward
Comet: by pushing server data, we push the web forwardComet: by pushing server data, we push the web forward
Comet: by pushing server data, we push the web forward
 
3 fracture healing
3 fracture healing3 fracture healing
3 fracture healing
 
13 user experience commandments
13 user experience commandments13 user experience commandments
13 user experience commandments
 
Get Your Head in the Cloud
Get Your Head in the CloudGet Your Head in the Cloud
Get Your Head in the Cloud
 
ENERGY STREETFIGHT. Play for Purpose: An Augmented Venture.
ENERGY STREETFIGHT. Play for Purpose: An Augmented Venture.ENERGY STREETFIGHT. Play for Purpose: An Augmented Venture.
ENERGY STREETFIGHT. Play for Purpose: An Augmented Venture.
 
Securing Syslog On FreeBSD
Securing Syslog On FreeBSDSecuring Syslog On FreeBSD
Securing Syslog On FreeBSD
 
A Healthier Appetite
A Healthier AppetiteA Healthier Appetite
A Healthier Appetite
 

Similaire à High maitainablesoftware

Introduction to Csharp (C-Sharp) is a programming language developed by Micro...
Introduction to Csharp (C-Sharp) is a programming language developed by Micro...Introduction to Csharp (C-Sharp) is a programming language developed by Micro...
Introduction to Csharp (C-Sharp) is a programming language developed by Micro...
NALESVPMEngg
 
Discovering User's Topics of Interest in Recommender Systems
Discovering User's Topics of Interest in Recommender SystemsDiscovering User's Topics of Interest in Recommender Systems
Discovering User's Topics of Interest in Recommender Systems
Gabriel Moreira
 

Similaire à High maitainablesoftware (20)

Fast REST APIs Development with MongoDB
Fast REST APIs Development with MongoDBFast REST APIs Development with MongoDB
Fast REST APIs Development with MongoDB
 
Human scaling on the front end
Human scaling on the front endHuman scaling on the front end
Human scaling on the front end
 
Where are yours vertexes and what are they talking about?
Where are yours vertexes and what are they talking about?Where are yours vertexes and what are they talking about?
Where are yours vertexes and what are they talking about?
 
Building Services With gRPC, Docker and Go
Building Services With gRPC, Docker and GoBuilding Services With gRPC, Docker and Go
Building Services With gRPC, Docker and Go
 
Human computer interaction research at ibm t
Human computer interaction research at ibm tHuman computer interaction research at ibm t
Human computer interaction research at ibm t
 
Reactive Stream Processing Using DDS and Rx
Reactive Stream Processing Using DDS and RxReactive Stream Processing Using DDS and Rx
Reactive Stream Processing Using DDS and Rx
 
Services for Science
Services for ScienceServices for Science
Services for Science
 
After test Barcelona 20160303
After test Barcelona 20160303After test Barcelona 20160303
After test Barcelona 20160303
 
Cassandra & puppet, scaling data at $15 per month
Cassandra & puppet, scaling data at $15 per monthCassandra & puppet, scaling data at $15 per month
Cassandra & puppet, scaling data at $15 per month
 
Benefits of Using MongoDB Over RDBMSs
Benefits of Using MongoDB Over RDBMSsBenefits of Using MongoDB Over RDBMSs
Benefits of Using MongoDB Over RDBMSs
 
Modelling performance tests
Modelling performance testsModelling performance tests
Modelling performance tests
 
MWLUG 2014: Modern Domino (workshop)
MWLUG 2014: Modern Domino (workshop)MWLUG 2014: Modern Domino (workshop)
MWLUG 2014: Modern Domino (workshop)
 
Building Modern Data Pipelines for Time Series Data on GCP with InfluxData by...
Building Modern Data Pipelines for Time Series Data on GCP with InfluxData by...Building Modern Data Pipelines for Time Series Data on GCP with InfluxData by...
Building Modern Data Pipelines for Time Series Data on GCP with InfluxData by...
 
Introduction to-csharp
Introduction to-csharpIntroduction to-csharp
Introduction to-csharp
 
Introduction to Csharp (C-Sharp) is a programming language developed by Micro...
Introduction to Csharp (C-Sharp) is a programming language developed by Micro...Introduction to Csharp (C-Sharp) is a programming language developed by Micro...
Introduction to Csharp (C-Sharp) is a programming language developed by Micro...
 
Introduction-to-Csharp.ppt
Introduction-to-Csharp.pptIntroduction-to-Csharp.ppt
Introduction-to-Csharp.ppt
 
Introduction-to-Csharp.ppt
Introduction-to-Csharp.pptIntroduction-to-Csharp.ppt
Introduction-to-Csharp.ppt
 
CTD307_Case Study How Mobile Device Service Company Asurion Architected Its A...
CTD307_Case Study How Mobile Device Service Company Asurion Architected Its A...CTD307_Case Study How Mobile Device Service Company Asurion Architected Its A...
CTD307_Case Study How Mobile Device Service Company Asurion Architected Its A...
 
Discovering User's Topics of Interest in Recommender Systems
Discovering User's Topics of Interest in Recommender SystemsDiscovering User's Topics of Interest in Recommender Systems
Discovering User's Topics of Interest in Recommender Systems
 
MongoDB Days Silicon Valley: Building an Artificial Intelligence Startup with...
MongoDB Days Silicon Valley: Building an Artificial Intelligence Startup with...MongoDB Days Silicon Valley: Building an Artificial Intelligence Startup with...
MongoDB Days Silicon Valley: Building an Artificial Intelligence Startup with...
 

Plus de Duy Tan Geek

Amazon Elastic Load Balancing
Amazon Elastic Load BalancingAmazon Elastic Load Balancing
Amazon Elastic Load Balancing
Duy Tan Geek
 
Cloud - FOSS & Challenge
Cloud - FOSS & ChallengeCloud - FOSS & Challenge
Cloud - FOSS & Challenge
Duy Tan Geek
 
AWS, is it interesting?
AWS, is it interesting?AWS, is it interesting?
AWS, is it interesting?
Duy Tan Geek
 
Cloud DC Transforming
Cloud DC TransformingCloud DC Transforming
Cloud DC Transforming
Duy Tan Geek
 
Becoming a better programmer - unit testing
Becoming a better programmer - unit testingBecoming a better programmer - unit testing
Becoming a better programmer - unit testing
Duy Tan Geek
 
Practical TDD in Septeni Technology
Practical TDD in Septeni TechnologyPractical TDD in Septeni Technology
Practical TDD in Septeni Technology
Duy Tan Geek
 
Build Quality In with TDD
Build Quality In with TDDBuild Quality In with TDD
Build Quality In with TDD
Duy Tan Geek
 
Sharing bridge SE working experience of myself
Sharing bridge SE working experience of myselfSharing bridge SE working experience of myself
Sharing bridge SE working experience of myself
Duy Tan Geek
 
Game development with Cocos2d-x Engine
Game development with Cocos2d-x EngineGame development with Cocos2d-x Engine
Game development with Cocos2d-x Engine
Duy Tan Geek
 
HTML5 mobile games
HTML5 mobile gamesHTML5 mobile games
HTML5 mobile games
Duy Tan Geek
 
Game engine introduction and approach
Game engine introduction and approachGame engine introduction and approach
Game engine introduction and approach
Duy Tan Geek
 
10 things you need to know about doing business with Japanese
10 things you need to know about doing business with Japanese10 things you need to know about doing business with Japanese
10 things you need to know about doing business with Japanese
Duy Tan Geek
 
Enjoy Japanese work style
Enjoy Japanese work styleEnjoy Japanese work style
Enjoy Japanese work style
Duy Tan Geek
 
A cup of coffee worth 10 dollars is what we are going to sell!
A cup of coffee worth 10 dollars is what we are going to sell!A cup of coffee worth 10 dollars is what we are going to sell!
A cup of coffee worth 10 dollars is what we are going to sell!
Duy Tan Geek
 
Introduction to pmp
Introduction to pmpIntroduction to pmp
Introduction to pmp
Duy Tan Geek
 
Beyond project management
Beyond project managementBeyond project management
Beyond project management
Duy Tan Geek
 
The way to set automation testing
The way to set automation testingThe way to set automation testing
The way to set automation testing
Duy Tan Geek
 
Quality Management Introduction
Quality Management IntroductionQuality Management Introduction
Quality Management Introduction
Duy Tan Geek
 
Techniques in black box testing
Techniques in black box testingTechniques in black box testing
Techniques in black box testing
Duy Tan Geek
 

Plus de Duy Tan Geek (20)

Amazon Elastic Load Balancing
Amazon Elastic Load BalancingAmazon Elastic Load Balancing
Amazon Elastic Load Balancing
 
Cloud - FOSS & Challenge
Cloud - FOSS & ChallengeCloud - FOSS & Challenge
Cloud - FOSS & Challenge
 
AWS, is it interesting?
AWS, is it interesting?AWS, is it interesting?
AWS, is it interesting?
 
Cloud DC Transforming
Cloud DC TransformingCloud DC Transforming
Cloud DC Transforming
 
Becoming a better programmer - unit testing
Becoming a better programmer - unit testingBecoming a better programmer - unit testing
Becoming a better programmer - unit testing
 
Practical TDD in Septeni Technology
Practical TDD in Septeni TechnologyPractical TDD in Septeni Technology
Practical TDD in Septeni Technology
 
Build Quality In with TDD
Build Quality In with TDDBuild Quality In with TDD
Build Quality In with TDD
 
Sharing bridge SE working experience of myself
Sharing bridge SE working experience of myselfSharing bridge SE working experience of myself
Sharing bridge SE working experience of myself
 
Game development with Cocos2d-x Engine
Game development with Cocos2d-x EngineGame development with Cocos2d-x Engine
Game development with Cocos2d-x Engine
 
HTML5 mobile games
HTML5 mobile gamesHTML5 mobile games
HTML5 mobile games
 
Game engine introduction and approach
Game engine introduction and approachGame engine introduction and approach
Game engine introduction and approach
 
10 things you need to know about doing business with Japanese
10 things you need to know about doing business with Japanese10 things you need to know about doing business with Japanese
10 things you need to know about doing business with Japanese
 
Enjoy Japanese work style
Enjoy Japanese work styleEnjoy Japanese work style
Enjoy Japanese work style
 
A cup of coffee worth 10 dollars is what we are going to sell!
A cup of coffee worth 10 dollars is what we are going to sell!A cup of coffee worth 10 dollars is what we are going to sell!
A cup of coffee worth 10 dollars is what we are going to sell!
 
Leader ship value
Leader ship valueLeader ship value
Leader ship value
 
Introduction to pmp
Introduction to pmpIntroduction to pmp
Introduction to pmp
 
Beyond project management
Beyond project managementBeyond project management
Beyond project management
 
The way to set automation testing
The way to set automation testingThe way to set automation testing
The way to set automation testing
 
Quality Management Introduction
Quality Management IntroductionQuality Management Introduction
Quality Management Introduction
 
Techniques in black box testing
Techniques in black box testingTechniques in black box testing
Techniques in black box testing
 

Dernier

Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024
Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024
Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024
VictoriaMetrics
 
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
masabamasaba
 
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICECHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
9953056974 Low Rate Call Girls In Saket, Delhi NCR
 
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
Health
 
AI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
AI Mastery 201: Elevating Your Workflow with Advanced LLM TechniquesAI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
AI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
VictorSzoltysek
 
Abortion Pill Prices Tembisa [(+27832195400*)] 🏥 Women's Abortion Clinic in T...
Abortion Pill Prices Tembisa [(+27832195400*)] 🏥 Women's Abortion Clinic in T...Abortion Pill Prices Tembisa [(+27832195400*)] 🏥 Women's Abortion Clinic in T...
Abortion Pill Prices Tembisa [(+27832195400*)] 🏥 Women's Abortion Clinic in T...
Medical / Health Care (+971588192166) Mifepristone and Misoprostol tablets 200mg
 

Dernier (20)

Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024
Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024
Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024
 
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
 
WSO2CON 2024 - Does Open Source Still Matter?
WSO2CON 2024 - Does Open Source Still Matter?WSO2CON 2024 - Does Open Source Still Matter?
WSO2CON 2024 - Does Open Source Still Matter?
 
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
 
MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...
MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...
MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...
 
WSO2Con2024 - From Code To Cloud: Fast Track Your Cloud Native Journey with C...
WSO2Con2024 - From Code To Cloud: Fast Track Your Cloud Native Journey with C...WSO2Con2024 - From Code To Cloud: Fast Track Your Cloud Native Journey with C...
WSO2Con2024 - From Code To Cloud: Fast Track Your Cloud Native Journey with C...
 
%in Harare+277-882-255-28 abortion pills for sale in Harare
%in Harare+277-882-255-28 abortion pills for sale in Harare%in Harare+277-882-255-28 abortion pills for sale in Harare
%in Harare+277-882-255-28 abortion pills for sale in Harare
 
VTU technical seminar 8Th Sem on Scikit-learn
VTU technical seminar 8Th Sem on Scikit-learnVTU technical seminar 8Th Sem on Scikit-learn
VTU technical seminar 8Th Sem on Scikit-learn
 
OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...
OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...
OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...
 
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICECHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
 
Software Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsSoftware Quality Assurance Interview Questions
Software Quality Assurance Interview Questions
 
Announcing Codolex 2.0 from GDK Software
Announcing Codolex 2.0 from GDK SoftwareAnnouncing Codolex 2.0 from GDK Software
Announcing Codolex 2.0 from GDK Software
 
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
 
WSO2Con2024 - Enabling Transactional System's Exponential Growth With Simplicity
WSO2Con2024 - Enabling Transactional System's Exponential Growth With SimplicityWSO2Con2024 - Enabling Transactional System's Exponential Growth With Simplicity
WSO2Con2024 - Enabling Transactional System's Exponential Growth With Simplicity
 
Harnessing ChatGPT - Elevating Productivity in Today's Agile Environment
Harnessing ChatGPT  - Elevating Productivity in Today's Agile EnvironmentHarnessing ChatGPT  - Elevating Productivity in Today's Agile Environment
Harnessing ChatGPT - Elevating Productivity in Today's Agile Environment
 
AI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
AI Mastery 201: Elevating Your Workflow with Advanced LLM TechniquesAI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
AI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
 
%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein
%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein
%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein
 
Abortion Pill Prices Tembisa [(+27832195400*)] 🏥 Women's Abortion Clinic in T...
Abortion Pill Prices Tembisa [(+27832195400*)] 🏥 Women's Abortion Clinic in T...Abortion Pill Prices Tembisa [(+27832195400*)] 🏥 Women's Abortion Clinic in T...
Abortion Pill Prices Tembisa [(+27832195400*)] 🏥 Women's Abortion Clinic in T...
 
%in kempton park+277-882-255-28 abortion pills for sale in kempton park
%in kempton park+277-882-255-28 abortion pills for sale in kempton park %in kempton park+277-882-255-28 abortion pills for sale in kempton park
%in kempton park+277-882-255-28 abortion pills for sale in kempton park
 
Architecture decision records - How not to get lost in the past
Architecture decision records - How not to get lost in the pastArchitecture decision records - How not to get lost in the past
Architecture decision records - How not to get lost in the past
 

High maitainablesoftware

  • 1. HIGH MAINTAINABLE SOFTWARE Nguyen Cuong viet @ Septeni Technology Ha noi - 12/2013 make it changeable
  • 2. ABOUT ME  8 years- experiences software developer, basically base on LAMP environment  ..  Tratu.soha.vn  Go.vn  Pyxis-social.com
  • 3. AGENDA 1. Understanding the important of “maintainability” 2. How to improve  Design patterns  Code refactor  Jenkins 3. Discussion
  • 4. I. WHAT, WHO, WHEN, WHY
  • 5. THE MAINTAINABILITY PROBLEM  Software systems are built under high pressure to meet deadlines, and with initial emphasis on performance, reliability, and usability.  The software attributes relating to later changes in the software => maintainability
  • 7. SOFTWARE QUALITY FACTORS  ISO 9126 ->WHO ?
  • 8. WHEN - DEPENDENCIES  Do you need to care about Maintainability? It depend on: Project size Life time of project Quality of code Design
  • 9. THE MAINTAINABLE CODE CHECKLIST..
  • 10. PYXIS USECASE  20 developers  +2 years  10 lines of code/days x 20 x365 = 70.000 line of code/ year?
  • 11. COMPLAINS..  Bug fixes: ask Mr.A because he developed it!!  Readable: New Member?  understand project business by researching source code ?  everyone is new member with other modules!  Simple development still has a lot of bugs!  Throw it away, let rebuild this function!
  • 12. SO.. • Imagine about our source code this time next year.. READABLE? CHANGEABLE?
  • 13. HOW TO Design pattern Refactoring source code Jenkins..
  • 14. DESIGN PATTERNS Design patterns can speed up the development process by providing tested, proven development paradigms
  • 17. CODE SMELLS ..  Duplicated Code  Long Method  Large Class  Long Parameter list  Divergent Change  Shotgun Surgery  Feature Envy  Feature Envy  Data Clumn ..  Primitive bsession  Switch tatements  Parallel  Inheritance  Hierarchies Lazy  Class Speculative  Generality  Temporary Field  Message Chains ..
  • 18. REFACTOR - EXAMPLE String foundPerson(String[] people){ for (int i = 0; i < people.length; i++) { if (people[i].equals ("Don")){ return "Don"; } if (people[i].equals ("John")){ return "John"; } if (people[i].equals ("Kent")){ return "Kent"; } } return ""; } String foundPerson(String[] people){ List candidates = Arrays.asList(new String[] {"Don", "John", "Kent"}); for (int i=0; i &lt; people.length; i++) if (candidates.contains(people[i])) return people[i]; return ""; } source refactored
  • 19. REFACTOR - EXAMPLE void printOwing(double amount) { printBanner(); //print details System.out.println ("name:" + _name); System.out.println ("amount" + amount); } void printOwing(double amount) { printBanner(); printDetails(amount); } void printDetails (double amount) { System.out.println ("name:" + _name); System.out.println ("amount" + amount); } source refactored
  • 21. JENKINS  CHECKSTYLE(for processing PHP_CodeSniffer logfiles in Checkstyle format)  CLOVER(for processing PHPUnit code coverage xml output)  DRY(for processing phpcpd logfiles in PMD-CPD format)  JDepend (for processing PHP_Depend logfiles in JDepend format)  PMD (for processing PHPMD logfiles in PMD format)  Violations (for processing various logfiles)  xUnit (for processing PHPUnit logfiles in JUnit format)
  • 22. JENKINS - SAMPLE  Duplication
  • 23. JENKINS - SAMPLE  Duplication
  • 24. JENKINS- SAMPLE: JDEPEND  JDepend traverses Java class file directories and generates design quality metrics for each Java package. JDepend allows you to automatically measure the quality of a design in terms of its extensibility, reusability, and maintainability to manage package dependencies effectively.
  • 26. REFERENCE  Maintainbility in software engineering  http://codebetter.com/jeremymiller/2006/12/06/on- writing-maintainable-code/ (check list)  A practice model for mesuaring maintainability  http://sourcemaking.com/ very good resource for high quality code  http://jenkins-php.org/