CS 360 Lecture 3.  The software process is a structured set of activities required to develop a software system.  Fundamental Assumption:  Good software.

Slides:



Advertisements
Similar presentations
Software Processes.
Advertisements

©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 4 Slide 1 Software Processes.
The System and Software Development Process Instructor: Dr. Hany H. Ammar Dept. of Computer Science and Electrical Engineering, WVU.
CS 501: Software Engineering Fall 2000 Lecture 2 The Software Process.
Lecture # 2 : Process Models
Object-Oriented Software Development CS 3331 Fall 2009.
Software Process Models
©Ian Sommerville 2006Software Engineering, 8th edition. Chapter 4 Slide 1 Software Processes.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 1 Slide 1 المحاضرة الثانية.
Software Project Management
1 Chapter 4 - Part 1 Software Processes. 2 Software Processes is: Coherent (logically connected) sets of activities for specifying, designing, implementing,
CSE 470 : Software Engineering The Software Process.
The software process A software process is a set of activities and associated results which lead to the production of a software product. This may involve.
CHAPTER 1 SOFTWARE DEVELOPMENT. 2 Goals of software development Aspects of software quality Development life cycle models Basic concepts of algorithm.
Chapter 2 – Software Processes
Chapter 2 – Software Processes Lecture 1 1Chapter 2 Software Processes.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 4 Slide 1 Software Processes.
CS 5150 Software Engineering
1 CS 501 Spring 2003 CS 501: Software Engineering Lecture 2 Software Processes.
CS CS 5150 Software Engineering Lecture 2 Software Processes.
CS 501: Software Engineering
CS 5150 Software Engineering
1 CS 501 Spring 2007 CS 501: Software Engineering Lecture 2 Software Processes.
1 CS 501 Spring 2008 CS 501: Software Engineering Lecture 2 Software Processes.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 4 Slide 1 Software Process Models.
CS 501: Software Engineering
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 4 Slide 1 Software Processes.
Introduction to RUP Spring Sharif Univ. of Tech.2 Outlines What is RUP? RUP Phases –Inception –Elaboration –Construction –Transition.
1 CMPT 275 Software Engineering Software life cycle.
Chapter 2 The process Process, Methods, and Tools
Software Process and Models
Lecture # 04 & 05 CS314 Introduction To Software Development Software Development Process (SDP) Instructor :Muhammad Janas khan
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 4 Slide 1 Software Processes.
Software Processes lecture 8. Topics covered Software process models Process iteration Process activities The Rational Unified Process Computer-aided.
CS CS 5150 Software Engineering Lecture 3 Software Processes 2.
Software Engineering Management Lecture 1 The Software Process.
Object-oriented Analysis and Design Stages in a Software Project Requirements Writing Analysis Design Implementation System Integration and Testing Maintenance.
1 SWE Introduction to Software Engineering Lecture 4.
Review of Software Process Models Review Class 1 Software Process Models CEN 4021 Class 2 – 01/12.
The System and Software Development Process Instructor: Dr. Hany H. Ammar Dept. of Computer Science and Electrical Engineering, WVU.
CS 5150 Software Engineering Lecture 3 Software Processes 2.
An Introduction to Software Engineering
1 CS 501 Spring 2004 CS 501: Software Engineering Lecture 2 Software Processes.
Software Life Cycle The software life cycle is the sequence of activities that occur during software development and maintenance.
Chapter 2 – Software Processes Lecture 1 Chapter 2 Software Processes1.
Lecture 2 System Development Lifecycles. Building a house Definition phase Analysis phase Design phase Programming phase System Test phase Acceptance.
Process Asad Ur Rehman Chief Technology Officer Feditec Enterprise.
©Ian Sommerville 2006Software Engineering, 8th edition. Chapter 4 Slide 1 Software Processes.
1 These courseware materials are to be used in conjunction with Software Engineering: A Practitioner’s Approach, 5/e and are provided with permission by.
Software Development Process CS 360 Lecture 3. Software Process The software process is a structured set of activities required to develop a software.
1 Chapter 2 SW Process Models. 2 Objectives  Understand various process models  Understand the pros and cons of each model  Evaluate the applicability.
Statement of Work Lecture. SOW The statement of work is the basis of the contract between the pro- poser and the customer, and is often incorporated into.
Laurea Triennale in Informatica – Corso di Ingegneria del Software I – A.A. 2006/2007 Andrea Polini II. Software Life Cycle.
Methodologies/Life Cycle Models
Methodologies and Algorithms
Software Engineering Management
Exam 0 review CS 360 Lecture 8.
Chapter 2 – Software Processes
CS 5150 Software Engineering
V-Shaped SDLC Model Lecture-6.
Software Process Models
Chapter 2 SW Process Models
Chapter 2: Software Process Models
Software Process Models and the feasibility study
Software life cycle models
Introduction To software engineering
CS310 Software Engineering Lecturer Dr.Doaa Sami
Software Processes.
Chapter 2: Software Process Models
Presentation transcript:

