Your SlideShare is downloading. ×
Upcoming SlideShare
Loading in...5

Thanks for flagging this SlideShare!

Oops! An error has occurred.


Introducing the official SlideShare app

Stunning, full-screen experience for iPhone and Android

Text the download link to your phone

Standard text messaging rates apply



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

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

No notes for slide


  • 1. Introduction to  Quality in Free Software Development Juan José Sánchez Penas Master on Free Software
  • 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. 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. 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. 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. 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. 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. 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. 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. 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. Internationalization Master on Free Software
  • 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. Accessibility Master on Free Software
  • 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. 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. Databases● Importance of the integration with each platform● Examples: – sqlite: small C library – mysql – postgreSQL Master on Free Software
  • 17. Success keys● Quality● Community● Communication● Focus in the user● Stable release cycles● Experience Master on Free Software