SlideShare une entreprise Scribd logo
1  sur  41
© 2010 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
FlexPMD: Your canary in a coal mine
Xavier Agnetti & Xavi Beumala
© 2010 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
What does our title mean?
 Early coal mines did not feature ventilation systems.
 Canaries are especially sensitive to methane and carbon monoxide,
which made them ideal for detecting any dangerous gas build-ups.
 As long as the canary in a coal mine kept singing, the miners knew their
air supply was safe.
 Do you want a canary on your project to keep it safe?
© 2010 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
Who are we?
 Xavier Agnetti
 RIA Sales Engineer and former Adobe
RIA consultant
 Original creator of FlexPMD
 FlexPMD leader of the core engine
 Based out in Paris, France
Also Called the X-
Team
 Xavi Beumala
 Technical Architect at Technical and eXperience
Innovation (TXI) department at Adobe
 FlexPMD leader of the Eclipse plugin
 Based out in Barcelona, Spain
© 2010 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
1. Introduction on software
quality
2. What could your canary
detect?
3. What are the main FlexPMD
rules?
4. How to tune your canary?
5. How would your canary
environment look like?
© 2010 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
Quotes on software quality – 1/4
“Any fool can write code that a
computer can understand.
Good programmers write code
that humans can understand.”
~Martin Fowler
© 2010 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
Quotes on software quality – 2/4
“You can't control what you can't
measure.” ~Tom DeMarco
© 2010 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
Quotes on software quality – 3/4
“Controlling complexity is the
essence of computer
programming” ~ Brian Kernighan
© 2010 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
Quotes on software quality – 4/4
 “Programs for sale: fast, reliable,
cheap - choose two.” ~Unknown author
 “The thing about quick and dirty
fixes is that the dirty remains long
after the quick has been
forgotten” ~Unknown author
© 2010 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
© 2010 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
Quality will get your customers addicted
© 2010 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
Cost of fixing software bugs
Req Design Code DevT AccT Ops
1x 5x 10x
20x
50x
150x
© 2010 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
Good workmen have good tools
© 2010 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
1. Introduction on software
quality
2. What could your canary
detect?
3. What are the main FlexPMD
rules?
4. How to tune your canary?
5. How would your canary
environment look like?
© 2010 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
Common quality criteria
Stability
Usability
MaintainabilityEfficiency
Portability
© 2010 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
What would your canary detect
 Coding standards violations
 Code (Bug) duplication
 Big size file
 Large code complexity
 Unhandled exceptions
 Dead code
 Unused variables, parameters,
methods, classes
 ...
© 2010 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
How is your canary called?
© 2010 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
What are your canary abilities? – 1/2
 Code anti-patterns (FlexPMD)
 Code duplications (FlexCPD)
 Code metrics (FlexMetrics)
 Code complexity (FlexPMD +
FlexMetrics)
 Parameterize rule
 Ignore rule violations
© 2010 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
What are your canary abilities? – 2/2
Despite its name, FlexPMD
can analyze any AS3-
based projects (not only
Flex ones)
even if some rules are Flex-specific
(MXML or incorrect usage of the Flex
SDK)
© 2010 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
1. Introduction on software
quality
2. What could your canary
detect?
3. What are the main
FlexPMD rules?
4. How to tune your canary?
5. How would your canary
environment look like?
© 2010 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
FlexPMD rules
© 2010 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
1. Introduction on software
quality
2. What could your canary
detect?
3. What are the main FlexPMD
rules?
4. How to tune your
canary?
5. How would your canary
environment look like?
© 2010 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
Build your ruleset - Pick up your rules
© 2010 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
Build your ruleset – Prioritize the rules
Communicate and formalize your quality requirements
Qualification Icon Explanation
Error
Development or design
problem
Warning
Code smells or potential
risks
Information
Possible good practices
violation
© 2010 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
Or create your own ones
© 2010 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
1. Introduction on software
quality
2. What could your canary
detect?
3. What are the main FlexPMD
rules?
4. How to tune your canary?
5. How would your canary
environment look like?
© 2010 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
Flash quality in Continuous Integration
 Possible invocations
 Ant task
 Maven plugin
 Reports pretty printing
in Hudson using:
 Violations plugin
 PMD plugin
© 2010 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
Flash quality web portal: Sonar
 Sonar is an open
platform to manage
code quality. As
such, it covers the 7
axes of code quality:
© 2010 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
Flash quality in the IDE
 Eclipse plugin
 The Eclipse Plugin is a plugin to streamline the development process in
regards to FlexPMD violations
 It analyses the code and marks the violations inline in the code so that