CS 360 Lecture 3

 The software process is a structured set of activities required to develop a software system.  Fundamental Assumption:  Good software processes lead to good software.  Good software processes reduce risks. 2

 Feasibility and planning  Requirements  System and program design  Implementation  Acceptance and release  Maintenance 3

 Feasibility and planning  Requirements  System and program design  Implementation  Acceptance and release  Maintenance  It is important to distinguish among these process steps and to be clear which you are doing at any given moment. 4 These steps may be repeated many times during the development cycle.

 Validating the requirements  Validating the system and program design  Usability testing  Program testing  Acceptance testing  Bug fixing, feature enhancements, and maintenance 5

 Validating the requirements  Validating the system and program design  Usability testing  Program testing  Acceptance testing  Bug fixing, feature enhancements, and maintenance 6 Some of these steps will be repeated many times during the life of the system.

 The term “testing” is used in several different contexts, which can be confusing:  User testing:  Versions of the user interface are tested by users and clients.  Their experience may lead to changes in the requirements or design.  Program testing:  The development team tests components individually (unit testing) or in combination (system testing) against the design to find bugs, etc.  Acceptance testing:  The client tests the final version of the system or parts of the system against the requirements. 7

 The feasibility study:  What is the scope of the proposed project?  Is the project technically feasible?  What are the projected benefits?  What are the costs?  Expected timeline?  What resources are needed?  What are the risks and how can they be managed? 8

 Requirements define the function of the system from the client’s viewpoint.  Requirements establish:  System functionality  Constraints  Goals 9

 The requirements step is divided into tasks:  Requirements analysis  Requirements definition  Requirements specification  The project’s requirements may be developed in a self-contained study, or developed incrementally.  Failure to agree on the requirements and define the adequately is one of the main causes of software projects failing. 10

 The requirements step is divided into tasks:  Requirements analysis  Meetings, documentation, process specifications, use cases, etc.  Requirements definition  Description of the services that the system should provide.  Requirements specification  Functional requirements  Inputs, behavior, outputs  Non-functional requirements  Criteria used to judge the operation of the system  Ex: accessibility, compliance, privacy, performance, reusability, stability, usability, etc.  The project’s requirements may be developed in a self-contained study, or developed incrementally.  Failure to agree on the requirements and define the adequately is one of the main causes of software projects failing. 11

 Design describes the system from the software developers’ viewpoint.  System design:  Establish a system architecture, both hardware and software, that matches requirements.  Program design:  Represent the software functions in a form that can be transformed into one or more executable programs.  Preliminary user testing can be carried out as part of the design step.  Models are used to represent requirements, system architecture, and programming design.  This course covers the basic concepts of the Unified Modeling Language (UML). 12

 Implementation (coding):  The software design is realized as a set of programs.  These software components may be written by the development team, or modified from existing components.  Program testing:  Individual components (unit testing) should be tested against the design documentation.  All components are integrated and tested against the design as a complete system (system testing). 13

 Acceptance testing:  The system is tested against the requirements by the client.  Can be done in weekly meetings, or after each milestone delivery.  Delivery:  After successful acceptance testing, the system is finally delivered to the client and released into production. 14

 Operation:  The system is moved from the developmental phase into practical use.  Maintenance:  Errors and problems are identified and fixed.  Evolution:  The system evolved over time as requirements change.  Add new functionality  Increased stability  Adapt to changing technical environment  Phase out:  The system is withdrawn from service.  This is generally called the Software Life Cycle. 15

 Every software project will include the previous basic processes, in some shape or form, but:  The steps may be formal or informal  The steps may be carried out in different order  Your job as the software development team is to implement, in as much detail as possible, the processes described in order to develop a good software product. 16

 In this course, we will look at three categories of software development processes:  Sequential:  As much as possible, complete each process step before beginning the next.  Waterfall model  Iterative:  Go quickly through all process steps to create a rough system, then repeat to improve the system.  Prototype, test, analyze, refine, repeat..  Iterative refinement, entire system  Incremental:  Variation of the iterative refinement in which small increments of software are placed in production (sprints).  Prototype, test, analyze, repeat..  Agile refinement, adding individual features during each phase. 17

 Deliverables:  A deliverable is some work product that is given to the client.  Each process step mentioned previously creates a deliverable.  Documentation, source code, etc.  For this course, the deliverables include:  Presentations  Software process documentation(s)  Software and/or hardware resources 18

 The basic process steps can be combined in many ways to create a successful software process for development.  Three types of software process:  Sequential ((modified) waterfall model), plan-driven  Iterative refinement  Incremental (agile) 20

 Plan-driven processes have all process activities described in advance and progress is measured against this plan.  Agile processes have incremental planning stages, where change can be accommodated more easily to reflect updated client requirements.  In practice, most approaches include elements of both plan- driven and agile development processes. 21

