Software Engineering. Acknowledgement Charles Moen Sharon White Bun Yue.

Slides:



Advertisements
Similar presentations
Object-Oriented Software Development CS 3331 Fall 2009.
Advertisements

An Introduction to Software Engineering CSCI 3333 Data Structures.
R R R CSE870: Advanced Software Engineering (Cheng): Intro to Software Engineering1 Advanced Software Engineering Dr. Cheng Overview of Software Engineering.
Ch. 1: Software Development (Read) 5 Phases of Software Life Cycle: Problem Analysis and Specification Design Implementation (Coding) Testing, Execution.
1 ES 314 Advanced Programming Lec 2 Sept 3 Goals: Complete the discussion of problem Review of C++ Object-oriented design Arrays and pointers.
© 2006 Pearson Addison-Wesley. All rights reserved2-1 Chapter 2 Principles of Programming & Software Engineering.
BY RAJESWARI S SOFTWARE TESTING. INTRODUCTION Software testing is the process of testing the software product. Effective software testing will contribute.
Data Structures and Programming.  John Edgar2.
Nyhoff, ADTs, Data Structures and Problem Solving with C++, Second Edition, © 2005 Pearson Education, Inc. All rights reserved Software.
1 Programming and Problem Solving — Software Engineering (Read Chap. 2)
Programming and Problem Solving — Software Engineering (Read Chap. 2) 1.
© Janice Regan, CMPT 128, Jan CMPT 128 Introduction to Computing Science for Engineering Students Creating a program.
1 Software Testing (Part-II) Lecture Software Testing Software Testing is the process of finding the bugs in a software. It helps in Verifying and.
Comp 245 Data Structures Software Engineering. What is Software Engineering? Most students obtain the problem and immediately start coding the solution.
An Introduction to Software Engineering CSCI 3033 Data Structures.
-Nikhil Bhatia 28 th October What is RUP? Central Elements of RUP Project Lifecycle Phases Six Engineering Disciplines Three Supporting Disciplines.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 4 Slide 1 Software Processes.
CS 360 Lecture 3.  The software process is a structured set of activities required to develop a software system.  Fundamental Assumption:  Good software.
©Ian Sommerville 2000, Mejia-Alvarez 2009 Slide 1 Software Processes l Coherent sets of activities for specifying, designing, implementing and testing.
Software Software is omnipresent in the lives of billions of human beings. Software is an important component of the emerging knowledge based service.
Chapter 6 : Software Metrics
Ranga Rodrigo. The purpose of software engineering is to find ways of building quality software.
Software Life Cycle Requirements and problem analysis. –What exactly is this system supposed to do? Design –How will the system solve the problem? Coding.
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.
Software Development Cycle What is Software? Instructions (computer programs) that when executed provide desired function and performance Data structures.
June 05 David A. Gaitros Jean Muhammad Introduction to OOD and UML Dr. Jean Muhammad.
1 Requirements Management - General concepts - Noureddine Abbadeni King Saud University College of Computer and Information Sciences Based on “Software.
Software Development. Software Developers Refresher A person or organization that designs software and writes the programs. Software development is the.
IXA 1234 : C++ PROGRAMMING CHAPTER 1. PROGRAMMING LANGUAGE Programming language is a computer program that can solve certain problem / task Keyword: Computer.
Software Engineering Chapter 3 CPSC Pascal Brent M. Dingle Texas A&M University.
Introduction to Software Engineering. Why SE? Software crisis manifested itself in several ways [1]: ◦ Project running over-time. ◦ Project running over-budget.
CS Data Structures I Chapter 2 Principles of Programming & Software Engineering.
Chapter 3: Software Project Management Metrics
1 Ch. 1: Software Development (Read) 5 Phases of Software Life Cycle: Problem Analysis and Specification Design Implementation (Coding) Testing, Execution.
Cmpe 589 Spring 2006 Lecture 2. Software Engineering Definition –A strategy for producing high quality software.
The Software Development Process
1 CSCD 326 Data Structures I Software Design. 2 The Software Life Cycle 1. Specification 2. Design 3. Risk Analysis 4. Verification 5. Coding 6. Testing.
Software Development Problem Analysis and Specification Design Implementation (Coding) Testing, Execution and Debugging Maintenance.
© 2006 Pearson Addison-Wesley. All rights reserved2-1 Chapter 2 Principles of Programming & Software Engineering.
© 2006 Pearson Addison-Wesley. All rights reserved 2-1 Chapter 2 Principles of Programming & Software Engineering.
Program Development Cycle
Software Engineering and Object-Oriented Design Topics: Solutions Modules Key Programming Issues Development Methods Object-Oriented Principles.
The Art of Programming. The process of breaking problems down into smaller, manageable parts By breaking the problem down, each part becomes more specific.
SOFTWARE ENGINEERING. Objectives Have a basic understanding of the origins of Software development, in particular the problems faced in the Software Crisis.
Software Engineering Issues Software Engineering Concepts System Specifications Procedural Design Object-Oriented Design System Testing.
Data Structure Introduction Dr. Bernard Chen Ph.D. University of Central Arkansas Fall 2010.
CSI 1340 Introduction to Computer Science II Chapter 1 Software Engineering Principles.
1 The Requirements Problem Chapter 1. 2 Standish Group Research Research paper at:  php (1994)
©Ian Sommerville 2006Software Engineering, 8th edition. Chapter 4 Slide 1 Software Processes.
Software Development Process CS 360 Lecture 3. Software Process The software process is a structured set of activities required to develop a software.
Requirements Management with Use Cases Module 2: Introduction to RMUC Requirements Management with Use Cases Module 2: Introduction to RMUC.
Chapter 1 Software Development Dr. Bernard Chen Ph.D. University of Central Arkansas Fall 2008.
CS223: Software Engineering Lecture 18: The XP. Recap Introduction to Agile Methodology Customer centric approach Issues of Agile methodology Where to.
Chapter 10 Software quality. This chapter discusses n Some important properties we want our system to have, specifically correctness and maintainability.
PROGRAMMING FUNDAMENTALS INTRODUCTION TO PROGRAMMING. Computer Programming Concepts. Flowchart. Structured Programming Design. Implementation Documentation.
Introduction to Computer Programming Concepts M. Uyguroğlu R. Uyguroğlu.
1 SYS366 Week 2 - Lecture Visual Modeling and Process.
 System Requirement Specification and System Planning.
Advanced Software Engineering Dr. Cheng
The Software Development Cycle
Software Processes (a)
Some Simple Definitions for Testing
Software Processes.
Unit# 9: Computer Program Development
Software life cycle models
Baisc Of Software Testing
Software Verification, Validation, and Acceptance Testing
Software Development Chapter 1.
The Software Development Cycle
Presentation transcript:

Software Engineering

Acknowledgement Charles Moen Sharon White Bun Yue

Software Development With the rapid increase in technology, the complexity and expectation of computer capabilities also increased. Requirements have increased rapidly. However, while users expect and demand a many features, customers generally want to minimize the cost for the software and they want it developed very fast. This becomes a recipe for disaster!

Software Disasters Software has played a role in many high-profile disasters. Mars probe - data calculated on the ground in Imperial units and reported that way to the navigation team who were expecting the data in metric units caused it to be destroyed. Therac-25 - A radiation therapy machine responsible for six overdoses due to faulty software. Airbus A320 - In the Airbus flight control systems, the computer has the final say on all decisions, meaning the safety of passengers depends upon the accuracy of the software specification, and the competence of the engineering teams producing the (multiple, independent) software stacks. The Strasbourg A320 crash of Jan 21, 1992 is partially related to software in that poor user interface design was a contributing factor.