developers can see them as they develop
 It allows easy navigation between the list of violations and the associated code
© 2010 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
Eclipse plugin: Workflows
 Development workflow
 Proactively analyses code as you develop and considers violations first class
citizen during compilation
 Code review workflow
 Audit and review the quality of an entire project or any given functional area in
terms of PMD violations.
© 2010 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
Eclpise Plugin: Development Workflow
 Ideal for
 Projects that start using FlexPMD from the very beginning
 Teams that proactively want to promote Collective code and team best
practices
 Benefits
 FlexPMD recomendations become a first class citizen during development.
During compilation FlexPMD errors can prevent the entire build to succeed and
will be displayed in the standard Eclipse Errors view
 FlexPMD execute automatically on every compilation
© 2010 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
Eclipse Plugin: Code Review Workflow
 Ideal for
 Projects that didn’t use FlexPMD from the very beginning
 Projects where not all developers use FlexPMD
 Code or Applicatoin reviews to check the health of the code
 Audit specific functional areas
 Benefits
 FlexPMD recomendations are displayed in a specific panel and can be sorted
attending its relevance or violation type
© 2010 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
Eclipse Plugin: FlexCPD
 Executes on demand
 Creates a list of snippets of duplicated code
 You can navigate to the source code file by double clicking on the items
© 2010 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
Eclipse Plugin: Installation
 The installation and uninstallation process follow Eclipse standard
mechanisms
 Installation using the update site
 Uninstallation using Eclipse > About > Installation Details
 The latest version comes with FlexPMD 1.2 bundled
© 2010 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
Eclipse Plugin: Installation
© 2010 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
Eclipse Plugin: Configuration
© 2010 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
Eclipse Plugin: Development Workflow
© 2010 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
Eclipse Plugin: Review Workflow
© 2010 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
Key factors of success
 Explain code base quality to
stakeholders
 Make the developers adhering to
software quality
 Don’t hold on test and quality
measurement until the project
end
 Formalize your quality
requirements
 Measuring with targets
 Integrated and correct tools
 Provide executive briefings to
managers
© 2010 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
Next steps : Let’s dive in
© 2010 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
Acknowledgments
 To Francois Le Droff, Technical Architect on Adobe
Hendrix, who showed us the way from quality
management to FlexPMD
 For French speaking attendees, check out his session about
Quality Open Source Software:
 http://www.slideshare.net/francoisledroff/soire-qualite-
logicielle-paris-jug-tour-dhorizon-des-outils-open-
source?from=ss_embed
© 2010 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.

Contenu connexe

Tendances

Uber Mobility Meetup: Mobile Testing
Uber Mobility Meetup:  Mobile TestingUber Mobility Meetup:  Mobile Testing
Uber Mobility Meetup: Mobile TestingApple Chow
 
Five Steps to Add AppUp .NET SDK to Microsoft Visual Studio
Five Steps to Add AppUp .NET SDK to Microsoft Visual StudioFive Steps to Add AppUp .NET SDK to Microsoft Visual Studio
Five Steps to Add AppUp .NET SDK to Microsoft Visual Studioreadwritehack
 
WSO2Con US 2013 - Keynote: Developing Enterprise Apps In the Cloud
WSO2Con US 2013 - Keynote: Developing Enterprise Apps In the CloudWSO2Con US 2013 - Keynote: Developing Enterprise Apps In the Cloud
WSO2Con US 2013 - Keynote: Developing Enterprise Apps In the CloudWSO2
 
Spring roo for entrepreneurs
Spring roo for entrepreneursSpring roo for entrepreneurs
Spring roo for entrepreneursMans Jug
 
Devops interview-questions-PDF
Devops interview-questions-PDFDevops interview-questions-PDF
Devops interview-questions-PDFMayank Kumar
 
Appium & Selenium Alone vs Appium & Selenium with Perfecto
Appium & Selenium Alone vs Appium & Selenium with PerfectoAppium & Selenium Alone vs Appium & Selenium with Perfecto
Appium & Selenium Alone vs Appium & Selenium with PerfectoLizzy Guido (she/her)
 
Transform Digital Business with DevOps
Transform Digital Business with DevOpsTransform Digital Business with DevOps
Transform Digital Business with DevOpsDaniel Oh
 
DevOps Interview Questions and Answers 2019 | DevOps Tutorial | Edureka
DevOps Interview Questions and Answers 2019 | DevOps Tutorial | EdurekaDevOps Interview Questions and Answers 2019 | DevOps Tutorial | Edureka
DevOps Interview Questions and Answers 2019 | DevOps Tutorial | EdurekaEdureka!
 
Building Commercial Applications with Oracle Applications Express by Scott Sp...
Building Commercial Applications with Oracle Applications Express by Scott Sp...Building Commercial Applications with Oracle Applications Express by Scott Sp...
Building Commercial Applications with Oracle Applications Express by Scott Sp...Enkitec
 
Continuous Delivery vs Continuous Deployment | DevOps Methodology | Devops Tr...
Continuous Delivery vs Continuous Deployment | DevOps Methodology | Devops Tr...Continuous Delivery vs Continuous Deployment | DevOps Methodology | Devops Tr...
Continuous Delivery vs Continuous Deployment | DevOps Methodology | Devops Tr...Edureka!
 
Dev ops for cross platform mobile modeveast 12
Dev ops for cross platform mobile   modeveast 12Dev ops for cross platform mobile   modeveast 12
Dev ops for cross platform mobile modeveast 12Sanjeev Sharma
 
DevOps made simple - Understand DevOps and steps to become a DevOps expert
DevOps made simple  - Understand DevOps and steps to become a DevOps expertDevOps made simple  - Understand DevOps and steps to become a DevOps expert
DevOps made simple - Understand DevOps and steps to become a DevOps expertThinkCerti
 
The DevOps paradigm - the evolution of IT professionals and opensource toolkit
The DevOps paradigm - the evolution of IT professionals and opensource toolkitThe DevOps paradigm - the evolution of IT professionals and opensource toolkit
The DevOps paradigm - the evolution of IT professionals and opensource toolkitMarco Ferrigno
 
Introduction to DevOps Tools | DevOps Training | DevOps Tutorial for Beginner...
Introduction to DevOps Tools | DevOps Training | DevOps Tutorial for Beginner...Introduction to DevOps Tools | DevOps Training | DevOps Tutorial for Beginner...
Introduction to DevOps Tools | DevOps Training | DevOps Tutorial for Beginner...Edureka!
 
OpenAPI Generator The Babel Fish of The API World - apidays Live Paris
OpenAPI Generator The Babel Fish of The API World - apidays Live ParisOpenAPI Generator The Babel Fish of The API World - apidays Live Paris
OpenAPI Generator The Babel Fish of The API World - apidays Live ParisCliffano Subagio
 

Tendances (20)

Uber Mobility Meetup: Mobile Testing
Uber Mobility Meetup:  Mobile TestingUber Mobility Meetup:  Mobile Testing
Uber Mobility Meetup: Mobile Testing
 
Code Coverage
Code CoverageCode Coverage
Code Coverage
 
Five Steps to Add AppUp .NET SDK to Microsoft Visual Studio
Five Steps to Add AppUp .NET SDK to Microsoft Visual StudioFive Steps to Add AppUp .NET SDK to Microsoft Visual Studio
Five Steps to Add AppUp .NET SDK to Microsoft Visual Studio
 
WSO2Con US 2013 - Keynote: Developing Enterprise Apps In the Cloud
WSO2Con US 2013 - Keynote: Developing Enterprise Apps In the CloudWSO2Con US 2013 - Keynote: Developing Enterprise Apps In the Cloud
WSO2Con US 2013 - Keynote: Developing Enterprise Apps In the Cloud
 
From ci to cd
From ci to cdFrom ci to cd
From ci to cd
 
Yauheni_Semchanka_CV
Yauheni_Semchanka_CVYauheni_Semchanka_CV
Yauheni_Semchanka_CV
 
Spring roo for entrepreneurs
Spring roo for entrepreneursSpring roo for entrepreneurs
Spring roo for entrepreneurs
 
An introduction to DevOps
An introduction to DevOpsAn introduction to DevOps
An introduction to DevOps
 
Devops interview-questions-PDF
Devops interview-questions-PDFDevops interview-questions-PDF
Devops interview-questions-PDF
 
Appium & Selenium Alone vs Appium & Selenium with Perfecto
Appium & Selenium Alone vs Appium & Selenium with PerfectoAppium & Selenium Alone vs Appium & Selenium with Perfecto
Appium & Selenium Alone vs Appium & Selenium with Perfecto
 
Apex triggers i
Apex triggers iApex triggers i
Apex triggers i
 
Transform Digital Business with DevOps
Transform Digital Business with DevOpsTransform Digital Business with DevOps
Transform Digital Business with DevOps
 
DevOps Interview Questions and Answers 2019 | DevOps Tutorial | Edureka
DevOps Interview Questions and Answers 2019 | DevOps Tutorial | EdurekaDevOps Interview Questions and Answers 2019 | DevOps Tutorial | Edureka
DevOps Interview Questions and Answers 2019 | DevOps Tutorial | Edureka
 
