170 likes | 289 Vues
Open Source Software Quality Assurance - Lessons Learnt Imed Hammouda, adjunct professor Alexander Lokhman, researcher Tampere University of Technology Credits to Prof. Ernesto Damiani, University of Milan, Italy. Definitions. Software Assurance
E N D
Open Source Software Quality Assurance - Lessons LearntImed Hammouda, adjunct professorAlexander Lokhman, researcherTampere University of TechnologyCredits to Prof. Ernesto Damiani, University of Milan, Italy
Definitions Software Assurance “the level of confidence that software is free from vulnerabilities, either intentionally designed into the software or accidentally inserted at anytime during its lifecycle, and that the software functions in the intended manner” National Information Assurance Glossary Software Quality The degree to which a system, component, or process meets specified requirements. The degree to which a system, component or process meets customer or user needs or expectations. IEEE Standard Glossary
Traditional Assurance Tasks - Security Security requirements External Review Penetration Testing Security Operations Risk-based Security Tests Code Review (Tools) Risk analysis Abuse cases Risk analysis Requirements and Use Cases Architecture and Design Test Plans Code Tests and Test Results Feedback
FLOSS Development Contributor Committer Bug reports Trusted Repository Source code Distributor User
Quality by Access Availability of source code from an easily accessible medium No authorization is required Source code is made available in a format that is suitable and workable for the purpose of review and development, and appropriate for free distribution "Given enough eyeballs, all bugs are shallow" Linus’s Law
Quality by Development Precise and explicit understanding of the software goals and requirements Choice of methodologies for testing, debugging, and error and bug reporting Tools to provide effective communication, coordination and the overall management of the project Facilitation of rapid frequency of beta releases Release early, release often
The Role of Community – Maemo Karma Product Karma Features/components are rated by contributors (+1/-1) A certain karma level has to be reached for the component to be promoted MemberKarma Comments, commenting a news item or a Maemo app in testing: 2 * sqrt(# comments) Favourites, voting on news items: 0.25 * sqrt(# thumbs) Package testing, promoting or demoting packages in Extras Testing: 0.5 * # thumbs Blog post, 1-10 per post depending on votes it has received Products, applications in Maemo Downloads: 7 * (1 + stars per application) Discussion, posts to Maemo mailing lists: 2 * sqrt(# posts) Brainstorm: 5 for idea under vote or in development, 10 for implemented idea, 2 for solution under vote or in development, 10 for implemented solution Groups, 3 * # garage project memberships Bugzilla_reported: 6 * sqrt(# bugs reported) Bugzilla_comments: sqrt(# bug comments) Itt_thanks, thanks for TMO posts: 8 * sqrt(# thanks) Itt_posts, posts on TMO: sqrt(# posts) Mediawiki_edits: 6 * sqrt(# edits)
The Role of Tools [www.bugzilla.org]
The Role of Reviews • Projects go through six distinct phases • All Projects are required to have at least one review per year. [www.eclipse.org]
The Role of Processes Contribution Untrusted Trusted Under Test Tested Repository User
The Role of Version Control Systems Repository Central Repository commit maintain User A checkout checkout checkout User A pull pull User C patch patch User B User C User B pull pull User D commit Centralized Version Control Distributed Version Control
The Role of Forges Infrastructure for collaboration and communication Maintaining project data and statistics Requirements for hosting projects Visibility of projects to other communities Access to a database of past experience
The Role of Conventions and Guidelines Naming Conventions - How to name things like packages, classes, and methods Coding Conventions - How to make source code readable Documentation - How to write documentation comments, especially for API User Interface Guidelines - How to achieve user interface consistency Version Numbering - How to evolve plug-in version numbers
Checklist Objectives Critical success factors Roles and responsibilities Plans Technical architecture and good practice Risks OSS challenges User-related Technology-related