Comp 245 Data Structures Software Engineering. What is Software Engineering? Most students obtain the problem and immediately start coding the solution.

Slides:



Advertisements
Similar presentations
September 2008Mike Woodard Rational Unified Process Key Concepts Mike Woodard.
Advertisements

Software Testing. Quality is Hard to Pin Down Concise, clear definition is elusive Not easily quantifiable Many things to many people You'll know it when.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 4 Slide 1 Software processes 2.
Ch 3: Unified Process CSCI 4320: Software Engineering.
Object-Oriented Software Development CS 3331 Fall 2009.
CHAPTER 1 SOFTWARE DEVELOPMENT. 2 Goals of software development Aspects of software quality Development life cycle models Basic concepts of algorithm.
Sharif University of Technology Session # 3.  Contents  Systems Analysis and Design Sharif University of Technology MIS (Management Information System),
CMPT 225 Data Structures and Programming. Course information Lecturer: Jan Manuch (Jano), TASC TAs: Osama Saleh,
Software Engineering and Design Principles Chapter 1.
Introduction to Requirements (Chapters 1-3 of the requirements text) CSSE 371, Software Requirements and Specification Don Bagert, Rose-Hulman Institute.
Design The goal is to design a modular solution, using the techniques of: Decomposition Abstraction Encapsulation In Object Oriented Programming this is.
Requirements - Why What and How? Sriram Mohan. Outline Why ? What ? How ?
Chapter 1 Software Development. Copyright © 2005 Pearson Addison-Wesley. All rights reserved. 1-2 Chapter Objectives Discuss the goals of software development.
COS Sept 9, 2005 Key Issues in Programming Stefan Brandle.
Copyright © 2007 Pearson Education, Inc. Publishing as Pearson Addison-Wesley. Ver Data Abstraction & Problem Solving with C++ Fifth Edition by Frank.
© 2006 Pearson Addison-Wesley. All rights reserved2-1 Chapter 2 Principles of Programming & Software Engineering.
1 SWE Introduction to Software Engineering Lecture 5.
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.
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.
Introduction to Software Design Chapter 1. Chapter 1: Introduction to Software Design2 Chapter Objectives To become familiar with the software challenge.
Data Structures and Programming.  John Edgar2.
Introduction to RUP Spring Sharif Univ. of Tech.2 Outlines What is RUP? RUP Phases –Inception –Elaboration –Construction –Transition.
Chapter 1: The Object-Oriented Systems Development Environment Object-Oriented Systems Analysis and Design Joey F. George, Dinesh Batra, Joseph S. Valacich,
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 4 Slide 1 Software Processes.
CSC-115 Introduction to Computer Programming
COP 3530 PROGRAM, FILE & DATA STRUCTURES Syllabus Syllabus Lab Information Lab Information Overrides Overrides Questions? Questions?
Software Life Cycle Requirements and problem analysis. –What exactly is this system supposed to do? Design –How will the system solve the problem? Coding.
The Software Development Life Cycle. Software Development SDLC The Software Development Life-Cycle Sometimes called the program development lifecycle.
CSE 219 Computer Science III Program Design Principles.
1 Life Cycle of Software Specification Design –Risk Analysis –Verification Coding Testing –Refining –Production Maintenance.
Software Development. Software Developers Refresher A person or organization that designs software and writes the programs. Software development is the.
Introduction CS 3358 Data Structures. What is Computer Science? Computer Science is the study of algorithms, including their  Formal and mathematical.
C++ Programming Language Lecture 2 Problem Analysis and Solution Representation By Ghada Al-Mashaqbeh The Hashemite University Computer Engineering Department.
IXA 1234 : C++ PROGRAMMING CHAPTER 1. PROGRAMMING LANGUAGE Programming language is a computer program that can solve certain problem / task Keyword: Computer.
Software Engineering Prof. Ing. Ivo Vondrak, CSc. Dept. of Computer Science Technical University of Ostrava
Data Structures Using C++1 Chapter 1 Software Engineering Principles and C++ Classes.
Program Development Cycle Modern software developers base many of their techniques on traditional approaches to mathematical problem solving. One such.
REQUIREMENTS - WHY WHAT AND HOW? Steve Chenoweth & Chandan Rupakheti CSSE 371 Chapters Requirements Text. Question 6.
CS Data Structures I Chapter 2 Principles of Programming & Software Engineering.
1 Ch. 1: Software Development (Read) 5 Phases of Software Life Cycle: Problem Analysis and Specification Design Implementation (Coding) Testing, Execution.
The basics of the programming process The development of programming languages to improve software development Programming languages that the average user.
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.
1-1 Software Development Objectives: Discuss the goals of software development Identify various aspects of software quality Examine two development life.
Software Development Problem Analysis and Specification Design Implementation (Coding) Testing, Execution and Debugging Maintenance.
Data Structures Using C++ 2E
© 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.
Data Structure Introduction Dr. Bernard Chen Ph.D. University of Central Arkansas Fall 2010.
The Hashemite University Computer Engineering Department
1 The Software Development Process ► Systems analysis ► Systems design ► Implementation ► Testing ► Documentation ► Evaluation ► Maintenance.
Chapter 2 Principles of Programming and Software Engineering.
Methodology Review Chapter 7 Part 2: Design Methodology Object-Oriented Modeling and Design Byung-Hyun Ha
C++ for Engineers and Scientists, Second Edition 1 Problem Solution and Software Development Software development procedure: method for solving problems.
Principles of Programming. Achieving an Object-Oriented Design  Abstraction and Information Hiding  Object-Oriented Design  Functional Decomposition.
Introduction to Computer Programming Concepts M. Uyguroğlu R. Uyguroğlu.
Software Design and Development Development Methodoligies Computing Science.
Principles of Programming & Software Engineering
TK2023 Object-Oriented Software Engineering
DATA ABSTRACTION AND PROBLEM SOLVING WITH C++
Principles of Programming and Software Engineering
About the Presentations
Figure 1.1 The life cycle of software as a water wheel that can rotate from one phase to any of phase.
Figure 1.1 The life cycle of software as a water wheel that can rotate from one phase to any of phase.
Need for the subject.
Chapter 2. Problem Solving and Software Engineering
Software Development Chapter 1.
Presentation transcript:

Comp 245 Data Structures Software Engineering

What is Software Engineering? Most students obtain the problem and immediately start coding the solution. What if you are faced with a problem that will require a “large” coding solution? Usually requires a team and an organized plan of attack. A branch of computer science called SOFTWARE ENGINNEERING exists which provides techniques and methodologies for the construction of computer programs.

What is the purpose of a Computer Program? To SOLVE A PROBLEM! There are usually two parts to a program 1. An algorithm 2. Data (how do you store and manipulate the data?) What makes a good program? 1. Meets it’s specifications 2. Cost is minimal over the course of its life cycle 3. Efficient 4. Maintenance friendly 5. Reliable

The Software Life Cycle The development of good software involves a lengthy and continual process called the software life cycle. Specification – WHAT is the software to do? Design – HOW will it be done? Coding – includes syntax debugging Testing – purpose is to find errors; it is not to prove your code works Refinement – fix errors in logic (recode, retest) Production – people start using it Maintenance – fixing errors and enhancing

RUP – Rational Unified Process Solution is developed incrementally! An iterative solution – timeboxes. Phases:  Inception – feasibility, time and cost estimates  Elaboration – more specific, determine iterations, core architecture  Construction – iterative development  Transition – testing and deployment of system, beta testing More complete information

Software Engineering Concept Achieving a Modular Design Consider a “sort” function; if you did not write the function – you only know WHAT it does – not HOW it is done! We know its purpose not its implementation. “Abstraction” is the separation of purpose from implementation. The sort function example is an example of functional abstraction. In the beginning, we are always concerned more with WHAT we want to do; not HOW we are going to do it.

Software Engineering Concept Achieving a Modular Design There is also data abstraction. This is what this course is concerned with. A program has data; WHAT do does the program need to do with the data? We will develop ADT’s in this class – Abstract Data Type (abstract: existing in thought or as an idea but not having a physical or concrete existence) This is the combination of data and the operations that surround the data – the operations obviously are WHAT we want to do with the data. An ADT is a way to modularize our code!

Key Issues in Programming Modularity  Helps in program construction; facilitates a team of programmers in development  Easier to isolate and fix errors  Easier for someone else to read your code  Eliminates redundant code Modifiability  Use Functions – just “plug” in  Constants  Typedef statements (C++) example: typedef int value;

Key Issues in Programming Ease of use if program is interactive Style  Use Functions  Use private data members  Avoiding global variables if possible  Know when to use value and reference parameters (input to / output from a function)  Error handling (return a value or throw exception)  Write readable code (descriptive identifiers, consistency, identation, blank lines, etc…)

Key Issues in Programming Documentation  It is to help you!  In a professional setting; it is to help those who must maintain your code. Debugging  Syntax errors (language proficient)  Logic errors (DESIGN!!)