fbpx
Wikipedia

Software development

For other uses, see Software development (disambiguation).

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. Software development also includes 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 purposes[according to whom?] are: to meet specific needs of a specific client or organization (known as custom software),[citation needed] to meet a perceived need of some set of potential users (known as commercial software ),[citation needed] or for personal use (e.g. a scientist may write software to automate a mundane task).[citation needed] Embedded software development, that is, the development of embedded software, such as used for controlling consumer products, requires the development process to be integrated with the development of the controlled physical product. System software underlies applications and the programming process itself, and is often developed separately.

There are many approaches to software project management, known as software development life cycle models, methodologies, processes, or models. The waterfall model is a traditional version, contrasted with the more recent innovation of agile software development.[citation needed] Though it is often used as an interchangeable synonym for "software development", the term "software engineering" is also used to refer to a particular approach to software development, which uses engineering methods and in some cases involves professional engineering qualifications.

Contents

This section does not cite any sources. Please help improve this section by . Unsourced material may be challenged and removed.(August 2010) ()

A software development process (also known as a software development methodology, model, or life cycle) is a framework that is used to structure, plan, and control the process of developing information systems.[citation needed] A wide variety of such frameworks has evolved over the years, each with its own recognized strengths and weaknesses. There are several different approaches to software development: some take a structured, engineering-based approach to developing software, whereas others may take an incremental approach, where software evolves as it is developed piece-by-piece.[citation needed] 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.

Most methodologies share some combination of the following stages of software development:[citation needed]

  • Analyzing the problem
  • Market research
  • Gathering requirements for the proposed software
  • Devising a plan or design for the software
  • Implementation (coding) of the software
  • Testing and debugging the software
  • Deployment
  • Maintenance and bug fixing

The stages are often referred to collectively as the software development life-cycle, or SDLC.[citation needed] 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 “structured” approach), or they may be repeated over various cycles or iterations (an "extreme" approach).[citation needed]The extreme approach usually involves less time spent on planning and documentation, and more time spent on coding and development of automated tests.[citation needed] Extreme approaches also promote continuous testing throughout the development life-cycle, as well as having a working product at all times.[citation needed] Structured approaches attempt to assess the majority of risks and develop a detailed plan for the software before implementation begins, and avoid significant design changes and re-coding in later stages of the software development life-cycle planning.[citation needed]

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.

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.

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.

Planning process

Planning is an objective of each and every activity, where we want to discover things that belong to the project. An important task in creating a software program is extracting the requirements or 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."

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.

Designing

Main articles: Software design and Systems design

Once the requirements are established, the design of the software can be established in a software design document. This involves a preliminary or high-level design of the main modules with an overall picture (such as a block diagram) of how the parts fit together. The language, operating system, and hardware components should all be known at this time. Then a detailed or low-level design is created, perhaps with prototyping as proof-of-concept or to firm up requirements.

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 phase of the software development process. This part of the process ensures that defects are recognized as soon as possible. In some processes, generally known as test-driven development, tests may be developed just before implementation and serve as a guide for the implementation's correctness.

Documenting the internal design of software for the purpose of future maintenance and enhancement is done throughout development. This may also include the writing of an API, be it external or internal. The software engineering process chosen by the developing team will determine how much internal documentation (if any) is necessary. Plan-driven models (e.g., Waterfall) generally produce more documentation than Agile models.

Deployment and maintenance

