CSI 1340 Introduction to Computer Science II Chapter 1 Software Engineering Principles.

Slides:



Advertisements
Similar presentations
1 ICS102: Introduction To Computing King Fahd University of Petroleum & Minerals College of Computer Science & Engineering Information & Computer Science.
Advertisements

Computers Are Your Future
6-1 Chapter Goals Determine whether a problem is suitable for a computer solution Describe the computer problem-solving process and relate it to Polya’s.
Problem Solving and Algorithm Design
Chapter 6 Problem Solving and Algorithm Design. 6-2 Chapter Goals Determine whether a problem is suitable for a computer solution Describe the computer.
C++ Plus Data Structures
© Janice Regan Problem-Solving Process 1. State the Problem (Problem Specification) 2. Analyze the problem: outline solution requirements and design.
1 Chapter 6 Object-Oriented Software Design and Implementation.
Unit 231 Software Engineering Introduction to SWE What is SDLC Phases of SDLC.
McGraw-Hill/Irwin Copyright © 2008 by The McGraw-Hill Companies, Inc. All rights reserved. Chapter 14 Programming and Languages.
Important Definitions Class: A structured data type that is used to represent an abstract data type (ADT) Class member: A components of a class. It can.
Unit 191 Introduction to Software Engineering The objective of this section is to introduce the subject of software engineering. When you have read this.
Department of Computer Science University of Maryland, College Park
Java Programming, 3e Concepts and Techniques Chapter 1 An Introduction to Java and Program Design.
1 CMSC 132: Object-Oriented Programming II Nelson Padua-Perez William Pugh Department of Computer Science University of Maryland, College Park.
Chapter 1 Principles of Programming and Software Engineering.
Chapter 1 Software Engineering. Homework ► Read Section 2.2 (pages 79-98) ► Answer questions: ► 7, 8, 11, 12, & 13 on page 134. ► Answer on paper, hand.
Software Engineering Principles and C++ Classes
Data Structures Using C++1 Chapter 1 Software Engineering Principles and C++ Classes.
About the Presentations The presentations cover the objectives found in the opening of each chapter. All chapter objectives are listed in the beginning.
© 2006 Pearson Addison-Wesley. All rights reserved2-1 Chapter 2 Principles of Programming & Software Engineering.
1 Programming Style Files Lecture 1 Slides by Sylvia Sorkin, Community College of Baltimore County - Essex Campus Modified by Reneta Barneva, SUNY-Fredonia.
Programming and Languages Chapter Competencies (Page 1 of 2) Describe the six steps of programming Discuss design tools including top-down design,
1 L07SoftwareDevelopmentMethod.pptCMSC 104, Version 8/06 Software Development Method Topics l Software Development Life Cycle Reading l Section 1.4 – 1.5.
Introduction to High-Level Language Programming
Java Programming, 2E Introductory Concepts and Techniques Chapter 1 An Introduction to Java and Program Design.
1 Basic Concepts of Object-Oriented Design. 2 What is this Object ? There is no real answer to the question, but we ’ ll call it a “ thinking cap ”. l.
Problem Solving and Algorithm Design. 2 Problem Solving Problem solving The act of finding a solution to a perplexing, distressing, vexing, or unsettled.
Computer Programming I An Introduction to the art and science of programming with C++
Introduction to Java August 14, 2008 Mrs. C. Furman.
Programming Lifecycle
COP 3530 PROGRAM, FILE & DATA STRUCTURES Syllabus Syllabus Lab Information Lab Information Overrides Overrides Questions? Questions?
1 Chapter-01 Programming Methodologies Procedural/Structured Design Objected-Oriented Design.
Chapter 3 Developing an algorithm. Objectives To introduce methods of analysing a problem and developing a solution To develop simple algorithms using.
1 C++ Plus Data Structures Nell Dale Chapter 1 Software Engineering Principles Modified from the Slides made by Sylvia Sorkin, Community College of Baltimore.
Chapter 1 Software Engineering Principles. Lecture 2.
1 Life Cycle of Software Specification Design –Risk Analysis –Verification Coding Testing –Refining –Production Maintenance.
Problem Solving using the Science of Computing MSE 2400 EaLiCaRA Spring 2015 Dr. Tom Way.
IXA 1234 : C++ PROGRAMMING CHAPTER 1. PROGRAMMING LANGUAGE Programming language is a computer program that can solve certain problem / task Keyword: Computer.
Data Structures Using C++1 Chapter 1 -Software Engineering Principles -ADT and Classes.
Programming Life Cycle Problem analysisunderstand the problem Requirements definition specify what program will do High- and low-level designhow it meets.
Data Structures Using C++1 Chapter 1 Software Engineering Principles and C++ Classes.
The Programming Process Define the problem* Make or buy software? Design the program * Code (write) the program Test (debug) the program Document the.
CS Data Structures I Chapter 2 Principles of Programming & Software Engineering.
The basics of the programming process The development of programming languages to improve software development Programming languages that the average user.
Programming and Languages
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.
Chapter 14 Programming and Languages McGraw-Hill/Irwin Copyright © 2008 by The McGraw-Hill Companies, Inc. All rights reserved.
Chapter 1 Data Abstraction: The Walls CS Data Structures Mehmet H Gunes Modified from authors’ slides.
Chapter 1 Software Engineering Principles. Problem analysis Requirements elicitation Software specification High- and low-level design Implementation.
Chapter 2 Principles of Programming and Software Engineering.
Text INTERNAL February 11, 2011 Problem Solving. INTERNAL Tech Republic’s railway department wants a solution Tech Republic’s railway department.
Data Structures Using Java1 Chapter 1 Software Engineering Principles and Java Classes.
PROGRAMMING FUNDAMENTALS INTRODUCTION TO PROGRAMMING. Computer Programming Concepts. Flowchart. Structured Programming Design. Implementation Documentation.
1 CS 132 Spring 2008 Chapter 1 Software Engineering Principles and C++ Classes.
Chapter 6 Testing and running a solution. Errors X Three types Syntax Logic Run-time.
Principles of Programming & Software Engineering
ICS 3UI - Introduction to Computer Science
Algorithms II Software Development Life-Cycle.
C++ Plus Data Structures
Chapter 1 Data Abstraction: The Walls
Principles of Programming and Software Engineering
Chapter 1 Software Engineering Principles
Chapter 1 Software Engineering.
The Programming Process
Chapter 2. Problem Solving and Software Engineering
Presentation transcript:

