|
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.
|