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

Thanks for flagging this SlideShare!

Oops! An error has occurred.

Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
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