280 likes | 371 Vues
Explore strategic approaches to improve software quality through coordination and collaboration. Learn about coding conventions, testing recommendations, and infrastructure tools. Coordinate resource allocation, improve collaboration, and discuss future steps.
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