280 likes | 365 Views
Status and first objectives. MPE SW coordination. 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.
E N D
Status and first objectives MPE SW coordination Jean-Christophe Garnier
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 Jean-Christophe Garnier
Outline • Purposes • Basis for Software Quality • Sharing • Future steps Jean-Christophe Garnier
Purposes • Improve software quality • Reach a common agreement for SW practices • Coding conventions • Testing recommendations • Consistent infrastructure + tools • Documentation • For users • For developers Jean-Christophe Garnier
Purposes • Coordinate resource allocation on projects • Working primarily with students • Improve collaboration with other groups • FESA3 • DIAMON2 • Software Upgrade Working Group Jean-Christophe Garnier
Basis for Software Quality Correctness Efficiency External Quality Maintenance Cost Invisible Root Program Structure Complexity Coding Practices Reusability Testability Readability Maintainability Jean-Christophe Garnier
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 Jean-Christophe Garnier
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 tools Jean-Christophe Garnier
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 Jean-Christophe Garnier
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 Jean-Christophe Garnier
Static Code Analysis • Coverity • FindBugs Jean-Christophe Garnier
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 Jean-Christophe Garnier
Continuous Integration • Automatic build • Automatic test execution • Audit of code quality • Using Bamboo from CO for Java projects Jean-Christophe Garnier
Continuous Integration • CheckStyle • Static Code Analysis with PMD • Code Coverage
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++ Jean-Christophe Garnier
Sharing • R&D • Software Upgrade Working Group Jean-Christophe Garnier
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. Jean-Christophe Garnier
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 Jean-Christophe Garnier
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 Jean-Christophe Garnier
Future Steps • Technologies • Spring Framework • Project Management • Agile Programming with Scrum • eXtreme Programming (XP) Jean-Christophe Garnier
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 Jean-Christophe Garnier
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 Jean-Christophe Garnier
Scrum • 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 – mike@moutaingoatsoftware.com Jean-Christophe Garnier
Scrum • 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
Scrum • 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. Jean-Christophe Garnier
Scrum Developer satisfaction Customer satisfaction Jean-Christophe Garnier
Adding XP to Scrum • 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
Conclusion • 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/ Jean-Christophe Garnier