Welcome to MocSys Consulting
MocSys Consulting, a
Microsoft Partner, provides custom application development solutions for the
Web, PC, and mobile devices, that integrate with just about anything you have or
can envision.
Business professionals from the entrepreneur to the CIO,
and companies from the Fortune 500 to small private firms are referred to us
based upon our extensive track record of Client Success Stories.
Whether a company is ready to grow a business through
technology, optimize core processes or work flow, strategically plan for the
future, or even help save an existing project whose success is in jeopardy, we
can help
Software development
Software development is the set of activities that
results in
software
products. Software development may include research, new development,
modification, reuse, re-engineering, maintenance, or any other activities that
result in software products.[1] Especially the first phase in the software
development process may involve many departments, including
marketing,
engineering,
research and development and general
management.[2]
The term software development may
also refer to
computer programming, the process of writing and maintaining the
source code.
There are several different
approaches to software development, much like the various views of political
parties toward governing a country. Some take a more structured,
engineering-based approach to developing business solutions, whereas others may
take a more incremental approach, where software evolves as it is developed
piece-by-piece. 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
- Deployment
- 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.
There are significant advantages
and disadvantages to the various methodologies, and the best approach to solving
a problem using software will often depend on the type of problem. If the
problem is well understood and a solution can be effectively planned out ahead
of time, the more "waterfall" based approach may work the best. If, on the other
hand, the problem is unique (at least to the development team) and the structure
of the software solution cannot be easily envisioned, then a more "extreme"
incremental approach may work best. A software development process is a
structure imposed on the development of a software product. Synonyms include
software life cycle and software process.
There are several
models for such processes, each describing
approaches to a variety of
tasks or activities that take place during the
process.
Marketing
The sources of ideas for software
products are legion.[2] These ideas can come from
market research
including the
demographics of potential new customers, existing customers, sales
prospects who rejected the product, other internal software development staff,
or a creative third party. Ideas for software products are usually first
evaluated by
marketing
personnel for economic feasibility, for fit with existing channels distribution,
for possible effects on existing product lines, required features, and for fit
with the company's marketing objectives. In a marketing evaluation phase, the
cost and time assumptions become evaluated. A decision is reached early in the
first phase as to whether, based on the more detailed information generated by
the marketing and development staff, the project should be pursued further.[2]
In the book "Great Software
Debates",
Alan M. Davis
states in the chapter "Requirements", subchapter "The Missing Piece of
Software Development":
|
“
|
Students of engineering learn engineering and are rarely exposed to finance
or marketing. Students of marketing learn marketing and are rarely exposed to
finance or engineering. Most of us become specialists in just one area. To
complicate matters, few of us meet interdisciplinary people in the workforce, so
there are few roles to mimic. Yet, software product planning is critical to the
development success and absolutely requires knowledge of multiple disciplines.[3]
|
”
|
Because software development may
involve compromising or going beyond what is required by the client, a software
development project may stray into less technical concerns such as
human resources,
risk management,
intellectual property,
budgeting,
crisis management,
etc. These processes may also cause the role of
business development to overlap with software development.
Software development methodology
A
software development methodology is a framework that
is used to
structure,
plan, and
control the
process of
developing
information systems. A wide variety of such frameworks have evolved
over the years, each with its own recognized strengths and weaknesses. One
system development methodology is not necessarily suitable for use by all
projects. Each of the available methodologies is best suited to specific kinds
of projects, based on various technical, organizational, project and team
considerations.[4]
Recent
trends in the sector
Given the rapid growth of this
sector, several companies have started to use offshore development in
China,
India and other countries with a lower cost per
developer model. Several new Web
2.0 platforms and sites are now developed offshore while management
is located in Western countries. The advantages mostly revolve around better
cost-control over the process, which means that there is lower cash-outflow
(often the biggest struggle for startups). Furthermore, the time difference when
working with India and China for the Western world allows work
to be done round the clock adding a competitive advantage. Notable firms that
are involved in development include
MocSys Consulting.