status and first objectives 14/06/2012jean-christophe garnier1
TRANSCRIPT
Jean-Christophe Garnier 1
MPE SW coordinationStatus and first objectives
14/06/2012
Jean-Christophe Garnier 2
Introduction
7 software developers ~40 distinct software applications
BIS, QPS, SMP, Post Mortem, AccTesting, PcInterlock, etc.
3 main technologies: Java, C/C++, LabVIEW What about VHDL?
Collaborations with EN/ICE, BE/CO, BE/OP
14/06/2012
Jean-Christophe Garnier 3
Outline
Purposes Basis for Software Quality Sharing Future steps
14/06/2012
Jean-Christophe Garnier 4
Purposes
Improve software quality Reach a common agreement for SW
practices Coding conventions Testing recommendations Consistent infrastructure + tools Documentation▪ For users▪ For developers
14/06/2012
Jean-Christophe Garnier 5
Purposes
Coordinate resource allocation on projects Working primarily with students
Improve collaboration with other groups FESA3 DIAMON2 Software Upgrade Working Group
14/06/2012
Jean-Christophe Garnier 6
Basis for Software Quality
14/06/2012
External Quality
Correctness
Efficiency
Maintenance Cost
Invisible Root
Program Structure
Complexity
Coding Practices
Testability
Reusability
Maintainability
Readability
Jean-Christophe Garnier 7
Basis for Software Quality
Define Coding Conventions Define Testing Rules
Unit Testing Static Code Analysis Test / Pre-prod environment
Implement Continuous Integration Quality control performed frequently
14/06/2012
Jean-Christophe Garnier 8
Coding Conventions
Improve readability for long-term maintenance Indentation Name length Acronyms Syntax highlighting
Discussion still on-going Following or extending CO rules Helping and auditing using code
checking tools14/06/2012
Jean-Christophe Garnier 9
Unit Testing
Purpose Correctness of individual modules No contact with outside -> Mocking Test Driven Development?
Solutions Toolset already established by CO for Java C++ definition on-going -> Google
Testing
14/06/2012
Jean-Christophe Garnier 10
Static Code Analysis
Purpose No program execution needed Check for possible coding errors Formal methods to check if program behaviour
matches specifications Solutions
PH-SFT using Coverity ▪ Line of Code license or Team License
BE-CO▪ CheckStyle▪ FindBugs▪ PMD
14/06/2012
Jean-Christophe Garnier 11
Static Code Analysis
14/06/2012
Coverity
FindBugs
Jean-Christophe Garnier 12
Pre-prod environment
Tests in an exact copy of the production environment
Decoupled from operation Needed for the Post-Mortem data
collection 3 alternatives
EN-ICE test-bed BE-CO test-bed Virtual test-bed
14/06/2012
Jean-Christophe Garnier 13
Continuous Integration
Automatic build Automatic test execution Audit of code quality Using Bamboo from CO for Java
projects
14/06/2012
Continuous Integration CheckStyle
Static Code Analysis with PMD
Code Coverage
Jean-Christophe Garnier 15
Continuous Integration
Projects in Continuous Integration AccTesting PcInterlock SMP software
To be done BIS and QPS software Post Mortem data collection▪ See with BE-CO and EN-ICE to compare different solutions
Limits Report’s configurations is not consistent yet Better having the same tool for Java and C++
14/06/2012
Jean-Christophe Garnier 16
Sharing
R&D Software Upgrade Working Group
14/06/2012
Jean-Christophe Garnier 17
R&D
Identify and extract redundant features Projects were developed independently
by different developers Some features could prove to be useful
for other projects▪ SMP Logger to be extended for BIS▪ History Buffer interpretation and display▪ Client / Server architecture▪ Etc.
14/06/2012
Jean-Christophe Garnier 18
R&D
Software Quality Tools Inventory and test of existing tools▪ Particularly for C++
Analysis of software development practices and tools▪ Consistent configurations▪ Spread across technologies and groups
Change-tracking framework▪ Better diagnostic on software failure
14/06/2012
Jean-Christophe Garnier 19
Software Upgrade Working Group
Aims Quality of upgrade interventions Software quality Standardization of development practices
Involved groups BE-CO, BE-OP, BE-BI, BE-RF, EN-STI, EN-
CV, EN-ICE, GS-ASE, TE-ABT, TE-PO, TE-MPE
Numerous possible contributions
14/06/2012
Jean-Christophe Garnier 20
Future Steps
Technologies Spring Framework
Project Management Agile Programming with Scrum eXtreme Programming (XP)
14/06/2012
Jean-Christophe Garnier 21
Spring Framework
Open Source Programming and configuration model Inversion of Control
Configure the objects at run-time from outside▪ Create the dependencies and the dependant object ▪ Inject dependencies into dependant object
Enhance testability Aspect-oriented programming
Improvement for crosscutting concerns Enhance maintainability
Many other nice features
14/06/2012
Jean-Christophe Garnier 22
Spring Framework
Spring for future projects Simplify application configurations Simplify maintenance Testability▪ Injecting mocked objects
Not intrusive Already used in
PcInterlock AccTesting SMP pre-op
14/06/2012
Jean-Christophe Garnier 23
Scrum
14/06/2012
Main characteristics Self-Organizing teams Requirements are captured as items in a list of “product backlog” Product progresses in series of 2-4 week “sprints” = iteration Monitoring progress per day and per sprint
Extracted from slides from Mike Cohn – [email protected]
Jean-Christophe Garnier 24
Scrum
14/06/2012
Roles Product Owner▪ Define and prioritize features of the product▪ Define deadline▪ Available to provide information/feedback frequently
Scrum Master▪ Management of the project▪ Interface with outer world
Team▪ 5-9 full time people▪ Self organized
Jean-Christophe Garnier 25
Scrum
14/06/2012
Statistics on 230 people in 150 companies, computed by Scrum User Group France in 2009
Adopted Agile MethodsUsed Scrum practices
Scrum users: Google, Microsoft, Yahoo, Siemens, Nokia, CERN (EDH developer team), etc.
Jean-Christophe Garnier 26
Scrum
14/06/2012
Customer satisfactionDeveloper satisfaction
Jean-Christophe Garnier 27
Adding XP to Scrum
14/06/2012
Specific engineering practices Automated Testing▪ On-going
Test Driven Development▪ Long term idea
Pair Programming▪ Writer focuses on current task▪ Observer considers the overall direction▪ Frequent switching of roles
Refactoring Collective Code Ownership
Jean-Christophe Garnier 28
Conclusion
14/06/2012
Software Quality Long term objective, needs assimilation Identifying standard tools in collaboration
with other groups Project Management
Start using Scrum and XP▪ Agree on which practices, if not all
Review feedback▪ Internal and External points of view
http://wikis/display/MPESC/