Subscribe by Email

Saturday, June 23, 2007

Iterative software development: The process

Iterative software development became more prominent to overcome the weaknesses of the waterfall development process, namely the issues related to inability to incorporate changes at a later date, as well as the fact that in most client driven requirements, having all the requirements complete in the beginning is not realistic in a number of cases.
So what is iterative software development? Agile software development is a conceptual framework for undertaking software engineering projects that embraces and promotes evolutionary change throughout the entire life-cycle of the project. In the iterative cycle, the developer has the chance to develop a software system incrementally, allowing the people involved to learn from previous iterations and make those changes in the next iterations. Key steps in the process were to start with a simple implementation of a subset of the software requirements and iteratively enhance the evolving sequence of versions until the full system is implemented.
Each iteration is a self-contained mini-project composed of activities such as requirements analysis, design, programming, and test. The goal for each iteration is to develop a system that is stable and testable, but does not necessarily have all the functionality incorporated. Most iteration releases are internal, a baseline primarily for the benefit of the development team—they are not released externally. Hence, each suceeding iteration will typically have more functionality included. Typically, an iteration will be between 2 and 5 weeks.

Monday, June 18, 2007

Problems with waterfall software development model

Other software development models were developed (such as the Agile model) because it was felt that the sequential process defined in the Waterfall model was argued by many to be a bad idea in practice, mainly because of their belief that it is impossible to get one phase of a software product's lifecycle in a complete form before the next step is started. As an example, clients are almost never confident of their requirements being in a final form before they see a working prototype and can comment upon it; they may change their requirements constantly, and program designers and implementers may have little control over this. If clients change their requirements after a design is finished, that design must be modified to accommodate the new requirements, invalidating quite a good deal of effort if overly large amounts of time have been invested into preparing a comprehensive design. In addition, designers cannot anticipate technical difficulties with their design, and typically these difficulties become clear during development, at which time it is expensive to change design.
Summary of problems:
- Client requirements are never complete at the time of requirement specification. They change, and it is realistic to anticipate that such change would occur
- Each phase needs information from the following phases to be fully complete. For example, requirements phase needs information from design phase as to what is feasible; design phase needs feedback from coding phase as to which design has the best chances of succeeding
- Builds in a waterfall model are typically available much later, but there is a need to have builds much earlier so as to build confidence
- Each phase has people who are specialised for that phase. It is a hard task to get people specialized for each phase, as well as make sure that they are connecting with each other for proper information transfer

Wednesday, June 13, 2007

Waterfall Development Methodology

What is the Waterfall method?
A classic SDLC model, with a linear and sequential method that has goals for each development phase. The waterfall model simplifies task scheduling, because there are no iterative or overlapping steps. One drawback of the waterfall model is that it does not allow for much revision.
This model has the following activities.
1. System/Information Engineering and Modeling
2. Software Requirements Analysis
3. Systems Analysis and Design
4. Code Generation / Implementation
5. Testing
6. Maintenance

Waterfall Model
To follow the waterfall model, one proceeds from one phase to the next in a purely sequential manner. For example, one first completes "requirements specification" — they set in stone the requirements of the software.When the requirements are fully completed, one proceeds to design. The software in question is designed and a "blueprint" is drawn for implementers (coders) to follow — this design should be a plan for implementing the requirements given. When the design is fully completed, an implementation of that design is made by coders. Towards the later stages of this implementation phase, disparate software components produced by different teams are integrated.
After the implementation and integration phases are complete, the software product is tested and debugged; any faults introduced in earlier phases are removed here. Then the software product is installed, and later maintained to introduce new functionality and remove bugs.
Thus the waterfall model maintains that one should move to a phase only when its preceding phase is completed and perfected. Phases of development in the waterfall model are thus discrete, and there is no jumping back and forth or overlap between them.

Sunday, June 10, 2007

Software Development Models

Some popular Software Development Processes (summary)

1. Waterfall: This is a linear model, whereby the processes followed are to get requirements, analyze requirements, make a design (including High Level Design, Low Level Design), Develop code, Test application, and then deploy. A lot of software projects follow the Waterfall model.

2. Iterative model: This is an alternate to the waterfall model. The main difference is to start small, and then keep on iterating by building larger sections of the project. This helps in discovering truly what the customer wants. It is also being used by product companies more frequently now since it leads to eventually lower defects, and keeps the product quality higher. Some techniques using an iterative model are:

- Agile software development
- Extreme programming

Saturday, June 2, 2007

What is software development?

It is difficult to come to an exact definition of software development. However, if one were to try to define it from a beginning point to an end point, software development could be defined as the process of converting a customer need into a final product. This involved some commonly knows steps such as requirements gathering, specifications requirements and design, high level and low level design, coding (development), verification (testing), alpha testing, beta testing, customer acceptance, product marketing plans design and development, shrink wrapped retail chain, and so on. In addition, there are numerous other steps involved such as configuration management, legal overview, pricing strategies, software development models, and so on.
I will be writing more about a number of such strategies and processes.

Facebook activity