Published on

Published in: Business, Technology
  • Be the first to comment

  • Be the first to like this

No Downloads
Total views
On SlideShare
From Embeds
Number of Embeds
Embeds 0
No embeds

No notes for slide


  1. 1. Introduction to  Quality in Free Software Development Juan José Sánchez Penas Master on Free Software
  2. 2. Quality?ISO 8402 (1986): “the totality of features andcharacteristics of a product or service that bearon its ability to satisfy stated or implied needs.Later, in 1994: “the totality of characteristicsof an entity that bear on its ability to satisfystated and implied needs. Master on Free Software
  3. 3. Quality?Pressman (1997): “conformance toexplicitly stated functional and performancerequirements; the explicitly documenteddevelopment standards; and the implicitcharacteristics that are expected of allprofessionally developed software.” Master on Free Software
  4. 4. Engineering process and quality● Requirements, analysis, design, implementation, deployment● Patterns in all the stages, UML● Standardize everything (code, docs, diagrams)● Iterative process, eXtreme Programming ideas● Documentation, testing/validation/verification● also iterative and included in all the stages● Pay attention to i18y, a11y, etc. Master on Free Software
  5. 5. eXtreme Programming● Agile methodology● Customer directed● Team work, short frequent meetings, pair programming, “move people around”● Iterations, stories and tasks● User stories define acceptance tests (test -> code)● Frequent release plan (stories to be implemented) Master on Free Software
  6. 6. eXtreme Programming● Refactoring (redesign)● Important features are introduced early● Development speed is measured (number of stories done in a iteration)● Focus in the short term (iteration)● Sequential and frequent integration● Make it work right, then make it work fast Master on Free Software
  7. 7. Documentation● Design (UML): – Requirements description, GUI definition, Architecture documentation● Technical: – API documentation, Code and algorithms documentation, Data structures● Users: – Deployment/installation instructions, End user documentation● Marketing Master on Free Software
  8. 8. TestingProcess used to help identify the correctness,completeness, security and quality of developedsoftware.● Types of testing ● Unit testing (modules) – junit, check ● Integration testing (integration between modules) ● System testing: Functional testing (ltdp, dogtail), Non- ● functional testing: Performance/security testing, Acceptance testing (by customer)● Code coverage Master on Free Software
  9. 9. Continuous integration● Definition: Software engineering term describing a process that completely rebuilds and tests an application frequently● Typically refers to an XP practice● The more popular form (also called automatic CI) takes the form of a server process or daemon that monitors a version control system and automatically runs the build process (together with tests) Master on Free Software
  10. 10. Internationalization● Internationalization (i18n): design software so that it can be adapted to various languages and regions without reengineering● Localization (l10n): adapting software to a given language or region● Not only text: also date/time format, timezone, currency, image and colors, paper sizes, reading order● Example: pango, gettext Master on Free Software
  11. 11. Internationalization Master on Free Software
  12. 12. Accessibility● Degree in which a product can be used by as many people as possible● It is a category of usability● Examples: on-screen keyboards, screen magnifiers, speech recognition, screen readers● Solution: modify widgets and apps so that they provide APIs with functionality and metainformation● Allows testing Master on Free Software
  13. 13. Accessibility Master on Free Software
  14. 14. Bug management● Triaging: – which bugs should be fixed when – bugs should be classified and tracked● Milestones (unknown milestone bugs are not triaged)● Importance of the triage team● Importance of the right tool● Rigid management and integration process Master on Free Software
  15. 15. Packaging and releasing● Releases are important, could be periodic, and should follow a policy (freezes, numbering, stable/unstable, acceptance of new patches)● Software should be easy to install in multiple platforms: packages● Formats: jar files (java), deb (debian, ubuntu), rpm (redhat, suse), tgz (slackware)● Important of the dependency management, upgrading, removing, etc.● Tools: dpkg/aptitude, synaptic, Master on Free Software
  16. 16. Databases● Importance of the integration with each platform● Examples: – sqlite: small C library – mysql – postgreSQL Master on Free Software
  17. 17. Success keys● Quality● Community● Communication● Focus in the user● Stable release cycles● Experience Master on Free Software