1. Introduction Kirstie Hawkey, CS3130 SOFTWARE ENGINEERING – Summer 20112 Slides adapted from A. Rau Chaplin.

Slides:



Advertisements
Similar presentations
SEP1 - 1 Introduction to Software Engineering Processes SWENET SEP1 Module Developed with support from the National Science Foundation.
Advertisements

Metrics for Process and Projects
CS540 Software Design Lecture 1 1 Lecture 1: Introduction to Software Design Anita S. Malik Adapted from Budgen (2003) Chapters 1.
The Role of Software Engineering Brief overview of relationship of SE to managing DSD risks 1.
SAK5102 SOFTWARE EVALUATION Semester II 2008/ credits Tuesday 6.30 pm – 9.30 pm (BK1) Assoc. Prof Dr. Abdul Azim Abd Ghani 1.
R R R CSE870: Advanced Software Engineering (Cheng): Intro to Software Engineering1 Advanced Software Engineering Dr. Cheng Overview of Software Engineering.
1 Software Engineering II Presentation Software Maintenance.
3130 Summer What is Software?  Software (IEEE) is a collection of  programs,  procedures,  rules, and  associated documentation and data CS3130.
Andrew Rau-Chaplin Introduction Andrew Rau-Chaplin CS3130 SOFTWARE ENGINEERING.
Chapter 2- Software Process Lecture 4. Software Engineering We have specified the problem domain – industrial strength software – Besides delivering the.
 Software Software  Program vs Software Products Program vs Software Products  Software Characteristics Software Characteristics  Software Crisis.
VENDORS, CONSULTANTS AND USERS
Lecture 3.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 17 Slide 1 Extreme Programming.
Effective Methods for Software and Systems Integration
Handouts Software Testing and Quality Assurance Theory and Practice Chapter 17 Software Quality
Software Project Management
Software Project Management Fifth Edition
 The software systems must do what they are supposed to do. “do the right things”  They must perform these specific tasks correctly or satisfactorily.