Deployment starts directly after the code is appropriately tested, approved for release, and sold or otherwise distributed into a production environment. This may involve installation, customization (such as by setting parameters to the customer's values), testing, and possibly an extended period of evaluation.[citation needed]

Software training and support is important, as software is only effective if it is used correctly.[citation needed]

Maintaining and enhancing software to cope with newly discovered faults or requirements can take substantial time and effort, as missed requirements may force redesign of the software.[citation needed]. In most cases maintenance is required on regular basis to fix reported issues and keep the software running.

In computer programming both software development and web development refers to the same engineer or programmer and the process of coding.

Note: software programs, esp. mobile apps can operate on the web.

Software development is focused on the programs (or software) used in computer systems. Software developers are responsible for the concept, creation, programming, some documenting, testing, improving and maintaining the software and its software components.

Software developers (and mobile software engineers) create programs and mobile applications for stand-alone desktop computers and mobile devices and their platforms.

Software developers need to have understanding of not only development best practices, but also the theory behind the programming.

Web developers use coding and writing markup to create interactive webpages.

Web development can be divided into two separates, the client side and server side. Client-side programming is responsible for every element that users can directly access on the web page, and the client-side systems allow the users to tell the webpage what they want it to do, while the server-side systems are responsible for fulfilling those requests.

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.

Most complex system specifications are so extensive that no one individual can fully comprehend all aspects of the specifications. Furthermore, we all have different interests in a given system and different reasons for examining the system's specifications. A business executive will ask different questions of a system make-up than would a system implementer. The concept of viewpoints framework, therefore, is to provide separate viewpoints into the specification of a given complex system. These viewpoints each satisfy an audience with interest in some set of aspects of the system. Associated with each viewpoint is a viewpoint language that optimizes the vocabulary and presentation for the audience of that viewpoint.

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

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.

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.

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. It also refers to methods for the development of information systems together with automated tools that can be used in the software development process. 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.

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

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

Integrated development environment

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

An integrated development environment (IDE) also known as integrated design environment or integrated debugging environment is a software application that provides comprehensive facilities to computer programmers for software development. An IDE normally consists of a:

IDEs are designed to maximize programmer productivity by providing tight-knit components with similar user interfaces. Typically an IDE is dedicated to a specific programming language, so as to provide a feature set which most closely matches the programming paradigms of the language.

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. Graphical modeling languages use a diagram techniques with named symbols that represent concepts and lines that connect the symbols and that represent relationships and various other graphical annotation to represent constraints. Textual modeling languages typically use standardized keywords accompanied by parameters to make computer-interpretable expressions.

Examples of graphical modelling languages in the field of software engineering are:

Not all modeling languages are executable, and for those that are, using them doesn't necessarily mean that programmers are no longer needed. On the contrary, executable modeling languages are intended to amplify the productivity of skilled programmers, so that they can address more difficult problems, such as parallel computing and distributed systems.

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.

A programming language can support multiple paradigms. For example, programs written in C++ or Object Pascal can be purely procedural, or purely object-oriented, or contain elements of both paradigms. Software designers and programmers decide how to use those paradigm elements. In object-oriented programming, programmers can think of a program as a collection of interacting objects, while in functional programming a program can be thought of as a sequence of stateless function evaluations. When programming computers or systems with many processors, process-oriented programming allows programmers to think about applications as sets of concurrent processes acting upon logically shared data structures.

Just as different groups in software engineering advocate different methodologies, different programming languages advocate different programming paradigms. Some languages are designed to support one paradigm (Smalltalk supports object-oriented programming, Haskell supports functional programming), while other programming languages support multiple paradigms (such as Object Pascal, C++, C#, Visual Basic, Common Lisp, Scheme, Python, Ruby, and Oz).

Many programming paradigms are as well known for what methods they forbid as for what they enable. For instance, pure functional programming forbids using side-effects; structured programming forbids using goto statements. Partly for this reason, new paradigms are often regarded as doctrinaire or overly rigid by those accustomed to earlier styles.[citation needed] Avoiding certain methods can make it easier to prove theorems about a program's correctness, or simply to understand its behavior.

Examples of high-level paradigms include:

Software reuse

This section may need to be rewritten to comply with Wikipedia's quality standards. You can help. The talk page may contain suggestions.(May 2016)

A definition of software reuse is the process of creating software from predefined software components. A software reuse approach seeks to increase or maximise the use of existing software artefacts in the software development lifecycle.
The following are some common software reuse methods:

Roles and industry

Specific applications

  1. "Application Development (AppDev) Defined and Explained". Bestpricecomputers.co.uk. 2007-08-13. Retrieved2012-08-05.
  2. DRM Associates (2002). "New Product Development Glossary". Retrieved2006-10-29.
  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. Ralph, P., and Wand, Y. A Proposal for a Formal Definition of the Design Concept. In, Lyytinen, K., Loucopoulos, P., Mylopoulos, J., and Robinson, W., (eds.), Design Requirements Engineering: A Ten-Year Perspective: Springer-Verlag, 2009, pp. 103-136
  7. Otero, Carlos. "Software Design Challenges". IT Performance Improvement. Taylor & Francis LLC. Retrieved19 October 2017.
  8. Web Development vs. Software Development
  9. Edward J. Barkmeyer ea (2003). Concepts for Automating Systems Integration NIST 2003.
  10. 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.
  11. 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.
  12. P. Loucopoulos and V. Karakostas (1995). System Requirements Engineering. McGraw-Hill.
  13. 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.
  14. K. Robinson (1992). Putting the Software Engineering into CASE. New York : John Wiley and Sons Inc.
  15. 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.
  16. Merx, Georges G.; Norman, Ronald J. (2006). Unified Software Engineering with Java. Prentice-Hall, Inc. p. 201. ISBN 0130473766.
Wikimedia Commons has media related toSoftware development.
  • 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.

Software development
Software development Language Watch Edit For other uses see Software development disambiguation 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 Software can be developed for a variety of purposes The three most common purposes according to whom are to meet specific needs of a specific client or organization known as custom software citation needed to meet a perceived need of some set of potential users known as commercial software citation needed or for personal use e g a scientist may write software to automate a mundane task citation needed Embedded software development that is the development of embedded software such as used for controlling consumer products requires the development process to be integrated with the development of the controlled physical product System software underlies applications and the programming process itself and is often developed separately There are many approaches to software project management known as software development life cycle models methodologies processes or models The waterfall model is a traditional version contrasted with the more recent innovation of agile software development citation needed Though it is often used as an interchangeable synonym for software development the term software engineering is also used to refer to a particular approach to software development which uses engineering methods and in some cases involves professional engineering qualifications Contents 1 Methodologies 2 Software development activities 2 1 Identification of need 2 2 Planning process 2 3 Designing 2 4 Implementation testing and documenting 2 5 Deployment and maintenance 3 Software development vs Web development 4 Subtopics 4 1 View model 4 2 Business process and data modelling 4 3 Computer aided software engineering 4 4 Integrated development environment 4 5 Modeling language 4 6 Programming paradigm 4 7 Software reuse 5 See also 5 1 Roles and industry 5 2 Specific applications 6 References 7 Further readingMethodologies EditThis section does not cite any sources Please help improve this section by adding citations to reliable sources Unsourced material may be challenged and removed August 2010 Learn how and when to remove this template message A software development process also known as a software development methodology model or life cycle is a framework that is used to structure plan and control the process of developing information systems citation needed A wide variety of such frameworks has evolved over the years each with its own recognized strengths and weaknesses There are several different approaches to software development some take a structured engineering based approach to developing software whereas others may take an incremental approach where software evolves as it is developed piece by piece citation needed 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 Most methodologies share some combination of the following stages of software development citation needed Analyzing the problem Market research Gathering requirements for the proposed software Devising a plan or design for the software Implementation coding of the software Testing and debugging the software Deployment Maintenance and bug fixing The stages are often referred to collectively as the software development life cycle or SDLC citation needed 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 structured approach or they may be repeated over various cycles or iterations an extreme approach citation needed The extreme approach usually involves less time spent on planning and documentation and more time spent on coding and development of automated tests citation needed Extreme approaches also promote continuous testing throughout the development life cycle as well as having a working product at all times citation needed Structured approaches attempt to assess the majority of risks and develop a detailed plan for the software before implementation begins and avoid significant design changes and re coding in later stages of the software development life cycle planning citation needed 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 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 Planning process Edit Planning is an objective of each and every activity where we want to discover things that belong to the project An important task in creating a software program is extracting the requirements or requirements analysis 6 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 7 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 Designing Edit Main articles Software design and Systems design Once the requirements are established the design of the software can be established in a software design document This involves a preliminary or high level design of the main modules with an overall picture such as a block diagram of how the parts fit together The language operating system and hardware components should all be known at this time Then a detailed or low level design is created perhaps with prototyping as proof of concept or to firm up requirements Implementation testing and documenting Edit Implementation is the part of the process where software engineers actually program the code for the project Software testing is an integral and important phase of the software development process This part of the process ensures that defects are recognized as soon as possible In some processes generally known as test driven development tests may be developed just before implementation and serve as a guide for the implementation s correctness Documenting the internal design of software for the purpose of future maintenance and enhancement is done throughout development This may also include the writing of an API be it external or internal The software engineering process chosen by the developing team will determine how much internal documentation if any is necessary Plan driven models e g Waterfall generally produce more documentation than Agile models Deployment and maintenance Edit Deployment starts directly after the code is appropriately tested approved for release and sold or otherwise distributed into a production environment This may involve installation customization such as by setting parameters to the customer s values testing and possibly an extended period of evaluation citation needed Software training and support is important as software is only effective if it is used correctly citation needed Maintaining and enhancing software to cope with newly discovered faults or requirements can take substantial time and effort as missed requirements may force redesign of the software citation needed In most cases maintenance is required on regular basis to fix reported issues and keep the software running Software development vs Web development EditIn computer programming both software development and web development refers to the same engineer or programmer and the process of coding 8 Note software programs esp mobile apps can operate on the web Software development is focused on the programs or software used in computer systems Software developers are responsible for the concept creation programming some documenting testing improving and maintaining the software and its software components 8 Software developers and mobile software engineers create programs and mobile applications for stand alone desktop computers and mobile devices and their platforms 8 Software developers need to have understanding of not only development best practices but also the theory behind the programming 8 Web developers use coding and writing markup to create interactive webpages 8 Web development can be divided into two separates the client side and server side Client side programming is responsible for every element that users can directly access on the web page and the client side systems allow the users to tell the webpage what they want it to do while the server side systems are responsible for fulfilling those requests 8 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 9 Most complex system specifications are so extensive that no one individual can fully comprehend all aspects of the specifications Furthermore we all have different interests in a given system and different reasons for examining the system s specifications A business executive will ask different questions of a system make up than would a system implementer The concept of viewpoints framework therefore is to provide separate viewpoints into the specification of a given complex system These viewpoints each satisfy an audience with interest in some set of aspects of the system Associated with each viewpoint is a viewpoint language that optimizes the vocabulary and presentation for the audience of that viewpoint 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 10 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 10 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 10 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 10 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 11 It also refers to methods for the development of information systems together with automated tools that can be used in the software development process 12 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 13 Two key ideas of Computer aided Software System Engineering CASE are 14 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 Integrated development environment Edit Anjuta a C and C IDE for the GNOME environment An integrated development environment IDE also known as integrated design environment or integrated debugging environment is a software application that provides comprehensive facilities to computer programmers for software development An IDE normally consists of a Source code editor Compiler or interpreter Build automation tools and Debugger usually IDEs are designed to maximize programmer productivity by providing tight knit components with similar user interfaces Typically an IDE is dedicated to a specific programming language so as to provide a feature set which most closely matches the programming paradigms of the language 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 15 Graphical modeling languages use a diagram techniques with named symbols that represent concepts and lines that connect the symbols and that represent relationships and various other graphical annotation to represent constraints Textual modeling languages typically use standardized keywords accompanied by parameters to make computer interpretable expressions Examples of graphical modelling languages in the field of software engineering are Business Process Modeling Notation BPMN and the XML form BPML is an example of a process modeling language EXPRESS and EXPRESS G ISO 10303 11 is an international standard general purpose data modeling language Extended Enterprise Modeling Language EEML is commonly used for business process modeling across layers Flowchart is a schematic representation of an algorithm or a stepwise process Fundamental Modeling Concepts FMC modeling language for software intensive systems IDEF is a family of modeling languages the most notable of which include IDEF0 for functional modeling IDEF1X for information modeling and IDEF5 for modeling ontologies LePUS3 is an object oriented visual Design Description Language and a formal specification language that is suitable primarily for modelling large object oriented Java C C programs and design patterns Specification and Description Language SDL is a specification language targeted at the unambiguous specification and description of the behavior of reactive and distributed systems Unified Modeling Language UML is a general purpose modeling language that is an industry standard for specifying software intensive systems UML 2 0 the current version supports thirteen different diagram techniques and has widespread tool support Not all modeling languages are executable and for those that are using them doesn t necessarily mean that programmers are no longer needed On the contrary executable modeling languages are intended to amplify the productivity of skilled programmers so that they can address more difficult problems such as parallel computing and distributed systems 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 A programming language can support multiple paradigms For example programs written in C or Object Pascal can be purely procedural or purely object oriented or contain elements of both paradigms Software designers and programmers decide how to use those paradigm elements In object oriented programming programmers can think of a program as a collection of interacting objects while in functional programming a program can be thought of as a sequence of stateless function evaluations When programming computers or systems with many processors process oriented programming allows programmers to think about applications as sets of concurrent processes acting upon logically shared data structures Just as different groups in software engineering advocate different methodologies different programming languages advocate different programming paradigms Some languages are designed to support one paradigm Smalltalk supports object oriented programming Haskell supports functional programming while other programming languages support multiple paradigms such as Object Pascal C C Visual Basic Common Lisp Scheme Python Ruby and Oz Many programming paradigms are as well known for what methods they forbid as for what they enable For instance pure functional programming forbids using side effects structured programming forbids using goto statements Partly for this reason new paradigms are often regarded as doctrinaire or overly rigid by those accustomed to earlier styles citation needed Avoiding certain methods can make it easier to prove theorems about a program s correctness or simply to understand its behavior Examples of high level paradigms include Aspect oriented software development Domain specific modeling Model driven engineering Object oriented programming methodologies 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 16 Search based software engineering Service oriented modeling Structured programming Top down and bottom up design Top down programming evolved in the 1970s by IBM researcher Harlan Mills and Niklaus Wirth in developed structured programming Software reuse Edit This section may need to be rewritten to comply with Wikipedia s quality standards You can help The talk page may contain suggestions May 2016 A definition of software reuse is the process of creating software from predefined software components A software reuse approach seeks to increase or maximise the use of existing software artefacts in the software development lifecycle The following are some common software reuse methods A software framework is a reusable design or implementation for a software system or subsystem Component based software engineering involves integrating together existing components to create an application Service oriented architectures or service oriented programming builds upon the concept of components to provide networked services such as web services Software product lines seek to develop software based upon a common set of core assets and process in order to produce a range of products or applications for a particular market API Application programming interface establish a set of subroutine definitions protocols and tools for building application software which can be utilised in future builds Open Source documentations via libraries such as GitHub provide free code for software developers to re use and implement into new applications or designs See also EditContinuous integration Custom software DevOps Functional specification Programming productivity Software blueprint Software design Software development effort estimation Software development process Software industry Software project management Specification and Description Language User experience Web developmentRoles and industry Edit Bachelor of Science in Information Technology Computer programmer Consulting software engineer Offshore software development Software developer Software engineer Software publisherSpecific applications Edit Video game development Web application development Web engineering Mobile Application DevelopmentReferences Edit Application Development AppDev Defined and Explained Bestpricecomputers co uk 2007 08 13 Retrieved 2012 08 05 DRM Associates 2002 New Product Development Glossary Retrieved 2006 10 29 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 Ralph P and Wand Y A Proposal for a Formal Definition of the Design Concept In Lyytinen K Loucopoulos P Mylopoulos J and Robinson W eds Design Requirements Engineering A Ten Year Perspective Springer Verlag 2009 pp 103 136 Otero Carlos Software Design Challenges IT Performance Improvement Taylor amp Francis LLC Retrieved 19 October 2017 a b c d e f Web Development vs Software Development 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 EditWikimedia Commons has media related to Software development 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 Retrieved from https en wikipedia org w index php title Software development amp oldid 1053685322, 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.