Upcoming SlideShare
Loading in...5







Total Views
Views on SlideShare
Embed Views



0 Embeds 0

No embeds



Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
Post Comment
Edit your comment

Quality Quality Presentation Transcript

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