Home      Discussion      Topics      Dictionary      Almanac
Signup       Login
Software development

Software development

Overview
Software development (also known as application development, software design, designing software, software application development, enterprise application development, or platform development) is the development of a software product. The term "software development" may be used to refer to the activity of computer programming
Computer programming
Computer programming is the process of designing, writing, testing, debugging, and maintaining the source code of computer programs. This source code is written in one or more programming languages. The purpose of programming is to create a program that performs specific operations or exhibits a...

, which is the process of writing and maintaining the source code
Source code
In computer science, source code is text written using the format and syntax of the programming language that it is being written in. Such a language is specially designed to facilitate the work of computer programmers, who specify the actions to be performed by a computer mostly by writing source...

, but in a broader sense of the term it includes all that is involved between the conception of the desired software through to the final manifestation of the software, ideally in a planned and structured process. Therefore, software development may include research, new development, prototyping, modification, reuse, re-engineering, maintenance, or any other activities that result in software products.
Discussion
Ask a question about 'Software development'
Start a new discussion about 'Software development'
Answer questions from other users
Full Discussion Forum
 
Unanswered Questions
Encyclopedia
Software development (also known as application development, software design, designing software, software application development, enterprise application development, or platform development) is the development of a software product. The term "software development" may be used to refer to the activity of computer programming
Computer programming
Computer programming is the process of designing, writing, testing, debugging, and maintaining the source code of computer programs. This source code is written in one or more programming languages. The purpose of programming is to create a program that performs specific operations or exhibits a...

, which is the process of writing and maintaining the source code
Source code
In computer science, source code is text written using the format and syntax of the programming language that it is being written in. Such a language is specially designed to facilitate the work of computer programmers, who specify the actions to be performed by a computer mostly by writing source...

, but in a broader sense of the term it includes all that is involved between the conception of the desired software through to the final manifestation of the software, ideally in a planned and structured process. Therefore, software development may include research, new development, prototyping, modification, reuse, re-engineering, maintenance, or any other activities that result in software products.

Software can be developed for a variety of purposes, the three most common being to meet specific needs of a specific client/business (the case with custom software
Custom software
Custom software is software that is specially developed for some specific organization or other user. As such, it can be contrasted with the use of software packages developed for the mass market, such as commercial off-the-shelf software, or existing free software.Custom software can be...

), to meet a perceived need of some set of potential users (the case with commercial
Commercial software
Commercial software, or less commonly, payware, is computer software that is produced for sale or that serves commercial purposes.Commercial software is most often proprietary software, but free software packages may also be commercial software....

 and open source software), or for personal use (e.g. a scientist may write software to automate a mundane task). Embedded software development, that is, the development of embedded software
Embedded software
Embedded software is computer software that plays an integral role in the electronics it is supplied with.Embedded software's principal role is not Information technology , but rather the interaction with the physical world. It's written for machines that are not, first and foremost, computers...

 such as used for controlling consumer products, requires the development process to be integrated with the development of the controlled physical product.

The need for better quality control
Quality control
Quality control, or QC for short, is a process by which entities review the quality of all factors involved in production. This approach places an emphasis on three aspects:...

 of the software development process has given rise to the discipline of software engineering
Software engineering
Software Engineering is the application of a systematic, disciplined, quantifiable approach to the development, operation, and maintenance of software, and the study of these approaches; that is, the application of engineering to software...

, which aims to apply the systematic approach exemplified in the engineering
Engineering
Engineering is the discipline, art, skill and profession of acquiring and applying scientific, mathematical, economic, social, and practical knowledge, in order to design and build structures, machines, devices, systems, materials and processes that safely realize improvements to the lives of...

 paradigm to the process of software development.

Overview



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.

Consistency in Software


In order to ensure that software can evolve in a way that maintains its inherent multidimensionality, one must ensure that the different dimensions evolve together in a consistent manner. Software has too many dimensions to combine within a single framework. A good mechanism should not be geared to a specific problem such as ensuring the consistency of a UML class diagram with the source code. Instead it should be flexible enough to handle the broad range of dimensioins that are actually involved in software development.

Marketing