Building Commercial Applications with Oracle Applications Express by Scott Sp...
Building Commercial Applications with Oracle Applications Express by Scott Sp...Building Commercial Applications with Oracle Applications Express by Scott Sp...
Building Commercial Applications with Oracle Applications Express by Scott Sp...
 
Continuous Delivery vs Continuous Deployment | DevOps Methodology | Devops Tr...
Continuous Delivery vs Continuous Deployment | DevOps Methodology | Devops Tr...Continuous Delivery vs Continuous Deployment | DevOps Methodology | Devops Tr...
Continuous Delivery vs Continuous Deployment | DevOps Methodology | Devops Tr...
 
Dev ops for cross platform mobile modeveast 12
Dev ops for cross platform mobile   modeveast 12Dev ops for cross platform mobile   modeveast 12
Dev ops for cross platform mobile modeveast 12
 
DevOps made simple - Understand DevOps and steps to become a DevOps expert
DevOps made simple  - Understand DevOps and steps to become a DevOps expertDevOps made simple  - Understand DevOps and steps to become a DevOps expert
DevOps made simple - Understand DevOps and steps to become a DevOps expert
 
The DevOps paradigm - the evolution of IT professionals and opensource toolkit
The DevOps paradigm - the evolution of IT professionals and opensource toolkitThe DevOps paradigm - the evolution of IT professionals and opensource toolkit
The DevOps paradigm - the evolution of IT professionals and opensource toolkit
 
Introduction to DevOps Tools | DevOps Training | DevOps Tutorial for Beginner...
Introduction to DevOps Tools | DevOps Training | DevOps Tutorial for Beginner...Introduction to DevOps Tools | DevOps Training | DevOps Tutorial for Beginner...
Introduction to DevOps Tools | DevOps Training | DevOps Tutorial for Beginner...
 
OpenAPI Generator The Babel Fish of The API World - apidays Live Paris
OpenAPI Generator The Babel Fish of The API World - apidays Live ParisOpenAPI Generator The Babel Fish of The API World - apidays Live Paris
OpenAPI Generator The Babel Fish of The API World - apidays Live Paris
 

En vedette

Specification-by-Example: A Cucumber Implementation
Specification-by-Example: A Cucumber ImplementationSpecification-by-Example: A Cucumber Implementation
Specification-by-Example: A Cucumber ImplementationTechWell
 
Exploring Usability Testing for Mobile and Web Technologies
Exploring Usability Testing for Mobile and Web TechnologiesExploring Usability Testing for Mobile and Web Technologies
Exploring Usability Testing for Mobile and Web TechnologiesTechWell
 
Emotional Intelligence in Software Testing
Emotional Intelligence in Software TestingEmotional Intelligence in Software Testing
Emotional Intelligence in Software TestingTechWell
 
How to Break Software: Robustness Edition
How to Break Software: Robustness EditionHow to Break Software: Robustness Edition
How to Break Software: Robustness EditionTechWell
 
Successful Test Automation: A Manager’s View
Successful Test Automation: A Manager’s ViewSuccessful Test Automation: A Manager’s View
Successful Test Automation: A Manager’s ViewTechWell
 
What’s Your Leadership IQ?
What’s Your Leadership IQ?What’s Your Leadership IQ?
What’s Your Leadership IQ?TechWell
 
Mines act 1952 ppt new
Mines act 1952 ppt newMines act 1952 ppt new
Mines act 1952 ppt newvijay lahri
 
Family life education for kindergarten kids and the parents
Family life education for kindergarten kids and the parentsFamily life education for kindergarten kids and the parents
Family life education for kindergarten kids and the parentsDr.Nehal Vaidya
 
Tips for better_life_m_l (1)
Tips for better_life_m_l (1)Tips for better_life_m_l (1)
Tips for better_life_m_l (1)Dr.Nehal Vaidya
 
Care of lbw newborn in community
Care of lbw newborn in communityCare of lbw newborn in community
Care of lbw newborn in communityDr.Nehal Vaidya
 
Hypertensivedisordersinpregnancy 100515015806-phpapp01
Hypertensivedisordersinpregnancy 100515015806-phpapp01Hypertensivedisordersinpregnancy 100515015806-phpapp01
Hypertensivedisordersinpregnancy 100515015806-phpapp01Dr.Nehal Vaidya
 

En vedette (18)

Specification-by-Example: A Cucumber Implementation
Specification-by-Example: A Cucumber ImplementationSpecification-by-Example: A Cucumber Implementation
Specification-by-Example: A Cucumber Implementation
 
