11.07.2015 Views

Encyclopedia of Computer Science and Technology

Encyclopedia of Computer Science and Technology

Encyclopedia of Computer Science and Technology

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

Qquality assurance, s<strong>of</strong>twareModern s<strong>of</strong>tware programs are large <strong>and</strong> complex, <strong>and</strong> containmany interrelated modules. If a program is not thoroughlytested before it goes into service, it may containerrors that can result in serious consequences (see risks <strong>of</strong>computing).In the early days <strong>of</strong> computing, programmers generallytested their code informally <strong>and</strong> nonsystematically. Theassumption was that after the program was given to the usersany problems that arose could be fixed through “patches”or replacement versions containing bug fixes. Today, however,it is increasingly recognized that assuring the quality<strong>and</strong> reliability <strong>of</strong> s<strong>of</strong>tware requires a systematic, comprehensiveprocess that begins when s<strong>of</strong>tware requirements are firstspecified <strong>and</strong> continues after the program has been released.Any program is designed to meet the needs <strong>of</strong> a specifictype <strong>of</strong> users for specific applications. Therefore, thefirst step must be to make sure that users are able to communicatetheir requirements <strong>and</strong> that the s<strong>of</strong>tware engineersunderst<strong>and</strong> the users’ needs <strong>and</strong> concerns. Detailedwritten specifications, flowcharts, <strong>and</strong> other depictions <strong>of</strong>the program can be reviewed by user representatives (seeflowchart <strong>and</strong> case). The specifications can be furtherexplored by creating a prototype or demonstration <strong>of</strong> theprogram’s features (see presentation s<strong>of</strong>tware). Since aprototype can be dynamic <strong>and</strong> let users have simulatedinteractions with the program, it may reveal usability problemsthat would be hard to spot from charts or documentation.The result <strong>of</strong> this initial verification process shouldbe that the users agree that the program will do what theyneed <strong>and</strong> that they will be comfortable using it.In moving from design to implementation (writing theactual code), the developers must first choose an appropriateapproach (see algorithm) <strong>and</strong> data representation.Choosing an algorithm that is known to be sound is preferable,but if an algorithm must be modified (or a new onedeveloped), developers may be able to take advantage <strong>of</strong>mathematical techniques that will suggest, if not totallyprove, the algorithm’s accuracy <strong>and</strong> reliability.As the programmers write the code, they should try touse best practices (see s<strong>of</strong>tware engineering). Doing soensures that the code will be readable <strong>and</strong> organized insuch a way that the source <strong>of</strong> a problem area can be identifiedeasily, <strong>and</strong> any “fix” that must be made will be lesslikely to have unforeseen side effects.Developers can also include special code that will facilitatetesting. This code can include assertions—statements that testspecified conditions (such as variable values) at key points inthe program, displaying appropriate messages if the valuesare not within the proper range. Large, complex programscan also include diagnostic modules that give the developers asort <strong>of</strong> virtual console that they can use to monitor conditionswhile the program is running, or “drill into” particular areasfor closer inspection (see bugs <strong>and</strong> debugging).Although a certain amount <strong>of</strong> testing <strong>and</strong> debugging can<strong>and</strong> should be done while the code is being written, moreextensive <strong>and</strong> systematic testing is usually performed aftera preliminary version <strong>of</strong> the program has been completed.(This is sometimes called an alpha version.) There are twobasic approaches to designing the tests. “White box” tests usethe developer’s knowledge <strong>of</strong> the code to design test data thatwill test all <strong>of</strong> the program’s structural features (see proce-394

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!