Software processes COSC 420 – Software Engineering Brian Toone.

Slides:



Advertisements
Similar presentations
Lecture # 2 : Process Models
Advertisements

Object-Oriented Software Development CS 3331 Fall 2009.
Virtual University - Human Computer Interaction 1 © Imran Hussain | UMT Imran Hussain University of Management and Technology (UMT) Lecture 16 HCI PROCESS.
CS487 Software Engineering Omar Aldawud
Software Engineering CSE470: Process 15 Software Engineering Phases Definition: What? Development: How? Maintenance: Managing change Umbrella Activities:
The design process IACT 403 IACT 931 CSCI 324 Human Computer Interface Lecturer:Gene Awyzio Room:3.117 Phone:
CIS-74 Computer Software Quality Assurance Systematic Software Testing Chapter 1: An Overview of the Testing Process.
CHAPTER 1 SOFTWARE DEVELOPMENT. 2 Goals of software development Aspects of software quality Development life cycle models Basic concepts of algorithm.
Software Engineering Session 14 INFM 603. Software Software represents an aspect of reality –Input and output represent the state of the world –Software.
CS 325: Software Engineering January 13, 2015 Introduction Defining Software Engineering SWE vs. CS Software Life-Cycle Software Processes Waterfall Process.
Software Process Models
Sixth Hour Lecture 10:30 – 11:20 am, September 9 Framework for a Software Management Process – Artifacts of the Process (Part II, Chapter 6 of Royce’ book)
The Unified Software Development Process - Workflows Ivar Jacobson, Grady Booch, James Rumbaugh Addison Wesley, 1999.
R R R CSE870: Advanced Software Engineering (Cheng): Intro to Software Engineering1 Advanced Software Engineering Dr. Cheng Overview of Software Engineering.
Software lifecycle. CS351 - Software Engineering (AY2004)2 Software lifecycle “student view” Design & Specification Coding Testing (optional) Hand it.
Software Development Overview CPSC 315 – Programming Studio Spring 2009.
Software Development Overview CPSC 315 – Programming Studio Spring 2008.
Problem with Software Requirements are complex The client does not know the functional requirements in advance Requirements may be changing Technology.
The Agile vs. Waterfall Methodologies Systems Development:  the activity of creating new or modifying / enhancing existing business systems.  Objectives.
The design process z Software engineering and the design process for interactive systems z Standards and guidelines as design rules z Usability engineering.
INTROSE Introduction to Software Engineering Raymund Sison, PhD College of Computer Studies De La Salle University Software: Definitions,
Introduction to RUP Spring Sharif Univ. of Tech.2 Outlines What is RUP? RUP Phases –Inception –Elaboration –Construction –Transition.
ISO Tor Stålhane IDI / NTNU. What is ISO ISO 9001 was developed for the production industry but has a rather general structure ISO describes.
Dillon: CSE470: SE, Process1 Software Engineering Phases l Definition: What? l Development: How? l Maintenance: Managing change l Umbrella Activities:
An Introduction to Software Engineering CSCI 3033 Data Structures.
Thirteenth Lecture Hour 8:30 – 9:20 am, Sunday, September 16 Software Management Disciplines Process Automation (from Part III, Chapter 12 of Royce’ book)
1 Chapter 2 The Process. 2 Process  What is it?  Who does it?  Why is it important?  What are the steps?  What is the work product?  How to ensure.
College of Engineering and Computer Science Computer Science Department CSC 131 Computer Software Engineering Fall 2006 Lecture # 1 (Ch. 1, 2, & 3)
CS 360 Lecture 3.  The software process is a structured set of activities required to develop a software system.  Fundamental Assumption:  Good software.
Instructor: Peter Clarke
Software Life-Cycle Models Somnuk Keretho, Assistant Professor Department of Computer Engineering Faculty of Engineering, Kasetsart University
Software Engineering EKT 420 MOHAMED ELSHAIKH KKF 8A – room 4.
CSE 308 Software Engineering Software Engineering Strategies.
COSC 420 – Software Engineering Brian Toone
Prescriptive Process Models Jon Walker. Prescription? What does prescriptive mean?
Course Overview Stephen M. Thebaut, Ph.D. University of Florida Software Engineering Foundations.
Slide 1 Systems Analysis and Design With UML 2.0 An Object-Oriented Approach, Second Edition Chapter 1: Introduction to Systems Analysis and Design Alan.
Software Engineering II Lecture 3 Fakhar Lodhi. Software Life-Cycle Steps Life-cycle model (formerly, process model) –Requirements phase –Specification.
Software Development Overview CPSC 315 – Programming Studio Spring 2013.
CSCE 548 SDLC. CSCE Farkas2 Reading This lecture – The Software Development Life Cycle (SDLC),
PROC-1 1. Software Development Process. PROC-2 A Process Software Development Process User’s Requirements Software System Unified Process: Component Based.
Cmpe 589 Spring 2006 Lecture 2. Software Engineering Definition –A strategy for producing high quality software.
Software Engineering 1 Object-oriented Analysis and Design Applying UML and Patterns An Introduction to Object-oriented Analysis and Design and Iterative.
Software Development Problem Analysis and Specification Design Implementation (Coding) Testing, Execution and Debugging Maintenance.
Connecting with Computer Science2 Objectives Learn how software engineering is used to create applications Learn some of the different software engineering.
Software Engineering At Glance. Why We Need Software Engineering? The aim of software engineering is to solve the software crisis Software is delivered.
Overview of RUP Lunch and Learn. Overview of RUP © 2008 Cardinal Solutions Group 2 Welcome  Introductions  What is your experience with RUP  What is.
COMP2110 Software Design in 2003 ● a(nother) framework for Software Engineering ● the Software Engineering ideas and concepts in comp2110 ● Organisation.
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.
Meghe Group of Institutions Department for Technology Enhanced Learning 1.
Software Development Process CS 360 Lecture 3. Software Process The software process is a structured set of activities required to develop a software.
Lectures 2 & 3: Software Process Models Neelam Gupta.
ITEC 370 Lecture 18 Testing. Review Questions? Design document due W –System can be implemented just by following it Implementation –Methods (prototype,
1 slc5 TTYP – C++ revisited 1 Which of the following statements are reasonable after the following statement: char* fred = new char[5]; a. fred = bill;
Advanced Software Engineering Dr. Cheng
Software Development Overview
Chapter 7: Software Engineering
Methodologies and Algorithms
Chapter 7: Software Engineering
Lecture 3 Prescriptive Process Models
Software Life Cycle “What happens in the ‘life’ of software”
Introduction to Software Engineering
Software Development Process
CHAPTER 10 METHODOLOGIES FOR CUSTOM SOFTWARE DEVELOPMENT
CS310 Software Engineering Lecturer Dr.Doaa Sami
The Software Development Cycle
Software Development Process
Software Development Overview
Presentation transcript:

Software processes COSC 420 – Software Engineering Brian Toone

Dilbert on Software Engineering

Software Engineering

Last time…  A long time ago…  Introduction  Broad overview of software engineering

Review…  Software engineering is "[t]he application of a systematic, disciplined, quantifiable approach to the development, operation, and maintenance of software" IEEE STD , IEEE Standard Glossary of Software Engineering Terminology, IEEE Computer Society,  Very broad discipline  Technical  Analysis and evaluation  Specification  Design  Software evolution  Non-technical  Management and quality  Novelty and creativity  Standards  Individual skills  Teamwork  Professional practice

Software processes 1  A.k.a. “software lifecycles”  Why do we need them?  Complexity of the system  Requirements will keep changing  Mistakes are monumentally expensive  Humans! Creative, unreliable, sickly, mercenary 1 Adapted from Premkumar Devanbu’s “Software Process” lecture. Used with permission.

Software processes, cont’d  Core/heart of software engineering  Recall – Software engineering is "[t]he application of a systematic, disciplined, quantifiable approach to the development, operation, and maintenance of software". 1  This is a process! 1 1 IEEE STD , IEEE Standard Glossary of Software Engineering Terminology, IEEE Computer Society, 1990.

Problem Solving Process 2  What is it?  Analysis  Design  Implementation  Testing  Before we talk specifically about software  Let’s talk about chickens 3 … 2 Adapted from James Cohoon and Jack Davidson’s slides for “Java 1.5 Program Design”. 3 Chicken pictures from

Problem Solving Process

Moving on to software processes  Many different software processes  We are going to look at a few in detail  In practice, most software projects may use a modified, merged, or mangled version of one or more processes

Software Process Discussion  Stake holders  client – person who puts up the bucks  user – person who uses the software  developer – person(s) who builds the software  Process Description  Formal or informal, written down somewhere or not  Steps (next slide)  Intermediate (and final) products  Controls (management, problems) 1 Adapted from Premkumar Devanbu’s “Software Process” lecture. Used with permission.

Software process steps  Goals – why this step?  Participants – who are the players?  Product – what is the output of this step?  Issues / Problems – what are the common problems or issues that come up in this step? 1 Adapted from Premkumar Devanbu’s “Software Process” lecture. Used with permission.

The Waterfall Model 1 Adapted from Premkumar Devanbu’s “Software Process” lecture. Used with permission.

Requirements analysis  Goals  Answer the question: what are we going to build?  Participants  Users  Engineers  Marketers  Analysts  Models, tools, methods  Use case analysis  Focus groups  Formal specification languages (Z)  Scenarios  Products  Requirements specification document (understandable, precise, complete)  Issues  Functional / non functional requirements  Preparation of user manual  System test descriptions  Details? 1 Adapted from Premkumar Devanbu’s “Software Process” lecture. Used with permission.

High-level design  Goals  Answer the question: how will we structure the system?  Participants  Architects  Marketers  Performance experts  Models, tools, methods  Architecture modeling languages (CORBA IDL, Wright, etc...)  Performance models / analysis tools  Boxes, arrows, and pictures  Products  High level design document (describes processes, major components, dependencies)  Issues  Architectural styles  Trade-offs: flexibility vs. efficiency  Personnel / organizational issues 1 Adapted from Premkumar Devanbu’s “Software Process” lecture. Used with permission.

Low-level design  Goals  Answer the question: what modules, objects, frameworks will we build?  Participants  OO Designers  Architects  Hotshot programmers  Models, tools, methods  UML, OMT, Rational Rose  Formalized boxes, pictures, and arrows  Products  Low level design documents  C/C++ header files  Issues  Styles: design patterns, algorithms, data structures  Trade-offs: space vs. time  Reuse of existing frameworks and libraries 1 Adapted from Premkumar Devanbu’s “Software Process” lecture. Used with permission.

Implementation  Goals  Crank the code, have no life.  Participants  Coldshot programmers (innocent, recent BS graduates)  Models, tools, methods  IDE (Microsot.NET, Borland JBuilder, etc...)  Products  Code  Issues  Coding standards and practices  Defensive coding 1 Adapted from Premkumar Devanbu’s “Software Process” lecture. Used with permission.

Testing / Verification  Goals  Find the bugs in the system  Participants  Interns, testers, statisticians  Models, tools, methods  Coverage testing (e.g., PureCov)  Abstract data flow models  Products  A tested system  Not necessarily bug free  Issues  Cost of testing vs. releasing product now and fixing later  Testing vs. inspection vs. formal verification  Black box vs. white box testing 1 Adapted from Premkumar Devanbu’s “Software Process” lecture. Used with permission.

The good and the bad  Good  Managers keep on top of things  Lots of paper. Organizational memory  Managing and avoiding conflicts  Less risk of the “oops” factor  Bad  Rigid, time-consuming  May miss time to market  Could be a down a lot of $$$ before revenue starts  Information may not be available when needed  Things may change!

Prototype / Evolutionary Model

The good and the bad  Good  Customers get quick look at product  Possible revenue early  Able to start tuning product to market  More fun for engineers  Competitors may find out!  Bad  Competitors may find out!  Can be chaotic  How do you build a prototype quickly?  Infrastructure available / expensive?  “Throw away mentality” might hurt quality

Ad Hoc Model Do stuff Ship! 1 Adapted from Premkumar Devanbu’s “Software Process” lecture. Used with permission.

The good and the bad  Good  Less bureaucratic  Less document intense  Easier to conceal from competitors  Bad  Only developers involved in entire product development  Very poor quality control  Difficult to diagnose problems  Difficult to improve 1 Adapted from Premkumar Devanbu’s “Software Process” lecture. Used with permission.

Other software processes  Build-and-fix model  This is an easy problem. Just DO it.  Rapid prototyping model  You will throw the first one away anyway.  Incremental model  Software is built, no written.  Agile model  Things are going to change, be flexible!  Spiral model  Software development is risky. Know the risks.  Capability maturity model  Control the development procedure and you control the product.  ISO-9000  Stress the documentation. Quality product will follow.

So…which one?  Which process are we going to use?  The contenders  Waterfall  Prototyping  Ad-hoc  Build-and-fix model  Rapid prototyping model  Incremental model  Agile model  Spiral model  Capability maturity model  ISO-9000

The answer is…  Agile!  Specifically, scrum  More in a bit…

But first … dangers of “winging it”

“When patents attack”