fbpx
Wikipedia

Software development

Software development is the process of conceiving, specifying, designing, programming, documenting, testing, and bug fixing involved in creating and maintaining applications, frameworks, or other software components. Software development involves writing and maintaining the source code, but in a broader sense, it includes all processes from the conception of the desired software through to the final manifestation of the software, typically in a planned and structured process.[1] Software development also includes research, new development, prototyping, modification, reuse, re-engineering, maintenance, or any other activities that result in software products.[2]

Methodologies

One system development methodology is not necessarily suitable for use by all projects.

Each of the available methodologies are best suited to specific kinds of projects, based on various technical, organizational, project, and team considerations.[3]

Software development activities

Identification of need

The sources of ideas for software products are plentiful. 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.[4]

In the book "Great Software Debates", Alan M. Davis states in the chapter "Requirements", sub-chapter "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.[5]

Planning process

An important task in creating software is requirements analysis. Customers typically have an abstract idea of what they want as an end result but do not know what software should do. Skilled and experienced software engineers recognize incomplete, ambiguous, or even contradictory requirements at this point. Frequently demonstrating live code may help reduce the risk that the requirements are incorrect.

"Although much effort is put in the requirements phase to ensure that requirements are complete and consistent, rarely that is the case; leaving the software design phase as the most influential one when it comes to minimizing the effects of new or changing requirements. Requirements volatility is challenging because they impact future or already going development efforts."[6]

Software developer

A software developer is a person or company engaged in software development process, including research, design, programming, testing, and other facets of creating computer software. Other job titles for individuals with similar meanings include programmer, software analyst, or software engineer. Companies specializing in software may be called software houses. In a large company, there may be employees whose sole responsibility consists of only one of the disciplines. In smaller development environments, a few people or even a single individual might handle the complete process. Collaborative environments, such as open-source software, can bring together many developers.

Subtopics

View model

 
The TEAF Matrix of Views and Perspectives.

A view model is a framework that provides the viewpoints on the system and its environment, to be used in the software development process. It is a graphical representation of the underlying semantics of a view.

The purpose of viewpoints and views is to enable human engineers to comprehend very complex systems and to organize the elements of the problem around domains of expertise. In the engineering of physically intensive systems, viewpoints often correspond to capabilities and responsibilities within the engineering organization.[7]

Business process and data modelling

Graphical representation of the current state of information provides a very effective means for presenting information to both users and system developers.

 
example of the interaction between business process and data models.[8]
  • A business model illustrates the functions associated with the business process being modeled and the organizations that perform these functions. By depicting activities and information flows, a foundation is created to visualize, define, understand, and validate the nature of a process.
  • A data model provides the details of information to be stored and is of primary use when the final product is the generation of computer software code for an application or the preparation of a functional specification to aid a computer software make-or-buy decision. See the figure on the right for an example of the interaction between business process and data models.[8]

Usually, a model is created after conducting an interview, referred to as business analysis. The interview consists of a facilitator asking a series of questions designed to extract required information that describes a process. The interviewer is called a facilitator to emphasize that it is the participants who provide the information. The facilitator should have some knowledge of the process of interest, but this is not as important as having a structured methodology by which the questions are asked of the process expert. The methodology is important because usually a team of facilitators is collecting information across the facility and the results of the information from all the interviewers must fit together once completed.[8]

The models are developed as defining either the current state of the process, in which case the final product is called the "as-is" snapshot model, or a collection of ideas of what the process should contain, resulting in a "what-can-be" model. Generation of process and data models can be used to determine if the existing processes and information systems are sound and only need minor modifications or enhancements, or if re-engineering is required as a corrective action. The creation of business models is more than a way to view or automate your information process. Analysis can be used to fundamentally reshape the way your business or organization conducts its operations.[8]

Computer-aided software engineering

