Software Development Overview Processes & Tips:
Software
development is the process of producing or creating a software. There could be
several aims of developing a piece of software:
Usually
the aim is to satisfy the specific needs of a client.
Secondly,
to meet the needs of the potential users.
For
personal use to meet the need of a scientist.
Mainly, it
refers to the activities or processes of writing and maintaining the source
code. Broadly, it includes the involvement of the conception of the desired
software and the manifestation of the product. Software development may include
research, new development, modification, reuse, re-engineering, maintenance, or
any other activities that result in software products. Usually, it involves the
inputs of the several departments like marketing, research and development,
engineering and general management.
Most
methodologies share some combination of the following stages of software
development:
Market
research
Gathering
requirements for the proposed business solution
Analyzing
the problem
Devising a
plan or design for the software-based solution
Implementation
(coding) of the software
Testing
the software
Development
Maintenance
and bug fixing
These
stages are often referred to collectively as the software development
lifecycle, or SDLC. Different approaches to software development may carry out
these stages in different orders, or devote more or less time to different
stages. The level of detail of the documentation produced at each stage of
software development may also vary. These stages may also be carried out in
turn (a “waterfall” based approach), or they may be repeated over various cycles
or iterations (a more "extreme" approach). The more extreme approach
usually involves less time spent on planning and documentation, and more time
spent on coding and development of automated tests. More “extreme” approaches
also promote continuous testing throughout the development lifecycle, as well
as having a working (or bug-free) product at all times. More structured or
“waterfall” based approaches attempt to assess the majority of risks and
develop a detailed plan for the software before implementation (coding) begins,
and avoid significant design changes and re-coding in later stages of the
software development lifecycle.
Planning
The
important task in creating a software product is extracting the requirements or
requirements analysis.Customers typically have an abstract idea of what they
want as an end result, but not what software should do. Incomplete, ambiguous,
or even contradictory requirements are recognized by skilled and experienced
software engineers at this point. Frequently demonstrating live code may help
reduce the risk that the requirements are incorrect.
Once the general requirements are gathered from
the client, an analysis of the scope of the development should be determined
and clearly stated. This is often called a scope document.
Certain functionality may be out of scope of the
project as a function of cost or as a result of unclear requirements at the
start of development. If the development is done externally, this document can
be considered a legal document so that if there are ever disputes, any
ambiguity of what was promised to the client can be clarified.
Implementation,
testing and documenting:
Implementation
is the part of the process where software engineers actually program the code
for the project.
Software testing is an integral and important part
of the software development process. This part of the process ensures that
defects are recognized as early as possible.
Documenting the internal design of software for
the purpose of future maintenance and enhancement is done throughout
development. This may also include the authoring of an API, be it external or
internal.
Deployment
and maintenance:
Deployment
starts after the code is appropriately tested, is approved for release and sold
or otherwise distributed into a production environment.
Software Training and Support is important and a
lot of developers fail to realize that. It would not matter how much time and
planning a development team puts into creating software if nobody in an
organization ends up using it. People are often resistant to change and avoid
venturing into an unfamiliar area, so as a part of the deployment phase, it is
very important to have training classes for new clients of your software.
Maintaining and enhancing software to cope with
newly discovered problems or new requirements can take far more time than the
initial development of the software. It may be necessary to add code that does
not fit the original design to correct an unforeseen problem or it may be that
a customer is requesting more functionality and code can be added to
accommodate their requests. If the labor cost of the maintenance phase exceeds
25% of the prior-phases' labor cost, then it is likely that the overall quality
of at least one prior phase is poor. In that case, management should consider
the option of rebuilding the system (or portions) before maintenance cost is
out of control.
Bug Tracking System tools are often deployed at
this stage of the process to allow development teams to interface with
customer/field teams testing the software to identify any real or perceived
issues. These software tools, both open source and commercially licensed,
provide a customizable process to acquire, review, acknowledge, and respond to
reported issues.
Hi, this site is really informative it’s a very interesting article for all thanks for sharing.
ReplyDeleteWeb Designing
Very nice information for client who want to hire best web designing company. I like your post.You need good we provide best.Thanks for nice sharing. Custom Software Development
ReplyDelete