Status and first objectives 14/06/2012Jean-Christophe Garnier1
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/2012Jean-Christophe Garnier2
Purposes Basis for Software Quality Sharing Future steps 14/06/2012Jean-Christophe Garnier3
Improve software quality Reach a common agreement for SW practices Coding conventions Testing recommendations Consistent infrastructure + tools Documentation ▪ For users ▪ For developers 14/06/2012Jean-Christophe Garnier4
Coordinate resource allocation on projects Working primarily with students Improve collaboration with other groups FESA3 DIAMON2 Software Upgrade Working Group 14/06/2012Jean-Christophe Garnier5
14/06/2012Jean-Christophe Garnier6 External Quality Correctness Efficiency Maintenance Cost Invisible Root Program Structure Complexity Coding Practices Testability Reusability Maintainability Readability
Define Coding Conventions Define Testing Rules Unit Testing Static Code Analysis Test / Pre-prod environment Implement Continuous Integration Quality control performed frequently 14/06/2012Jean-Christophe Garnier7
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 tools 14/06/2012Jean-Christophe Garnier8
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/2012Jean-Christophe Garnier9
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/2012Jean-Christophe Garnier10
14/06/2012Jean-Christophe Garnier11 Coverity FindBugs
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/2012Jean-Christophe Garnier12
Automatic build Automatic test execution Audit of code quality Using Bamboo from CO for Java projects 14/06/2012Jean-Christophe Garnier13
CheckStyle Static Code Analysis with PMD Code Coverage
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/2012Jean-Christophe Garnier15
R&D Software Upgrade Working Group 14/06/2012Jean-Christophe Garnier16
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/2012Jean-Christophe Garnier17
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/2012Jean-Christophe Garnier18
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/2012Jean-Christophe Garnier19
Technologies Spring Framework Project Management Agile Programming with Scrum eXtreme Programming (XP) 14/06/2012Jean-Christophe Garnier20
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/2012Jean-Christophe Garnier21
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/2012Jean-Christophe Garnier22
14/06/2012Jean-Christophe Garnier23 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 –
14/06/2012Jean-Christophe Garnier24 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
14/06/2012Jean-Christophe Garnier25 Statistics on 230 people in 150 companies, computed by Scrum User Group France in 2009 Adopted Agile Methods Used Scrum practices Scrum users: Google, Microsoft, Yahoo, Siemens, Nokia, CERN (EDH developer team), etc.
14/06/2012Jean-Christophe Garnier26 Customer satisfaction Developer satisfaction
14/06/2012Jean-Christophe Garnier27 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
14/06/2012Jean-Christophe Garnier28 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