Software Development Life Cycle (SDLC)

Outsourcing software development work is riding high these days. Many companies and individuals prefer to go for software development outsourcing instead of doing it in-house. Software development work isn’t an easy task as it involves a lot of planning, strategizing and testing. No software is perfect and in full functionality unless it overcomes all the tests. This is the reason why many companies going for software development outsourcing also keep a check on its testing services.

Any company supporting software development outsourcing usually follow a software development life cycle or popularly known as SDLC. The software development life cycle is a set framework preferably used for understanding and developing information systems and software successfully. Nowadays, businesses can easily acquire software in various ways that is from simply purchasing it off the shelf to designing a system tailored to the business’ needs.

This software development life cycle has got many versions and each version carries its own strengths and weaknesses and benefits and disadvantages. Software developer can easily understand how each of these methods affects risk. Many software developers also call Software Development Life Cycle as Classic Life Cycle Model or Linear Sequential Model or Waterfall Method. Each and every software developer has got its own name and definition.

All the software development life cycle includes following activities:

o System/Information Engineering and Modeling- Software are always comprised of a large system, and work usually begins by setting up the requirements for all system elements. Next step is to allocate some subset of these requirements to software.

o Software Requirements Analysis- This stage is also known as feasibility study. In this crucial phase, the development team mainly visits the customer and studies their system.

o Systems Analysis and Design- This is the third phase in which, the software’s overall structure and its nuances are defined. Being in terms of the client/server technology, it requires a number of tiers for the package architecture, the database design, and the data structure design.

o Code Generation- This code generation is performed in a detailed manner, and can be easily accomplished without much difficulty. Programming tools used to generate the code are Compilers, Interpreters and Debuggers.

o Testing- In this phase testing is performed to check the quality and its functionality. Various testing methodologies are available to unravel the bugs.

o Maintenance- Software surely goes into various changes once it is delivered to the customer/client.

Each and every activity has got its own importance and plays a vital role in any software development work. For more information on software development outsourcing, custom software development and Custom Software Development Company just click http://www.softage.ru

Software Development Life Cycle and Testing

These five phases constitute the life cycle of a software project called the software development life cycle (SDLC).

The Five Phases of the SDLC:
1. CONCEPTION
2. INITIATION
3. ANALYSIS
4. DESIGN
5. CONSTRUCTION

Phase 1 – CONCEPTION: This phase starts as soon as someone, either a user or a member of the data processing department, recognizes a problem or opportunity that suggests a data processing solution.
The objective of this phase is to answer the following questions:

– What is the perceived problem (or opportunity)?
– What are the goals to be achieved by the solution?
– What benefits will result from achieving the solution?
– What will be the scope of the project?

These details may be recorded in an informal note or in a formal document. This document is called Project Request Form.

Phase2 – INITIATION: In this phase the analyst, working with the user, does a preliminary study of the user’s need. The information developed during this phase permits the organization to decide if it is worth spending money on the project.

The key information to be recorded consists of the following:

– Proposed system solution
– Alternative solutions considered
– Economic justification (Cost Benefit Analysis)
– Schedule of time and cost estimates for the completion of the project

This document is referred to as System Proposal.

Phase 3 – ANALYSIS: During this phase, the analyst and user come to a detailed agreement on the functions that the proposed system has to perform. A detailed document is prepared containing:

– Outputs to be produced
– Inputs that must be received
– Data to be retained
– Procedure to get the outputs from the given inputs
– Audit and control requirements: This specifies the features that are required to ensure that the user can monitor the system to check that it is working properly.

– System Acceptance Criteria: This lists the tests that the user would actually perform to check conformity with the previously agreed performance requirement and other specifications, before accepting the system.

This document is called Function Specifications. In addition to creating Function Specifications, the Cost Benefit Analysis prepared during the Initiation phase should be reviewed for accuracy. Similarly, the cost and time estimate should also be reviewed/revised.

Phase 4 – DESIGN: At this point, the emphasis changes from defining the user’s requirement to defining how the system will work. The documentation developed is technical. The design documentation should specify:

– Exactly how each input, output, operation, file and audit control requirement will be handled
– Acceptance test plan/schedule
– Facilities, equipment and personal required
– Manual procedure required to operate the system

This document is referred to as Design Specification. At this point again, the Cost Benefit Analysis and cost/time estimates are reviewed /revised.

Phase 5 – CONSTRUCTION: The last phase in the system development procedure includes three activities:

– Completing and testing computer programs and operating instructions for using the package (Run Manual, User Manual).
– Performing all tasks to carry out the conversion from the system currently in use to the new system.
– Conducting the final testing of the system to determine if it performs according to the acceptance criteria established during the Analysis phase.

Another essential activity for any system is the system evaluation. During system evaluation the performance of the system in a real life environment is assessed.

This is not considered a phase as:

– It may be several months before it is possible to take the first measurement of system effectiveness.
By this time the project development team might have been disbanded or moved to other projects.
– It is an ongoing activity. In fact, it should be regarded as a project in itself.
– The results of the system evaluation might indicate that the system has to be modified /re-developed.

Testing:
Software Testing is the course of completing a program or system with the intention of finding errors. Or, it involves any activity aimed at appraising an attribute or capability of a program or system and determining that it meets its required results.

The testing process:
1. Create test plans.
The test plan documentation consists of two documents:
• Detailed test plan (DTP) document
• Detailed test case (DTC) document
2. Review the design.
The design review also helps in identifying the scenarios that must be tested for one or more of the following:
• Possible security attacks
• Performance optimizations
• Profiling to ensure that there are no memory leaks
3. Perform black box testing.
Black box testing includes the following:
• Testing all of the external interfaces for all possible usage scenario
• Ensuring that the interfaces meet the functional specifications and address all of the requirements testing for various types of input.
• Testing for various types of input.
• Performance testing
• Load testing.
• Stress testing
• Security testing