Incremental development A.Y. 2018/2019

Similar documents
Reducing the costs of rework. Coping with change. Software prototyping. Ways to Cope with change. Benefits of prototyping

Second. Incremental development model

Software processes. Objectives. Contents

Introduction to Software Engineering

The requirements engineering process

Software Processes. Ian Sommerville 2006 Software Engineering, 8th edition. Chapter 4 Slide 1

Software Life Cycle. Main issues: Discussion of different life cycle models Maintenance or evolution

VO Software Engineering

SOFTWARE ENGINEERING. Software Specification Software Design and Implementation Software Validation. Peter Mileff PhD

CMSC 435: Software Engineering Section 0201

Specifying and Prototyping

Software Process. Software Process

Requirements and Design Overview

Software Engineering

Lecture 7: Software Processes. Refresher: Software Always Evolves

System Development Life Cycle Methods/Approaches/Models

SOFTWARE LIFE-CYCLE PROCESSES From Waterfall to Extreme Programming

SOFTWARE ENGINEERING

Activities Common to Software Projects. Software Life Cycle. Activities Common to Software Projects. Activities Common to Software Projects

History of object-oriented approaches

Software Prototyping Animating and demonstrating system requirements. Uses of System Prototypes. Prototyping Benefits

This tutorial also elaborates on other related methodologies like Agile, RAD and Prototyping.

Chapter 1: Principles of Programming and Software Engineering

CSC Advanced Object Oriented Programming, Spring Overview

CS487 Midterm Exam Summer 2005

Chapter 1: Programming Principles

Software Engineering

Topic 01. Software Engineering, Web Engineering, agile methodologies.

How Can a Tester Cope With the Fast Paced Iterative/Incremental Process?

Analysis and Design with UML

Introduction to Software Engineering

Software Engineering Lifecycles. Controlling Complexity

OO Project Management

Software Engineering with Objects and Components Open Issues and Course Summary

Outline of Unified Process

Administrivia. Added 20 more so far. Software Process. Only one TA so far. CS169 Lecture 2. Start thinking about project proposal

UNIT-I Introduction of Object Oriented Modeling

Objectives. Connecting with Computer Science 2

Building the User Interface: The Case for Continuous Development in an Iterative Project Environment

Dilbert Scott Adams. CSc 233 Spring 2012

Systems Analysis and Design in a Changing World, Fourth Edition

Introduction. Chapter 1. What Is Visual Modeling? The Triangle for Success. The Role of Notation. History of the UML. The Role of Process

index_ qxd 7/18/02 11:48 AM Page 259 Index

Designing Component-Based Architectures with Rational Rose RealTime

*ANSWERS * **********************************

SRI VENKATESWARA COLLEGE OF ENGINERRING AND TECHNOLOGY THIRUPACHUR,THIRUVALLUR UNIT I OOAD PART A

SOFTWARE LIFE-CYCLE MODELS 2.1

Building a New Rational Web Site with Rational Suite

Objectives. Architectural Design. Software architecture. Topics covered. Architectural design. Advantages of explicit architecture

What is a prototype?

SOFTWARE ENGINEERING DECEMBER. Q2a. What are the key challenges being faced by software engineering?

Gradational conception in Cleanroom Software Development

Architectural Design

Chapter 17 - Component-based software engineering. Chapter 17 So-ware reuse

SYSPRO s Fluid Interface Design

Managing Change and Complexity

Announcements. How to build a UML model. Rational Unified Process. How RUP builds a model. UI design. Architect

Modern Software Engineering Methodologies Meet Data Warehouse Design: 4WD

Review Software Engineering October, 7, Adrian Iftene

Answers NOT TO BE PRINTED

Darshan Institute of Engineering & Technology for Diploma Studies Rajkot Unit-1

1. i. What are the 3 major components of a information system and show their relationship input output

SE420 - Software Quality Assurance

Reusable General Component in Unknown Domain

I D C T E C H N O L O G Y S P O T L I G H T. V i r t u a l and Cloud D a t a Center Management

Rational Software White paper

CS3724 Human-computer Interaction

Software Development Chapter 1

OBJECT ORIENTED SYSTEM DEVELOPMENT Software Development Dynamic System Development Information system solution Steps in System Development Analysis

Architecture and Design Evolution

