Software development is the translation of a user need or marketing goal into a
softwareproduct. [cite book|author=Birrell, N.D.|title=A Practical Handbook for Software Development|publisher=Cambridge University Press|year=1985|id=ISBN 0-521-25462-0] [cite web|author=DRM Associates|title=New Product Development Glossary |url=http://www.npd-solutions.com/glossary.html |date=2002|accessdate=2006-10-29] Software development is sometimes understood to encompass the processes of software engineeringcombined with the research and goals of software marketingto develop computer softwareproducts. [ [http://www.amazon.com/dp/1556158238 Jim McCarthy. "Dynamics of Software Development" (August 1, 1995), pp:10-30] ] This is in contrast to marketing software, which may or may not involve new product development.
It is often difficult to isolate whether engineering or marketing is more responsible for the success or failure of a software product to satisfy customer expectations. This is why it is important to understand both processes and facilitate collaboration between both engineering and marketing in the total software development process. Engineering and marketing concerns are often balanced in the role of a
project managerthat may or may not use that title.
Because software development may involve compromising or going beyond what is required by the client, a software development project may stray into processes not usually associated with engineering such as
market research, human resources, risk management, intellectual property, budgeting, crisis management, etc. These processes may also cause the role of business developmentto overlap with software development.
In the book "Great Software Debates", Alan M. Davis states in the chapter "Requirements", subchapter "The Missing Piece of Software Development"":
Various approaches to software development
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:
* 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
* 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 “Xtreme” 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.
* Luke Hohmann. "Beyond Software Architecture: Creating and Sustaining Winning Solutions" (
January 30, 2003)
* Jim McCarthy. "Dynamics of Software Development" (
August 1, 1995), pp:10-30
* Robert K. Wysocki. "Effective Software Project Management" (
March 27, 2006), pp:72-75
* PhD, CISM, John Rittinghouse. "Managing Software Deliverables: A Software Development Management Methodology" (
November 12, 2003)
* Dan Conde. "Software Product Management: Managing Software Development from Idea to Product to Marketing to Sales" (
September 1, 2002), pp:24-29
* Edward Hasted. "Software That Sells : A Practical Guide to Developing and Marketing Your Software Project" (
June 10, 2005)
* A. M. Davis, "Just enough requirements management: where software development meets marketing" (
May 30, 2005)
* John W. Horch, "Two Orientations On How To Work With Objects," IEEE Software, vol. 12, no. 2, pp. 117-118, Mar., 1995.
* Karl E. Wiegers, "More About Software Requirements: Thorny Issues and Practical Advice" (
December 20, 2005)
Wikimedia Foundation. 2010.
Look at other dictionaries:
software development — UK US noun [U] IT ► the activity of creating computer programs: »The company invested $38m in software development … Financial and business terms
software development — noun The translation of a user need or marketing goal into a software product … Wiktionary
software development — process of writing and maintaining computer programs … English contemporary dictionary
Software development process — Activities and steps Requirements Specification … Wikipedia
Software development effort estimation — is the process of predicting the most realistic use of effort required to develop or maintain software based on incomplete, uncertain and/or noisy input. Effort estimates may be used as input to project plans, iteration plans, budgets, investment … Wikipedia
Software development kit — Saltar a navegación, búsqueda Un software development kit (SDK) o kit de desarrollo de software es generalmente un conjunto de herramientas de desarrollo que le permite a un programador crear aplicaciones para un sistema concreto, por ejemplo… … Wikipedia Español
Software development (disambiguation) — Software development is the translation of a user need or marketing goal into a software product.Software development may also refer to: *Software development process *Computer programming, the process of writing and maintaining the source code … Wikipedia
Software Development Kit — (SDK) set of programming tools that allow programmers to develop specialized computer applications and adapt them to various operating systems (usually includes an editor, linker, compiler, etc.) … English contemporary dictionary
Software development methodology — A software development methodology or system development methodology in software engineering is a framework that is used to structure, plan, and control the process of developing an information system. Contents 1 History 1.1 As a noun 1.2 As a… … Wikipedia
Software Development Rhythms — The approach of software development rhythms seeks to answer the key question of whether programmer productivity is impacted by the various agile practices, rather than by any single software development method. Beck says, Programming sometimes… … Wikipedia