Software Engineering Methodologies (Introduction)
Why is software engineering worth studying?  Demand for software is growing dramatically  Software costs are growing per system  Many projects have.
Software System Engineering: A tutorial
SOFTWARE ENGINEERING1 Introduction. Software Software (IEEE): collection of programs, procedures, rules, and associated documentation and data SOFTWARE.
CS 360 Lecture 3.  The software process is a structured set of activities required to develop a software system.  Fundamental Assumption:  Good software.
2-Oct-15 1 Introduction to Software Engineering Softwares Importance of SWE Basic SWE Concepts ICS Software Engineering.
Chapter 6 : Software Metrics
2-Oct-15 Introduction to SWE1 Introduction to Software Engineering Softwares Importance of SWE Basic SWE Concepts.
OHTO -99 SOFTWARE ENGINEERING “SOFTWARE PRODUCT QUALITY” Today: - Software quality - Quality Components - ”Good” software properties.
Topic (1)Software Engineering (601321)1 Introduction Complex and large SW. SW crises Expensive HW. Custom SW. Batch execution.
CS 350, slide set 6 M. Overstreet Old Dominion University Spring 2005.
1 Scope of Software Engineering Somnuk Keretho, Assistant Professor Department of Computer Engineering Faculty of Engineering, Kasetsart University
Object-Oriented Software Engineering Practical Software Development using UML and Java Chapter 1: Software and Software Engineering.
Software Engineering EKT 420 MOHAMED ELSHAIKH KKF 8A – room 4.
This chapter is extracted from Sommerville’s slides. Text book chapter
Chapter 1: Introduction Omar Meqdadi SE 2730 Lecture 1 Department of Computer Science and Software Engineering University of Wisconsin-Platteville.
Software Project Management Lecture # 3. Outline Chapter 22- “Metrics for Process & Projects”  Measurement  Measures  Metrics  Software Metrics Process.
OHTO -99 SOFTWARE ENGINEERING “SOFTWARE PRODUCT QUALITY” Today: - Software quality - Quality Components - ”Good” software properties.
Lecture 4 Software Metrics
1 Requirements Management - General concepts - Noureddine Abbadeni King Saud University College of Computer and Information Sciences Based on “Software.
Object-Oriented Software Engineering Practical Software Development using UML and Java Chapter 1: Software and Software Engineering.
Object-Oriented Software Engineering Practical Software Development using UML and Java Chapter 1: Software and Software Engineering.
INFO 636 Software Engineering Process I Prof. Glenn Booker Week 9 – Quality Management 1INFO636 Week 9.
Historical Aspects Origin of software engineering –NATO study group coined the term in 1967 Software crisis –Low quality, schedule delay, and cost overrun.
Estimation - Software Metrics Managers frequently have to measure the productivity of software engineers.
SOFTWARE ENGINEERING1 Introduction. SOFTWARE ENGINEERING2 Software Q : If you have to write a 10,000 line program in C to solve a problem, how long will.
Computing and SE II Chapter 15: Software Process Management Er-Yu Ding Software Institute, NJU.
CS551 - Lecture 5 1 CS551 Lecture 5: Quality Attributes Yugi Lee FH #555 (816)
1 EE29B Feisal Mohammed EE29B: Introduction to Software Engineering Feisal Mohammed Ph: x3156.
Ch-1 Introduction The processes used for executing a software project have major effect on quality of s/w produced and productivity achieved in project…
SOFTWARE ENGINEERING1 Introduction. SOFTWARE ENGINEERING2 Software Q : If you have to write a 10,000 line program in C to solve a problem, how long will.
CS 5150 Software Engineering Lecture 2 Software Processes 1.
Dr. DEVENDRA TAYAL– THE SCOPE OF SOFTWARE ENGINEERING.
Stand Up Comedy Project/Product Management
CSE SW Measurement and Quality Engineering Copyright © , Dennis J. Frailey, All Rights Reserved CSE8314M15 version 5.09Slide 1 SMU CSE.
Advanced Software Engineering Lecture 4: Process & Project Metrics.
Software Engineering (CSI 321) Introduction. Introduction Course Title: Software Engineering Course Code: CSI-321 Credit Hours: 3 Section: 1 2.
Software Development Process CS 360 Lecture 3. Software Process The software process is a structured set of activities required to develop a software.
Object-Oriented Software Engineering Practical Software Development using UML and Java Chapter 1: Software and Software Engineering.
 System Requirement Specification and System Planning.
Advanced Software Engineering Dr. Cheng
Why is software engineering worth studying?
Introduction Edited by Enas Naffar using the following textbooks: - A concise introduction to Software Engineering - Software Engineering for students-
Introduction SOFTWARE ENGINEERING.
IEEE Std 1074: Standard for Software Lifecycle
Software Engineering (CSI 321)
Software Quality Engineering
Introduction Edited by Enas Naffar using the following textbooks: - A concise introduction to Software Engineering - Software Engineering for students-
Software metrics.
The Software Development Cycle
Presentation transcript:

1

Introduction Kirstie Hawkey, CS3130 SOFTWARE ENGINEERING – Summer Slides adapted from A. Rau Chaplin

CS3130 SOFTWARE ENGINEERING – Summer  Instructor:  Kirstie Hawkey  Room 225   Office hours: TBA  TA:  Dinesh Tagra  Location TBA   Office hours: TBA

This Course CS3130 SOFTWARE ENGINEERING – Summer  Software Engineering is the systematic approach to development, deployment, operation, maintenance, and retirement of Software (SW).  Basic Question Software Engineering  How to develop industrial-strength software?

What this course will give? CS3130 SOFTWARE ENGINEERING – Summer  Main objective: Give an idea of how industrial- strength software gets developed  At the end: you should have the ability to plan, execute, and manage small software projects.  Lectures: will discuss how to perform different tasks in a project  In the project: the techniques will be applied

Project CS3130 SOFTWARE ENGINEERING – Summer  A group project with 4-5 people  All groups will develop software from the same product description  Approximately 8-10 hours per week per student  Will start from 2 nd week and last till the semester end

Evaluation and Grading CS3130 SOFTWARE ENGINEERING – Summer  See syllabus for details:  Group work on the project: 70%  Individual components critiquing project elements: 30%  All members of a project team will receive the same grade for Group Work Products unless there is a documented reason for a less than equal distribution based on:  the submitted documents, including weekly project reports  the minutes of project meetings  group reviews, and  the instructors discretion based on other communication with group members.