Exploring Usability Testing for Mobile and Web Technologies
Exploring Usability Testing for Mobile and Web TechnologiesExploring Usability Testing for Mobile and Web Technologies
Exploring Usability Testing for Mobile and Web Technologies
 
Emotional Intelligence in Software Testing
Emotional Intelligence in Software TestingEmotional Intelligence in Software Testing
Emotional Intelligence in Software Testing
 
How to Break Software: Robustness Edition
How to Break Software: Robustness EditionHow to Break Software: Robustness Edition
How to Break Software: Robustness Edition
 
Successful Test Automation: A Manager’s View
Successful Test Automation: A Manager’s ViewSuccessful Test Automation: A Manager’s View
Successful Test Automation: A Manager’s View
 
What’s Your Leadership IQ?
What’s Your Leadership IQ?What’s Your Leadership IQ?
What’s Your Leadership IQ?
 
Mines act 1952 ppt new
Mines act 1952 ppt newMines act 1952 ppt new
Mines act 1952 ppt new
 
Mining
MiningMining
Mining
 
Mining law
Mining lawMining law
Mining law
 
Good
GoodGood
Good
 
Family life education for kindergarten kids and the parents
Family life education for kindergarten kids and the parentsFamily life education for kindergarten kids and the parents
Family life education for kindergarten kids and the parents
 
VISION FOR FUTURE INDIA
VISION FOR FUTURE INDIAVISION FOR FUTURE INDIA
VISION FOR FUTURE INDIA
 
Tips for better_life_m_l (1)
Tips for better_life_m_l (1)Tips for better_life_m_l (1)
Tips for better_life_m_l (1)
 
Care of lbw newborn in community
Care of lbw newborn in communityCare of lbw newborn in community
Care of lbw newborn in community
 
Hypertensivedisordersinpregnancy 100515015806-phpapp01
Hypertensivedisordersinpregnancy 100515015806-phpapp01Hypertensivedisordersinpregnancy 100515015806-phpapp01
Hypertensivedisordersinpregnancy 100515015806-phpapp01
 
Practical rabies
Practical rabiesPractical rabies
Practical rabies
 
MY FIRST MBBS
MY FIRST MBBSMY FIRST MBBS
MY FIRST MBBS
 
Smart Diet For Teens
Smart  Diet For  TeensSmart  Diet For  Teens
Smart Diet For Teens
 

Similaire à Max flash based code quality is there a canary in your coal mine-

ColdFusion 11 Overview - CFSummit 2013
ColdFusion 11 Overview - CFSummit 2013ColdFusion 11 Overview - CFSummit 2013
ColdFusion 11 Overview - CFSummit 2013Rupesh Kumar
 
IMMERSE'16 Introduction to AEM Tooling
IMMERSE'16 Introduction to AEM ToolingIMMERSE'16 Introduction to AEM Tooling
IMMERSE'16 Introduction to AEM ToolingAdobeMarketingCloud
 
Coming Up to Speed with XML Authoring in Adobe FrameMaker
Coming Up to Speed with XML Authoring in Adobe FrameMakerComing Up to Speed with XML Authoring in Adobe FrameMaker
Coming Up to Speed with XML Authoring in Adobe FrameMakerdclsocialmedia
 
Flash Builder for PHP and Mobile development
Flash Builder for PHP and Mobile developmentFlash Builder for PHP and Mobile development
Flash Builder for PHP and Mobile developmentMihai Corlan
 
Ria Event Lisbon Jan 2010
Ria Event Lisbon Jan 2010Ria Event Lisbon Jan 2010
Ria Event Lisbon Jan 2010joaogoncalves
 
Progressing beyond the Desktop at Universities with Adobe AIR
Progressing beyond the Desktop at Universities with Adobe AIRProgressing beyond the Desktop at Universities with Adobe AIR
Progressing beyond the Desktop at Universities with Adobe AIRJoseph Labrecque
 
Robust collaboration services with OSGi - Satya Maheshwari
Robust collaboration services with OSGi - Satya MaheshwariRobust collaboration services with OSGi - Satya Maheshwari
Robust collaboration services with OSGi - Satya Maheshwarimfrancis
 
Debugging mobile websites and web apps
Debugging mobile websites and web appsDebugging mobile websites and web apps
Debugging mobile websites and web appsMihai Corlan
 
UrbanCode Deploy course and product overview slides
UrbanCode Deploy course and product overview slidesUrbanCode Deploy course and product overview slides
UrbanCode Deploy course and product overview slidesIBM Rational software
 
