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

Software Development Delhi – Techniques To Develop Software Products

The process of developing system software is known as Software Development. There are many stages that are part of software development which is also commonly known as Software Development Life Cycle. In short, you can call it System Development Life Cycle which is undertaken to develop a software product. In fact all the stages are important in order to create a reliable system software product for any industry. The roles of techies differ from each other to develop a software product. The fist stage is the feasibility study before developing a product. Its purpose is to find out whether system when developed will really support the requirements of the user. Then comes system analysis and design where a detailed study is done on the system that is to be developed and an analyst designs the product architecture based on which product will be developed.

Developers or Programmers are responsible for the coding part of the software product and Testers are to test the product when the software coding part is over. If there are defects or bugs in the system, the same is passed on to the software development team to sort out the problem. After coding and testing, the implementation process is commenced in order to implement the developed system software product to the industry for which it is developed. Another important phase is the maintenance, which is offered by the services company to undertake maintenance of the software product. The maintenance services are offered by the software development Delhi to the vendor for long term until and unless the product works for the vendor. This is actually a kind of contract between vendor and software company based on which the services are offered for years.

The rapid advancement in the field of Information Technology has also created demand for the latest technology on which the software products are developed for any industry. Many new technologies that have emerged in the software market and are considered to be very reliable. Due to this there is also demand of the software developers who are aware with latest and newest technologies. The new technologies have really boomed the software industry as very reliable products are created by new technologies by the developers.

India software industry has really helped many industries and companies around the globe to prosper in every respect. The software professionals are very skilled and have good experience to handle complex projects. They deliver productive results on time which makes them able to get more and more projects for their company from the vendor. Another reason is that software developers available here work at very reasonable cost and thus creates cost effective business for the outsourcing vendors. The outsourcing companies find the same project cost very expensive in their country and so outsource their task. This process helps to booms the Indian software development industry, brings revenue and employment for the Indian.

Dragging Software Development into the 21st Century

Companies spend billions of dollars every year on developing their own software applications or purchasing complex enterprise software applications. This includes not only the cost of software, but the hardware infrastructure required to support the software as well. Rather than spending this money on software development, a company should put it to better use to improve the core business of the company. That is, the company should be focusing on what it is that they are really in business for rather then being distracted by software development.

Current software development practices for enterprise applications often result in products that are too expensive to develop, acquire, implement, integrate and then maintain. The typical software development cycle starts with a base product that is developed and subsequently sold, if external, or delivered, if internal, to a client. If the base product is lacking in functionality, then additional modifications must be made to the base product, adding to the cost of development. Once modifications have been completed, the implementation and integration phase starts. This phase has high costs associated with it; usually surrounding customization in order to get the software to interface with existing legacy systems. Finally, annual maintenance and service fess are charged, which usually do not include future upgrades. Clients are frequently less than happy with the results. The software development entity is often unaware that the client is not happy until the next development cycle is well under way, at which point it is too late and too expensive to address the problems. This results in an endless cycle where the software developed for a client continuously lags behind the client’s actual needs. Financial and human resources, which could be used too much greater effect elsewhere, are absorbed into a cycle that could be avoided altogether.

One of the highest costs involved in software development is the cost of developers. Over the past few decades computers have automated most industries. Ironically, the one industry that has not benefited from automation is the software development industry. Writing software is still a manual process involving monotonous and repetitive tasks. Techniques, such as code reuse and code generation have been developed over the years to reduce the workload. However, developers are inherently resistant to change and to anything they perceive as being able to “replace” them. Either they do not trust someone else’s code, or they think they could write better code themselves. For whatever reason, developers wind up reinventing the wheel project after project and billing for that work. Since developers are reluctant to utilize tools and techniques in their own development, they become their own worst enemy. The computer is the greatest tool ever invented and developers, the ones that make this great tool work, are reluctant to take maximum advantage of it.

If there is an industry that should be automated it is the software industry. All business applications perform the same basic functions and they interact with a database the same way, doing inserts, updates, queries, deletes, etc. They interact with the user through a user interface allowing the user to input and retrieve data. The internal plumbing that ties everything together is the same. What makes an application unique is the business rules, logic, and workflows (how the user moves through the application). Ideally there would be a tool that would “create” these common features and help “manage” the unique parts.

A tool is needed that would allow a developer to focus on the “what” or the rules and workflows instead of the “how” or the plumbing. A tool is needed that would take care of the monotonous and repetitive tasks. These laborious tasks are precisely where a computer excels. This tool has been created and it is ready for those who can accept giving up total development control and let the computer do what it was invented to do: expedite commerce. For more information on how your business can benefit from custom software development visit www.cerkitek.com.