SEC 308 Yazılım Mühendisliği Software Process Models

Slides:



Advertisements
Similar presentations
Prescriptive Process models
Advertisements

CS487 Software Engineering Omar Aldawud
Chapter 3 Process Models
Chapter 2 Software Process Models
Software Development Methodologies 1. A methodology is: A collection of procedures, techniques, principles, and tools that help developers build a computer.
1 Prescriptive Process Models. 2 Prescriptive Models Prescriptive process models advocate an orderly approach to software engineering Prescriptive process.
Slide Set to accompany Web Engineering: A Practitioner’s Approach
Agile Project Management with Scrum
These slides are designed to accompany Software Engineering: A Practitioner’s Approach, 7/e (McGraw-Hill, 2009) Slides copyright 2009 by Roger Pressman.1.
Agile Architecture? Paul Lund 24 th Nov Agile Manifesto We are uncovering better ways of developing software by doing it and helping others do it.
Agile Methods.
Software Engineering: A Practitioner’s Approach, 6/e Chapter 4 Agile Development copyright © 1996, 2001, 2005 R.S. Pressman & Associates, Inc. For University.
Coming up: The Manifesto for Agile Software Development 1 Software Engineering: A Practitioner’s Approach, 7/e Chapter 3 Agile Development Software Engineering:
Agile Process: Overview n Agile software engineering represents a reasonable compromise to conventional software engineering for certain classes of software.
Software Engineering Lecture No:12. Lecture # 7
An Agile View of Process
Software engineering Process models Pavel Agejkin.
Chapter 2 The process Process, Methods, and Tools
Software Process and Models
Software Engineering: A Practitioner’s Approach, 6/e Chapter 2, 3, &4 Process copyright © 1996, 2001, 2005 R.S. Pressman & Associates, Inc. For University.
1 Agile Methodology & Programming Ric Holt July 2009.
These courseware materials are to be used in conjunction with Software Engineering: A Practitioner’s Approach, 6/e and are provided with permission by.
Software Engineering Modern Approaches
These slides are designed to accompany Software Engineering: A Practitioner’s Approach, 7/e (McGraw-Hill, 2009) Slides copyright 2009 by Roger Pressman.1.
Developed by Reneta Barneva, SUNY Fredonia Agile Development.
Chapter 4 Agile Development
Software Engineering 1 Object-oriented Analysis and Design Applying UML and Patterns An Introduction to Object-oriented Analysis and Design and Iterative.
Chapter 5 Agile Development Chapter 5 Agile Development Moonzoo Kim KAIST 1.
Chapter 4 An Agile View of Process
Chapter 4 Agile Development 1. The Manifesto for Agile Software Development 2 “We are uncovering better ways of developing software by doing it and helping.
Chapter 5 애자일 개발 Agile Development
These courseware materials are to be used in conjunction with Software Engineering: A Practitioner’s Approach, 6/e and are provided with permission by.
Software Life Cycle Models. Waterfall Model  The Waterfall Model is the earliest method of structured system development.  The original waterfall model.
Coming up: The Manifesto for Agile Software Development 1 Software Engineering: A Practitioner’s Approach, 7/e Chapter 3 Agile Development Software Engineering:
1/23 Prescriptive Process Models. 2/23 Prescriptive Models Prescriptive process models advocate an orderly approach to software engineering Prescriptive.
Software Engineering Saeed Akhtar The University of Lahore Lecture 5 Originally shared for: mashhoood.webs.com.
1 The Manifesto for Agile Software Development “We are uncovering better ways of developing software by doing it and helping others do it. Through this.
CS 3610: Software Engineering – Fall 2009 Dr. Hisham Haddad – CSIS Dept. Chapter 4 Agile Development Discussion of Agile Development and Agile Process.
Chapter 3 Agile Development
Software Engineering (CSI 321) An Agile View of Process 1.
These slides are designed to accompany Software Engineering: A Practitioner’s Approach, 7/e (McGraw-Hill, 2009) Slides copyright 2009 by Roger Pressman.1.
- Discussion of Chapter 1 in Martin and Martin.  We are uncovering better ways of developing software by doing it and helping others do it. Through this.
Chapter 3 Agile Development
These courseware materials are to be used in conjunction with Software Engineering: A Practitioner’s Approach, 6/e and are provided with permission by.
CS 4500: Software Development Software Process. Materials Sommmerville Chapters 1, 2 and 3 Software Cycle and Models:
TIK 302 Rekayasa Perangkat Lunak Agile Proses. Agile View of Process Represents a reasonable compromise between conventional software engineering for.
Industrial Software Development Process Bashar Ahmad RISC Software GmbH.
1 The economies of ALL developed nations are dependent on software The economies of ALL developed nations are dependent on software More and more systems.
Embedded Systems Software Engineering
Chapter 5 Agile Development Moonzoo Kim KAIST
Software Engineering: A Practitioner’s Approach, 6/e Chapter 4 Agile Development copyright © 1996, 2001, 2005 R.S. Pressman & Associates, Inc. For University.
Introduction to Agile Software Development
Software & Software Engineering Pertemuan-4 Dosen :Kundang K Juman
Software Engineering: A Practitioner’s Approach, 6/e Chapter 4 Agile Development copyright © 1996, 2001, 2005 R.S. Pressman & Associates, Inc. For University.
Software Engineering: A Practitioner’s Approach, 7/e Chapter 3 Agile Development copyright © 1996, 2001, 2005 R.S. Pressman & Associates, Inc. For University.
Software Engineering: A Practitioner’s Approach, 6/e Chapter 4 Agile Development copyright © 1996, 2001, 2005 R.S. Pressman & Associates, Inc. For University.
Chapter 5 Agile Development
Software Engineering (CSI 321)
Chapter 3 Agile Development
Introduction to Software Engineering
Chapter 3 Agile Development
Agile Process: Overview
Chapter 3 Agile Development
Chapter 3 Agile Development
Software Engineering: A Practitioner’s Approach, 6/e Chapter 4 Agile Development copyright © 1996, 2001, 2005 R.S. Pressman & Associates, Inc. For University.
Software Engineering: A Practitioner’s Approach, 6/e Chapter 4 Agile Development copyright © 1996, 2001, 2005 R.S. Pressman & Associates, Inc. For University.
The Manifesto for Agile Software Development
Chapter 3 Agile Development
Agile Development.
Presentation transcript:

SEC 308 Yazılım Mühendisliği Software Process Models

A Layered Technology Software Engineering tools methods process model a “quality” focus Software Engineering

Definition Process Methods Tools Defines who is doing what, when, and how to reach a certain goal. Forms the basis for management control of software projects. Methods technical “how to” for building software Broad array of tasks: communication, requirements analysis, design modeling, program construction, testing, and support Tools Automated support for process and methods

A Process Model A structured set of activities required to develop a software system Prescribe a set of process elements Framework activities Software engineering actions Tasks Work products Quality assurance and Change control mechanisms for each project Each process model also prescribes a workflow

Plan-driven and agile processes Plan-driven processes are processes where all of the process activities are planned in advance and progress is measured against this plan. In agile processes, planning is incremental and it is easier to change the process to reflect changing customer requirements. In practice, most practical processes include elements of both plan-driven and agile approaches. There are no right or wrong software processes

A Process Framework Software Process Process framework Modeling activity Software Engineering action: Analysis work tasks: requirements gathering, elaboration, negotiation, specification, validation work products: analysis model and/or requirements spec milestones & deliverables QA checkpoints Software Engineering action: Design work tasks: data design, architectural, interface design, component design work products: design model and/or design specification … Umbrella Activities Process framework Framework activity 1 work tasks work products milestones & deliverables QA checkpoints Framework activity n Umbrella Activities

Process Flow Executes each of the framework activities in sequence, beginning with communication and culminating with deployment Process flow describes how the framework activities and the actions and tasks that occur within each framework activities are organized with respect to sequence and time. Repeats one or more of the activities before proceeding to the next