Eclipse Che - A Revolutionary IDE for Distributed & Mainframe Development
Eclipse Che - A Revolutionary IDE for Distributed & Mainframe DevelopmentEclipse Che - A Revolutionary IDE for Distributed & Mainframe Development
Eclipse Che - A Revolutionary IDE for Distributed & Mainframe DevelopmentDevOps.com
 
Building Mobile Apps: A PhoneGap Enterprise Introduction for Developers
Building Mobile Apps: A PhoneGap Enterprise Introduction for DevelopersBuilding Mobile Apps: A PhoneGap Enterprise Introduction for Developers
Building Mobile Apps: A PhoneGap Enterprise Introduction for Developersarumsey
 
Mainframe DevOps: A Zowe CLI-enabled Roadmap
Mainframe DevOps: A Zowe CLI-enabled RoadmapMainframe DevOps: A Zowe CLI-enabled Roadmap
Mainframe DevOps: A Zowe CLI-enabled RoadmapDevOps.com
 
Adobe jax2010 1_dashboard
Adobe jax2010 1_dashboardAdobe jax2010 1_dashboard
Adobe jax2010 1_dashboardguest9776673
 

Similaire à Max flash based code quality is there a canary in your coal mine- (20)

Where is cold fusion headed
Where is cold fusion headedWhere is cold fusion headed
Where is cold fusion headed
 
ColdFusion 11 Overview - CFSummit 2013
ColdFusion 11 Overview - CFSummit 2013ColdFusion 11 Overview - CFSummit 2013
ColdFusion 11 Overview - CFSummit 2013
 
IMMERSE'16 Introduction to AEM Tooling
IMMERSE'16 Introduction to AEM ToolingIMMERSE'16 Introduction to AEM Tooling
IMMERSE'16 Introduction to AEM Tooling
 
Coming Up to Speed with XML Authoring in Adobe FrameMaker
Coming Up to Speed with XML Authoring in Adobe FrameMakerComing Up to Speed with XML Authoring in Adobe FrameMaker
Coming Up to Speed with XML Authoring in Adobe FrameMaker
 
Flash Builder for PHP and Mobile development
Flash Builder for PHP and Mobile developmentFlash Builder for PHP and Mobile development
Flash Builder for PHP and Mobile development
 
Ria Event Lisbon Jan 2010
Ria Event Lisbon Jan 2010Ria Event Lisbon Jan 2010
Ria Event Lisbon Jan 2010
 
Progressing beyond the Desktop at Universities with Adobe AIR
Progressing beyond the Desktop at Universities with Adobe AIRProgressing beyond the Desktop at Universities with Adobe AIR
Progressing beyond the Desktop at Universities with Adobe AIR
 
Robust collaboration services with OSGi - Satya Maheshwari
Robust collaboration services with OSGi - Satya MaheshwariRobust collaboration services with OSGi - Satya Maheshwari
Robust collaboration services with OSGi - Satya Maheshwari
 
flex_4_tutorials
flex_4_tutorialsflex_4_tutorials
flex_4_tutorials
 
flex_4_tutorials
flex_4_tutorialsflex_4_tutorials
flex_4_tutorials
 
S903 palla
S903 pallaS903 palla
S903 palla
 
Overview
OverviewOverview
Overview
 
Debugging mobile websites and web apps
Debugging mobile websites and web appsDebugging mobile websites and web apps
Debugging mobile websites and web apps
 
Code quality tools
Code quality toolsCode quality tools
Code quality tools
 
UrbanCode Deploy course and product overview slides
UrbanCode Deploy course and product overview slidesUrbanCode Deploy course and product overview slides
UrbanCode Deploy course and product overview slides
 
Eclipse Che - A Revolutionary IDE for Distributed & Mainframe Development
Eclipse Che - A Revolutionary IDE for Distributed & Mainframe DevelopmentEclipse Che - A Revolutionary IDE for Distributed & Mainframe Development
Eclipse Che - A Revolutionary IDE for Distributed & Mainframe Development
 
Building Mobile Apps: A PhoneGap Enterprise Introduction for Developers
Building Mobile Apps: A PhoneGap Enterprise Introduction for DevelopersBuilding Mobile Apps: A PhoneGap Enterprise Introduction for Developers
Building Mobile Apps: A PhoneGap Enterprise Introduction for Developers
 
Codename one
Codename oneCodename one
Codename one
 
Mainframe DevOps: A Zowe CLI-enabled Roadmap
Mainframe DevOps: A Zowe CLI-enabled RoadmapMainframe DevOps: A Zowe CLI-enabled Roadmap
Mainframe DevOps: A Zowe CLI-enabled Roadmap
 
