Saturday, June 6, 2009

Software Development Life Cycle

The Software development life cycle consists of the following phases.
  • Requirement Analysis
  • Design
  • Development
  • Testing
  • Implementation
  • Maintenance
Requirements and Analysis Specification:
The main objective of the requirement analysis is to produce a document that properly specifies all requirements of the customer. That is, the software requirement specification (SRS) document is the primary output of this phase.

Design:
The Development process is the process by which the user requirements are elicited and software satisfying these requirements is designed, build, tested, and delivered to the customer. The development process is used when a new application is being developed or a major enhancement is planned for an existing application.

High-Level Design:
High-level design is the phase of the life cycle when a logical view of the computer implementation of the solution to the customer requirements is developed.

Low Level Design:
During the detailed design phase, the view of the application developed during the high level design is broken down into modules and programs.

Coding and Unit Testing:
During the build phase, the detailed design is used to produce the required programs in a programming language. This stage produces the source code, executables, and databases (if applicable) following the appropriate coding standards. The output of this phase is the subject of subsequent testing and validation.

Software Process

Process: "A particular method of doing something, generally involving a number of steps or operations is a process." In software engineering, the phrase Software Process refers to the method of developing software.

The process that deals with the technical and management issues of software development is called Software Process. Clearly, many different types of activities need to be performed to develop software. A software development project must have at least development activities and project management activities. All these activities together comprise of software process.

Processes, Projects, Products

  • A Software Process specifies a method of developing software
  • A Software Project, on the other hand, is a development project in which a software process is used.
  • A Software Product is the outcome of a software project.

Quality Assurance Vs Quality Control

Quality Assurance is a planned and systematic set of activities necessary to provide adequate confidence that products and services will conform to specified requirements and meet user needs. Quality assurance is staff function, responsible for implementing the quality policy defined through the development and continuous improvement of software development process.

Quality Control is the process by which product quality is compared with applicable standards and the action taken when non-conformance is detected. Quality control is line function, and work is done within a process to ensure that work product conforms to standards and/or requirements.

Quality Principles

Overview

Quality is based on customer satisfaction, our organization must define quality before it can be achieved, and management must lead the organization through any improvement efforts.

What is Quality?

Quality is defined as meeting the customer's requirements in the first time and every time. Quality is much more than the absence of defects, which allows us to meet customer's expectations.

Objective of Software Tester

  • The goal of a software tester is to find bugs.
  • The goal of a software tester is to find bugs and find them as early as possible.
  • The goal of a software tester is to find bugs and find them as early as possible and make sure they get fixed.
Best Testing Practices to be followed during testing

  • Testing and evaluation responsibility is given to every memeber, so as to generate team responsibility among all.
  • Develop Master Test Plan so that resource and responsibilities are understood and assigned as early in the project as possible.
  • Systematic evaluation and preliminary test design are established as a part of all system engineering an specification work.
  • Testing is used to verify that all project deliverables and components are complete, and to demonstrate and track true project progress.
  • Conduct Reviews as early and as often as possible to provide developer feedback and get problems found and fixed as they occur.

Principle of Testing


Testing is the process of executing a program with an intent of finding error and it should be planned long before testing begins.

Test cases must be written for invalid and unexpected, as well as for valid and expected input conditions. A necessary part of a test case is a definition of the expected output or result. A good test case is one that has high probability of detecting an as yet undiscovered error.

Purpose and Benefit of Testing

The main objective of testing is to help clearly describe system behavior and to find defects in requirements, design, documentation and code as early as possible. The test process should be such that it should reduce the number of defects in the software product that will be delivered to the customer.

Why Software Testing?


Software Testing is important as it may cause mission failure, impact on operational performance and reliability if not done properly. Effective software testing helps to deliver quality software products that satisfy user's requirements, needs and expectations. If done poorly, defects are found during operation, it results in high maintenance cost and user dissatisfaction.

The Most Common Software Problems

  • Incorrect calculations
  • Incorrect data edits
  • Ineffective data edits
  • Incorrect coding/implementation of business rules
  • Incorrect matching and merging of data
  • Incorrect processing of data relationships
  • Incorrect file and data handling
  • Inadequate security controls
  • Inability to handle production data capacities
  • Inadequate support of business needs or objectives