Evaluation and Grading CS3130 SOFTWARE ENGINEERING – Summer  NO LATE ASSIGNMENTS ACCEPTED EXCEPT IN EXTRAORDINARY SITUATIONS  Acknowledge all collaborators and any other sources used in all submitted work.  Plagiarism and other anti-intellectual behavior will be dealt with severely. ALL CASES OF SUSPECTED PLAGIARISM WILL BE IMMEDIATELY HANDED OVER THE UNIVERSITY'S SENATE DISCIPLINE COMMITTEE. (see syllabus for more information).  When in doubt, attribute.

Review of… Website Course Schedule CS3130 SOFTWARE ENGINEERING – Summer 20119

Warming up… CS3130 SOFTWARE ENGINEERING – Summer

Tell us about yourself CS3130 SOFTWARE ENGINEERING – Summer  My name is…  I like to….  My best work experience…  Was doing X at company Y…  Using tools A, B and C…  I liked/disliked it because…  Five years after I graduate I would like to..  Be working for company like…  In a role involving…

Skills Survey CS3130 SOFTWARE ENGINEERING – Summer  Name: ___________Student #:_______ _________  Number of years: in Comp Sci ____, programming: ____.  Rank you skills in the following areas where 1=poor, 2=passable, 3=good, 4=strong, and 5=exceptional.  C Coding skills:  Java Coding skills:  DB Development:  Web Development:  Large Software Design:  Software Tools:  Project Management:  Testing skills:  Documentation and Writing: List up to 2 people in the class you would like to work with: 1) 2) List up to 2 people in the class you would like to work with: 1) 2)

Let’s Begin….. CS3130 SOFTWARE ENGINEERING – Summer

What is Software? CS3130 SOFTWARE ENGINEERING – Summer  Software (IEEE) is a collection of  programs,  procedures,  rules, and  associated documentation and data

Software CS3130 SOFTWARE ENGINEERING – Summer  Q : If you have to write a 10,000 line program in C to solve a problem, how long will it take?  Answers: generally range from 2-4 months  Let us analyze the productivity  Productivity = output/input resources  In SW output is considered as LOC  Input resources is effort - person months; overhead cost modeled in rate for person month  Though not perfect, some productivity measure is needed, as project has to keep it high

Software … CS3130 SOFTWARE ENGINEERING – Summer  The productivity is KLOC/PM  Q: What is the productivity in a typical commercial SW organization ?  A: Between 100 to 1000 LOC/PM  Q: Why is it low, when your productivity is so high? (people like you work in the industry)  A: What the student is building and what the industry builds are two different things

Software… CS3130 SOFTWARE ENGINEERING – Summer  Students build: student software  Industry builds: industrial strength Systems  What is the difference between  student software and  industrial strength software for the same problem?

Software… CS3130 SOFTWARE ENGINEERING – Summer Student  Developer is the user  Works for the typical case most of the time  Bugs are tolerable  UI not important  No documentation Industrial Strength  Others are the users  Works robustly  Bugs not tolerated  UI very important issue  Documents needed for the user as well as for the organization and the project

Software… CS3130 SOFTWARE ENGINEERING – Summer Student  SW not in critical use  Reliability, robustness not important  No investment  Don’t care about portability Industrial Strength  Supports important functions / business  Reliability, robustness are very important  Heavy investment  Portability is a key issue here

Industrial Strength Software CS3130 SOFTWARE ENGINEERING – Summer  Student programs != industrial strength software  Key difference is in quality (including usability, reliability, portability, etc.)  High quality requires heavy testing, which consumes 30-50% of total development effort  Requires development be broken in stages such that bugs can be detected in each  Good UI, backup, fault-tolerance, following of stds etc all increase the size for the same functionality

Industrial strength software CS3130 SOFTWARE ENGINEERING – Summer  If 1/5 th productivity, and increase in size by a factor of 2, industrial strength software will take 10 times effort  Brooks thumb-rule: Industrial strength SW costs 10 time more than student SW  In this course, software == industrial strength software