Computer-aided software engineering (CASE), in the field software engineering, is the scientific application of a set of software tools and methods to the development of software which results in high-quality, defect-free, and maintainable software products.[9] It also refers to methods for the development of information systems together with automated tools that can be used in the software development process.[10] The term "computer-aided software engineering" (CASE) can refer to the software used for the automated development of systems software, i.e., computer code. The CASE functions include analysis, design, and programming. CASE tools automate methods for designing, documenting, and producing structured computer code in the desired programming language.[11]

Two key ideas of Computer-aided Software System Engineering (CASE) are:[12]

  • Foster computer assistance in software development and software maintenance processes, and
  • An engineering approach to software development and maintenance.

Typical CASE tools exist for configuration management, data modeling, model transformation, refactoring, source code generation.

 
Anjuta, a C and C++ IDE for the GNOME environment

Modeling language

A modeling language is any artificial language that can be used to express information or knowledge or systems in a structure that is defined by a consistent set of rules. The rules are used for interpretation of the meaning of components in the structure. A modeling language can be graphical or textual.[13]

Programming paradigm

A programming paradigm is a fundamental style of computer programming, which is not generally dictated by the project management methodology (such as waterfall or agile). Paradigms differ in the concepts and abstractions used to represent the elements of a program (such as objects, functions, variables, constraints) and the steps that comprise a computation (such as assignations, evaluation, continuations, data flows). Sometimes the concepts asserted by the paradigm are utilized cooperatively in high-level system architecture design; in other cases, the programming paradigm's scope is limited to the internal structure of a particular program or module. Example: Grady Booch's object-oriented design (OOD), also known as object-oriented analysis and design (OOAD). The Booch model includes six diagrams: class, object, state transition, interaction, module, and process.[14]

See also

Roles and industry

References

  1. ^ "Application Development (AppDev) Defined and Explained". Bestpricecomputers.co.uk. 13 August 2007. Retrieved 5 August 2012.
  2. ^ DRM Associates (2002). "New Product Development Glossary". Retrieved 29 October 2006.
  3. ^ System Development Methodologies for Web-Enabled E-Business: A Customization Framework Linda V. Knight (DePaul University, USA), Theresa A. Steinbach (DePaul University, USA) and Vince Kellen (Blue Wolf, USA)
  4. ^ Joseph M. Morris (2001). Software Industry Accounting. p.1.10
  5. ^ Alan M. Davis. Great Software Debates (October 8, 2004), pp:125-128 Wiley-IEEE Computer Society Press
  6. ^ Otero, Carlos. "Software Design Challenges". IT Performance Improvement. Taylor & Francis LLC. Retrieved 19 October 2017.
  7. ^ Edward J. Barkmeyer ea (2003). Concepts for Automating Systems Integration NIST 2003.
  8. ^ a b c d Paul R. Smith & Richard Sarfaty (1993). Creating a strategic plan for configuration management using Computer Aided Software Engineering (CASE) tools. Paper For 1993 National DOE/Contractors and Facilities CAD/CAE User's Group.
  9. ^ Kuhn, D.L (1989). "Selecting and effectively using a computer-aided software engineering tool". Annual Westinghouse computer symposium; 6–7 Nov 1989; Pittsburgh, PA (USA); DOE Project.
  10. ^ P. Loucopoulos and V. Karakostas (1995). System Requirements Engineering. McGraw-Hill.
  11. ^ CASE 2012-02-18 at the Wayback Machine definition In: Telecom Glossary 2000 2005-11-22 at the Wayback Machine. Retrieved 26 Oct 2008.
  12. ^ K. Robinson (1992). Putting the Software Engineering into CASE. New York : John Wiley and Sons Inc.
  13. ^ Xiao He (2007). "A metamodel for the notation of graphical modeling languages". In: Computer Software and Applications Conference, 2007. COMPSAC 2007 – Vol. 1. 31st Annual International, Volume 1, Issue, 24–27 July 2007, pp 219–224.
  14. ^ Merx, Georges G.; Norman, Ronald J. (2006). Unified Software Engineering with Java. Prentice-Hall, Inc. p. 201. ISBN 0130473766.

Further reading

  • Kit, Edward (1992). Software Testing in The Real World. Addison-Wesley Professional. ISBN 0201877562.
  • McCarthy, Jim (1995). Dynamics of Software Development. Microsoft Press. ISBN 1556158238.
  • Conde, Dan (2002). Software Product Management: Managing Software Development from Idea to Product to Marketing to Sales. Aspatore Books. ISBN 1587622025.
  • Davis, A. M. (2005). Just enough requirements management: Where software development meets marketing. Dorset House Publishing Company, Incorporated. ISBN 0932633641.
  • Hasted, Edward (2005). Software That Sells: A Practical Guide to Developing and Marketing Your Software Project. Wiley Publishing. ISBN 0764597833.
  • Hohmann, Luke (2003). Beyond Software Architecture: Creating and Sustaining Winning Solutions. Addison-Wesley Professional. ISBN 0201775948.
  • John W. Horch (2005). "Two Orientations On How To Work With Objects." In: IEEE Software. vol. 12, no. 2, pp. 117–118, Mar., 1995.
  • Rittinghouse, John (2003). Managing Software Deliverables: A Software Development Management Methodology. Digital Press. ISBN 155558313X.
  • Wiegers, Karl E. (2005). More About Software Requirements: Thorny Issues and Practical Advice. Microsoft Press. ISBN 0735622671.
  • Wysocki, Robert K. (2006). Effective Software Project Management. Wiley. ISBN 0764596365.

External links

  Media related to Software development at Wikimedia Commons Software Development