Cause of the Software ‘Crisis’ Causes of the software crisis were linked to the overall complexity of the process and the relative immaturity of software engineering as a profession. The crisis manifested itself in several ways: – Projects running over-budget. (DIA – 2 billion over ) – Projects running over-time. (DIA – 16 months behind) – Software was of low quality. – Software often did not meet requirements. – Projects were unmanageable and code difficult to maintain.

Software Engineering This discipline deals with identifying, defining, and realizing the required performance characteristics of the resulting software. These performance characteristics include: reliability, maintainability, availability, testability, ease-of-use, portability, etc. Software engineering addresses these performance characteristics by preparing design and technology specifications, that if implemented properly, will enable the resulting software to meet these requirements.

Software Development Process What is the best way to make more and better software? Software engineers advocate many different technologies and practices, and the debate on how to accomplish this has gone on for many years and may continue forever.

Software Life Cycle Models With large numbers of software projects not meeting their expectations in terms of functionality, cost, or delivery schedule, effective project management is proving difficult. This has resulted in people apply project management techniques to writing software.

Waterfall Model In Royce's original waterfall model, the following phases are followed perfectly in order: – Requirements specification – Design – Construction (aka: implementation or coding) – Integration – Testing and debugging (aka: verification) – Installation – Maintenance

Key Software Activities 5 Phases of Software Life Cycle: Phase 1: Problem Analysis and Specification Phase 2: Design Phase 3: Implementation (Coding) Phase 4: Testing, Execution and Debugging Phase 5: Maintenance

Phase 1: Problem Analysis and Specification Computer Science programming assignment - specific statement of problem quantitative description clearly defined requirements: input, output, calculations, test data Computer Science programming assignment - specific statement of problem quantitative description clearly defined requirements: input, output, calculations, test data Easy in CS courses, not always in the real world.

“Real World” request - general statement of problem qualitative not quantitative precision missing for input, output, processing “Real World” request - general statement of problem qualitative not quantitative precision missing for input, output, processing Phase 1: Problem Analysis and Specification

Phase 2: Design CS courses – small systems – few hundred lines of code – simple, straightforward – self-contained “Real” world – large systems – Tens of thousands of lines of code – complex – many components

OOD: Object-Oriented Design 1. Identify the objects in the problem's specification and their types. 2. Identify the operations of the objects (methods) needed to solve the problem. 3. Arrange the operations in a sequence of steps, called an algorithm, which, when applied to the objects, will solve the problem.

OOD Goals Robust – “Capable of handling unexpected inputs” Adaptable – Able to evolve over time in response to changes Reusable – Code should be reusable in other applications – Components – e.g., code libraries like the Java libraries

Phase 3: Implementation (Coding) Select language of implementation Encode the design Verify integration Combining program units into a complete software system. Insure quality – programs must be correct, readable, and understandable, that is, well-structured, documented, and stylistic.

Phase 4: Testing, Execution, and Debugging Validation: "Are we building the right product?" – The software should do what the user really requires check that documents, program modules, etc. match the customer's requirements. Verification: "Are we building the product right?" – The software should conform to its specification check that products are correct, complete, consistent with each other and with those of the preceding phases.

Errors can occur anytime – Specifications don't accurately reflect given information or the user's needs/requests – Logic errors in algorithms – Incorrect coding or integration – Failure to handle boundary data or test values

Different kinds of testing – Unit tests: Each individual program unit works? – Program components tested in isolation – Integration tests : Units combined correctly? – Component interface and information flow tested – System tests: Overall system works correctly?

Phase 5: Maintenance Large % of computer center budgets – Large % of programmer's time – Largest % of software development cost Why? – Includes modifications and enhancements – Due to poor structure, poor documentation, poor style less likely to catch bugs before release make fixing of bugs difficult and time-consuming impede implementation of enhancements

Iterative Processes Iterative development prescribes the construction of initially small but ever larger portions of a software project to help all those involved to uncover important issues early before problems or faulty assumptions can lead to disaster. Iterative processes are preferred by commercial developers because it allows a potential of reaching the design goals of a customer who does not know how to define what he wants.

Rational Unified Process An example of an iterative process