Software is Expensive CS3130 SOFTWARE ENGINEERING – Summer Rough cost estimate… Productivity = 500 LOC/PM Cost to the company = $10K/PM Cost per LOC = $20 So each line of delivered code costs about $20.  A simple application for a business may have 20KLOC to 50KLOC Cost = $100K to $1Million Can easily run on $10K-$20K hardware So HW costs <<< SW costs.

Software is Expensive… CS3130 SOFTWARE ENGINEERING – Summer  The HW/SW ratio for a computer system has shown a reversal from the early years.  In 50s, HW:SW :: 80:20  In 80s, HW:SW :: 20:80  So, SW is very expensive  Importance of optimizing HW is not much  More important to optimize SW

Late & Unreliable CS3130 SOFTWARE ENGINEERING – Summer  20-25% of SW projects never complete  Because after some time they realize that the final cost will be much higher  Many companies report “runaways”  Budget & cost out of control  Consulting companies to help control them  One defense survey found that 70% of the equipment problems are due to SW

Why is SW Unreliable? CS3130 SOFTWARE ENGINEERING – Summer  SW failures are different from failures of mechanical or electrical systems  In software, failures are not due to aging related problems  Failures occur due to bugs or errors that get introduced during development  The bug that causes a failure typically exists from start, only manifests later

Maintenance CS3130 SOFTWARE ENGINEERING – Summer  Once SW delivered, it enters maintenance phase  Why is maintenance needed for SW when it does not wear with age?  Residual errors requiring corrective maintenance  Upgrades and environment changes – adaptive maintenance  Over SW lifetime, maintenance can cost more than the development cost of SW

What is Software Engineering? CS3130 SOFTWARE ENGINEERING – Summer  Problem domain discussed before, now we discuss the area of SE  SE (IEEE): systematic approach to development,…., of software  Systematic approach: methodologies and practices that can be used to solve a problem from problem domain

Basic Problem CS3130 SOFTWARE ENGINEERING – Summer

SE Challenges CS3130 SOFTWARE ENGINEERING – Summer  The problem of producing software to satisfy user needs drives the approaches used in SE  Q: What other factors that drive the selection of a SE approach? 1. scale, 2. productivity, 3. quality, 4. consistency, 5. rate of change, …

1) Scale CS3130 SOFTWARE ENGINEERING – Summer SE must deal with problem of scale methods for solving small problems do not scale up for large problems industrial strength SW problems tend to be large SE methods must be scalable Two clear dimensions in this 1. engineering methods 2. project management For small, both can be informal or ad-hoc, for large both have to be formalized

1) Scale… CS3130 SOFTWARE ENGINEERING – Summer

1) Scale… CS3130 SOFTWARE ENGINEERING – Summer  An illustration of issue of scale is counting the number of people in a room vs taking a census  Both are counting problems  Methods used in first not useful for census  For large scale counting problem, must use different techniques and models  Management will become critical

1) Scale: Examples Gcc980KLOCC, C++, yacc Perl320 KLOCC, perl, sh Appache100 KLOCC, sh Linux30,000 KLOCC, C++ Windows XP40,000 KLOCC, C++ CS3130 SOFTWARE ENGINEERING – Summer

2) Productivity CS3130 SOFTWARE ENGINEERING – Summer  An enginerring project is driven by cost and schedule  Cost: In sw, cost is mainly manpower cost; hence, it is measured in person-months  Schedule is in months/weeks – very important in business context  In Biz context  Cost and Schedule can not be separated  SE must serve the Biz, NOT the other way around

2) Productivity CS3130 SOFTWARE ENGINEERING – Summer  Productivity captures both Cost and Schedule  If P is higher, cost is lower  If P is higher, time taken can be lesser  Approaches used by SE must deliver high Productivity

3) Quality CS3130 SOFTWARE ENGINEERING – Summer  Quality is the other major driving factor  Developing high Quality SW is a basic goal  Quality of SW is harder to define  Approaches used should produce a high Quality software

3) Quality – ISO standard CS3130 SOFTWARE ENGINEERING – Summer  ISO standard has six attributes 1. Functionality 2. Reliability 3. Usability 4. Efficiency 5. Maintainability 6. Portability

