Object oriented systems development life cycle Software development

Object oriented systems development life cycle Software development process that consists of analysis, design, implementation, testing and refinement is to transform users needs into a software solution that satisfies those needs

Software development process System development can be viewed as process. The process can be divided into small, interacting phases sub-processes. The sub processes must be defined in a such way that are clearly spelled out, to allow each activity to be performed as independently EACH SUB PROCESS MUST HAVE THE FOLLOWING

A description in terms of how it works. Specification of the input required for the process Specification of the output to be produced Software process can be viewed as a series of transformations

Where the output of one transformation becomes the input of the subsequent transformation. In the first transformation, we translate the user’s requirement in to system requirements and responsibilities. We produce a software requirement specification (SRS). This is analysis phase.

In the second transformation the SRS is translated into a detailed design. The detailed design should satisfy the user’s requirements and, at the same time , be sufficiently detailed to do the third transformationproduce a deployable product. This includes equipment, procedures, people This transformation also include how to embed the software developed within its operational environment-os, dbms, networking systems, etc

Problem Trans I What are the uses of the system statements Analysis Trans II Design Implementation Detail Trans III System Software Product

Example of software development process Water Fall Model Which starts with deciding What is to be done (what is the problem) Once the requirements have been determined , we next must decide How to accomplish them.

This is followed by a step in which we do it , whatever ‘it’ has required us to do. We then must test the result to see if we have satisfied the user’s requirements Finally , we use what we have done

What How Do it Test Use

Building high-quality software To achieve high quality in software we need to be able to answer the following questions How do we determine when the system is ready for delivery? Is it how an operational system that satisfies user’s needs? Is it correct and operating as we thought it should? Does it pass an evaluation process?

There are two basic approaches to system testing Blum describes a means of system evaluation in terms of four quality measures: Correspondence Validation Correctness Verification

Correspondence measures how well be delivered system matches the needs of the operational environment , as described in the original requirement statements. Validation is the task of predicting correspondence. True correspondence cannot be determined until the system is in the place.

Correctness measures the consistency of the product requirements with respect to the design specification. Verification is the exercise of determining correctness. However correctness is the always objective.

Verification: Am I building the product right? Validation: Am I building the right product.

Validation Verification Needs Requirements Design Correctness Correspondence software

Object-oriented systems development : A use case Driven Approach Object-oriented –use case driven Object-oriented design Prototyping Component-based development Incremental testing

Object-oriented design The goal object-oriented design is to design the classes identified during the analysis phase and the user interface. During this phase , we identify and define additional objects and classes that support implementation of the requirements.

Design and refine classes. Design and refine attributes. Design and refine methods. Design and refine structures. Design and refine associations.

Few guidelines Reuse, rather than build, a new class. know the existing classes. Design a large number of simple classes, rather than a small number of complex classes. Design methods. Evaluate What you have proposed. If possible , go back and refine the classes

Prototyping A prototype is a version of a software product developed in the early stages of the product’s life cycle for specific, experimental purposes. A prototype enables you to fully understand how easy or difficult it will be to implement some features of the system.

Types A horizontal prototype is a simulation of the interface ( that is, it has the entire user interface that will be in the full-features system. ) but contains no functionality. This has the advantages of being very quick to implement

A vertical prototype is a subset of the system features with complete functionality. The principal advantage of this method is that the few implemented functions can be tested in great depth.

Analysis prototype is an support for exploring the problem domain. This class of prototype is used to inform the user and demonstrate the proof of a concept.

A Domain prototype is an support for the incremental development of the ultimate software solution.

Component Based Development CBT is an industrialized approach to the software development process. Application development moves from custom development to assembly of pre built, pre tested, reusable software components

Two basic ideas The application development can be improved significantly if applications can be assembled quickly from prefabricated software components Second, an increase large collection of interpretable software components could be made available to developers in both general and specialist catalogs.

Software components are the functional units of program, building blocks offering a collection of reusable services

Rapid Application development • RAD is a set of tools and techniques that can be used to build an application faster than typically possible with traditional methods. • The developer should scarifies the quality of the product for a quicker delivery

The main objective of RAD is to build a version of an application rapidly to see whether we actually have understood the problem analysis. RAD involves number of iterations.

Incremental testing If you wait after development to test an application for bugs and performance. You could be wasting thousands of dollars and hours of time. Our testing was very complete and good, but it was costing a lot of money and would add months onto a project The problem was that developers would turn over applications to a quality assurance group for testing only development was competed

Reusability A major benefit of object oriented system development is reusability Has my problem already been solved? Has my problem been partially solved? What has been before to solve a problem similar to this one? Summary information about existing software components

The reuse strategy can be used on the following Information hiding (encapsulation). Conformance to naming standards. Creation and administration of an object repository. Encouragement by strategic management of reuse as opposed to constant redevelopment. Establishing targets for a percentage of the objects in the project to be reused. (50 percent of reuse of objects)
- Slides: 32