Software Engineering Principles

W.C.Uduwela. Dept. of Mathematics & Computer Science

Evolutionary Architecture and Design

Process of Interaction Design and Design Languages

Categorizing Migrations

UML- a Brief Look UML and the Process

Software Engineering

CS SOFTWARE ENGINEERING QUESTION BANK SIXTEEN MARKS

Agile Manifesto & XP. Topics. Rapid software development. Agile methods. Chapter ) What is Agile trying to do?

How to build a UML model

Process Models. Projects Process. Common Process Models. Typical Student Process Model. Waterfall Model

Chapter 6 Architectural Design. Chapter 6 Architectural design

The Design Space of Software Development Methodologies

1) Software Engineering

Topics. CS5714 Usability Engineering. Typical Software Engineering LC. An Iterative, Evaluation- Centered Life Cycle For Interaction Development

Agile Accessibility. Presenters: Ensuring accessibility throughout the Agile development process

Architectural Design. Topics covered. Architectural Design. Software architecture. Recall the design process

Systems Analysis & Design

Work Environment and Computer Systems Development.

Object Oriented Analysis and Design - Part2(Design)

1: Software Development and.net. An approach to building software

Spemmet - A Tool for Modeling Software Processes with SPEM

Software Development Process Models

Schedule(3/3) March 18th 13:00 Unified Process and Usecase-Driven Approach. (problem definition, use case model)

UML Views of a System

An Introduction to the UML and the Unified Process

Getting Started with Rational Team Concert

Appendix A - Glossary(of OO software term s)

Best Practices for Collecting User Requirements

Introduction to Software Engineering. ECSE-321 Unit 9 Architectural Design Approaches

Transcription:

Incremental development A.Y. 2018/2019

Incremental development Interleaves the activities of specification, development, and validation. The system is developed as a series of versions (increments), with each version adding functionality to the previous version. Incremental development is based on the idea of developing an initial implementation, exposing this to user comment and evolving it through several versions until an adequate system has been developed.

Why? Incremental development reflects the way that we solve problems. We rarely work out a complete problem solution in advance but move toward a solution in a series of steps, backtracking when we realize that we have made a mistake. By developing the software incrementally, it is cheaper and easier to make changes in the software as it is being developed.

The model

Better than a waterfall approach? The cost of accommodating changing customer requirements is reduced. - The amount of analysis and documentation that has to be redone is much less than is required with the waterfall model. Easier to get customer feedback on the development work that has been done. - Customers can comment on demonstrations of the software and see how much has been implemented. (Customers find it difficult to judge progress from software design documents) More rapid delivery and deployment of useful software to the customer is possible, even if all of the functionality has not been included. - Customers are able to use and gain value from the software earlier than is possible with a waterfall process.

Problems? System structure tends to degrade as new increments are added. - Unless time and money is spent on refactoring to improve the software,regular change tends to corrupt its structure. - Incorporating further software changes becomes increasingly difficult and costly. Problems of incremental development become particularly acute for large, complex, long-lifetime systems, where different teams develop different parts of the system. - Large systems need a stable framework or architecture and the responsibilities of the different teams working on parts of the system need to be clearly defined with respect to that architecture. This has to be planned in advance rather than developed incrementally.

Coping with change

Change Change is inevitable in all large software projects. System requirements change as the business procuring the system responds to external pressures and management priorities change. As new technologies become available, new design and implementation possibilities emerge. Therefore whatever software process model is used, it is essential that it can accommodate changes to the software being developed.

Rework Change adds to the costs of software development because it usually means that work that has been completed has to be redone. This is called rework. Two related approaches that may be used to reduce the costs of rework: - Change avoidance - Change tolerance

Change avoidance The software process includes activities that can anticipate possible changes before significant rework is required. Example: - A prototype system may be developed to show some key features of the system to customers. Customers can experiment with the prototype and refine their requirements before committing to high software production costs

Change tolerance The process is designed so that changes can be accommodated at relatively low cost. This normally involves some form of incremental development. Proposed changes may be implemented in increments that have not yet been developed. If this is impossible, then only a single increment (a small part of the system) may have to be altered to incorporate the change.

Approaches for coping with change System prototyping - A version of the system or part of the system is developed quickly to check the customer s requirements and the feasibility of some design decisions - This supports change avoidance Incremental delivery - System increments are delivered to the customer for comment and experimentation - This supports both change avoidance anch change tollerance