Adobe jax2010 1_dashboard
Adobe jax2010 1_dashboardAdobe jax2010 1_dashboard
Adobe jax2010 1_dashboard
 

Dernier

"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr BaganFwdays
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyAlfredo García Lavilla
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024Stephanie Beckett
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationSlibray Presentation
 
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024BookNet Canada
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii SoldatenkoFwdays
 
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxLoriGlavin3
 
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxThe Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxLoriGlavin3
 
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxA Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxLoriGlavin3
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubKalema Edgar
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity PlanDatabarracks
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteDianaGray10
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Mattias Andersson
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupFlorian Wilhelm
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Commit University
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenHervé Boutemy
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsPixlogix Infotech
 
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdfHyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdfPrecisely
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxNavinnSomaal
 

Dernier (20)

"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easy
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck Presentation
 
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko
 
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
 
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxThe Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
 
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxA Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding Club
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity Plan
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test Suite
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project Setup
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache Maven
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and Cons
 
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdfHyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptx
 

Max flash based code quality is there a canary in your coal mine-

  • 1. © 2010 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. FlexPMD: Your canary in a coal mine Xavier Agnetti & Xavi Beumala
  • 2. © 2010 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. What does our title mean?  Early coal mines did not feature ventilation systems.  Canaries are especially sensitive to methane and carbon monoxide, which made them ideal for detecting any dangerous gas build-ups.  As long as the canary in a coal mine kept singing, the miners knew their air supply was safe.  Do you want a canary on your project to keep it safe?
  • 3. © 2010 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. Who are we?  Xavier Agnetti  RIA Sales Engineer and former Adobe RIA consultant  Original creator of FlexPMD  FlexPMD leader of the core engine  Based out in Paris, France Also Called the X- Team  Xavi Beumala  Technical Architect at Technical and eXperience Innovation (TXI) department at Adobe  FlexPMD leader of the Eclipse plugin  Based out in Barcelona, Spain
  • 4. © 2010 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. 1. Introduction on software quality 2. What could your canary detect? 3. What are the main FlexPMD rules? 4. How to tune your canary? 5. How would your canary environment look like?
  • 5. © 2010 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. Quotes on software quality – 1/4 “Any fool can write code that a computer can understand. Good programmers write code that humans can understand.” ~Martin Fowler
  • 6. © 2010 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. Quotes on software quality – 2/4 “You can't control what you can't measure.” ~Tom DeMarco
  • 7. © 2010 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. Quotes on software quality – 3/4 “Controlling complexity is the essence of computer programming” ~ Brian Kernighan
  • 8. © 2010 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. Quotes on software quality – 4/4  “Programs for sale: fast, reliable, cheap - choose two.” ~Unknown author  “The thing about quick and dirty fixes is that the dirty remains long after the quick has been forgotten” ~Unknown author
  • 9. © 2010 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
  • 10. © 2010 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. Quality will get your customers addicted
  • 11. © 2010 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. Cost of fixing software bugs Req Design Code DevT AccT Ops 1x 5x 10x 20x 50x 150x
  • 12. © 2010 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. Good workmen have good tools
  • 13. © 2010 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. 1. Introduction on software quality 2. What could your canary detect? 3. What are the main FlexPMD rules? 4. How to tune your canary? 5. How would your canary environment look like?
  • 14. © 2010 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. Common quality criteria Stability Usability MaintainabilityEfficiency Portability
  • 15. © 2010 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. What would your canary detect  Coding standards violations  Code (Bug) duplication  Big size file  Large code complexity  Unhandled exceptions  Dead code  Unused variables, parameters, methods, classes  ...
  • 16. © 2010 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. How is your canary called?
  • 17. © 2010 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. What are your canary abilities? – 1/2  Code anti-patterns (FlexPMD)  Code duplications (FlexCPD)  Code metrics (FlexMetrics)  Code complexity (FlexPMD + FlexMetrics)  Parameterize rule  Ignore rule violations
  • 18. © 2010 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. What are your canary abilities? – 2/2 Despite its name, FlexPMD can analyze any AS3- based projects (not only Flex ones) even if some rules are Flex-specific (MXML or incorrect usage of the Flex SDK)
  • 19. © 2010 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. 1. Introduction on software quality 2. What could your canary detect? 3. What are the main FlexPMD rules? 4. How to tune your canary? 5. How would your canary environment look like?
  • 20. © 2010 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. FlexPMD rules
  • 21. © 2010 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. 1. Introduction on software quality 2. What could your canary detect? 3. What are the main FlexPMD rules? 4. How to tune your canary? 5. How would your canary environment look like?
  • 22. © 2010 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. Build your ruleset - Pick up your rules
  • 23. © 2010 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. Build your ruleset – Prioritize the rules Communicate and formalize your quality requirements Qualification Icon Explanation Error Development or design problem Warning Code smells or potential risks Information Possible good practices violation
  • 24. © 2010 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. Or create your own ones
  • 25. © 2010 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. 1. Introduction on software quality 2. What could your canary detect? 3. What are the main FlexPMD rules? 4. How to tune your canary? 5. How would your canary environment look like?
  • 26. © 2010 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. Flash quality in Continuous Integration  Possible invocations  Ant task  Maven plugin  Reports pretty printing in Hudson using:  Violations plugin  PMD plugin
  • 27. © 2010 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. Flash quality web portal: Sonar  Sonar is an open platform to manage code quality. As such, it covers the 7 axes of code quality:
  • 28. © 2010 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. Flash quality in the IDE  Eclipse plugin  The Eclipse Plugin is a plugin to streamline the development process in regards to FlexPMD violations  It analyses the code and marks the violations inline in the code so that developers can see them as they develop  It allows easy navigation between the list of violations and the associated code
  • 29. © 2010 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. Eclipse plugin: Workflows  Development workflow  Proactively analyses code as you develop and considers violations first class citizen during compilation  Code review workflow  Audit and review the quality of an entire project or any given functional area in terms of PMD violations.
  • 30. © 2010 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. Eclpise Plugin: Development Workflow  Ideal for  Projects that start using FlexPMD from the very beginning  Teams that proactively want to promote Collective code and team best practices  Benefits  FlexPMD recomendations become a first class citizen during development. During compilation FlexPMD errors can prevent the entire build to succeed and will be displayed in the standard Eclipse Errors view  FlexPMD execute automatically on every compilation
  • 31. © 2010 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. Eclipse Plugin: Code Review Workflow  Ideal for  Projects that didn’t use FlexPMD from the very beginning  Projects where not all developers use FlexPMD  Code or Applicatoin reviews to check the health of the code  Audit specific functional areas  Benefits  FlexPMD recomendations are displayed in a specific panel and can be sorted attending its relevance or violation type
  • 32. © 2010 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. Eclipse Plugin: FlexCPD  Executes on demand  Creates a list of snippets of duplicated code  You can navigate to the source code file by double clicking on the items
  • 33. © 2010 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. Eclipse Plugin: Installation  The installation and uninstallation process follow Eclipse standard mechanisms  Installation using the update site  Uninstallation using Eclipse > About > Installation Details  The latest version comes with FlexPMD 1.2 bundled
  • 34. © 2010 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. Eclipse Plugin: Installation
  • 35. © 2010 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. Eclipse Plugin: Configuration
  • 36. © 2010 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. Eclipse Plugin: Development Workflow
  • 37. © 2010 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. Eclipse Plugin: Review Workflow
  • 38. © 2010 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. Key factors of success  Explain code base quality to stakeholders  Make the developers adhering to software quality  Don’t hold on test and quality measurement until the project end  Formalize your quality requirements  Measuring with targets  Integrated and correct tools  Provide executive briefings to managers
  • 39. © 2010 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. Next steps : Let’s dive in
  • 40. © 2010 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. Acknowledgments  To Francois Le Droff, Technical Architect on Adobe Hendrix, who showed us the way from quality management to FlexPMD  For French speaking attendees, check out his session about Quality Open Source Software:  http://www.slideshare.net/francoisledroff/soire-qualite- logicielle-paris-jug-tour-dhorizon-des-outils-open- source?from=ss_embed
  • 41. © 2010 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.

Notes de l'éditeur

  1. Dead code: Unused private methods Unused method parameters Unused local variable Unused private class members Bad Architecture: Cairngorm 2 possible issues: Huge ModelLocator Reference ModelLocator from outside the main file Call explicitly EventDispatcher PureMVC possible issues: Huge mediators (low testability) Too many switch case statements Monkey patching Reference a view class from a model class: Potential bugs: Event class missing clone function Listen or dispatch hard coded event name Switch statements should have default Identical switch cases Default event name Maintainability: Only one return statement per method Avoid public static variable (global variable) Use of unsafe type (Object, Dictionnary, *) Class and extended class have same name Dynamic class Performance: Cyclomatic complexity Heavily complex constructor CreationPolicy set to "all” Bindable class Deeply nested condition Sizing: Too many functions per class Too long functions Too many parameters per function Too many public members Too many public fields Naming: Too short variable name Package case Variable name ends with a figure Class member hidden by a local variable Incorrect class case