Software Engineering and Object-Oriented Design Topics: Solutions Modules Key Programming Issues Development Methods Object-Oriented Principles.

Slides:



Advertisements
Similar presentations
Ch:8 Design Concepts S.W Design should have following quality attribute: Functionality Usability Reliability Performance Supportability (extensibility,
Advertisements

Ch 3: Unified Process CSCI 4320: Software Engineering.
Object-Oriented Software Development CS 3331 Fall 2009.
10 Software Engineering Foundations of Computer Science ã Cengage Learning.
CHAPTER 1 SOFTWARE DEVELOPMENT. 2 Goals of software development Aspects of software quality Development life cycle models Basic concepts of algorithm.
Ch 3 System Development Environment
Object Oriented Design An object combines data and operations on that data (object is an instance of class) data: class variables operations: methods Three.
Software Engineering and Design Principles Chapter 1.
Chapter 1 Object-Oriented System Development
Introduction To System Analysis and Design
Object Oriented System Development with VB .NET
© 2006 Pearson Addison-Wesley. All rights reserved4-1 Chapter 4 Data Abstraction: The Walls.
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.
Fall 2007CS 2251 Software Engineering Intro. Fall 2007CS 2252 Topics Software challenge Life-cycle models Design Issues Documentation Abstraction.
Chapter 1 Principles of Programming and Software Engineering.
Software Engineering Principles and C++ Classes
Data Structures Using C++1 Chapter 1 Software Engineering Principles and C++ Classes.
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.
Spring 2009CS 225 Introduction to Software Design Chapter 1.
Introduction to Software Design Chapter 1. Chapter 1: Introduction to Software Design2 Chapter Objectives To become familiar with the software challenge.
Introduction To System Analysis and design
Comp 245 Data Structures Software Engineering. What is Software Engineering? Most students obtain the problem and immediately start coding the solution.
Chapter 2 The process Process, Methods, and Tools
Chapter 1: The Object-Oriented Systems Development Environment Object-Oriented Systems Analysis and Design Joey F. George, Dinesh Batra, Joseph S. Valacich,
Introduction to Data Structures & Algorithm. Objectives: By the end of the class, students are expected to understand the following: data structure and.
The Program Development Cycle
Introduction To System Analysis and Design
Software Life Cycle Requirements and problem analysis. –What exactly is this system supposed to do? Design –How will the system solve the problem? Coding.
SE: CHAPTER 7 Writing The Program
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.
Cohesion and Coupling CS 4311
Introduction CS 3358 Data Structures. What is Computer Science? Computer Science is the study of algorithms, including their  Formal and mathematical.
Systems Analysis and Design in a Changing World, 3rd Edition
Chapter 7 Software Engineering Introduction to CS 1 st Semester, 2015 Sanghyun Park.
An Object-Oriented Approach to Programming Logic and Design Fourth Edition Chapter 6 Using Methods.
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.
Chapter 10 Software Engineering. Understand the software life cycle. Describe the development process models. Understand the concept of modularity in.
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.
Lecture 2 Intro. To Software Engineering and Object-Oriented Programming (1/2)
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.
Design and Planning Or: What’s the next thing we should do for our project?
Software Engineering Issues Software Engineering Concepts System Specifications Procedural Design Object-Oriented Design System Testing.
Or how to work smarter when building solutions.  2:30 – 3:30 Mondays – focus on problem solving (with some terminology thrown in upon occasion)  All.
Chapter 1 Data Abstraction: The Walls CS Data Structures Mehmet H Gunes Modified from authors’ slides.
©Ian Sommerville 2006Software Engineering, 8th edition. Chapter 4 Slide 1 Software Processes.
Software Model Process
Chapter 2 Principles of Programming and Software Engineering.
Design CS 470 – Software Engineering I Sheldon X. Liang, PH.D.
Principles of Programming. Achieving an Object-Oriented Design  Abstraction and Information Hiding  Object-Oriented Design  Functional Decomposition.
Chapter 10 Software quality. This chapter discusses n Some important properties we want our system to have, specifically correctness and maintainability.
Lecture 2 Intro. To Software Engineering and Object-Oriented Programming (1/2)
Principles of Programming & Software Engineering
DATA ABSTRACTION AND PROBLEM SOLVING WITH C++
Principles of Programming and Software Engineering
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.
Unit# 9: Computer Program Development
What Is Good Software(Program)?
Software Development Chapter 1.
Presentation transcript:

Software Engineering and Object-Oriented Design Topics: Solutions Modules Key Programming Issues Development Methods Object-Oriented Principles

A solution is good if: The total cost it incurs over all phases of its life cycle is minimal The cost of a solution includes: Computer resources that the program consumes Difficulties encountered by users Consequences of a program that does not behave correctly Programs must be well structured and documented Efficiency is one aspect of a solution’s cost

A Module is a part of a program that accomplishes a task. In procedural programming, Modules are made up of one or more functions. Large Modules may contain Sub-Modules.

Modules have two primary components: an Interface and Internal Components. In procedural programming, a module’s interface is just header of the function that you call to start the module. Internal Components are the sub-modules/functions that do the task the module is designed to do.

Cohesion A highly cohesive module performs one well-defined task Leads to modular solutions Reduces Coupling Coupling Modules with low coupling are independent of one another Modules shouldn’t affect other modules when changed. Low coupling increases Cohesion.

1. Modularity 2. Style 3. Modifiability 4. Ease of Use 5. Fail-safe programming 6. Debugging 7. Testing

Modularity has a favorable impact on Constructing programs Debugging programs Reading programs Modifying programs Eliminating redundant code Reuse of code

Programming Style can enhance code with: 1. Use of private data members 2. Proper use of reference arguments 3. Proper use of functions 4. Avoidance of global variables in modules 5. Error handling 6. Readability 7. Documentation

Modifiability is easier through the use of Named constants The typedef statement

The easier a program is to use, the more impressed users will be with it. In an interactive environment, the program should prompt the user for input in a clear manner A program should always echo its input The output should be well labeled and easy to read

Fail-safe programs will perform reasonably no matter how anyone uses them Test for invalid input data and program logic errors Check invariants Enforce preconditions Check argument values

Programmers must systematically check a program’s logic to find and correct errors Tools to use while debugging: – Single-stepping – Watches – Breakpoints – cout statements – Dump functions

Levels Unit testing: Test functions, then modules Integration testing: Test interactions among modules System testing: Test entire program Acceptance testing: Show that system complies with requirements

One simple but somewhat outdated method is the Waterfall Method. AnalysisDesignImplementationTestingDeployment Though it can be used modularly, this design method requires each preceding stage to be complete before progressing to the next stage. In practice, this leads to inflexibility and a constant state of incompleteness.

Newer methods are iterative. Many short, fixed-length iterations Each iteration builds on the previous iteration until a complete solution is achieved Each iteration cycles through analysis, design, implementation, testing, and integration of a small portion of the problem domain Early iterations create the core of the system; further iterations build on that core

Features of Iterative methods: The partial system at the end of each iteration should be functional and completely tested Each iteration makes relatively few changes to the previous iteration End users can provide feedback at the end of each iteration One specific iterative method is the Rational Unified Process (RUP)

The most modern approach to designing modules is the Object-Oriented approach. Instead of creating groups of functions, create classes. Classes are combinations of data sets and methods (functions that operate on the data set) Classes are combined and caused to interact to create solutions.

Object-oriented languages enable us to build classes that can be used to instantiate (create) objects A class combines Attributes (characteristics) of objects of a single type Typically data Called data members Behaviors (operations) Typically operate on the data Called methods or member functions An object is an instance of a class. Class: Objects:

Three principles of object-oriented programming Encapsulation Objects combine data and operations Hides inner details Inheritance Classes can inherit properties from other classes Existing classes can be reused Polymorphism Objects can determine appropriate operations at execution time

Object-Oriented Analysis (OOA) Coming up with the classes that can be used to define the problem. Emphasis on what a solution must do. Object-Oriented Design (OOD) Understanding how the classes can interact and what they can do alone or together.

UML (Unified Modeling Language) is very often used in OOA/D to define classes and their interactions. A UML class definition: A UML interaction diagram: