Modern Software Development Fawzi Emad Chau-Wen Tseng Department of Computer Science University of Maryland, College Park.

Slides:



Advertisements
Similar presentations
Information Systems Systems Development Chapter 6.
Advertisements

1 ICS102: Introduction To Computing King Fahd University of Petroleum & Minerals College of Computer Science & Engineering Information & Computer Science.
The System and Software Development Process Instructor: Dr. Hany H. Ammar Dept. of Computer Science and Electrical Engineering, WVU.
Firewall Query Engine and Firewall Comparison Engine Mohamed Gouda Alex X. Liu Computer Science Department The University of Texas at Austin.
Formal Methods in Software Engineering Credit Hours: 3+0 By: Qaisar Javaid Assistant Professor Formal Methods in Software Engineering1.
1 CMSC 132: Object-Oriented Programming II Nelson Padua-Perez William Pugh Department of Computer Science University of Maryland, College Park.
1 CMSC 132: Object-Oriented Programming II Software Development II Department of Computer Science University of Maryland, College Park.
© 2008 Pearson Prentice Hall, Experiencing MIS, David Kroenke
Ch. 1: Software Development (Read) 5 Phases of Software Life Cycle: Problem Analysis and Specification Design Implementation (Coding) Testing, Execution.
Computer Engineering 203 R Smith Requirements Management 6/ Requirements IEEE Standard Glossary A condition or capability needed by a user to solve.
CMSC 132: Object-Oriented Programming II
Exceptions in Java Fawzi Emad Chau-Wen Tseng Department of Computer Science University of Maryland, College Park.
Department of Computer Science University of Maryland, College Park
1 CMSC 132: Object-Oriented Programming II Software Development I Department of Computer Science University of Maryland, College Park.
Chapter 6 Systems Development.
Software Engineering CSE470: Requirements Analysis 1 Requirements Analysis Defining the WHAT.
Software Development Overview CPSC 315 – Programming Studio Spring 2009.
1 CMSC 132: Object-Oriented Programming II Nelson Padua-Perez William Pugh Department of Computer Science University of Maryland, College Park.
Midterm 1 Overview Fawzi Emad Chau-Wen Tseng Department of Computer Science University of Maryland, College Park.
Java Review 2 – Errors, Exceptions, Debugging Nelson Padua-Perez Chau-Wen Tseng Department of Computer Science University of Maryland, College Park.
Final Overview Fawzi Emad Chau-Wen Tseng Department of Computer Science University of Maryland, College Park.
1 CMSC 132: Object-Oriented Programming II Software Development III Department of Computer Science University of Maryland, College Park.
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.
BPC.1 Basic Programming Concepts
1COM6030 Systems Analysis and Design © University of Sheffield 2005 COM 6030 Software Analysis and Design Lecture 1- Introduction Dr Richard Clayton &
Software design and development Marcus Hunt. Application and limits of procedural programming Procedural programming is a powerful language, typically.
CS527: (Advanced) Topics in Software Engineering Overview of Software Quality Assurance Tao Xie ©D. Marinov, T. Xie.
USS Yorktown (1998) A crew member of the guided-missile cruiser USS Yorktown mistakenly entered a zero for a data value, which resulted in a division by.
S/W Project Management
Introduction CSE 1310 – Introduction to Computers and Programming
© Janice Regan, CMPT 128, Jan CMPT 128 Introduction to Computing Science for Engineering Students Creating a program.
Invitation to Computer Science 5 th Edition Chapter 9 Introduction to High-Level Language Programming.
An Introduction to Software Engineering CSCI 3033 Data Structures.
Software Engineering 2003 Jyrki Nummenmaa 1 REQUIREMENT SPECIFICATION Today: Requirements Specification Requirements tell us what the system should.
SOFTWARE ENGINEERING Hoang Huu Hanh, Hue University hanh-at-hueuni.edu.vn.
SE-02 SOFTWARE ENGINEERING LECTURE 3 Today: Requirements Analysis Requirements tell us what the system should do - not how it should do it. Requirements.
المحاضرة الثالثة. Software Requirements Topics covered Functional and non-functional requirements User requirements System requirements Interface specification.
COP 3530 PROGRAM, FILE & DATA STRUCTURES Syllabus Syllabus Lab Information Lab Information Overrides Overrides Questions? Questions?
Modern Software Development Nelson Padua-Perez Chau-Wen Tseng Department of Computer Science University of Maryland, College Park.
The Software Development Life Cycle. Software Development SDLC The Software Development Life-Cycle Sometimes called the program development lifecycle.
Modeling and simulation of systems Model building Slovak University of Technology Faculty of Material Science and Technology in Trnava.
1COM6030 Systems Analysis and Design © University of Sheffield 2005 COM 6030 Software Analysis and Design Lecture 1- Introduction Module homepage
Software Development Cycle What is Software? Instructions (computer programs) that when executed provide desired function and performance Data structures.
Fundamental Programming: Fundamental Programming K.Chinnasarn, Ph.D.
Lecture 08 – Documentation, debugging.  docstring  A special kind of string (text) used to provide documentation  Appears at the top of a module 
Quality Software Project Management Software Size and Reuse Estimating.
The System and Software Development Process Instructor: Dr. Hany H. Ammar Dept. of Computer Science and Electrical Engineering, WVU.
1 Chapter 1 The Product. 2 What is Software?  Pressman Instruction (computer programs) Data Structures Documents  Sommerville Software is computer programs.
1 Ch. 1: Software Development (Read) 5 Phases of Software Life Cycle: Problem Analysis and Specification Design Implementation (Coding) Testing, Execution.
Software Defects.
OHTO -01 SOFTWARE ENGINEERING LECTURE 3 Today: Requirements Analysis Requirements tell us what the system should do - not how it should do it.
Software Development Problem Analysis and Specification Design Implementation (Coding) Testing, Execution and Debugging Maintenance.
Software Engineering. Acknowledgement Charles Moen Sharon White Bun Yue.
1 - 1 Systems Analysis and Design, Key Ideas Many failed systems were abandoned because analysts tried to build wonderful systems without understanding.
CSI 1340 Introduction to Computer Science II Chapter 1 Software Engineering Principles.
CS 351/ IT 351 Modeling and Simulation Technologies Review ( ) Dr. Jim Holten.
Chapter 1 Software Development Dr. Bernard Chen Ph.D. University of Central Arkansas Fall 2008.
Lecture #1: Introduction to Algorithms and Problem Solving Dr. Hmood Al-Dossari King Saud University Department of Computer Science 6 February 2012.
Dillon: CSE470: ANALYSIS1 Requirements l Specify functionality »model objects and resources »model behavior l Specify data interfaces »type, quantity,
1 Advanced Computer Programming Project Management: Basics Copyright © Texas Education Agency, 2013.
Software Development Life Cycle. The Software Life Cycle  Encompasses all activities from initial analysis until end of work  Formal process for software.
 Programming methodology: ◦ is a process of developing programs that involves strategically dividing important tasks into functions to be utilized by.
Dept of Computer Science University of Maryland College Park
ICS 3UI - Introduction to Computer Science
By Dr. Abdulrahman H. Altalhi
CS & CS Capstone Project & Software Development Project
The Top 10 bugs
CHAPTER 10 METHODOLOGIES FOR CUSTOM SOFTWARE DEVELOPMENT
CS310 Software Engineering Lecturer Dr.Doaa Sami
Presentation transcript:

Modern Software Development Fawzi Emad Chau-Wen Tseng Department of Computer Science University of Maryland, College Park

Overview Motivation for modern software development Software life cycle

Motivation Software development problems Software projects fail Software contributing to real failures Impact of software failures increasing

Software Development Problems Software is expensive Cost per line of code increasing (while hardware costs drop) Software is late (schedule overruns) Software cost more (cost overruns) Software is difficult to use Software is difficult to understand Software is missing features Software is too slow

Software Projects Fail Anywhere from 25-50% of custom software fail Latest example Jan 13, 2005, LA Times “A new FBI computer program designed to help agents share information to ward off terrorist attacks may have to be scrapped, forcing a further delay in a four-year, half-billion-dollar overhaul of its antiquated computer system… Sources said about $100 million would be essentially lost if the FBI were to scrap the software…”

Software Contributing to Real Failures 1990 AT&T long distance calls fail for 9 hours Wrong location for C break statement 1996 Ariane rocket explodes on launch Overflow converting 64-bit float to 16-bit integer 1999 Mars Climate Orbiter crashes on Mars Missing conversion of English units to metric units

Impact of Software Failures Increasing Software becoming part of basic infrastructure Software in cars, appliances Business transactions moving online Computers becoming increasingly connected Failures can propagate through internet Internet worms Failures can be exploited by others Viruses Spyware

Why Is Software So Difficult? Complexity Software becoming much larger Millions of line of code Hundreds of developers Many more interacting pieces Length of use Software stays in use longer Features & requirements change Data sets increase Can outlast its creators

Software Size Small 1-2 programmers, < 3000 lines of code Medium 2-5 programmers, < 20,000 lines of code Large 5-20 programmers, < 100,000 lines of code Very large programmers, < 1 million lines of code Extremely large > 200 programmers, > 1 million lines of code

Software Size Small software projects Can keep track of details in head Last for short periods What students learn in school Large projects Much more complex Commonly found in real world Why we try to teach you Software engineering Object-oriented programming

Software Life Cycle Coding is only part of software development Software engineering requires Preparation before writing code Follow-up work after coding is complete Software life cycle Certain essential operations needed for good software development No universal agreement, just general agreement

Software Life Cycle 1. Problem specification 2. Program design 3. Algorithms and data structures 4. Coding and debugging 5. Testing and verification 6. Documentation and support 7. Maintenance

“Waterfall Model” of Life Cycle Simple model Proceed from one step to next Return to previous step if needed In reality Steps may be more integrated Steps may overlap and occur at same time

Software Life Cycle Waterfall model Works better for smaller projects Some alternative approaches “Extreme programming” Write test cases before writing code “Rapid prototyping” Use working prototype to refine specifications

Problem Specification Goal Create complete, accurate, and unambiguous statement of problem to be solved Problems Description may not be accurate Description may change over time Difficult to specify behavior for all inputs Natural language description is imprecise Formal specification languages limited and difficult to understand

Problem Specification Example Specification of input & output for program

Problem Specification Problems Description may not be accurate Problem not understood by customer Description may change over time Customer changes their mind Difficult to specify behavior for all inputs Usually only covers common cases Hard to consider all inputs (may be impossible) Example Bart Miller was able to crash most UNIX utilities with randomly generated inputs

Problem Specification Problems Description may be ambiguous Natural language description is imprecise Why lawyers use legalese for contracts Formal specification languages are limited and may be difficult to understand Examples Find sum of all values in N-element list L between 1 and 100  L i  (L i  1)  (L i  100) Difficult to write specifications that are both readable and precise i = 0 N-1