1 CMSC 132: Object-Oriented Programming II Nelson Padua-Perez William Pugh Department of Computer Science University of Maryland, College Park.

Slides:



Advertisements
Similar presentations
Virtual University - Human Computer Interaction 1 © Imran Hussain | UMT Imran Hussain University of Management and Technology (UMT) Lecture 16 HCI PROCESS.
Advertisements

Systems Analysis & IT Project Management Pepper. System Life Cycle BirthDeathDevelopmentProduction.
Programming System development life cycle Life cycle of a program
1 CMSC 132: Object-Oriented Programming II Software Development II Department of Computer Science University of Maryland, College Park.
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.
Ch. 1: Software Development (Read) 5 Phases of Software Life Cycle: Problem Analysis and Specification Design Implementation (Coding) Testing, Execution.
Modern Software Development Fawzi Emad Chau-Wen Tseng Department of Computer Science University of Maryland, College Park.
CMSC 132: Object-Oriented Programming II
Chapter 1 Assuming the Role of the Systems Analyst
Computer Programming and Basic Software Engineering 4. Basic Software Engineering 1 Writing a Good Program 4. Basic Software Engineering 3 October 2007.
CMSC 132: Object-Oriented Programming II Nelson Padua-Perez William Pugh Department of Computer Science University of Maryland, College Park.
Department of Computer Science University of Maryland, College Park
Program Testing Nelson Padua-Perez Chau-Wen Tseng 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.
Testing HCI Usability Testing. Chronological order of testing Individual program units are built and tested (white-box testing / unit testing) Units are.
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 Nelson Padua-Perez William Pugh Department of Computer Science University of Maryland, College Park.
Solving Problems in IS: Systems Approaches Logical framework in which to work. Logical framework in which to work. Serves as a reminder. Did I forget anything?
Java Review 2 – Errors, Exceptions, Debugging Nelson Padua-Perez 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.
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.
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 Java Constructs Department of Computer Science University of Maryland, College Park.
Problem with Software Requirements are complex The client does not know the functional requirements in advance Requirements may be changing Technology.
1COM6030 Systems Analysis and Design © University of Sheffield 2005 COM 6030 Software Analysis and Design Lecture 1- Introduction Dr Richard Clayton &
CPSC 372 John D. McGregor Module 0 Session 1 Introduction.
Systems Analysis and Design: The Big Picture
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.
INTROSE Introduction to Software Engineering Raymund Sison, PhD College of Computer Studies De La Salle University Software: Definitions,
SOFTWARE ENGINEERING Hoang Huu Hanh, Hue University hanh-at-hueuni.edu.vn.
Object Oriented Analysis and Design Introduction.
Introduction Ellen Walker CPSC 201 Data Structures Hiram College.
Understand Application Lifecycle Management
Data Abstraction CS 201j: Engineering Software University of Virginia Computer Science Nathanael Paul
Introduction of Engineering (ENGR 10) Guest Lecture March 24, 2014.
Software Life Cycle Requirements and problem analysis. –What exactly is this system supposed to do? Design –How will the system solve the problem? Coding.
Chapter 1 The Systems Development Environment Modern Systems Analysis and Design Sixth Edition Jeffrey A. Hoffer Joey F. George Joseph S. Valacich.
Modern Software Development Nelson Padua-Perez Chau-Wen Tseng Department of Computer Science University of Maryland, College Park.
JAVA 0. HAFTA Algorithms FOURTH EDITION Robert Sedgewick and Kevin Wayne Princeton University.
1COM6030 Systems Analysis and Design © University of Sheffield 2005 COM 6030 Software Analysis and Design Lecture 1- Introduction Module homepage
Testing. 2 Overview Testing and debugging are important activities in software development. Techniques and tools are introduced. Material borrowed here.
Lecture 08 – Documentation, debugging.  docstring  A special kind of string (text) used to provide documentation  Appears at the top of a module 
1 김 수 동 Dept. of Computer Science Soongsil University Tel Fax
Software Engineering Chapter 3 CPSC Pascal Brent M. Dingle Texas A&M University.
Lecture 4. Software Engineering Body of Knowledge SWEBOK  Articulating a body of knowledge is an essential step toward developing a profession because.
An Agile Method for E-Service Composition Author : Pouya Fatehi, Seyyed Mohsen Hashemi Department of Computer Software, Science and Research Branch, Islamic.
1 Chapter 1 The Product. 2 What is Software?  Pressman Instruction (computer programs) Data Structures Documents  Sommerville Software is computer programs.
Software Development Overview CPSC 315 – Programming Studio Spring 2013.
PROC-1 1. Software Development Process. PROC-2 A Process Software Development Process User’s Requirements Software System Unified Process: Component Based.
Data Structures and Algorithms Dr. Tehseen Zia Assistant Professor Dept. Computer Science and IT University of Sargodha Lecture 1.
Connecting with Computer Science2 Objectives Learn how software engineering is used to create applications Learn some of the different software engineering.
SEN 460 Software Quality Assurance. Bahria University Karachi Campus Waseem Akhtar Mufti B.E(UIT), M.S(S.E) AAU Denmark Assistant Professor Department.
WATERFALL DEVELOPMENT MODEL. Waterfall model is LINEAR development lifecycle. This means each phase must be completed before moving onto the next!!! WHAT.
Software Engineering. Acknowledgement Charles Moen Sharon White Bun Yue.
Arrays Chapter 7. MIS Object Oriented Systems Arrays UTD, SOM 2 Objectives Nature and purpose of an array Using arrays in Java programs Methods.
Welcome to Software Project Management. CONVENTIONAL SOFTWARE MANAGEMENT The BEST and WORST thing about software is its flexibility. 1.Software development.
1 Structured Programming Arab Academy for Science and Technology CC112 Dr. Sherif Mohamed Tawfik The Course.
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.
Chapter 1 Assuming the Role of the Systems Analyst.
1 Advanced Computer Programming Project Management: Basics Copyright © Texas Education Agency, 2013.
Chapter 2- Software Development Process  Product Components  Software Project Staff  Software Development Lifecycle Models.
Chapter 7: Software Engineering
The Software Development Cycle
Software Life Cycle Models
Software Processes.
The Software Development Cycle
Presentation transcript:

1 CMSC 132: Object-Oriented Programming II Nelson Padua-Perez William Pugh Department of Computer Science University of Maryland, College Park

2 BitSet Class Implements a vector of bits where the bits of the set are indexed by nonnegative integers Methods BitSet() – New bit set BitSet(int nbits) – Bit set large enough to represent bits with indices from 0 through nbits – 1 and(BitSet set) – Performs logical and between the current object and the set parameter (current object is updated with the result) or(BitSet set) – Performs logical or between the current object and the set parameter (current object is updated with the result) cardinality() – Returns number of bits set to 1 flip(int bitIndex) – Sets the bit at the specified index get(int bitIndex) – Returns true if the bit at bitIndex is set; false otherwise length() – Index of the highest set bit + 1. It returns zero if the BitSet contains no bits set. size() – Number of bits space used by the BitSet to represent bit values toString() – For every bit set, the decimal representation of that index is included in the result. Example (See Computers.java)

3 Project #1 CVS repository information Host: linuxlab.csic.umd.edu Repository Path: /afs/csic.umd.edu/users/pugh/cs132/cs132XXX where cs132XXX is your linuxlab account which you can find through grades.cs.umd.edu Demo of playing the game Brief overview of what students are expected to implement Ask students to go over the open policy available on the class web site

4 Two-Dimensional Arrays of Primitives Each row in a two-dimensional array is an array The rows can have different lengths Defining a primitive array where rows have the same length int [ ][ ] data = new int[3][4]; Defining a primitive data array where rows have different lengths (ragged array) int [ ][ ] ragged = new int[2][]; ragged[0] = new int[3]; ragged[1] = new int[1];

5 Two-Dimensional Arrays of Objects Each row in a two-dimensional array is an array The rows can have different lengths Defining an array where rows have the same length String [ ][ ] data = new String[3][4]; Important: Keep in mind we have created a two-dimensional array of references to String objects. No String object is present yet. We can also have ragged arrays Example (See Roster.java)

6 Modern Software Development Why do we want to study the software development process? To understand Software development problems Why software projects fail Impact of software failures How to develop better software Software Engineering (from Wikipedia) Field that creates and maintains software applications by applying technologies and practices from computer science, project management, engineering, application domains, and other fields.

7 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

8 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…”

9 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

10 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

11 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

12 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

13 SLOC SLOC – Source lines of code (SLOC) Software metric that measures the amount of code in a program According to Gary McGraw: Win 95 – 15 Millions SLOC Win 98 – 18 Millions SLOC Win XP – 40 Millions SLOC

14 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

15 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

16 Components of 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

17 “Waterfall Model” of Life Cycle Simple model Proceed from one step to next Result of step flow into next In reality May need to return to previous step Steps may be more integrated Steps may occur at same time

18 Software Life Cycle Waterfall model Reasonable for small projects Unworkable for large projects Some alternative approaches “Unified model” Iteratively add incremental improvements “Extreme programming” Write test cases before writing code “Rapid prototyping” Use working prototypes to refine specifications