Software Development
Software development is the process of developing software through successive phases in an orderly way. It is a complicated process as it requires careful planning and execution to meet the goals. Different phases in this development process include, the actual writing of code, preparation of requirements and objectives, the design of what is to be coded, and confirmation that what is developed has met objectives. Before systems development methods came into existence, the development of new systems or products was often carried out by using the experience and intuition of management and technical personnel. However, the complexity of modern systems and computer products long ago made the need clear for some kind of orderly development process.
The different phases involved in Software Development are as follows:
1) Identification of required software
2) Analysis of the software requirements
3) Detailed specification of the software requirements
4) Software design
5) Programming
6) Testing
7) Maintenance
The Development Process
The software development process is guided by some systematic software development method (SDM). Also referred by a number of terms, like process models, development guidelines, and systems development life cycle models (SDLC). All these Software Development methods generally include the following development phases:
The existing system is evaluated and its drawbacks identified, usually through interaction with system users and support personnel.
The new system requirements are defined, the drawbacks in the existing system are addressed with specific proposals for improvement.
The proposed system is designed and plans are laid out concerning the physical construction, hardware, operating systems, programming, communications, and security issues.
The new system is developed and the new components and programs are obtained and installed. Users of the system must be trained in its use and all aspects of performance is tested. If necessary, adjustments are made at this stage.
The system is put into use. This can be done in different ways. The new system can phase in, according to application or location and the old system gradually replaced. In some cases it may be more cost-effective to shut down the old system and implement the new system all at once.
Once the new system is up and running for a while, it is exhaustively evaluated. Maintenance is kept up rigorously at all times. Users of the system are kept up-to-date concerning the latest modifications and procedures.
Systems Development Life Cycle Model
The Systems Development Life Cycle model was developed as a structured approach to information system development that guides all the processes involved from an initial feasibility study through to maintenance of the finished application. SDLC models take a variety of approaches to development. Some of these life cycle models include
The Waterfall Model
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.
Rapid Application Development (RAD)
This model is based on the concept that better products can be developed more quickly by using workshops or focus groups to gather system requirements.
Joint application development (JAD)
This model involves the client or end user in the design and development of an application, through a series of collaborative workshops called JAD sessions.
Prototyping Model
In this model, a prototype (an early approximation of a final system or product) is built, tested, and then reworked as necessary until an acceptable prototype is finally achieved from which the complete system or product can now be developed.
Synchronize-and-Stabilize
This model involves teams working in parallel on individual application modules, frequently synchronizing their code with that of other teams and stabilizing code frequently throughout the development process.
Spiral Model
This model of development combines the features of the prototyping model and the waterfall model. The spiral model is favored for large, expensive, and complicated projects
Choosing The Right Programming Language for the Project
For most projects, the right language is easy to choose. The company may have standardized on a particular development environment and language. It's always best to use the same language the existing program is written in. In some cases, however, someone will need to select the best language or the team of developers may need to know several languages for different purposes.
General break down of programming languages and what they are used for:
Perl or a similar script language is most suitable for small tasks and sometimes as a program that goes between other, larger programs.
Visual Basic is most suitable for relatively novice programmers and relatively simple programs.
Java, C++, or comparable languages like Python are most suitable for larger applications using object orientation as a design model.
C is most suitable for programs where efficiency and performance are the primary concern.
The appropriate assembler language is most suitable where the program is relatively short and high performance is critical.
Where constraints permit, some programmers may favor one object-oriented language over another (for example, Java, C++, Python). A programmer with skills in C is likely to prefer C++, which combines the procedural and other concepts and syntax of C with object-oriented concepts.
Some current trends with Software Development
Outsourcing
Using this approach, software companies hire employees around the world to take advantage of time zone and labor/cost differences. With this, software development teams now have a 24-hour work day, and are able to provide fast turn-around. Outsourcing parts of a project leads to sloppy coding and only works if there is a high degree of coordination regarding modularized tasks, and above-average communication within the team.
Blogs
A growing number of big-name software developers are finding that they can make better software applications if they share information with potential customers from the start and incorporate customer feedback into development decisions. Blogs (Web logs) is becoming an important part of the development process where developers exchange ideas.
Component-based development
In this approach, software is developed in modules that are linked dynamically to construct a complete application.
Independent software vendors (ISVs)
Big players like Microsoft, IBM, and Sun have recognized that they cannot fill every niche industry's software demands, so they have begun to actively seek partnerships with small ISVs, in hopes that by encouraging ISVs to focus on niche vertical industry applications, everyone will benefit.
System Development Life Cycle
The Systems Development Life Cycle (SDLC) is a conceptual model used in project management that describes the stages involved in an information system development project from an initial feasibility study through maintenance of the completed application. Various SDLC methodologies have been developed to guide the processes involved including the waterfall model (the original SDLC method), rapid application development (RAD), joint application development (JAD), the fountain model and the spiral model. Mostly, several models are combined into some sort of hybrid methodology. Documentation is crucial regardless of the type of model chosen or devised for any application, and is usually done in parallel with the development process. Some methods work better for specific types of projects, but in the final analysis, the most important factor for the success of a project may be how closely particular plan was followed.
Briefly on different Phases
Feasibility
The feasibility study is used to determine if the project should get the go-ahead. If the project is to proceed, the feasibility study will produce a project plan and budget estimates for the future stages of development.
Requirement Analysis and Design
Analysis gathers the requirements for the system. This stage includes a detailed study of the business needs of the organization. Options for changing the business process may be considered. Design focuses on high level design like, what programs are needed and how are they going to interact, low-level design (how the individual programs are going to work), interface design (what are the interfaces going to look like) and data design (what data will be required). During these phases, the software's overall structure is defined. 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.
Implementation
In this phase the designs are translated into code. Computer programs are written using a conventional programming language or an application generator. Programming tools like Compilers, Interpreters, 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.
Testing
In this phase the system is tested. Normally programs are written as a series of individual modules, these subject to separate and detailed test. The system is then tested as a whole. The separate modules are brought together and tested as a complete system. The system is tested to ensure that interfaces between modules work (integration testing), the system works on the intended platform and with the expected volume of data (volume testing) and that the system does what the user requires (acceptance/beta testing).
Maintenance
Inevitably the system will need maintenance. Software will definitely undergo change once it is delivered to the customer. There are many reasons for the change. Change could happen because of some unexpected input values into the system. In addition, the changes in the system could directly affect the software operations. The software should be developed to accommodate changes that could happen during the post implementation period.
Sunday, December 16, 2007
Subscribe to:
Post Comments (Atom)


No comments:
Post a Comment