Quality
-
Upload
andres-maneiro -
Category
Business
-
view
842 -
download
0
description
Transcript of Quality
Master on Free Software
Introduction to Quality in
Free Software Development
Juan José Sánchez Penas
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''.
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.”
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
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
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