User:Usydwork/sandbox

= Acceptance Criteria (Software Engineering) =

Acceptance criteria is a form of documentation in Software development, defining a specific set of goals and requirements. The purpose of Acceptance Criteria is to satisfy the user or customer requirement through clearly listing the expectations for a shippable software product. Development of a software project is primarily based on the reasonable expectation from the client. The result of the project requires to be "accepted" before delivery as a shippable product. Therefore, setting specific guidelines can eliminate unnecessary assumption between the customer and the developers.

Acceptance testing can only be implemented if the Acceptance Criteria exists. Acceptance tests use acceptance criteria as a testing guideline to carry out if the shippable project can be accepted or not. The difference with Acceptance Testing is in the nature of enactment of the “test”. Acceptance Criteria focuses on how the requirements are fulfilled from various perspectives from different stakeholders instead of application to the implementation.

Importance of Acceptance Criteria
Acceptance Criteria demonstrates the expectation of the client, which aims to achieve the highest quality system. System function(input and output) and functional (performance, interface and environment) can be summarised in Acceptance Criteria. Discovering a system consideration defect at the beginning of the design phrase produces the most economically efficient way to reduce the cost of fixing the defect.

The major cause of system and software failure are often due to inadequate requirement and implementation of Acceptance Criteria. A mission-critical failure can cause serious harm, with operational failure as a consequence. Moreover, potential litigation and losing public confidence can be a problematic extension, resulting in significant financial loss for organisations.

Failures of Software development
Bank, government services, aerospace (such as the system in airplane or rocket), technology companies etc. can all be affected by system failure. History presents many past events of failures in large scale software projects because of the lack of care or unthoughtful Acceptance Criteria that leads to disastrous consequence such as significant financial loss and deaths. Therefore, Acceptance Criteria acts as a critical written document that ensures the systems or software can operate with the expected results.

Components of Acceptance Criteria
Acceptance Criteria can have different characteristics which can be functional, ergonomic, behaviour, sensory and temporal.


 * An Objective: The proposed aim of the Criteria.
 * Scope of Acceptance Criteria: Specific processes of the Criteria to achieve the desired outcome
 * Criteria for user, operations and product:
 * Entry Criteria: Defines how a test can commence
 * Exit Criteria: Defines when the test can finish and deliver output
 * The activity: The defined process obtain input and produce the output
 * Input and output: Different boundary can be set for the inputs. The output is treated as a result.

Consideration in Acceptance Criteria
The following has a list of questions to ask before creating Acceptance Criteria.

Are the results of Acceptance Criteria measurable? The results must be measurable to ensure that the target can be fulfilled.

Who or which department is responsible for testing the code? Proper guidance and competencies should be provided along with the Acceptance Criteria to standardise the testing process as testers will be

What are the boundaries for inputs and outputs? A well-defined relationship between inputs and output can prevent errors such as overflow and calculation errors.

How often or when does the testing occur? The outcome of implementing the acceptance Criteria can be affected by the consistency of measurement.

An example of the Campus Management System
Educational institutions are now facing a competitive challenge which wishes to use information technology to contrive a system for better user experience and maintenance. Acceptance criteria needs to take an essential role as the system has tailored with the user’s needs and suit the user-friendliness as a modern expectation. Some of the essential techniques are to identify the demographics, understand about users needs of the technology, investigate how satisfied are the end-users with any new system, and to analyse the current usage of CMS.

Verification and Validation
Verification and validation are two different processes to determine if the Acceptance Criteria have been fulfilled. They both have the objective of ensuring the well-defined Criteria. Verification: Are were building the product right?

Validation: Are we building the right product? The above definition provides a distinct difference in how Verification and validation apply to Acceptance Criteria. Verification sets the guidelines if the project has used good practice during the system development. Validation focuses on the outcome if the formal requirements are adequately satisfied.

Ethics
Although the operational and functional measure of a system or software is indispensable for Acceptance Criteria, ethics is one of the notable considerations as the accessibility to the web platform impact the day-to-day life. Cultural, ethnic, religious, social, sexual factors are all part of ethics. Large scale platform such as online games and social media can cause an unpredictable adverse effect, causing cause both benefits and harm due to overuse or misuse. The “dual-use” of web innovation is a tough dilemma for both users and the social responsibility of the developers Therefore, responsibility and accountability of balancing the interests of all parties in Acceptance Criteria is part of the design consideration for Acceptance Criteria.

Acceptance Criteria for Agile approach
Instead of the traditional method such as waterfall model for creating Acceptance criteria at the beginning, Acceptance Criteria is employed quickly and in short iterations from agile practices, enabling the action of building the small and shippable product in a short time frame. The requirement from Acceptance Criteria is the result of effective communication from agile meeting, retrospectives and workshop. As the agile works in an iterative and quick manner, the Acceptance Criteria can flexibly capture requirement from the client for every sprint. The small and nimble Acceptance Criteria enables the project development to be more responsive to the changes in client requirement.

Tools
Agile practice typically utilises use cases and user stories as part of the highly flexible Acceptance Criteria, which can help to capture requirements from different stakeholders perspectives. Clients or developers can then determine the acceptability of the shippable product on an acceptance or rejection basis.

Reference
 Category:Methodology Category:Software engineering