Process Flow (cont.) Executes the activities in a “circular” manner, each circuit through the five activities leading to a more complete version of the software Executes one or more activities in parallel with other activities (e.g., modeling for one aspect of the software in parallel with construction of another aspect of the software

Key Question What actions are appropriate for a framework activity, given the nature of the problem to be solved, the characteristics of the people doing the work, and the stakeholders who are sponsoring the project? Different project demand different task sets Software team chooses the task set based on Problem and project characteristics Characteristics of the project team

Example I For a small, relatively simple project, task set for requirements gathering Make a list of stakeholders for the project Invite all stakeholders to an informal meeting Ask each stakeholder to make a list of features and functions required Discuss requirements and build a final list Prioritize requirement Note areas of uncertainty

Example II For a larger, more complex software project, Make a list of stakeholders for the project Interview each stakeholder separately to determine overall wants and needs Build a preliminary list of functions and features based on stakeholder input Schedule a series of facilitated application specification meetings Conduct meetings Produce informal user scenarios as part of each meeting Refine user scenarios based on stakeholder feedback Build a revised list of stakeholder requirements Use quality function deployment techniques to prioritize requirements Package requirements so that they can be delivered incrementally Note constraints and restrictions that will be placed on the system Discuss methods for validating the system

Build & Fix Model Product is constructed without specifications or any attempt at design Ad-hoc approach and not well-defined Simple two phase model

Build & Fix Model - Drawbacks Suitable for small programming exercises of 100 or 200 lines Unsatisfactory for software for any reasonable size Code soon becomes unfixable & not enhanceable No room for structured design Maintenance is practically not possible

The Waterfall Model (Classic Life Cycle) Suggests a systematic, sequential approach to software development It reinforces the notion of “define before design” and “design before code”. Works best when Requirements of a problem are reasonably well understood Well-defined adaptations or enhancements to an existing system must be made Requirements are well-defined and reasonably stable

The Waterfall Model

V-Model

The Waterfall Model - Drawbacks It is difficult to define all requirements at the beginning of a project This model is not suitable for accommodating any change A working version of the system is not seen until late in the project’s life It does not scale up well to large projects. Real projects are rarely sequential.

The Incremental Model It combines elements of the waterfall model applied in an iterative fashion It delivers a series of releases, called increments, that provide progressively more functionality for customer as each increment is delivered When it is used, the first increment is often a core product; basic requirements are addressed, but many supplementary features remain undelivered The core product is used by customer. As a result, a plan is developed for next increment

The Incremental Model

The Incremental Model This model focuses on the delivery of an operational product with each increment Incremental development is particularly useful when staffing is unavailable for a complete implementation by the business deadline. Early increments can be implemented with fewer people, and additional staff can be added to later increments Increments can be planned to manage technical risks

The RAD Model RAD (Rapid Application Development) is an incremental SW process model that emphasizes a short development cycle RAD model is a “high-speed” adaptation of the waterfall model, achieved by using a component-based construction approach If a business application modularized in a way that enables each major function to be completed in less than 3 months, it is a candidate for RAD

The RAD Model

The RAD Model Build a rapid prototype Give it to user for evaluation & obtain feedback Prototype is refined with active participation of users

The RAD Model - Drawbacks Not an appropriate model in the absence of user participation. For large, but scalable projects, RAD requires sufficient human resources to create right number of RAD teams Highly specialized & skilled developers are not easily available. If a system cannot be properly modularized, building the components necessary or RAD will be problematic Reusable components are required to reduce development time. RAD may not be appropriate when technical risks are high

Evolutionary Process Models Evolutionary models are iterative They are characterized in a manner that enables SW engineers to develop increasingly more complete versions of the software Example models Prototyping model The Spiral model Concurrent model

Evolutionary Models: Prototyping The prototype may be a usable program but is not suitable as the final software product. The code for the prototype is thrown away. However, experience gathered helps in developing the actual system. The development of a prototype might involve extra cost, but overall cost might turnout to be lower than that of an equivalent system developed using the waterfall model.

Evolutionary Models: Prototyping

Evolutionary Models: Prototyping - Drawbacks The customer sees what appears to be a working version of SW, unaware that in the rush to get it working we haven’t considered overall quality or long-term maintainability The developer often makes implementation compromises in order to get prototype working quickly

Evolutionary Models: Spiral Couples the iterative nature of prototyping with the controlled and systematic aspects of the waterfall model Provides the potential for rapid development of increasingly more complete versions of the software A risk-driven process model generator It has two main distinguishing features Cyclic approach - Incrementally growing a system’s degree of definition and implementation while decreasing its degree of risk A set of anchor point milestones - A combination of work products and conditions that are attained along the path of the spiral

Evolutionary Models: Spiral

Evolutionary Models: Spiral Unlike other process models that end when software is delivered, the spiral model can be adapted to apply throughout the life of the computer software The circuits around the spiral might represent Concept development project New Product development project Product enhancement project The spiral model demands a direct consideration of technical risks at all stages of the project

Evolutionary Models: Spiral - Drawbacks Difficult to convince customers that evolutionary approach is controllable Demands considerable risk assessment expertise and relies on this expertise for success If major risks are uncovered and managed, problems will occur

Evolutionary Models: Concurrent Sometimes called concurrent engineering Can be represented schematically as a series of framework activities, software engineering actions and tasks, and their associated states Defines a series of events that will trigger transitions from state to state for each of the software engineering activities, actions, or tasks Defines a network of activities E. g. The modeling activity which existed in none state while initial communication was completed, now makes a transition into under development state. If customer indicates that changes in requirements must be made, modeling activity moves from under development state into awaiting changes state

Evolutionary Models: Concurrent

Evolutionary Models: Concurrent Is applicable to all types of software development and provides an accurate picture of the current state of project All activities exist concurrently but reside in different states Events generated at one point in the process network trigger transitions among the states

Other Process Models Component-based development—the process to apply when reuse is a development objective Formal methods—emphasizes the mathematical specification of requirements AOSD—provides a process and methodological approach for defining, specifying, designing, and constructing aspects Unified Process—a “use-case driven, architecture-centric, iterative and incremental” software process closely aligned with the Unified Modeling Language (UML)

The Unified Process (UP) It is a use-case driven, architecture-centric, iterative and incremental software process UP is an attempt to draw on the best features and characteristics of conventional s/w process models Also implements many of the best principles of agile software development UP is a framework for object-oriented software engineering using UML (Unified Modeling Language)

Phases of The Unified Process

Phases of UP - Inception Defines scope of the project Encompasses both customer communication and planning activities Fundamental business requirements are described through a set of preliminary use-cases A use-case describes a sequence of actions that are performed by an actor (e.g., a person, a machine, another system) as the actor interacts with the software A rough architecture for the system is also proposed

Phases of UP - Elaboration Encompasses customer communication and modeling activities Refines and expands the preliminary use-cases Expands the architectural representation to include five different views of the software The use-case model The analysis model The design model The implementation model The deployment model In some cases, elaboration creates an “executable architectural baseline” that represents a “first cut” executable system

Phases of UP - Construction Makes each use-case operational for end-users As components are being implemented, unit tests are designed and executed for each Integration activities (component assembly and integration testing) are conducted Use-cases are used to derive a suite of acceptance tests

Phases of UP - Transition Involves many activities like delivering, training, supporting, and maintaining the product. Software is given to end-users for beta testing The software team creates the necessary support information User manuals Trouble-shooting guides Installation procedures At the conclusion of the transition phase, the software increment becomes a usable software release

Phases of UP - Production Coincides with the deployment activity of the generic process The on-going use of the software is monitored Support for the operating environment (infrastructure) is provided Defect reports and requests for changes are submitted and evaluated

Unified Process Work Products Inception Vision document Initial use-case model Elaboration Analysis model, design model Construction Implementation model, deployment model, test model Transition Delivered software, beta test reports, general user feedback

Initial Development & Evolution Cycles

Iterations & Workflow of Unified Process

Selection of a Process Model Selection of a model is based on: Requirements Development team Users Project type and associated risk

Based On Characteristics Of Requirements

Based On Status Of Development Team

Based On User’s Participation

Based On Type Of Project With Associated Risk

The Manifesto for Agile Software Development “We are uncovering better ways of developing software by doing it and helping others do it. Through this work we have come to value: Individuals and interactions over processes and tools Working software over comprehensive documentation Customer collaboration over contract negotiation Responding to change over following a plan That is, while there is value in the items on the right, we value the items on the left more.” Kent Beck et al

What is “Agility”? Effective (rapid and adaptive) response to change Effective communication among all stakeholders Drawing the customer onto the team Organizing a team so that it is in control of the work performed Yielding … Rapid, incremental delivery of software

Agility and the Cost of Change

An Agile Process Is driven by customer descriptions of what is required (scenarios) Recognizes that plans are short-lived Develops software iteratively with a heavy emphasis on construction activities Delivers multiple ‘software increments’ Adapts as changes occur

Agility Principles - I Our highest priority is to satisfy the customer through early and continuous delivery of valuable software. Welcome changing requirements, even late in development. Agile processes harness change for the customer's competitive advantage. Deliver working software frequently, from a couple of weeks to a couple of months, with a preference to the shorter timescale. Business people and developers must work together daily throughout the project. Build projects around motivated individuals. Give them the environment and support they need, and trust them to get the job done. The most efficient and effective method of conveying information to and within a development team is face–to–face conversation.

Agility Principles - II Working software is the primary measure of progress. Agile processes promote sustainable development. The sponsors, developers, and users should be able to maintain a constant pace indefinitely. Continuous attention to technical excellence and good design enhances agility. Simplicity – the art of maximizing the amount of work not done – is essential. The best architectures, requirements, and designs emerge from self–organizing teams. At regular intervals, the team reflects on how to become more effective, then tunes and adjusts its behavior accordingly.

Extreme Programming (XP) The most widely used agile process, originally proposed by Kent Beck XP Planning Begins with the creation of “user stories” by listening Customer assigns a value to the story. Agile team assesses each story and assigns a cost Stories are grouped to for a deliverable increment A commitment is made on delivery date After the first increment “project velocity” is used to help define subsequent delivery dates for other increments

Extreme Programming (XP) XP Design Follows the KIS principle Encourage the use of CRC cards For difficult design problems, suggests the creation of “spike solutions”—a design prototype Encourages “refactoring”—an iterative refinement of the internal program design XP Coding Recommends the construction of a unit test for a story before coding commences Encourages “pair programming” XP Testing All unit tests are executed daily (whenever code is modified) “Acceptance tests” are defined by the customer and executed to assess customer visible functionality

Extreme Programming (XP)

Adaptive Software Development Originally proposed by Jim Highsmith ASD — distinguishing features Mission-driven planning Component-based focus Uses “time-boxing” Explicit consideration of risks Emphasizes collaboration for requirements gathering Emphasizes “learning” throughout the process

Adaptive Software Development

Dynamic Systems Development Method Promoted by the DSDM Consortium DSDM—distinguishing features Similar in most respects to XP and/or ASD Nine guiding principles Active user involvement is imperative. DSDM teams must be empowered to make decisions. The focus is on frequent delivery of products. Fitness for business purpose is the essential criterion for acceptance of deliverables. Iterative and incremental development is necessary to converge on an accurate business solution. All changes during development are reversible. Requirements are baselined at a high level Testing is integrated throughout the life-cycle.

Dynamic Systems Development Method

Scrum Originally proposed by Schwaber and Beedle Scrum—distinguishing features Development work is partitioned into “packets” Testing and documentation are on-going as the product is constructed Work occurs in “sprints” and is derived from a “backlog” of existing requirements Meetings are very short and sometimes conducted without chairs “Demos” are delivered to the customer with the time-box allocated

Scrum

Crystal Proposed by Cockburn and Highsmith Crystal—distinguishing features Actually a family of process models that allow “maneuverability” based on problem characteristics Face-to-face communication is emphasized Suggests the use of “reflection workshops” to review the work habits of the team

Feature Driven Development Originally proposed by Peter Coad et al FDD—distinguishing features Emphasis is on defining “features” a feature “is a client-valued function that can be implemented in two weeks or less.” Uses a feature template <action> the <result> <by | for | of | to> a(n) <object> A features list is created and “plan by feature” is conducted Design and construction merge in FDD

Feature Driven Development

Agile Modeling Originally proposed by Scott Ambler Suggests a set of agile modeling principles Model with a purpose Use multiple models Travel light Content is more important than representation Know the models and the tools you use to create them Adapt locally