Software development models Several models exist to streamline - TopicsExpress



          

Software development models Several models exist to streamline the development process. Each one has its pros and cons, and it is up to the development team to adopt the most appropriate one for the project. Sometimes a combination of the models may be more suitable. Waterfall model Main article: Waterfall model The activities of the software development process represented in the waterfall model. There are several other models to represent this process. The waterfall model shows a process, where developers are to follow these phases in order: Requirements specification (Requirements analysis) Software design Implementation and Integration Testing (or Validation) Deployment (or Installation) Maintenance In a strict Waterfall model, after each phase is finished, it proceeds to the next one. Reviews may occur before moving to the next phase which allows for the possibility of changes (which may involve a formal change control process). Reviews may also be employed to ensure that the phase is indeed complete; the phase completion criteria are often referred to as a gate that the project must pass through to move to the next phase. Waterfall discourages revisiting and revising any prior phase once its complete. This inflexibility in a pure Waterfall model has been a source of criticism by supporters of other more flexible models. The Waterfall model is also commonly taught with the mnemonic A Dance in the Dark Every Monday, representing Analysis, Design, Implementation, Testing, Documentation and Execution, and Maintenance.[citation needed] Spiral model Main article: Spiral model Spiral model (Boehm, 1988) The key characteristic of a Spiral model is risk management at regular stages in the development cycle. In 1988, Barry Boehm published a formal software system development spiral model, which combines some key aspect of the waterfall model and rapid prototyping methodologies, but provided emphasis in a key area many felt had been neglected by other methodologies: deliberate iterative risk analysis, particularly suited to large-scale complex systems. The Spiral is visualized as a process passing through some number of iterations, with the four quadrant diagram representative of the following activities: Formulate plans to: identify software targets, implement the program, clarify the project development restrictions Risk analysis: an analytical assessment of selected programs, to consider how to identify and eliminate risk Implementation of the project: the implementation of software development and verification Risk-driven spiral model, emphasizing the conditions of options and constraints in order to support software reuse, software quality can help as a special goal of integration into the product development. However, the spiral model has some restrictive conditions, as follows: The spiral model emphasizes risk analysis, and thus requires customers to accept this analysis and act on it. This requires both trust in the developer as well as the willingness to spend more to fix the issues, which is the reason why this model is often used for large-scale internal software development. If the implementation of risk analysis will greatly affect the profits of the project, the spiral model should not be used. Software developers have to actively look for possible risks, and analyze it accurately for the spiral model to work. The first stage is to formulate a plan to achieve the objectives with these constraints, and then strive to find and remove all potential risks through careful analysis and, if necessary, by constructing a prototype. If some risks can not be ruled out, the customer has to decide whether to terminate the project or to ignore the risks and continue anyway. Finally, the results are evaluated and the design of the next phase begins. Iterative and incremental development Main article: Iterative and incremental development Iterative development[2] prescribes the construction of initially small but ever-larger portions of a software project to help all those involved to uncover important issues early before problems or faulty assumptions can lead to disaster. Agile development Main article: Agile software development Agile software development uses iterative development as a basis but advocates a lighter and more people-centric viewpoint than traditional approaches. Agile processes fundamentally incorporate iteration and the continuous feedback that it provides to successively refine and deliver a software system. There are many variations of agile processes: In Extreme Programming (XP), the phases are carried out in extremely small (or continuous) steps compared to the older, batch processes. The (intentionally incomplete) first pass through the steps might take a day or a week, rather than the months or years of each complete step in the Waterfall model. First, one writes automated tests, to provide concrete goals for development. Next is coding (by a pair of programmers), which is complete when all the tests pass, and the programmers cant think of any more tests that are needed. Design and architecture emerge out of refactoring, and come after coding. The same people who do the coding do design. (Only the last feature — merging design and code — is common to all the other agile processes.) The incomplete but functional system is deployed or demonstrated for (some subset of) the users (at least one of which is on the development team). At this point, the practitioners start again on writing tests for the next most important part of the system.[3] Dynamic systems development method Rapid application development Rapid Application Development (RAD) Model Rapid application development R.A.D is a software development methodology that uses minimal planning in favor of rapid prototyping. The planning of software developed using RAD is interleaved with writing the software itself. The lack of extensive pre-planning generally allows software to be written much faster, and makes it easier to change requirements.RAD involves methods like iterative development and software prototyping. According to Whitten (2004), it is a merger of various structured techniques, especially data-driven Information Engineering, with prototyping techniques to accelerate software systems development.[4] In rapid application development, structured techniques and prototyping are especially used to define users requirements and to design the final system. The development process starts with the development of preliminary data models and business process models using structured techniques. In the next stage, requirements are verified using prototyping, eventually to refine the data and process models. These stages are repeated iteratively; further development results in a combined business requirements and technical design statement to be used for constructing new systems.[4] Code and fix Code and fix development is not so much a deliberate strategy as an artifact of naïveté and schedule pressure on software developers.[5] Without much of a design in the way, programmers immediately begin producing code. At some point, testing begins (often late in the development cycle), and the unavoidable bugs must then be fixed before the product can be shipped. See also: Continuous integration and Cowboy coding Process improvement models Capability Maturity Model Integration The Capability Maturity Model Integration (CMMI) is one of the leading models and based on best practice. Independent assessments grade organizations on how well they follow their defined processes, not on the quality of those processes or the software produced. CMMI has replaced CMM. ISO 9000 ISO 9000 describes standards for a formally organized process to manufacture a product and the methods of managing and monitoring progress. Although the standard was originally created for the manufacturing sector, ISO 9000 standards have been applied to software development as well. Like CMMI, certification with ISO 9000 does not guarantee the quality of the end result, only that formalized business processes have been followed. ISO/IEC 15504 ISO/IEC 15504 Information technology — Process assessment also known as Software Process Improvement Capability Determination (SPICE), is a framework for the assessment of software processes. This standard is aimed at setting out a clear model for process comparison. SPICE is used much like CMMI. It models processes to manage, control, guide and monitor software development. This model is then used to measure what a development organization or project team actually does during software development. This information is analyzed to identify weaknesses and drive improvement. It also identifies strengths that can be continued or integrated into common practice for that organization or team. Formal methods Formal methods are mathematical approaches to solving software (and hardware) problems at the requirements, specification, and design levels. Formal methods are most likely to be applied to safety-critical or security-critical software and systems, such as avionics software. Software safety assurance standards, such as DO-178B, DO-178C, and Common Criteria demand formal methods at the highest levels of categorization. For sequential software, examples of formal methods include the B-Method, the specification languages used in automated theorem proving, RAISE, and the Z notation. Formalization of software development is creeping in, in other places, with the application of Object Constraint Language (and specializations such as Java Modeling Language) and especially with model-driven architecture allowing execution of designs, if not specifications. For concurrent software and systems, Petri nets, process algebra, and finite state machines (which are based on automata theory - see also virtual finite state machine or event driven finite state machine) allow executable software specification and can be used to build up and validate application behavior. Another emerging trend in software development is to write a specification in some form of logic (usually a variation of first-order logic (FOL), and then to directly execute the logic as though it were a program. The OWL language, based on Description Logic (DL), is an example. There is also work on mapping some version of English (or another natural language) automatically to and from logic, and executing the logic directly. Examples are Attempto Controlled English, and Internet Business Logic, which do not seek to control the vocabulary or syntax. A feature of systems that support bidirectional English-logic mapping and direct execution of the logic is that they can be made to explain their results, in English, at the business or scientific level. See also Development methods Chaos model Extreme Programming ICONIX (UML-based object modeling with use cases) Incremental funding methodology Model-driven engineering Service-oriented modeling Software prototyping Specification and Description Language Top–down and bottom–up design Unified Process User experience V-Model (software development) Verification and Validation (software) Related subjects Bachelor of Science in Information Technology Best Coding Practices Conceptual model Cost estimation in software engineering IPO Model List of software development philosophies Method engineering Outline of software engineering Performance engineering Process (computing) Programming paradigm Programming productivity Project Rapid application development Service-oriented modeling Software design Software development Software documentation Software release life cycle Systems design Systems Development Life Cycle Test effort References Jump up ^ 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 Jump up ^ ieeecomputersociety.org Jump up ^ Kent Beck, Extreme Programming, 2000. ^ Jump up to: a b Whitten, Jeffrey L.; Lonnie D. Bentley, Kevin C. Dittman. (2003). Systems Analysis and Design Methods. 6th edition. ISBN 0-256-19906-X. Jump up ^ McConnell, Steve. 7: Lifecycle Planning. Rapid Development. Redmond, Washington: Microsoft Press. p. 140. External links Wikimedia Commons has media related to Software development process. Gerhard Fischer, The Software Technology of the 21st Century: From Software Reuse to Collaborative Software Design, 2001 Lydia Ash: The Web Testing Companion: The Insiders Guide to Efficient and Effective Tests, Wiley, May 2, 2003. ISBN 0-471-43021-8 SaaSSDLC — Software as a Service Systems Development Life Cycle Project Software development life cycle (SDLC) [visual image], software development life cycle Heraprocess.org — Hera is a light process solution for managing web projects [hide] v t e Software engineering Fields Computer programming Software Requirements Software deployment Software design Software maintenance Software testing Systems analysis Formal methods Concepts Data modeling Enterprise architecture Functional specification Modeling language Orthogonality Programming paradigm Software Software architecture Software development methodology Software development process Software quality Software quality assurance Software archaeology Structured analysis Orientations Agile Aspect-oriented Object orientation Ontology Service orientation SDLC Models Developmental Agile EUP Executable UML Incremental model Iterative model RUP Scrum Prototype model Spiral model V-Model Waterfall model XP Other SPICE CMMI Data model ER model Function model Information model Metamodeling Object model Systems model View model Languages IDEF UML SysML Software engineers Kent Beck Grady Booch Fred Brooks Barry Boehm Peter Chen Ward Cunningham Ole-Johan Dahl Tom DeMarco Martin Fowler C. A. R. Hoare Watts Humphrey Michael A. Jackson Ivar Jacobson James Martin Stephen J. Mellor Bertrand Meyer David Parnas Winston W. Royce James Rumbaugh Niklaus Wirth Edward Yourdon Victor Basili Related fields Computer science Computer engineering Enterprise engineering History Management Project management Quality management Software ergonomics Systems engineering Category Category Commons Categories: Software development process Formal methods Methodology Software engineering Navigation menu Create account Log in Article Talk Read Edit View history Main page Contents Featured content Current events Random article Donate to Wikipedia Interaction Help About Wikipedia Community portal Recent changes Contact page Toolbox Print/export Languages العربية Česky Dansk Deutsch Español فارسی Galego 한국어 हिन्दी Bahasa Indonesia Italiano עברית Basa Jawa Lietuvių Nederlands 日本語 Norsk bokmål Polski Português Shqip کوردی Svenska Türkçe Tiếng Việt 中文 Edit links This page was last modified on 21 October 2013 at 15:27. Text is available under the Creative Commons Attribution-ShareAlike License; additional terms may apply. By using this site, you agree to the Terms of Use and Privacy Policy. Wikipedia® is a registered trademark of the Wikimedia Foundation, Inc., a non-profit organization.
Posted on: Sun, 27 Oct 2013 08:41:50 +0000

Trending Topics



Recently Viewed Topics




© 2015