The sources of ideas for software products are legion. These ideas can come from market research
Market research
Market research is any organized effort to gather information about markets or customers. It is a very important component of business strategy...

 including the demographics
Demographics
Demographics are the most recent statistical characteristics of a population. These types of data are used widely in sociology , public policy, and marketing. Commonly examined demographics include gender, race, age, disabilities, mobility, home ownership, employment status, and even location...

 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
Marketing
Marketing is the process used to determine what products or services may be of interest to customers, and the strategy to use in sales, communications and business development. It generates the strategy that underlies sales techniques, business communication, and business developments...

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

In the book "Great Software Debates", Alan M. Davis
Alan M. Davis
Alan Mark Davis is a Professor of Business Strategy and Entrepreneurship in the College of Business at the University of Colorado at Colorado Springs. He is also President and CEO of Spiral Funds, Inc. Davis earned his Ph.D. in Computer Science from the University of Illinois at Urbana-Champaign...

 states in the chapter "Requirements", subchapter "The Missing Piece of Software Development"

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
Human resources
Human resources is a term used to describe the individuals who make up the workforce of an organization, although it is also applied in labor economics to, for example, business sectors or even whole nations...

, risk management
Risk management
Risk management is the identification, assessment, and prioritization of risks followed by coordinated and economical application of resources to minimize, monitor, and control the probability and/or impact of unfortunate events or to maximize the realization of opportunities...

, intellectual property
Intellectual property
Intellectual property is a term referring to a number of distinct types of creations of the mind for which a set of exclusive rights are recognized—and the corresponding fields of law...

, budgeting, crisis management
Crisis management
Crisis management is the process by which an organization deals with a major event that threatens to harm the organization, its stakeholders, or the general public. The study of crisis management originated with the large scale industrial and environmental disasters in the 1980's.Shrivastava, P....

, etc. These processes may also cause the role of business development
Business development
A subset of the field of commerce, business development comprises a number of techniques and responsibilities which aim at:1. Researching new types of business/products/services with an emphasis on identifying gaps in the mitigation of needs of potential clients .2. Attracting new customers3...

 to overlap with software development.

Software development methodology



A software development methodology
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.- History :...

 is a framework that is used to structure
Structure
Structure is a fundamental, tangible or intangible notion referring to the recognition, observation, nature, and permanence of patterns and relationships of entities. This notion may itself be an object, such as a built structure, or an attribute, such as the structure of society...

, plan
Plan
A plan is typically any diagram or list of steps with timing and resources, used to achieve an objective. See also strategy. It is commonly understood as a temporal set of intended actions, through which one expects to achieve a goal...

, and control the process of developing information system
Information system
An information system - or application landscape - is any combination of information technology and people's activities that support operations, management, and decision making. In a very broad sense, the term information system is frequently used to refer to the interaction between people,...

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

