Software Testing Practices, Test Methodologies and Test Competency Services


Welcome to the world of Software Testing & Best Test Practices.

All you wanted to know about Software Testing, Test Practices, Test Methodologies and building the Test Competency Services !!


Friday, May 16, 2008

SOFTWARE DEVELOPMENT LIFE CYCLE

SDLC is the process of developing information systems through investigation, analysis, design, implementation and maintenance. It is also known as information systems development or application development.

Various SDLC methodologies have been developed to guide the processes involved, including the waterfall model (which was the original SDLC method); rapid application development (RAD); joint application development (JAD); the fountain model; the spiral model; build and fix; and synchronize-and-stabilize. Frequently, several models are combined into some sort of hybrid methodology. The oldest of these, and the best known, is the waterfall: a sequence of stages in which the output of each stage becomes the input for the next.

System Development Life Cycle Model (SDLC Model) This is also known as Classic Life Cycle Model (or) Linear Sequential Model (or) Waterfall Method. This has the following activities:

1. System/Information Engineering and Modeling

2. Software Requirements Analysis

3. Systems Analysis and Design

4. Code Generation

5. Testing

6. Maintenance


1) System/Information Engineering and Modeling: As software is always aimed at a large system (or business), work begins by establishing requirements for all the system elements and then allocating some subset of these requirements to the software. This system view is essential when software must interface with other elements such as hardware, people and other resources. System is the basic and very critical requirement for the existence of software in any entity. So if the system is not in place, the system should be engineered and put in place. In some cases, to extract the maximum output, the system should be re-engineered and spruced up. Once the ideal system is engineered or tuned, the development team studies the software requirement for the system. (In short, this phase identifies and defines a need for the new system.)

2) Software Requirement Analysis: This is also known as feasibility study. In this phase, the development team visits the customer and studies their system. They investigate the need for possible software automation in the given system. By the end of the feasibility study, the team furnishes a document that holds the different specific recommendations for the candidate system. It also includes the personnel assignments, costs, project schedule, and target dates. The requirements gathering process is intensified and focused specially on software. To understand the nature of the program(s) to be built, the system engineer ("analyst") must understand the information domain for the software, as well as required function, behavior, performance and interfacing. The essential purpose of this phase is to find the need and to define the problem that needs to be solved. In other words this phase looks into: what interfaces are required (will it run with Windows NT and Windows XP?). What is the functionality required – should it be run with the mouse or keyboard commands? What is the level of proficiency required by the user? Will a new room be needed for the servers or equipment? (In short, this phase analyzes the information needs of the end users)

3) System Analysis and Design: In this phase, the overall structure of the software and its nuances are defined. In terms of the client/server technology, the number of tiers needed for the package architecture, the database design, the data structure design etc are all defined in this phase. A software development model is created. Analysis and Design are very crucial in the whole development cycle. Any glitch in the design phase could be very expensive to solve in the later stage of the software development. Much care is taken during this phase. The logical system of the product is developed in this phase. (In short, this phase creates a blueprint for the design with the necessary specifications for the hardware, software, people and data resources)

4) Code Generation: The design must be translated into a machine-readable form. The code generation step performs this task. If the design is performed in a detailed manner, code generation can be accomplished without much complication. Programming tools like Compilers, Interpreters, and Debuggers are used to generate the code. Different high level programming languages like C, C++, Pascal, Java are used for coding. With respect to the type of application, the right programming language is chosen.

5) Testing: Once the code is generated, the software program testing begins. Different testing tools & methodologies are available to unravel the bugs that were committed during the previous phases.

6) Maintenance: Software will definitely undergo change once it is delivered to the customer. Change could happen because of some unexpected input values into the system. The software should be developed to accommodate changes that could happen during the post implementation period.The maintenance phase is usually the longest stage of the software. In this phase, the software is updated to:

  1. Meet the changing customer needs.
  2. Adapted to accommodate changes in the external environment.
  3. Correct errors and oversights previously undetected in the testing phases.
  4. Enhancing the efficiency of the software.

Kiran’s Conclusion:

All these different software development models have their own advantages and disadvantages. Nevertheless, in the commercial software development world, the fusion of all these methodologies is incorporated. Timing is very crucial in software development. If a delay happens in the development phase, the market could be taken over by the competitor. Also if a 'bug' filled product is launched in a short period of time (quicker than the competitors), it may affect the reputation of the company. So, there should be a tradeoff between the development time and the quality of the product. Customers don't expect a bug free product but they expect a user-friendly product.

No comments: