1. Which of the artifacts in your project system are the most likely candidates for reuse? Justify your answer using the principles of reuse you learned in the course.

1. Components are constructed with the idea of possible future reutilization in mind, becausesuch components are likely to be better documented, better tested, and designed in a uniform style that makes for easier maintenance.

2. Control logic and an application framework that already provides the desired control logic or develop application specific operations. Because, for one thing code reused has not so good quality. And it may be difficult to locate it in a database of hundreds and thousands of software modules. And the cost is not low.For another thingObject-oriented systems have troubles with fragile base class, polymorphism and dynamic binding. They can make itself get big very quickly.What’s more, logic is harder to design and code than are the specific operations; and because the control logic will have been tested.

2. Use the technique of boundary value analysis to describe the different equivalence classes of input to the three objects in a three-tier database client-server architecture (client applet, database servlet, and database).Use this information to sketch a brief outline for an execution-based test plan for such a system.

There are equivalence classes:

1. The username and password are correct

2. The username is correct but the password is wrong

3. The username is wrong but the password is correct

4. The username and password are wrong

5. Thesearch parameters are correct

6. Thesearch parametersare wrong

The execution-based test plan:

Boundary value analysis would test the code with the values for each of the 6 equivalence classes. Output specifications may be used similarly to establish equivalence classes and boundary values, and to determine the input test cases required. These two techniques, used in combination, make up a powerful approach to discovering faults.

3. Assume that you are a software procurement officer for a company that sells automobiles online, and that you are interested in contracting with a software developer to create a three-tier client-server system for e-commerce like the one you built for your project. It is your job to write a set of acceptance criteria for the contract, based on your idea of what comprises adequate product testing for the system. What kinds of product testing are appropriate in this context? Give examples specific to the three-tier e-commerce system.

  1. The project as a whole must be subjected to correctness testing using black-box techniques which described for testing at the module level. This function is the base to support the three-tier e-commerce system.
  2. The reliability of the project must be tested. Important results include, on the one hand, estimates of mean time between failures and, on the other hand, the severity of the effects of a failure. Severity results must be broken down to include mean time to repair the project when a fault occurs and the time required to repair the consequences of that fault (for example, the corruption of client data as a result of the fault occurring).
  3. The robustness of a project under a range of operating conditions must be tested. The project should not crash when it receives input that falls outside the range of legal input given in the specifications. Instead, it should minimally respond with an error message saying that the input could not be processed and preferably giving the reason why the input could not work..
  4. The project should be subjected to stress testing to check its behavior under very high user loads (for example, many users logged in at once) and volume testing (for example, very large data files, or a large number of transactions).
  5. The project should also be tested against any other specified constraints such as performance (response times), storage, and security.
  6. All documentation should be checked against standards set out by the software project management plan (SPMP).

4. Briefly describe the types of documentation activity during the various life-cycle phases of a software product. Discuss the role of documentation across phases. If you were a project manager, what would you do in order to ensure that good documentation is available?

There is no separate documentation phase. Documentation is an ongoing activity throughout the software process. The following table shows the documents associated with each life-cycle phase.

Life-Cycle Phase / Document Types
Requirements Analysis / Requirements document or rapid prototype
Specification / Specification document
Design / Architectural design
Detailed design
Implementation / Inline and module documentation
Module testing document, test suites, test results
Integration / Integration testing document, test suites, test results
Final documentation for delivery
Maintenance / Updated requirements, specification, design, testing documents
Updated module documentation
Retirement / No documents created

Requirements document should undergo thorough testing before the requirements phase is left behind.

Specification document sets out exactly what the software product that the client is purchasing must do.

The architectural design document describes the structure of the system in terms of modules, their interfaces, and their interactions (the data flow).

External documentation should be geared towards extensibility and maintainability of the code.

Documentation testing requires performing a final check that the documentation describes the source code and its use completely and consistently.

5. What is maintenance and are there different kinds of maintenance? What activities does maintenance involve and what skills does it require? Describe the different aspects of managing maintenance including fault reports, CASE technology, and metrics.

Maintenance should be considered part of product development. Few if any software products are completely free of faults, even after undergoing extensive testing. Even if they are, the client�s requirements or environment may change, necessitating corresponding changes to the product.

There are three basic types of maintenance reflecting different motivations for making changes to the software product:

  • Corrective maintenance removes residual faults in the product.
  • Perfective maintenance enhances the product with respect to performance and functionality.
  • Adaptive maintenance occurs in response to changes in the client�s computing facilities and environment.

Perfective maintenance claims the bulk of time devoted to maintenance is approximately 60 percent.

Corrective and adaptive maintenance each consume about 18 percent of the time, and the remainder is accounted for by other types of activities.

It requires significant diagnostic and debugging skills.

A faultreport should include:

  • The name of the user who found or reported the fault
  • The version of the product and hardware platform on which it was detected
  • If possible, the exact input or action sequence leading to the fault
  • If possible, actual test data

CASE technology can improve programmer productivity, shorten development time, and increase product user satisfaction. However, CASE technology requires training and one should use it with care.

Although complexity metrics might be considered a glass-box technique because they look at the code, they are not used for testing modules but rather for determining which modules should be emphasized in testing. They are based on the assumption that the more complex a module is, the more likely it is to contain faults.