Agenda Warmup Lesson 4.5 (Program Design & Analysis)

Slides:



Advertisements
Similar presentations
General OO Concepts Objectives For Today: Discuss the benefits of OO Programming Inheritance and Aggregation Abstract Classes Encapsulation Introduce Visual.
Advertisements

Data Structures.
Ch 3: Unified Process CSCI 4320: Software Engineering.
COMP 121 Week 7: Object-Oriented Design and Efficiency of Algorithms.
Liang,Introduction to Java Programming,revised by Dai-kaiyu 1 Chapter 10 Object-Oriented Modeling.
Chapter 1 Principles of Programming and Software Engineering.
1 Object-Oriented Design. 2 Objectives F To become familiar with the process of program development. F To the relationship types: association, aggregation,
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.
© 2006 Pearson Addison-Wesley. All rights reserved2-1 Chapter 2 Principles of Programming & Software Engineering.
Liang, Introduction to Java Programming, Sixth Edition, (c) 2007 Pearson Education, Inc. All rights reserved Chapter 12 Object-Oriented.
CIT241 Prerequisite Knowledge ◦ Variables ◦ Operators ◦ C++ Syntax ◦ Program Structure ◦ Classes  Basic Structure of a class  Concept of Data Hiding.
COMP 121 Week 7: Object-Oriented Design and Efficiency of Algorithms.
Understand Application Lifecycle Management
SOFTWARE DESIGN AND ARCHITECTURE LECTURE 27. Review UML dynamic view – State Diagrams.
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.
Object-Oriented Software Development F Software Development Process F Analyze Relationships Among Objects F Class Development F Class Design Guidelines.
CSE 219 Computer Science III Program Design Principles.
1 C++ Plus Data Structures Nell Dale Chapter 1 Software Engineering Principles Modified from the Slides made by Sylvia Sorkin, Community College of Baltimore.
C++ Programming Language Lecture 2 Problem Analysis and Solution Representation By Ghada Al-Mashaqbeh The Hashemite University Computer Engineering Department.
I Power Higher Computing Software Development The Software Development Process.
Chapter 7 Software Engineering Introduction to CS 1 st Semester, 2015 Sanghyun Park.
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.
Chapter 17 – Object- Oriented Design. Chapter Goals To learn about the software life cycle To learn about the software life cycle To learn how to discover.
© 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.
Liang, Introduction to Java Programming, Sixth Edition, (c) 2007 Pearson Education, Inc. All rights reserved Chapter 11 Object-Oriented.
Liang, Introduction to Java Programming, Sixth Edition, (c) 2007 Pearson Education, Inc. All rights reserved Object-Oriented Design.
CSI 1340 Introduction to Computer Science II Chapter 1 Software Engineering Principles.
The Hashemite University Computer Engineering Department
Chapter 2 Principles of Programming and Software Engineering.
Barron’s chapter 5 Software development life cycle.
CSCE 240 – Intro to Software Engineering Lecture 3.
Advanced Higher Computing Science
Principles of Programming & Software Engineering
Chapter 2 Object-Oriented Paradigm Overview
Agenda Warmup Lesson 4.5 (Program Design & Analysis)
CSC 222: Object-Oriented Programming
ICS 3UI - Introduction to Computer Science
CSC 222: Computer Programming II
C++ Plus Data Structures
Object-Oriented Analysis and Design
1. Systems and Software Development
Agenda Warmup Finish 2.4 Assignments
Chapter 11 Object-Oriented Design
Chapter 10 Object-Oriented Modeling
The Software Development Cycle
Agenda Warmup AP Exam Review: Litvin A2
SDC – SDLC integration.
Principles of Programming and Software Engineering
Systems Analysis and Design
Reference: COS240 Syllabus
About the Presentations
UML The Unified Modelling Language. A way of drawing code overviews so that it's understood by any programmer. Usually part of a software development 'process'.
Object-Orientated Programming
Lecture 22 Inheritance Richard Gesick.
Selection Insertion and Merge
Data Structures and Algorithms for Information Processing
Building Information Systems
MANAGING THE DEVELOPMENT AND PURCHASE OF INFORMATION SYSTEMS
Agenda Warmup Lesson 2.6 (Constructors, Encapsulation)
Chapter 2. Problem Solving and Software Engineering
Agenda Warmup Lesson 2.2 (parameters, etc)
Building Information Systems
WRITING AN ALGORITHM, PSEUDOCODE, AND FLOWCHART LESSON 2.
Warmup Which of the 4 sorting algorithms uses recursion?
The Software Development Cycle
Presentation transcript:

Agenda Warmup Lesson 4.5 (Program Design & Analysis) Independent Practice (Hangman, AP Exam Prep) Closure Activity Students will be able to: Understand the Software Development Life Cycle Identify Object-Oriented Program Design Differentiate between Bottom-Up vs. Top-Down Development See how today's lesson fits into the unit and the course as a whole

Warmup What are the 4 main sorting algorithms? Which one is particularly inefficient for large arrays? Which 2 do not use recursion? What are the 2 main searching algorithms? Which is considered more efficient if the array is sorted? What is the result of the following? String[] x = new String[1]; System.out.println(x[0].length()); 7) What is composition? How is composition different from inheritance? How is composition represented on a UML diagram? Convert to binary: 511 True/False: BK’s veggie burger is delicious.

Unit 4 Test: Fri 5/18

The Software Development Life Cycle The SDLC is a process to design, develop, and test software. It is made up of these steps: Specification / Requirements Analysis Design Development / Implementation Testing & Debugging Maintenance

Each of these 5 steps can be thought of as being part of a waterfall, with each step “flowing” into the next:

Development / Implementation: the actual code-writing phase Specification / Requirements Analysis: a written description of the project Design: a detailed plan for solving the problem outlined in the specification Development / Implementation: the actual code-writing phase Testing & Debugging: the programmer should test his/her code with a representative set of test data, since it is impossible to test for all possible values. All 3 types of errors should be avoided. Code should be robust – it should error check whenever possible, so that inaccurate results and runtime errors are prevented. Maintenance: Code may have to be changed or upgraded as circumstances change. The code should originally be written (and commented on) so that other programmers can understand it.

Object-Oriented Program Design This programming methodology is made up of 5 steps: Identify classes to be written: Usually, you can identify what classes you will write by finding the nouns in the program specification – nouns that describe the major objects in the specification. Identify methods for each class: Now, find the verbs/behaviors the program description that will solve the programming task. These will become methods. Next, you must decide which methods will be placed in which classes. Determine the relationship between classes: decide if there are any is-a relationships between the classes. If so, create inheritance by using the extends keyword. Do the same for any has-a relationships – create composition. Use UML diagrams to organize these relationships. Write the public method headers for each class. Implement the methods: if several methods require the same task, put that task in a helper method. This process is called procedural abstraction. Use information hiding, which means that most instance variables and helper methods are private. Use temporary “stub” methods and classes to test code before implementing it fully.

Bottom-up vs. Top-Down Development When writing a method, a programmer should list other classes that the method might use. Those classes are collaborators. A class without collaborators is an independent class. Bottom-Up Development means writing and testing independent classes first, then incorporating them into the overall project. Next, classes that only rely on one other class are written, and so on. Top-Down Development means starting with an overview of the project, writing the main (highest-level) class first, then subsidiary classes, eventually finishing with low-level, independent classes. Use stub classes and methods to test code. Essentially, it the opposite of Bottom-Up Development.

Assignment Complete #1-20 in Litvin Practice Test A1. You will recognize some of these problems, we have already seen them in our lessons.