QAfOSS Model

See QAfOSS Model Instructions for further information
ID Domain Process Group Process Purpose Outcome Practices Examples Evaluation Anticipated Importance Comment
Process applied Characteristics
Functionality Usability Reliability Efficiency 
                             
1 Management Requirement Management  The process group "Requirements Management" focuses on capturing, management, control and review of project requirements. The continuous requirements evaluation under the OSSD demands an extended focus on requirement management to ensure a permanent reflection of the actual needs. The correct capturing of the requirement is basis for the definition of product quality characteristics and the acceptance of the product in the market.               
      Requirement Management Management of product requirements - Capturing and documentation of product requirements ensured;
- Process for requirements management established
- Continuous requirements capturing;
- Perform requirements analysis;
- Establish documentation and tracking of requirements;
- Establish change management processes;
- Introduce a requirement management tool;
- Record changes
Core team continuously captures user requirements and documents any feature requests in a public list.              
      Requirements Review Review product requirement - Product requirements are documented and up to date - Conduct requirements review;
- Incorporate changes into project planning;
- Review changes
Core team verifies requirements changes and critically discusses their implementation regarding conflicts or implications

             
2 Management Documentation Management  This process group focuses on the product and process documentation. Process documentation describes mainly internal project processes, such as the development approach and applied standards, while product documentation comprises architecture or design specifications as well as user documentation or training materials.               
      Process Documentation Ensure documentation of processes, standards and templates;
Establish collaborative accessability to documentation
- Collaboration and software development processes are described;
- Development style and coding guidelines are available
- Describe development processes, rules and guidelines;
- Prepare development style and coding guidelines;
- Develop templates to standardise development activities;
- Continuously review process documentation
Development style and coding guidelines are defined and online available               
      Product Documentation Ensure adequate product documentation;
Establish collaborative accessability to documentation to ease collaboration and knowledge transfer
- Description of software engineering relevant documentation regarding requirements, specification, design, architecture, configuration;
- Description of user relevant documentation regarding functionality, handling and maintainability of the product
- Plan and schedule required documentation;
- Prepare documentation according to plan;
- Perform reviews
API documentation is maintained by the developer; user guidelines are setup; sample training documentation is online available              
3 Organisation Coordination and Team Communication  The process group “Coordination and Team Communication” focuses on the intergroup exchange of information. The establishment of an effective communication is regarded as an essential element in a distributed development environment to spread information within the community but also to ensure the daily communication in the development process. The coordination perspective focuses on the task tracking and control of results. It presupposes the establishment of suitable project organisation with roles and hierarchies.              
      Project Organisation Ensure effective organisation structures - Organisational structures are defined and established - Define organisational project structure with an appropriate hierarchy;
- Setup communication and collaboration guidelines;
- Establish OSSD role model and define authorisations;
- Tailor role model according to project needs;
- Review and adjust model structure
Definition of roles, such as user, developer, core developer, release manager, project management, with different access rights to the repository              
      Project Coordination Coordination of project tasks is established and results are controlled - Project tasks, issues, work packages are accessible for every team member;
- Results are checked and tracked
- Establish and document coordination rules;
- Define work packages / tasks for software engineering activities;
- Ensure accessability to all tasks for all participants;
- Force collaborative tracking of accepted tasks;
- Ensure open information and discussion about tasks;
- Check and review results by participants and core team
Setup and maintenance of a public issue tracker; core team continuously reviews changes              
      Team Communication Ensure effective team communication and exchange of information within the community - Rules, guidelines and infrastructure for communication are defined and established - Define communication rules and guidelines;
- Establish appropriate communication tools (mailing lists and instant messaging);
- Establish proper communication cycle (recurring tasks)
Implementation of mailing lists or use groups; Defined guidelines are available on the web portal              
4 Resources Knowledge Transfer  The Knowledge Transfer processes focus educational and knowledge capturing activities within a project. The ability to effectively transfer know-how is a key element to counteract the lack of knowledge due to fluctuation. An efficient knowledge transfer process supports to take new developers on the project and is a foundation for the team education. The establishment of knowledge transfer processes is the one cornerstone increasing the capability of an organisation towards a high professional knowledge about e.g. product, processes, methods or development approach within the team.              
      Knowledge Capturing Counteract lack of project know how due to fluctuation - Knowledge management and documentation procedures - Ensure up-to-dateness of product and process documentation;
- Ensure documentation of source code;
- Ensure documentation of each work package before commit;
- Continuous review of documentation
Code commit to repository without appropriate documentation is rejected;
Core team checks status of documentation and  addresses update tasks to the community
             
      Team Education Improvement of varying level skills of knowledge within team;
Preventative measure to avoid defects and shortcomings
- Professional knowledge about processes, approach, methods, rules, guidelines, standards, etc. across the team ensured;
- Application of a professional development approach;
- Training activities planned and conducted
- Analyse/monitor development skill level;
- Prepare training or knowledge transfer documentation;
- Conduct team training or ensure education through knowledge transfer documents;
- Continuous review of team skill level
Core team prepares training documentation or tutorials etc. and distributes/announces information via mailing list;
"Best practices" are online available
             
