Verification, Validation, and Testing of Concurrent Software

 

1.     Verification: demonstration of consistency, completeness, and correctness of the software at each stage of and between states of the software life-cycle

 

a.     Types of verification – manual inspection, testing, formal methods, model-checking

b.     Is the software built correctly?

2.     Validation: at the end of the software life-cycle, the software must be evaluated to ensure the compliance with respect to the customer needs and requirements

a.     Must verify the software artifacts produced at every stage of the life-cycle

b.     Did we build the correct software? (to solve the problem)

3.     Testing: evaluating the execution of the software on sample data

a.     Does the sample data test give you confidence the program is correct?

b.     Is the program time and space efficient?

c.      Used at all stages of development

4.     Model-checking:

a.     a model is an abstract representation of the entire program; it contains only that part of the code that you want to check for correctness

b.     a model-checker guarantees that every state of the program has been checked for correctness

                                                             i.      all invariants hold

                                                           ii.      all post- and pre-conditions are true at their specified points in the program

5.     Debugging: isolating where a specific error has occurred, fixing it, and re-testing it.

a.     Used at all stages in life-cycle

b.     Desk-checking (walk-thrus) help to understand the computational model of the program

c.      Interactive tools are useful in isolating the specific statement at which the error occurred

d.     and assertions are extremely useful in isolating the trace of where the error-chain started

6.     Every phase of the software life-cycle requires verification techniques to find errors , omissions, and contradictions

a.     Requirements analysis and specification

                                                             i.      Use cases (scenarios of expected system use) help in establishing correctness; can also be used to generate test cases

                                                           ii.      Formal requirements (state charts, OCL) can be checked for properties such as such as consistency and completeness using a model-checker

                                                        iii.      Earliest possible discovery of errors saves time and money

b.     Design Phase

                                                             i.      OCL constraints help in understanding the computational model

                                                           ii.      Model-checkers help in developing correct synchronization

                                                        iii.      Walk-throughs, inspections, and design review help in finding  erroneous assumptions and in building group understanding

c.      Implementation

                                                             i.      Program testing is essential at every step of implementation

                                                           ii.      Code walk-throughs, code reviews, audits all are useful

                                                        iii.      Dynamic analysis tools such as dynamic monitoring of assertions and dynamic design by contract monitoring

7.     Project and Code Reviews: the process of meeting during which a work product, or a set of work products, is presented to project personnel, managers, users, customers, or other parties for comment or approval. The types of review include model review, code review, design review,  requirements review, and test case review

a.     Should result in a written report on the status

b.    Active and open participation

c.      All participants should have a “vested interest” in the result

8.     Walk-through: a manual static analysis technique in which a designer or programmer leads members of the development team through the code or documentation.

a.     A manual simulation of the program execution. The group discussing each statement of the program.

b.    Leads to finding errors in assumptions and a better understanding of the semantics of the software

9.     Audit: a independent examination of the software product (documentation and code) to assess compliance with requirements, specifications, contractual agreements, and maintenance standards