Prototyping A prototype is an initial version of a software system that is used to demonstrate concepts, try out design options, and find out more about the problem and its possible solutions

Incremental delivery Incremental delivery is an approach to software development where some of the developed increments are delivered to the customer and deployed for use in an operational environment.

Boehm s spiral model

The four sectors of the Boehm s spiral model Objective setting - Specific objectives for that phase of the project are defined. Constraints, risks, and alternative strategies are identified and a detailed management plan is drawn up. Risk assessment and reduction - For each of the identified risks, a detailed analysis is carried out. Steps are taken to reduce the risk. Development and validation - A development model for the system is chosen. Planning - The project is reviewed and a decision made whether to continue with a further loop of the spiral. If it is decided to continue, plans are drawn up for the next phase of the project.

The Rational Unified Process

The four sectors of the Boehm s spiral model The Rational Unified Process (RUP) is a good example of a hybrid process model. RUP brings together elements from all of the generic process models, illustrates good practice in specification and design and supports prototyping and incremental delivery RUP is normally described from three perspectives: - A dynamic perspective, which shows the phases of the model over time. - A static perspective, which shows the process activities that are enacted. - A practice perspective, which suggests good practices to be used during the process.

RUP s phases - dynamic perspective

Inception and Elaboration Inception - Establishes a business case for the system. You should identify all external entities (people and systems) that will interact with the system and define these interactions. You then use this information to assess the contribution that the system makes to the business. Elaboration - Develops an understanding of the problem domain, establishes an architectural framework for the system, develops the project plan, and identifies key project risks. On completion of this phase you should have a requirements model for the system, which may be a set of UML use-cases, an architectural description, and a development plan for the software.

Construction and Transition Construction - The construction phase involves system design, programming, and testing. Parts of the system are developed in parallel and integrated during this phase. On completion of this phase, you should have a working software system and associated documentation that is ready for delivery to users. Transition - The final phase of the RUP is concerned with moving the system from the development community to the user community and making it work in a real environment. This is something that is ignored in most software process models but is, in fact, an expensive and sometimes problematic activity. On completion of this phase, you should have a documented software system that is working correctly in its operational environment.

Workflows - static perspective Technical perspective Management perspective

Dynamic and static perspectives combined

RUP s practice perspective Develop software iteratively - Plan increments of the system based on customer priorities and develop the highest-priority system features early in the development process. Manage requirements - Explicitly document the customer s requirements and keep track of changes to these requirements. Analyze the impact of changes on the system before accepting them. Use component-based architectures - Structure the system architecture into components. Visually model software - Use graphical UML models to present static and dynamic views of the software. Verify software quality - Ensure that the software meets the organizational quality standards.

Reuse-oriented software engineering

Reuse-oriented software engineering Based on the existence of a significant number of reusable components. The system development process focuses on integrating these components into a system rather than developing them from scratch. Reuse-oriented approaches rely on a large base of reusable software components and an integrating framework for the composition of these components.

Stages

Component analysis and requirements modification Component analysis - Given the requirements specification, a search is made for components to implement that specification. Usually, there is no exact match and the components that may be used only provide some of the functionality required. Requirements modification - The requirements are analyzed using information about the components that have been discovered. They are then modified to reflect the available components. Where modifications are impossible, the component analysis activity may be re-entered to search for alternative solutions.

System design and development System design with reuse - The framework of the system is designed or an existing framework is reused. The designers take into account the components that are reused and organize the framework to cater for this. Some new software may have to be designed if reusable components are not available. Development and integration - Software that cannot be externally procured is developed, and the components are integrated to create the new system.

What kind of components? - Web services that are developed according to service standards and which are available for remote invocation. - Collections of objects that are developed as a package to be integrated with a component framework such as.net or J2EE. - Stand-alone software systems that are configured for use in a particular environment.

Reuse-oriented software engineering: pros and cons Pros: - It reduces the amount of software to be developed and so reducing cost and risks. - It usually leads to faster delivery of the software. Cons: - Requirements compromises are inevitable and this may lead to a system that does not meet the real needs of users. - Some control over the system evolution is lost as new versions of the reusable components are not under the control of the organization using them.