software, development, this, article, multiple, issues, please, help, improve, discuss, these, issues, talk, page, learn, when, remove, these, template, messages, this, article, needs, additional, citations, verification, please, help, improve, this, article, . This article has multiple issues Please help improve it or discuss these issues on the talk page Learn how and when to remove these template messages This article needs additional citations for verification Please help improve this article by adding citations to reliable sources Unsourced material may be challenged and removed Find sources Software development news newspapers books scholar JSTOR December 2021 Learn how and when to remove this template message This article needs to be updated Please help update this article to reflect recent events or newly available information February 2022 Some of this article s listed sources may not be reliable Please help this article by looking for better more reliable sources Unreliable citations may be challenged or deleted February 2022 Learn how and when to remove this template message This article possibly contains original research Please improve it by verifying the claims made and adding inline citations Statements consisting only of original research should be removed February 2022 Learn how and when to remove this template message This article may need to be rewritten to comply with Wikipedia s quality standards You can help The talk page may contain suggestions February 2022 Learn how and when to remove this template message Software development is the process of conceiving specifying designing programming documenting testing and bug fixing involved in creating and maintaining applications frameworks or other software components Software development involves writing and maintaining the source code but in a broader sense it includes all processes from the conception of the desired software through to the final manifestation of the software typically in a planned and structured process 1 Software development also includes research new development prototyping modification reuse re engineering maintenance or any other activities that result in software products 2 Contents 1 Methodologies 2 Software development activities 2 1 Identification of need 2 2 Planning process 3 Software developer 4 Subtopics 4 1 View model 4 2 Business process and data modelling 4 3 Computer aided software engineering 4 4 Modeling language 4 5 Programming paradigm 5 See also 5 1 Roles and industry 6 References 7 Further reading 8 External linksMethodologies EditOne system development methodology is not necessarily suitable for use by all projects Each of the available methodologies are best suited to specific kinds of projects based on various technical organizational project and team considerations 3 Software development activities EditIdentification of need Edit The sources of ideas for software products are plentiful 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 4 In the book Great Software Debates Alan M Davis states in the chapter Requirements sub chapter 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 5 Planning process Edit An important task in creating software is requirements analysis Customers typically have an abstract idea of what they want as an end result but do not know what software should do Skilled and experienced software engineers recognize incomplete ambiguous or even contradictory requirements at this point Frequently demonstrating live code may help reduce the risk that the requirements are incorrect Although much effort is put in the requirements phase to ensure that requirements are complete and consistent rarely that is the case leaving the software design phase as the most influential one when it comes to minimizing the effects of new or changing requirements Requirements volatility is challenging because they impact future or already going development efforts 6 Software developer EditA software developer is a person or company engaged in software development process including research design programming testing and other facets of creating computer software Other job titles for individuals with similar meanings include programmer software analyst or software engineer Companies specializing in software may be called software houses In a large company there may be employees whose sole responsibility consists of only one of the disciplines In smaller development environments a few people or even a single individual might handle the complete process Collaborative environments such as open source software can bring together many developers Subtopics EditView model Edit The TEAF Matrix of Views and Perspectives A view model is a framework that provides the viewpoints on the system and its environment to be used in the software development process It is a graphical representation of the underlying semantics of a view The purpose of viewpoints and views is to enable human engineers to comprehend very complex systems and to organize the elements of the problem around domains of expertise In the engineering of physically intensive systems viewpoints often correspond to capabilities and responsibilities within the engineering organization 7 Business process and data modelling Edit Graphical representation of the current state of information provides a very effective means for presenting information to both users and system developers example of the interaction between business process and data models 8 A business model illustrates the functions associated with the business process being modeled and the organizations that perform these functions By depicting activities and information flows a foundation is created to visualize define understand and validate the nature of a process A data model provides the details of information to be stored and is of primary use when the final product is the generation of computer software code for an application or the preparation of a functional specification to aid a computer software make or buy decision See the figure on the right for an example of the interaction between business process and data models 8 Usually a model is created after conducting an interview referred to as business analysis The interview consists of a facilitator asking a series of questions designed to extract required information that describes a process The interviewer is called a facilitator to emphasize that it is the participants who provide the information The facilitator should have some knowledge of the process of interest but this is not as important as having a structured methodology by which the questions are asked of the process expert The methodology is important because usually a team of facilitators is collecting information across the facility and the results of the information from all the interviewers must fit together once completed 8 The models are developed as defining either the current state of the process in which case the final product is called the as is snapshot model or a collection of ideas of what the process should contain resulting in a what can be model Generation of process and data models can be used to determine if the existing processes and information systems are sound and only need minor modifications or enhancements or if re engineering is required as a corrective action The creation of business models is more than a way to view or automate your information process Analysis can be used to fundamentally reshape the way your business or organization conducts its operations 8 Computer aided software engineering Edit Computer aided software engineering CASE in the field software engineering is the scientific application of a set of software tools and methods to the development of software which results in high quality defect free and maintainable software products 9 It also refers to methods for the development of information systems together with automated tools that can be used in the software development process 10 The term computer aided software engineering CASE can refer to the software used for the automated development of systems software i e computer code The CASE functions include analysis design and programming CASE tools automate methods for designing documenting and producing structured computer code in the desired programming language 11 Two key ideas of Computer aided Software System Engineering CASE are 12 Foster computer assistance in software development and software maintenance processes and An engineering approach to software development and maintenance Typical CASE tools exist for configuration management data modeling model transformation refactoring source code generation Anjuta a C and C IDE for the GNOME environment Modeling language Edit A modeling language is any artificial language that can be used to express information or knowledge or systems in a structure that is defined by a consistent set of rules The rules are used for interpretation of the meaning of components in the structure A modeling language can be graphical or textual 13 Programming paradigm Edit A programming paradigm is a fundamental style of computer programming which is not generally dictated by the project management methodology such as waterfall or agile Paradigms differ in the concepts and abstractions used to represent the elements of a program such as objects functions variables constraints and the steps that comprise a computation such as assignations evaluation continuations data flows Sometimes the concepts asserted by the paradigm are utilized cooperatively in high level system architecture design in other cases the programming paradigm s scope is limited to the internal structure of a particular program or module Example Grady Booch s object oriented design OOD also known as object oriented analysis and design OOAD The Booch model includes six diagrams class object state transition interaction module and process 14 See also EditContinuous integration Custom software Functional specification Programming productivity Software blueprint Software design Systems design Software development effort estimation Software development process Software industry Software project management Specification and Description Language User experience Video game development Web developmentRoles and industry Edit Computer programmer Consulting software engineer Offshore software development Software developer Software engineer Software publisherReferences Edit Application Development AppDev Defined and Explained Bestpricecomputers co uk 13 August 2007 Retrieved 5 August 2012 DRM Associates 2002 New Product Development Glossary Retrieved 29 October 2006 System Development Methodologies for Web Enabled E Business A Customization Framework Linda V Knight DePaul University USA Theresa A Steinbach DePaul University USA and Vince Kellen Blue Wolf USA Joseph M Morris 2001 Software Industry Accounting p 1 10 Alan M Davis Great Software Debates October 8 2004 pp 125 128 Wiley IEEE Computer Society Press Otero Carlos Software Design Challenges IT Performance Improvement Taylor amp Francis LLC Retrieved 19 October 2017 Edward J Barkmeyer ea 2003 Concepts for Automating Systems Integration NIST 2003 a b c d Paul R Smith amp Richard Sarfaty 1993 Creating a strategic plan for configuration management using Computer Aided Software Engineering CASE tools Paper For 1993 National DOE Contractors and Facilities CAD CAE User s Group Kuhn D L 1989 Selecting and effectively using a computer aided software engineering tool Annual Westinghouse computer symposium 6 7 Nov 1989 Pittsburgh PA USA DOE Project P Loucopoulos and V Karakostas 1995 System Requirements Engineering McGraw Hill CASE Archived 2012 02 18 at the Wayback Machine definition In Telecom Glossary 2000 Archived 2005 11 22 at the Wayback Machine Retrieved 26 Oct 2008 K Robinson 1992 Putting the Software Engineering into CASE New York John Wiley and Sons Inc Xiao He 2007 A metamodel for the notation of graphical modeling languages In Computer Software and Applications Conference 2007 COMPSAC 2007 Vol 1 31st Annual International Volume 1 Issue 24 27 July 2007 pp 219 224 Merx Georges G Norman Ronald J 2006 Unified Software Engineering with Java Prentice Hall Inc p 201 ISBN 0130473766 Further reading EditKit Edward 1992 Software Testing in The Real World Addison Wesley Professional ISBN 0201877562 McCarthy Jim 1995 Dynamics of Software Development Microsoft Press ISBN 1556158238 Conde Dan 2002 Software Product Management Managing Software Development from Idea to Product to Marketing to Sales Aspatore Books ISBN 1587622025 Davis A M 2005 Just enough requirements management Where software development meets marketing Dorset House Publishing Company Incorporated ISBN 0932633641 Hasted Edward 2005 Software That Sells A Practical Guide to Developing and Marketing Your Software Project Wiley Publishing ISBN 0764597833 Hohmann Luke 2003 Beyond Software Architecture Creating and Sustaining Winning Solutions Addison Wesley Professional ISBN 0201775948 John W Horch 2005 Two Orientations On How To Work With Objects In IEEE Software vol 12 no 2 pp 117 118 Mar 1995 Rittinghouse John 2003 Managing Software Deliverables A Software Development Management Methodology Digital Press ISBN 155558313X Wiegers Karl E 2005 More About Software Requirements Thorny Issues and Practical Advice Microsoft Press ISBN 0735622671 Wysocki Robert K 2006 Effective Software Project Management Wiley ISBN 0764596365 External links Edit Media related to Software development at Wikimedia Commons Software Development Retrieved from https en wikipedia org w index php title Software development amp oldid 1131896012, wikipedia, wiki, book, books, library,

article

, read, download, free, free download, mp3, video, mp4, 3gp, jpg, jpeg, gif, png, picture, music, song, movie, book, game, games.