5 Resources Infrastructure and Tools  The process group “Infrastructure and Tools” regards the underlying support of processes, guidelines, standards, etc. by a proper environment. The definition and setup of a common project infrastructure, consisting of development and collaborative tools is a widespread solution how projects establish standards and common processes that reflect their development approach. On the other hand, collaboration tools realise processes. Especially in the distributed development environment, instant messaging techniques offer new possibilities and advantages for collaboration.              
      Infrastructure Management Define tools for entire lifecycle, which support the collaborative distributed development approach and reflect or enable project processes
- Software engineering processes effectively supported;
- Collaboration processes supported;
- Development processes reflected and supported
- Establishment of a freely accessible web portal;
- Implementation of a source code control tool;
- Recommendation of code viewers;
- Setup of an automatic build tool, if appropriate;
- Introduce a bug tracking tool;
- Introduce a test support tool;
- Initialise collaboration tools (mailing lists, instant messaging);
- Describe guidelines and document project tool standards;
- Review the effectiveness of the tool support
Web Portal on e.g. Sourceforge established; CVS, mailing list setup, Bugzilla for bug tracking implemented; Jira for issue tracking; Skype for instant messaging implemented, etc.               
6 Development Software Engineering  The process group “Software Engineering” comprises the software development activities concentrating on design and source code development. The "Requirements Management" is precondition for software engineering. The design process describes all activities transforming requirements into the functional and/or technical specification. The source code development process builds upon the design process and describes the product development, such as source code or documentation. The process group requires an appropriate team communication, infrastructure and triggers the “Review and Inspections” and “Verification and Validation” processes.               
      Design Control Establishment of functional and technical product specification, which can be verified against the requirements  - Functional and technical design is defined and can be used for coding and testing - Establishment of design documents, which are refined into lower levels that can be coded;
- Consideration of modularity or reusability aspects;
- Assurance of (internal/external) product quality characteristics;
- Define testing requirements;
- Continuous evaluation of design documents according to altering requirements;
- Perform updates, adjustment of design documents and ensure consistency
Solid architecture of the application is defined; class concept is established; design documents are available in the project Wiki              
      Development Control (Coding) Development of the software product according to design documents  - Development of source code and documentation completed  - Development of source code according to development approach, methods, standards;
- Keeping of internal and external quality goals;
- Ensure documentation of source code and product documentation;
- Perform unit testing and trigger Verification&Validation processes;
- Submit source code to repository
Developer contribute source code according to the project standards;
Pair development is used to reduce defects;
Quality standards are kept and the source code is proper documented
             
      Continuously Code Quality Control Continuously control the code quality - Development standards for coding or documentation are kept;
- Quality standard of source code is achieved
- Establish control and code release process before submit;
- Ensure versioning and write access to repository;
- Perform code reviews (quality control) by professional developers;
- Perform corrective actions if code does not adhere quality standards;
- Evaluate risks, side effects and adjust testing planning accordingly;
- Trigger peer reviews or inspections;
- Rework or reject inappropriate source code;
- Report findings and trigger SQA processes

Each contributed source code needs to pass a unit test and consists of an appropriate documentation;
code reviews are performed by core developers;
inappropriate code is reworked or rejected
             
7 Development Review and Inspections  The process group “Review and Inspection” describes a core process of reviewing the product development, especially the Open Source code in order to identify defects. Simple code reviews as well as peer reviews are recommended to improve the code quality.               
      Code Review/Inspection Identify defects, design gaps through reviews or inspection  - Code quality improved and defects identified - Conduct code reviews;
- Performs walkthroughs or code readings;
- Perform corrective actions to adhere standards;
- Record identified defects and trigger defect handling

Each submitted piece of source code is reviewed by core developers before it is finally submitted to repository              
      Peer Review Identify and remove defects due to peer reviews - Improved code quality - Plan peer reviews and establish the process;
- Conduct peer reviews and record data;
- Perform corrective actions and trigger defect handling
Developers are forced to perform peer reviews in order to improve the quality of their deliverables              
8 Development Verification and Validation  The "Verification and Validation" process group describes the management and organisation of testing and defect handling activities. An effective defect management as well as stepwise conducted software testing with an acceptance strategy is of major importance. Software testing ought to comprise unit, integration, acceptance as well as regression testing before product release. As testing usually is performed within the community, main emphasis to test coordination and test organisation needs to be given. Both testing and defect handling processes require special importance regarding manageability, efficiency and understandability to take advantages from user testing. A continuous review of process efficiency is recommended.              
      Defect Management Management and control of defects along the entire lifecycle - Defects are identified, clustered, managed and controlled - Establishment of central defect reporting/tracking regarding requirements, design, source code, documentation;
- Ensure defect classification and prioritisation as well as risk identification;
- Address bug fixing tasks to team members;
- Control and review bug fixing results;
- Trigger quality control before code commit
A bug tracking tool, such as Bugzilla is implemented;
Issues are classified and prioritised;
Public collaboration on removal of defects
             
      Unit, Integration and Regression Testing Identification of defects and verification of the product against the requirements - Conduct appropriate testing to ensure that the product meets the requirements;
- Defects are identified and corrective actions are triggered
- Define test strategy;
- Suggest a test plan and appropriate test data;
- Reflect varying product configuration and system architecture;
- Define and document appropriate test environment;
- Ensure effective test management and coordination;
- Allocate development resources for fast defect removal time;
- Establish mandatory unit testing by each developer;
- Perform code reviews and peer review processes;
- Ensure the establishment of defect handling processes;
- Enable efficient user testing;
- Plan and execute integration testing;
- Plan and execute regression testing to ensures conformity of new features with existing environment;
- Report and manage defect handling;
- Perform retesting in case of defects

A test support tool, such as JUnit is implemented;
test cases are specified;
mandatory unit testing is performed by each developer;
code reviews are conducted;
defects are reported to central defect management tool
             
9 Management Release Management  The process group “Release Management” comprises the management, control and build of product releases. The focus of the release management process is the definition of the strategy, scoping and scheduling to deliver high software quality in a new release. An inappropriate management, scheduling or to wide scoping might lead to deliver incomplete, unstable or not adequately verified products. Therefore, release management requires the completion of verification and validation processes. The build and release check process focus on a pre- and post release quality control. The early delivery of a pre-final release “candidate” allows collaborative testing of the actual version to verify its stability, until the final release is built.              
      Release Management Management of release scope and scheduling to ensure stable releases - Adequate release management strategy which reflects the development progress, the product maturity, requirements changes, scope enhancements or defect corrections - Define release strategy (time and/or feature based);
- Reflect product maturity and perform release quality check;
- Identify requirements changes and scope enhancements;
- Incorporate relevant corrections;
- Verify release stability
The release manager defines a feature based strategy; When main parts are ready a new release date is announced (time based). The development is concentrated on the completion of the activities till release date              
      Build and Release Check Verification of requirements and release control - Establish quality control to ensure defined product quality  - Perform pre- and post release quality control;
- Perform verification and validation processes;
- Distribute a pre-final release for collaborative testing;
- Ensure compliance with product quality goals;
- Verify compliance of product documentation;

Implementation of nightly build (build tool); Community is forced for intensive testing (prior to release); release candidate is issued to check stability.              
10 Management Quality Management  The Quality Management process focuses on the establishment and management of quality goals and triggers the product quality measurement activities. The definition of product quality goals and the tailoring of appropriate measurement criteria to project needs are considered as major parts of Software Quality Assurance framework.               
      Quality Management Product or processes fulfil the quality objectives - Quality management procedures are defined;
- Quality targets are assured
- Define quality targets and standards;
- Establish plans to achieve the quality targets;
- Review quality targets and revise them;
- Measure product quality;
- Perform corrective actions
Certain code modularity or complexity targets defined;
Code coverage analysis are applied;
Certain performance targets of application defined
             
11 Management Software Quality Assurance  Software Quality Assurance (SQA) processes are considered as mandatory practices a project needs to fulfil in order to assure the process and product quality within the entire development lifecycle.               
      Software Quality Assurance Assurance of product and process quality according to plan - Quality Assurance strategy is defined;
- SQA activities are planned and performed;
- Adherence of products and activities to the applicable standards, procedures, and requirements are verified objectively;
- SQA activities/approaches are communicated to the project team;
- Issues are addressed to the management
- Define QA strategy or plan;
- Defines standards and procedures;
- Setup QA tasks and plan; execution of activities;
- Perform reviews to verify the adherence to standards;
- Identify deviations from plan;
- Perform measurements;
- Report to team and management
Project management team or community defines standards and reviews project deliverables. Reviews are triggered to verify the product quality. Quality assurance activities are communicated through mailing lists.              
12 Organisation Continuous Process Improvement  The Continuous Process Improvement processes reflect the capability of a team to transform a permanent improvement approach into the team behaviour and the willingness to critically question processes. Such mindset may contribute positively to the defect prevention approach. The ability of an organisation to reflect critically their current practices are considered as mandatory processes in mature organisations.               
      Process Change Management Continuous improvement of the software development process;
Improvement of product and process quality
- Continuous improvement process is community wide established;
- Improvement of product and process quality
- Define improvements targets;
- Empower the team to improve processes;
- Establish an improvement process within the community;
- Evaluate and implement identified improvements;
- Perform team training and knowledge management
Core team or project management team forces the implementation of suggested process changes/enhancements by team members              
      Defect Prevention Identification of cause of defects prevention of recurring defects - Preventative measurements to avoid defects;
- Common causes identified and systematically eliminated
- Defect prevention activities are planned;
- Establishment of defect prevention process within the community;
- Identification of causal relations;
- Adaptation of processes and standards;
- Record and review defect prevention activities
Intensive discussions on mailing lists between developers how to prevent known issues in order to improve current processes