Algorithms II Software Development Life-Cycle.

Slides:



Advertisements
Similar presentations
System Development Life Cycle (SDLC)
Advertisements

CS101: Introduction to Computer programming
1 ICS102: Introduction To Computing King Fahd University of Petroleum & Minerals College of Computer Science & Engineering Information & Computer Science.
CHAPTER 1 SOFTWARE DEVELOPMENT. 2 Goals of software development Aspects of software quality Development life cycle models Basic concepts of algorithm.
Chapter 2: Problem Solving
© Janice Regan, CMPT 102, Sept CMPT 102 Introduction to Scientific Computer Programming The software development method algorithms.
© Janice Regan Problem-Solving Process 1. State the Problem (Problem Specification) 2. Analyze the problem: outline solution requirements and design.
Algorithms and Problem Solving-1 Algorithms and Problem Solving.
Information Systems Development and Acquisition Chapter 8 Jessup & Valacich Instructor: Ramesh Sankaranarayanan.
1 Chapter 2 Problem Solving Techniques INTRODUCTION 2.2 PROBLEM SOLVING 2.3 USING COMPUTERS IN PROBLEM SOLVING : THE SOFTWARE DEVELOPMENT METHOD.
BPC.1 Basic Programming Concepts
Data Structures and Programming.  John Edgar2.
The Art of Programming Top-Down Design. The Art of Problem Solving The art of problem solving is the transformation of an English description of a problem.
1 L07SoftwareDevelopmentMethod.pptCMSC 104, Version 8/06 Software Development Method Topics l Software Development Life Cycle Reading l Section 1.4 – 1.5.
Chapter 22 Systems Design, Implementation, and Operation Copyright © 2012 Pearson Education, Inc. publishing as Prentice Hall 22-1.
Sw development1 Software Development 1.Define the problem (Analysis) 2.Plan the solution 3.Code 4.Test and debug 5.Maintain and Document.
LESSON 8 Booklet Sections: 12 & 13 Systems Analysis.
U NDERSTANDING P ROBLEMS AND HOW TO S OLVE THEM BY USING C OMPUTERS.
สาขาวิชาเทคโนโลยี สารสนเทศ คณะเทคโนโลยีสารสนเทศ และการสื่อสาร.
หลักการโปรแกรม เพื่อแก้ปัญหาโดยใช้คอมพิวเตอร์
CSC-115 Introduction to Computer Programming
TMF1013 : Introduction To Computing Lecture 1 : Fundamental of Computer ComputerFoudamentals.
The Software Development Life Cycle. Software Development SDLC The Software Development Life-Cycle Sometimes called the program development lifecycle.
Describe the Program Development Cycle. Program Development Cycle The program development cycle is a series of steps programmers use to build computer.
Software Development Cycle What is Software? Instructions (computer programs) that when executed provide desired function and performance Data structures.
© 2011 Pearson Addison-Wesley. All rights reserved. Addison Wesley is an imprint of Stewart Venit ~ Elizabeth Drake Developing a Program.
Slide 1 Software Development 1. Requirement Specification 2. Analysis 3. Algorithm Design 4. Implementation 5. Testing 6. Documentation.
Problem Solving Techniques. Compiler n Is a computer program whose purpose is to take a description of a desired program coded in a programming language.
C++ Programming Language Lecture 2 Problem Analysis and Solution Representation By Ghada Al-Mashaqbeh The Hashemite University Computer Engineering Department.
CMSC 1041 Algorithms II Software Development Life-Cycle.
1 Introduction to Software Engineering Lecture 1.
กระบวนการแก้ปัญหาด้วย คอมพิวเตอร์ 3 พฤษภาคม :00-17:00.
Programming Life Cycle Problem analysisunderstand the problem Requirements definition specify what program will do High- and low-level designhow it meets.
Topics Covered Phase 1: Preliminary investigation Phase 1: Preliminary investigation Phase 2: Feasibility Study Phase 2: Feasibility Study Phase 3: System.
CMSC 104: Peter Olsen, Fall 99Lecture 9:1 Algorithms III Representing Algorithms with pseudo-code.
1 Ch. 1: Software Development (Read) 5 Phases of Software Life Cycle: Problem Analysis and Specification Design Implementation (Coding) Testing, Execution.
CMSC 345 Fall 2000 Requirements Overview. Work with customers to elicit requirements by asking questions, demonstrating similar systems, developing prototypes,
The basics of the programming process The development of programming languages to improve software development Programming languages that the average user.
Connecting with Computer Science2 Objectives Learn how software engineering is used to create applications Learn some of the different software engineering.
Program Development Cycle
ICS124 Session 8 Structured Programming 1. By the end of this section the student will be able to:  List the steps of a model Systems Development Life.
Chapter 14 Programming and Languages McGraw-Hill/Irwin Copyright © 2008 by The McGraw-Hill Companies, Inc. All rights reserved.
CSI 1340 Introduction to Computer Science II Chapter 1 Software Engineering Principles.
The Hashemite University Computer Engineering Department
Lecture #1: Introduction to Algorithms and Problem Solving Dr. Hmood Al-Dossari King Saud University Department of Computer Science 6 February 2012.
Evolution of C and C++ n C was developed by Dennis Ritchie at Bell Labs (early 1970s) as a systems programming language n C later evolved into a general-purpose.
Software. Introduction n A computer can’t do anything without a program of instructions. n A program is a set of instructions a computer carries out.
INTRODUCTION TO COMPUTER PROGRAMMING(IT-303) Basics.
SYSTEM ANALYSIS AND DESIGN LAB NARZU TARANNUM(NAT)
Introduction to Problem Solving Programming is a problem solving activity. When you write a program, you are actually writing an instruction for the computer.
Software Engineering Algorithms, Compilers, & Lifecycle.
Victoria Ibarra Mat:  Generally, Computer hardware is divided into four main functional areas. These are:  Input devices Input devices  Output.
MANAGEMENT INFORMATION SYSTEM
Individual Income Tax Computation and Tax Credits
Introduction Edited by Enas Naffar using the following textbooks: - A concise introduction to Software Engineering - Software Engineering for students-
Lecture 1 Introduction Richard Gesick.
C++ Plus Data Structures
Algorithms and Flowcharts
Algorithm and Ambiguity
Introduction Edited by Enas Naffar using the following textbooks: - A concise introduction to Software Engineering - Software Engineering for students-
Unit# 9: Computer Program Development
Introduction to Problem Solving
Problem Solving Techniques
Introduction to Computer Programming
Chapter 2- Visual Basic Schneider
Chapter 1 Introduction(1.1)
CSC128 FUNDAMENTALS OF COMPUTER PROBLEM SOLVING
Understanding Problems and how to Solve them by using Computers
Algorithms and Problem Solving
Basic Concepts of Algorithm
Presentation transcript:

