Principles of Software Engineering: Why Study Software Engineering? COSI 120b, Spring 2005.

Slides:



Advertisements
Similar presentations
S-Curves & the Zero Bug Bounce:
Advertisements

Testing and Quality Assurance
A presentation from June 20, 2000 Jim Brosseau The ‘How-To’ of Software Process Improvement.
SOFTWARE DEVELOPMENT METHODOLOGIES Methodologies Waterfall Prototype model Incremental Iterative V-Model Spiral Scrum Cleanroom RAD DSDM RUP.
SDLC – Beyond the Waterfall
CSE 436—Personal Software Processes, Software Development Models Ron K. Cytron 3 October 2005.
CS 325: Software Engineering January 13, 2015 Introduction Defining Software Engineering SWE vs. CS Software Life-Cycle Software Processes Waterfall Process.
Computer Engineering 203 R Smith Project Tracking 12/ Project Tracking Why do we want to track a project? What is the projects MOV? – Why is tracking.
Agile Software Development. Traditional Software Development 1.Initiation (RFP) 2.Feasibility study Technical – can we build it? Economic – should we.
Software Engineering. How many lines of code? Average CS1004 assignment: 200 lines Average CS4115 project: 5000 lines Corporate e-commerce project: 80,000.
Software Engineering.
Telecommunications Project Management Quality Management PERT.
Swami NatarajanJune 17, 2015 RIT Software Engineering Reliability Engineering.
SE 450 Software Processes & Product Metrics Reliability Engineering.
©Ian Sommerville 2000 Software Engineering, 6th edition Slide 1 Software Processes l Coherent sets of activities for specifying, designing, implementing.
1 CMSC 132: Object-Oriented Programming II Software Development I Department of Computer Science University of Maryland, College Park.
Computer Engineering 203 R Smith Agile Development 1/ Agile Methods What are Agile Methods? – Extreme Programming is the best known example – SCRUM.
Software Engineering CSE470: Requirements Analysis 1 Requirements Analysis Defining the WHAT.
Software Development Overview CPSC 315 – Programming Studio Spring 2009.
Xtreme Programming. Software Life Cycle The activities that take place between the time software program is first conceived and the time it is finally.
Software Development Overview CPSC 315 – Programming Studio Spring 2008.
Course Retrospective Richard Anderson CSE 403 Lecture 27.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 4 Slide 1 Software Processes.
Project phases and the life cycle
Software Reliability: The “Physics” of “Failure” SJSU ISE 297 Donald Kerns 7/31/00.
Software Development Process
CPTE 209 Software Engineering Summary and Review.
CS3500 Software Engineering How does a “program” differ from a “software system”? Program System Tens to hundreds of lines of code Thousands to millions.
CompSci 230 Software Design and Construction
IT Systems Analysis & Design
Chapter 5 Software Process Models. Problems with “Traditional” Processes 1.Focused on and oriented towards “large projects” and lengthy development time.
CS 360 Lecture 3.  The software process is a structured set of activities required to develop a software system.  Fundamental Assumption:  Good software.
1.  Project: temporary endeavor to achieve some specific objectives in a defined time  Project management ◦ Dynamic process ◦ Controlled and structured.
 CS 5380 Software Engineering Chapter 8 Testing.
1 מודל ניהול הצוותים של MSF. 2 Causes of failure  Poorly-defined objectives  Insufficient planning  Lack of executive support  Organizational barriers.
University of Virginia Software Development Processes (CS340 John Knight 2005) 1 Software Development Processes.
Software Metrics and Reliability. Definitions According to ANSI, “ Software Reliability is defined as the probability of failure – free software operation.
Putting the “Engineering” in Software Engineering: Technology Infrastructure in Process Improvement Adam Kolawa, Ph.D. CEO, Parasoft.
Object-Oriented Software Engineering Practical Software Development using UML and Java Chapter 1: Software and Software Engineering.
From Quality Control to Quality Assurance…and Beyond Alan Page Microsoft.
AP-1 5. Project Management. AP-2 Software Failure Software fails at a significant rate What is failure? Not delivering it on time is an estimation failure.
Chapter 3 Project Management Chapter 3 Project Management Organising, planning and scheduling software projects.
Software Maintenance Speaker: Jerry Gao Ph.D. San Jose State University URL: Sept., 2001.
Software Life-Cycle and Models
WATERFALL DEVELOPMENT MODEL. Waterfall model is LINEAR development lifecycle. This means each phase must be completed before moving onto the next!!! WHAT.
Software Engineering Jon Walker. What is Software Engineering? Why do we call it Software Engineering? Why not just call it programming or software development?
Software Development Life Cycle (SDLC)
Chapter 2 : The Project Management and Information Technology Context Information Technology Project Management, Fourth Edition.
System Maintenance Modifications or corrections made to an information system after it has been released to its customers Changing an information system.
Agile. Processes Waterfall Traditional With prototyping Sprial Agile Dynamic Systems Development Method (DSDM) Scrum Crystal eXtreme Programming (XP)
Software Testing Process
Chapter 1: Introduction Omar Meqdadi SE 3860 Lecture 1 Department of Computer Science and Software Engineering University of Wisconsin-Platteville.
Project Management Why do projects fail? Technical Reasons
Software Development Process CS 360 Lecture 3. Software Process The software process is a structured set of activities required to develop a software.
CS223: Software Engineering Lecture 16: The Agile Methodology.
Requirements Engineering Processes, York EngD Programme, 2009Slide 1 Requirements engineering processes Prof Ian Sommerville.
Slide #18-1 Introduction to Assurance CS461/ECE422 Fall 2008 Based on slides provided by Matt Bishop for use with Computer Security: Art and Science.
By Manish Shrotriya CSE MS Software Engineering vs Software Project Engineering Goals: Develop quality software What is quality of a software.
 System Requirement Specification and System Planning.
Software Engineering Salihu Ibrahim Dasuki (PhD) CSC102 INTRODUCTION TO COMPUTER SCIENCE.
Software Development - Methodologies
Software Development Overview
Methodologies and Algorithms
Software Metrics and Reliability
Software Development methodologies
The Systems Engineering Context
Methodologies By Akinola Soyinka.
By Jamie, James and Chloe
The Software Development Cycle
Software Development Overview
Presentation transcript:

Principles of Software Engineering: Why Study Software Engineering? COSI 120b, Spring 2005

Failure Rates Failure is an unexpected result Every “system” fails –Hard drives crash –Transistors burn out –Engines fail to start –Metal fatigues –Etc Every system, eventually, fails

Failure Rates Computer hardware has a relatively predictable failure curve

Failure Rates Hardware may be more prone to failure in its beginning of service –Defects in manufacturing It may also be prone to failure after time –MTBF, general parts wearing out Some hardware may be of better quality, and less prone to failure The chance of failure is NEVER zero

Failure Rates What about software? –No parts to wear out –No manufacturing defects What should the software failure curve look like?

Failure Rates

Is this picture accurate? Why not?

Failure Rates Software is a complex system –Complex systems have unforeseen interactions The underlying operating system may change Unexpected conditions may arise A key external library may be upgraded A new feature may be needed A bug fix may actual cause more bugs

Failure Rates

Failure for a software system depends on many factors As the circumstances surrounding the system change and become more complex, failure trends upward Complexity is a key concept

Complexity Complexity Theory talks about uncertainty in systems –A stable system has known, fixed laws –A complex (chaotic) system has uncertainty The laws change, values change Probabilistic versus fixed values and application –As complexity increases, the stability of the system decreases

Complexity As the system changes, its complexity increases

Complexity “x” can be a number of factors –Lines of Code (LOC) –Number of programmers –Number of changes –Number of days since release –Number of new developers –Number of different “functions”

Software Engineering Software systems will always be complex Therefore, the study of software engineering is the study of how to manage complexity in software systems

Software Engineering What are the sources of complexity –Increasing project size –Increasing project requirements –Design changes –Bug fixes –Dependent system changes (operating system, libraries) –Increasing team size –…

Software Engineering What are the solutions to increasing complexity? –Process management Identification, testing, integration, agreement –Communication Not every developer needs to know the whole system –Limitations Not every bug is critical Not every feature is critical

Processes Software processes help manage product development and change –Traditional models change the system through well-defined stages Waterfall Spiral –Non-traditional models breakdown the boundaries between stages Extreme Programming Agile Development

Communication Communication between developers helps reduce complexity –Coordination of developer efforts Awareness what other developers are working on Status of project code –Coordinating representations Bug tracking Unit testing results Smoke tests –Customer communication Feedback on prototypes Customer happiness with the project

Limitations Does every requirement from the customer get implemented? –What about conflicting requirements? –What about very difficult requirements that do not have clear value? Does every bug get fixed? –Cosmetic bugs vs. Show Stoppers Prioritization is key

Why Study Software Engineering? Why are we studying this topic? –As systems get larger, their complexity increases –As the complexity of the system increases, unintended consequences increase Unexpected behaviors (i.e. bugs) Inconsistent behaviors –So we study software engineering to try to mitigate the complexity