An Introduction to Software Engineering CSCI 3033 Data Structures.

Slides:



Advertisements
Similar presentations
Testing Relational Database
Advertisements

©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 4 Slide 1 Software Processes.
Unit 2. Software Lifecycle
CHAPTER 1 SOFTWARE DEVELOPMENT. 2 Goals of software development Aspects of software quality Development life cycle models Basic concepts of algorithm.
CS 325: Software Engineering January 13, 2015 Introduction Defining Software Engineering SWE vs. CS Software Life-Cycle Software Processes Waterfall Process.
Chapter 2 – Software Processes
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 4 Slide 1 Software Processes.
An Introduction to Software Engineering CSCI 3333 Data Structures.
Ch. 1: Software Development (Read) 5 Phases of Software Life Cycle: Problem Analysis and Specification Design Implementation (Coding) Testing, Execution.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 4 Slide 1 Software Process Models.
©Ian Sommerville 2000 Software Engineering, 6th edition Slide 1 Software Processes l Coherent sets of activities for specifying, designing, implementing.
© 2006 Pearson Addison-Wesley. All rights reserved2-1 Chapter 2 Principles of Programming & Software Engineering.
Software Development Overview CPSC 315 – Programming Studio Spring 2008.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 4 Slide 1 Software Processes.
BY RAJESWARI S SOFTWARE TESTING. INTRODUCTION Software testing is the process of testing the software product. Effective software testing will contribute.
Software Life Cycle Model
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.
S/W Project Management Software Process Models. Objectives To understand  Software process and process models, including the main characteristics of.
Comp 245 Data Structures Software Engineering. What is Software Engineering? Most students obtain the problem and immediately start coding the solution.
CMSC 345 Fall 2000 Unit Testing. The testing process.
©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.
Topic (1)Software Engineering (601321)1 Introduction Complex and large SW. SW crises Expensive HW. Custom SW. Batch execution.
©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 3 Slide 1 Software Processes l Coherent sets of activities for specifying, designing,
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.
Software Development Cycle What is Software? Instructions (computer programs) that when executed provide desired function and performance Data structures.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 4 Slide 1 Software Processes.
C++ Programming Language Lecture 2 Problem Analysis and Solution Representation By Ghada Al-Mashaqbeh The Hashemite University Computer Engineering Department.
Software Engineering Prof. Ing. Ivo Vondrak, CSc. Dept. of Computer Science Technical University of Ostrava
Historical Aspects Origin of software engineering –NATO study group coined the term in 1967 Software crisis –Low quality, schedule delay, and cost overrun.
An Introduction to Software Engineering
1 Ch. 1: Software Development (Read) 5 Phases of Software Life Cycle: Problem Analysis and Specification Design Implementation (Coding) Testing, Execution.
The Software Development Process
1-1 Software Development Objectives: Discuss the goals of software development Identify various aspects of software quality Examine two development life.
Chapter 2 – Software Processes Lecture 1 Chapter 2 Software Processes1.
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.
Software Engineering. Acknowledgement Charles Moen Sharon White Bun Yue.
Software Engineering and Object-Oriented Design Topics: Solutions Modules Key Programming Issues Development Methods Object-Oriented Principles.
Software Engineering1  Verification: The software should conform to its specification  Validation: The software should do what the user really requires.
Intermediate 2 Computing Unit 2 - Software Development.
Software Engineering Issues Software Engineering Concepts System Specifications Procedural Design Object-Oriented Design System Testing.
Chapter 2 – Software Processes Lecture 1 1Chapter 2 Software Processes.
Data Structure Introduction Dr. Bernard Chen Ph.D. University of Central Arkansas Fall 2010.
Ivar Jacobson, Grady Booch, and James Rumbaugh The Unified Software Development Process Addison Wesley, : James Rumbaugh's OOMD 1992: Ivar Jacobson's.
©Ian Sommerville 2006Software Engineering, 8th edition. Chapter 4 Slide 1 Software Processes.
The Hashemite University Computer Engineering Department
1 The Software Development Process ► Systems analysis ► Systems design ► Implementation ► Testing ► Documentation ► Evaluation ► Maintenance.
Software Development Process CS 360 Lecture 3. Software Process The software process is a structured set of activities required to develop a software.
Chapter 1 Software Development Dr. Bernard Chen Ph.D. University of Central Arkansas Fall 2008.
SOFTWARE TESTING. SOFTWARE Software is not the collection of programs but also all associated documentation and configuration data which is need to make.
1 Chapter 2 SW Process Models. 2 Objectives  Understand various process models  Understand the pros and cons of each model  Evaluate the applicability.
Testing Integral part of the software development process.
Software Design and Development Development Methodoligies Computing Science.
1 SYS366 Week 2 - Lecture Visual Modeling and Process.
Laurea Triennale in Informatica – Corso di Ingegneria del Software I – A.A. 2006/2007 Andrea Polini II. Software Life Cycle.
ICS 3UI - Introduction to Computer Science
Software Processes (a)
Software Processes.
Introduction to Software Engineering
Welcome to Corporate Training -1
CS310 Software Engineering Lecturer Dr.Doaa Sami
Software Development Chapter 1.
Presentation transcript:

An Introduction to Software Engineering CSCI 3033 Data Structures

Acknowledgement  Dr. Yue  Krishani Abeysekera  Wei Ding  Charles Moen

What is Software Engineering?  IEEE definition “Software Engineering: (1) The application of a systematic, disciplines, quantifiable approach to the development, operation, and maintenance of software; that is the application of engineering to software. (2) The study of approaches as in (1).”

System Cost  The relative cost of hardware and software changed drastically in the last 60 years. Time % Cost hardware software

Consequences  Cost: Software cost ↓ Hardware cost ↓↓: Moore’s Law, much faster.  Earlier day: optimizing hardware usage. Assembly language C

System Speed  Moore Law for hardware.  No Moore Law for software? Cloud computing.  Wirth Law: software speed is decreasing more quickly than hardware speed is increasing. This is why efficient programs are always needed.

Consequences  Hardware is now relatively ‘free’? Selling software, not hardware: Microsoft.  Some software is becoming relatively ‘free’? Selling service, advertisement instead of software: Google.

Software Crisis ( )  Budget and Cost Overrun  Cancelled Projects  Damaged properties  Injury and death

9 Software Life Cycle Models  Abstraction of the software life cycle  Some examples Waterfall model (Royce) ‏ Spiral model (Boehm) ‏ Rational Unified Process (Booch, Jacobson, Rumbaugh) ‏ Extreme Programming  SWEN 4432 Software Engineering Software Engineering

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

Waterfall Model 2  Some drawbacks: Difficult to make revisions due to unforeseen problems: no feedback loop Focus on paper documents and distrustful customer-contractor relationships  Major contributions: identify key activities.

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

Statement of specifications  the formal statement of the problem’s requirements  the major reference document  a benchmark used to evaluate the final system Sometimes stated precisely using a formal method. The program should display on the screen a prompt for an amount to be depreciated and the number of years over which it is to be depreciated. If should then read these two values from the keyboard. Once it has the amount and the number of years, it should compute the sum of the integers 1, 2,... up to the number of years. It should then display on the screen a table with appropriate headings that shows the year number and the number and the depreciation for that year, for the specified number of years.

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.

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 tests required 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?

The "V" Life Cycle Model

Unit testing  Probably the most rigorous and time- intensive  Surely the most fundamental and important  Kinds of errors tested: syntax linking run-time logic  Two major types: Black-box and White- box tests

Black box or functional test  Outputs produced for various inputs are checked for correctness without considering the internal structure of the program component itself.  Program unit is viewed as a black box that accepts inputs and produces outputs, but the inner workings of the box are not visible.

White box or structural test  Performance is tested by examining code’s internal structure.  Test data is carefully selected so that specific parts of the program unit are exercised. Boundary test: test data with boundary values Statement coverage test: test cases that cover all the statement in a program Conditional statement coverage test: test cases that test all the conditions in the conditional statements.

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

Some Lessons  Implementation (Coding) A small part of the software lifecycle. Easy to outsource (or out-shore) than requirement analysis and design.  A program is not successful if it gives some output.  Course assignments are usually not a good training for the whole software life-cycle.

Iterative Process  Waterfall model: no visible feedback loop.  Iterative models/overlapping phases: Spiral model Rational Unified Process

An example of an iterative process

New Factors  The Internet age ( ) Browsers as the universal client agents.  Web 2.0 (~2004-present) New software distribution: software as a service perpetual beta Machine to machine interaction

New Trends: Lightweight Methodologies  Examples: Extreme Programming Agile Software Development Scrum list for software project management

What should we do?  Aware of the software life-cycle.  Aware of the new forces affecting software development.  Aware of the new software methodologies.  Eventually need to learn: Modeling Language: e.g. UML Software Process

Relevance to our course  Software will always need to be correct and efficient: Need to learn data structures and algorithms well.

Questions?