Algorithms II Software Development Life-Cycle

Problem Solving Problem solving is the process of transforming the description of a problem into the solution of that problem by using our knowledge of the problem domain and by relying on our ability to select and use appropriate problem-solving strategies, techniques, and tools.

Problem Solving Problem Solving Procedure Environment Problem Solution

Problem Solving Solution Input Output A solution is anything that connects the input to the output.

Why Use Computers Use a computer to solve a problem if: It has extensive input. It has extensive output. Its method of solution is too complicated to implement manually. If done manually, it takes an excessively long time to solve. We expect to use the same method often.

Software Development Life Cycle Requirements specification Analysis Design Implementation Testing and verification Documentation Maintenance and Enhancement

Sample Problem: QuikTax Customer: QuikTax, a local tax preparation service. Task: “Develop a program to calculate Federal Tax from the Federal Tax Schedules for the 1999 tax year.”

Requirements Specifications “If you don’t know where you’re going, then any road will take you there. Critical Questions: What is the current situation? What is the desired situation? What constraints limit possible solutions? What special conditions must be met? Goal: complete understanding of problem space and solution space.

QuikTax Requirements Inputs: Output: Constraints: ? Taxpayer income (wages, interest, etc) Schedule data. Output: Tax payment (on form? backup data?) Constraints: ? Special Conditions: April 15? Refunds? Earned Income Credit?

Analysis In this phase we identify: Specific inputs and their forms Specific outputs expected from and their forms Special Constraints Assumptions Formulas

Inputs What items must be provided to be able to get a solution? Taxable income $0.00 to $1,000,000,000.00 (+?) Filing status: S/M, Head of household Number of dependents: 1 - 99? Dividends, interest, capital gains? Deductions, adjustments, … ?

Output Intermediate results Final results All calculations? Completed forms: 1040 Schedules A,B,C,..? Estimated Tax Working papers and justification?

Constraints What are the limits on the data? Income can not be negative. Number of dependents usually one or more (may be zero). Is there a maximum? Filing status must be one of a set of values

Assumptions Problem deals in $US What’s implied by the Requirements?

Formulas For income tax, it is the tax tables and accessory formulas. For determining the area, it is length x width For grades, it is: >90.0% A 80.0% - 89.99% B 70.0% - 79.99% C 60.0% - 69.99% D >60.0% F

Design Develop a series of steps with a logical order which, when applied to the input would produce the specified output. (does this sound like an ALGORITHM?) This phase is when you think about how to solve the problem!! This phase can take forty per cent of the effort.

Design for Maintenance and Enhancement Identify and separate critical data: Use names: RATE = 0.18 use TAX = net_income * RATE not TAX = net_income * 0.18 Functional Decomposition: Identify and group critical functions Taxpayer ID functions Dependent and deduction calculations Special Forms Final Tax obligation Many valid alternative decompositions.

“Design at the Keyboard” is not design. Implementation This is the phase where the design is transformed into code. This is the only portion of the process that is computer and compiler specific. This should be approximately ten per cent of the effort. “Design at the Keyboard” is not design.

Implementation Errors Design errors Design can’t be implemented Matrices too large, not enough precision,… Syntax errors Incorrect language forms Run-time errors Arithmetic errors Unanticipated input

Testing and Verification Once the code is developed: Demonstrate the program produces correct results. Demonstrate that the program that was built solves the problem that was described in the requirements specification. Manually solve the problem with a data set, then compare that to the program’s output Construct an alternate computer solution for special easy-to-implement cases.

Documentation should be a complete explanation of code as implemented. Consists of A concise requirements specification Description of inputs, outputs, constraints, and formulas used Pseudocode or flowchart of the algorithm Source code listing Hard copy of a sample of data and the output User’s guide explaining how to use the program Documentation should be a complete explanation of code as implemented.

Maintenance and Enhancement Environments change, so programs must be changed Tax tables change Name of organization changes Users want (or need) the program to do more New tax credits Elimination of old tax credits.

Design for Maintenance and Enhancement Identify and separate critical data: Use names: RATE = 0.18 use TAX = net_income * RATE not TAX = net_income * 0.18 Changes are easier/Less chance of error Data is in one place/one change changes all Easier to understand. RATE -vs- 0.18

Design for Maintenance and Enhancement Functional Decomposition: Identify and group critical functions Taxpayer ID functions Dependent and deduction calculations Special Forms Final Tax obligation Easier to find and identify code to change. Effects limited to local area.