3) Quality… CS3130 SOFTWARE ENGINEERING – Summer  Multiple dimensions mean that not easy to reduce Q to a single number  Concept of Q is project specific  For some reliability is most important  For others usability may be more important  Reliability is generally considered the main Q criterion

3) Quality… CS3130 SOFTWARE ENGINEERING – Summer  Reliability = Probability of failure  Hard to measure  Approximated by # of defects in software  To normalize Quality = Defect density  Quality = # of defects delivered / Size  Defects delivered - approximated with no. of defects found in operation  Current practices: less than 1 defect/KLOC  What is a defect? Project specific!

4) Consistency and repeatability CS3130 SOFTWARE ENGINEERING – Summer  Sometimes a group can deliver one good software system, but not a second  Key SE challenge: how to ensure that success can be repeated ?  SE wants methods that can consistently produce high Quality SW with high Productivity  A SW org, wants to deliver high Q&P consistently across projects  Frameworks like  Inter. Org. for Standardization (ISO) and  Capability Maturity Model (CMM)  focus on this aspect

5) Rate of Change CS3130 SOFTWARE ENGINEERING – Summer  Only constant in business is change!  Software must change to support the changing business needs  SE practices must accommodate change  Methods that disallow change, even if high Q and P, are of little value

Goals of Industrial Strength SE CS3130 SOFTWARE ENGINEERING – Summer  Consistently develop SW with high Q&P for large scale problems, under change  Q&P are the basic objectives to be achieved  Q&P governed by people, processes, and technology

Iron Triangle CS3130 SOFTWARE ENGINEERING – Summer

Iron Triangle CS3130 SOFTWARE ENGINEERING – Summer  What happens when you break the triangle?  1) The project gets canceled.  15% of projects are cancelled before they deliver a system.  A study of 1,027 IT projects cited scope management related to serial practices as the single largest contributing factor to project failure in 82% of the projects and was given a overall weighted failure influence of 25%.study of 1,027 IT projects

Iron Triangle CS3130 SOFTWARE ENGINEERING – Summer  What happens when you break the triangle? 2) The Project is deliver late, over budget, or both  According to the Chaos Report 51% of projects are challenged (severely over budget and/or late), with an average cost overrun of 43%. Chaos Report

Iron Triangle CS3130 SOFTWARE ENGINEERING – Summer  What happens when you break the triangle? 3) The Project delivers poor quality software.  When development teams are forced to deliver more functionality than they have time or resources for, they are often motivated to take short cuts which inevitably result in poor quality.

Iron Triangle CS3130 SOFTWARE ENGINEERING – Summer  What happens when you break the triangle? 4) The project under delivers.  The team fails to deliver all of the required functionality.

Iron Triangle… CS3130 SOFTWARE ENGINEERING – Summer  What to do about it?  Recognize that the iron triangle must be respected.  So  Vary the Scope  Vary the Schedule  Vary the Resources  Vary two or more factors

SE Methodology CS3130 SOFTWARE ENGINEERING – Summer  SE focuses mostly on processes for achieving the goals  Process must be systematic  SE separates process for developing sw from the developed product (i.e the sw)  Premise: Process largely determines Q&P, hence suitable processes will lead to high Q&P

SE Methodology… CS3130 SOFTWARE ENGINEERING – Summer  Design of proper processes and their control is a key challenge SE faces  Sw process is the equivalent of manufacturing process  This focus on process makes SE different from many CS courses

SE Methodology… CS3130 SOFTWARE ENGINEERING – Summer  The development process used in SE is typically phased  Phases separate concerns with each phase focusing on some aspect  Requirements, architecture, design, coding, testing are key phases  This phased process has to be properly managed to achieve the objectives  Metrics and measurement important for this

Summary CS3130 SOFTWARE ENGINEERING – Summer  The problem domain for SE is industrial strength software  Software comprises programs, documentation, and data  SE aims to provide methods for systematically developing SW  Main goal – achieve high quality and productivity (Q&P)

Summary… CS3130 SOFTWARE ENGINEERING – Summer  Must have high Q&P with consistency in the context of large scale and frequent changes  Basic approach of SE is to separate process from products and focus on process and managing the process