Quality

17
Master on Free Software Introduction to Quality in Free Software Development Juan José Sánchez Penas

description

 

Transcript of Quality

Page 1: Quality

Master on Free Software

Introduction to Quality in 

Free Software Development

Juan José Sánchez Penas

Page 2: Quality

Master on Free Software

Quality?

ISO 8402 (1986): “the totality of features and

characteristics of a product or service that bear

on its ability to satisfy stated or implied needs''.

Later, in 1994: “the totality of characteristics

of an entity that bear on its ability to satisfy

stated and implied needs''.

Page 3: Quality

Master on Free Software

Quality?

Pressman (1997): “conformance to

explicitly stated functional and performance

requirements; the explicitly documented

development standards; and the implicit

characteristics that are expected of all

professionally developed software.”

Page 4: Quality

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.

Page 5: Quality

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)

Page 6: Quality

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

Page 7: Quality

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

Page 8: Quality

Master on Free Software

Testing

Process used to help identify the correctness, completeness, security and quality of developed software.

● 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

Page 9: Quality

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)

Page 10: Quality

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

Page 11: Quality

Master on Free Software

Internationalization

Page 12: Quality

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

Page 13: Quality

Master on Free Software

Accessibility

Page 14: Quality

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

Page 15: Quality

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,

Page 16: Quality

Master on Free Software

Databases

● Importance of the integration with each platform

● Examples:– sqlite: small C library– mysql– postgreSQL

Page 17: Quality

Master on Free Software

Success keys

● Quality● Community● Communication● Focus in the user● Stable release cycles● Experience