22

 The waterfall model requires full documentation at each process step.  Advantages:  Process visibility  Separation of tasks  Quality control at each step  Cost monitoring at each step  Disadvantages:  In practice, each process stage reveals new understanding of the previous stages.  Often requires earlier stages to be revised. 23

 A pure sequential model is impossible  Example:  A feasibility study can’t cerate a proposed budget and schedule without a study of the requirements and initial design.  Detailed design and implementation reveal gaps in the requirement specifications.  Requirements and/or technology may change during project development.  Solution:  Modified waterfall model 24

25

 Sequential processes work best when the requirements are well understood, and the design is straightforward.  Ex:  Conversions of existing manual data processing systems.  New models of a product based on earlier versions or similar products.  Parts of a larger system where components are clearly defined. 26

 Concept:  Create a prototype system early in the development process  Review the prototype with clients and test it with users  To improve the understanding of the requirements  Clarify the design  Requirements can be difficult to understand until there is an operational system.  Mistakes in the requirements are the most expensive to correct. 27

28

 Iterative processes require documentation refinement during each phase.  This type of software process enables the client to review the planned system early during development:  Software/hardware mock-ups  Sandbox modules  Rapid prototyping  Feature refinement  The goal is to get something working as quickly as possible, for client and user evaluation, but do not release it. 29

 The project is divided into a large number of small tasks, known as sprints.  For each sprint, the team works through a full software development cycle: planning, requirements, analysis, design, coding, testing, acceptance testing, and release.  Each spring is completed in a fixed time period, or milestone.  The size of a sprint is based on team size  4-7 people. 30

31

 Completed projects should have included all of the basic process steps, but the development process is always partly evolutionary.  Risks are lowered by:  Prototyping key components  Frequent releases, or dividing into phases  Early and repeated testing with users and clients  Making use of reusable components 32

33

34

35