See also

  • Application software
    Application software
    Application software, also known as an application or an "app", is computer software designed to help the user to perform specific tasks. Examples include enterprise software, accounting software, office suites, graphics software and media players. Many application programs deal principally with...

  • Aspect-Oriented Software Development
    Aspect-oriented software development
    In computing, Aspect-oriented software development is an emerging software development technology that seeks new modularizations of software systems in order to isolate secondary or supporting functions from the main program's business logic...

  • Bachelor of Science in Information Technology
    Bachelor of Science in Information Technology
    A Bachelor of Science in Information Technology, , is a bachelor's degree awarded for the completion of an undergraduate course or program in information technology....

  • Computer programmer
  • Consulting software engineer
    Consulting software engineer
    In the field of software engineering, the term consulting software engineer denotes a person who represents the customer's interests with, e.g., the project team actually building a software system, application or software product....

  • Custom software
    Custom software
    Custom software is software that is specially developed for some specific organization or other user. As such, it can be contrasted with the use of software packages developed for the mass market, such as commercial off-the-shelf software, or existing free software.Custom software can be...

  • Incremental funding methodology
    Incremental funding methodology
    The Incremental Funding Methodology is an ROI-informed approach to software development in which software is developed and delivered in carefully prioritized chunks of customer valued functionality. These chunks are known as Minimum Marketable Features or MMFs.IFM integrates traditional software...

  • Functional specification
    Functional specification
    A functional specification in systems engineering and software development is the documentation that describes the requested behavior of an engineering system...

  • Marketing strategies for product software
    Marketing strategies for product software
    Marketing strategies for product software assist software firms to determine the type of market analysis that is needed for decision-making. Two general strategies that are well known in the marketing discipline are:* marketing mix; and...

  • Offshore software development
  • Search Based Software Engineering
  • Service-Oriented Modeling
    Service-oriented modeling
    Service-oriented modeling is the discipline of modeling business and software systems, for the purpose of designing and specifying service-oriented business systems within a variety of architectural styles, such as enterprise architecture, application architecture, service-oriented architecture,...

     Framework
  • Software blueprint
    Software blueprint
    A software blueprint is the final product of a software blueprinting process. Its name derives from the analogy drawn with the popular use of the term blueprint...

  • Software design
    Software design
    Software design is a process of problem solving and planning for a software solution. After the purpose and specifications of software are determined, software developers will design or employ designers to develop a plan for a solution...

  • Software developer
    Software developer
    A software developer is a person concerned with facets of the software development process. Their work includes researching, designing, developing, and testing software. A software developer may take part in design, computer programming, or software project management...

  • Software development effort estimation
    Software development effort estimation
    Software development efforts 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...

  • Software development process
    Software development process
    A software development process, also known as a software development life cycle , is a structure imposed on the development of a software product. Similar terms include software life cycle and software process. It is often considered a subset of systems development life cycle...

  • Bus factor
    Bus factor
    In software development, a software project's bus factor is a measurement of the concentration of information in individual team members. The bus factor is the total number of key developers who would need to be incapacitated to send the project into such disarray that it would not be able to...

  • Software engineer
    Software engineer
    A software engineer is an engineer who applies the principles of software engineering to the design, development, testing, and evaluation of the software and systems that make computers or anything containing software, such as computer chips, work.- Overview :...

  • Capability Maturity Model
    Capability Maturity Model
    The Capability Maturity Model is a development model that was created after study of data collected from organizations that contracted with the U.S. Department of Defense, who funded the research. This model became the foundation from which CMU created the Software Engineering Institute...

  • Software engineering economics
  • Software project management
    Software project management
    Software project management is the art and science of planning and leading software projects. It is a sub-discipline of project management in which software projects are planned, monitored and controlled.-History:...

  • Software publisher
    Software publisher
    A software publisher is a publishing company in the software industry between the developer and the distributor. In some companies, two or all three of these roles may be combined ....

  • System software
    System software
    System software is computer software designed to operate the computer hardware and to provide a platform for running application software.The most basic types of system software are:...

  • User experience
    User experience
    User experience is the way a person feels about using a product, system or service. User experience highlights the experiential, affective, meaningful and valuable aspects of human-computer interaction and product ownership, but it also includes a person’s perceptions of the practical aspects such...

  • Video game development
  • Web application development
    Web application development
    Web application development is the process and practice of developing web applications.-Risk:Just as with a traditional desktop application, web applications have varying levels of risk. A personal home page is much less risky than, for example, a stock trading web site. For some projects security,...


  • Further reading


    • Jim McCarthy (1995). Dynamics of Software Development.
    • Dan Conde (2002). Software Product Management: Managing Software Development from Idea to Product to Marketing to Sales.
    • A.M. Davis (2005). Just enough requirements management: where software development meets marketing.
    • Edward Hasted. (2005). Software That Sells : A Practical Guide to Developing and Marketing Your Software Project.
    • Luke Hohmann (2003). Beyond Software Architecture: Creating and Sustaining Winning Solutions.
    • John W. Horch (2005). "Two Orientations On How To Work With Objects." In: IEEE Software. vol. 12, no. 2, pp. 117–118, Mar., 1995.
    • John Rittinghouse (2003). Managing Software Deliverables: A Software Development Management Methodology.
    • Karl E. Wiegers (2005). More About Software Requirements: Thorny Issues and Practical Advice.
    • Robert K. Wysocki (2006). Effective Software Project Management.