CSI 1340 Introduction to Computer Science II Chapter 1 Software Engineering Principles

Software Engineering A disciplined approach to the design, production, and maintenance of computer programs that (1) are developed on time (2) and within cost estimates (3) using tools that help to manage the size and complexity of the resulting software products

Goals of Quality Software It works. It can be read and understood. It can be modified without excruciating time and effort. It is completed on time and within budget.

Software Life Cycle Analysis Requirements Specification Design Implementation Testing & Verification Delivery Operation Maintenance

Analysis Clear understanding of the problem

Software Specifications Identify: Inputs Outputs Processing & error handling requirements Assumptions Serves as an important piece of written documentation

Detailed Program Specification Tells what the program must do, but not how it does it. Is written documentation about the program.

Design Develop a step-by-step description of the solution to the problem (algorithm)

Design Tools Abstraction Information hiding Functional decomposition Object-oriented design

Abstraction A model of a complex system that includes only the details essential to the perspective of the viewer of the system

Information Hiding Hiding the details of a function or data structure with the goal of controlling access to the details of a module or structure. PURPOSE: To prevent high-level designs from depending on low-level design details that may be changed.

Two Approaches to Building Manageable Modules Divides the problem into more easily handled subtasks, until the functional modules (subproblems) can be coded. Identifies various objects composed of data and operations, that can be used together to solve the problem. FUNCTIONAL DECOMPOSITION OBJECT-ORIENTED DESIGN FOCUS ON: processes FOCUS ON: data objects

Find Weighted Average Print Weighted Average Functional Design Modules Main Print Data Print Heading Get Data Prepare File for Reading

Object-Oriented Design A technique for developing a program in which the solution is expressed in terms of objects -- self- contained entities composed of data and operations on that data. Private data set( ) hour( ) Private data set( ) month( ) year( ) DateTime second( )

More about OOD Languages supporting OOD include: C++, Java, Smalltalk, Eiffel, and Object-Pascal. A class is a programmer-defined data type and objects are variables of that type.

Procedural vs. Object-Oriented Code “Read the specification of the software you want to build. Underline the verbs if you are after procedural code, the nouns if you aim for an object-oriented program.” Brady Gooch, “What is and Isn’t Object Oriented Design,” 1989.

Implementation Translate the design into a computer program

Program Verification is the process of determining the degree to which a software product fulfills its specifications. Program Verification PROGRAM SPECIFICATIONS Inputs Outputs Processing Requirements Assumptions

Verification vs. Validation Program verification asks, “Are we doing the job right?” Program validation asks, “Are we doing the right job?” B. W. Boehm, Software Engineering Economics, 1981.

Various Types of Errors Design errors occur when specifications are wrong Compile errors occur when syntax is wrong Run-time errors result from incorrect assumptions, incomplete understanding of the programming language, or unanticipated user errors.

Robustness Robustness is the ability of a program to recover following an error; the ability of a program to continue to operate within its environment.

Verification of Software Correctness Design for correctness Perform code and design walk-throughs and inspections Use debugging methods Choose test goals and data Write test plans Perform structured integration testing

A Walk-Through Is a verification method using a team to perform a manual simulation of the program or design, using sample test inputs, and keeping track of the program’s data by hand. Its purpose is to stimulate discussion about the programmer’s design or implementation.

Program Testing Testing is the process of executing a program with various data sets designed to discover errors. DATA SET 1 DATA SET 2 DATA SET 3 DATA SET 4...

Delivery Turn the program over to the customer or user

Operation Use the program

Maintenance Make changes to fix errors Modify the program