CSCE 121, Sec 200, 507, 508 Software Engineering Fall 2010 Prof. Jennifer L. Welch.

Slides:



Advertisements
Similar presentations
Chapter 2: Approaches to System Development
Advertisements

10 Software Engineering Foundations of Computer Science ã Cengage Learning.
©Brooks/Cole, 2003 Chapter 10 Software Engineering.
Chapter 2 Approaches to System Development
Ch 3 System Development Environment
Sharif University of Technology Session # 3.  Contents  Systems Analysis and Design Sharif University of Technology MIS (Management Information System),
1 Software Design Introduction  The chapter will address the following questions:  How do you factor a program into manageable program modules that can.
Information Systems Analysis and Design
What is Software Design?  Introduction  Software design consists of two components, modular design and packaging.  Modular design is the decomposition.
Copyright © 2009 Pearson Education, Inc. Publishing as Prentice Hall Essentials of Systems Analysis and Design Fourth Edition Joseph S. Valacich Joey F.
Chapter 1 The Systems Development Environment
Copyright 2002 Prentice-Hall, Inc. Chapter 4 Automated Tools for Systems Development 4.1 Modern Systems Analysis and Design Third Edition.
Algorithms and Problem Solving-1 Algorithms and Problem Solving.
© Prentice Hall CHAPTER 9 Application Development by Information Systems Professionals.
Analysis Modeling Over view of today’s lesson T he analysis model is the first technical representation of a system. Analysis modeling uses a combination.
Algorithms and Problem Solving. Learn about problem solving skills Explore the algorithmic approach for problem solving Learn about algorithm development.
Chapter 2 Succeeding as a Systems Analyst
J. Michael Moore Software Design CSCE 110 Influenced by material developed by James Tam & Jennifer Welch.
J. Michael Moore Software Design CSCE 110 Influenced by material developed by James Tam & Jennifer Welch.
CS350/550 Software Engineering Lecture 1. Class Work The main part of the class is a practical software engineering project, in teams of 3-5 people There.
Chapter 1 Principles of Programming and Software Engineering.
Copyright 2004 Prentice-Hall, Inc. Essentials of Systems Analysis and Design Second Edition Joseph S. Valacich Joey F. George Jeffrey A. Hoffer Chapter.
Systems Analysis and Design in a Changing World, Fifth Edition
1-1 © Prentice Hall, 2007 Chapter 1: The Object-Oriented Systems Development Environment Object-Oriented Systems Analysis and Design Joey F. George, Dinesh.
© 2006 Pearson Addison-Wesley. All rights reserved2-1 Chapter 2 Principles of Programming & Software Engineering.
Domain-Specific Software Engineering Alex Adamec.
Copyright 2001 Prentice-Hall, Inc. Essentials of Systems Analysis and Design Joseph S. Valacich Joey F. George Jeffrey A. Hoffer Chapter 1 The Systems.
The Design Discipline.
Chapter 2: Approaches to System Development
Chapter 7 Software Engineering Objectives Understand the software life cycle. Describe the development process models.. Understand the concept of modularity.
INFO415 Approaches to System Development: Part 2
Systems Analysis – Analyzing Requirements.  Analyzing requirement stage identifies user information needs and new systems requirements  IS dev team.
INFORMATION SYSTEM APPLICATIONS System Development Life Cycle.
Pertemuan 5 Pengembangan Teknologi Informasi Matakuliah: H0402/PENGELOLAAN SISTEM KOMPUTER Tahun: 2005 Versi: 1/0.
Describing Methodologies PART II Rapid Application Development*
Software Engineering CS B Prof. George Heineman.
Engineering Design Process
Information Systems in Organisations System Development: The Environment.
Engineering Design Process
Business Analysis and Essential Competencies
Top-Down Design and Modular Development
1-1 © Prentice Hall, 2007 Chapter 1: The Object-Oriented Systems Development Environment Object-Oriented Systems Analysis and Design Joey F. George, Dinesh.
SOFTWARE DESIGN (SWD) Instructor: Dr. Hany H. Ammar
SOFTWARE DESIGN.
Sommerville, Mejia-Alvarez, 2009Software Engineering, Slide 1 Software Design u Deriving a solution which satisfies software requirements.
CSE 219 Computer Science III Program Design Principles.
Software Design Deriving a solution which satisfies software requirements.
SE: CHAPTER 7 Writing The Program
1 Systems Analysis and Design in a Changing World, Thursday, January 18, 2007.
Chapter 7 Software Engineering Introduction to CS 1 st Semester, 2015 Sanghyun Park.
UHD::3320::CH121 DESIGN PHASE Chapter 12. UHD::3320::CH122 Design Phase Two Aspects –Actions which operate on data –Data on which actions operate Two.
Software Engineering Principles. SE Principles Principles are statements describing desirable properties of the product and process.
2 Systems Analysis and Design in a Changing World, Fifth Edition.
Chapter 10 Software Engineering. Understand the software life cycle. Describe the development process models. Understand the concept of modularity in.
Chapter 6 CASE Tools Software Engineering Chapter 6-- CASE TOOLS
Lecture 2 Intro. To Software Engineering and Object-Oriented Programming (1/2)
© 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.
Chapter 4 Automated Tools for Systems Development Modern Systems Analysis and Design Third Edition 4.1.
Software Engineering Issues Software Engineering Concepts System Specifications Procedural Design Object-Oriented Design System Testing.
Systems Design.  Application Design  User Interface Design  Database Design.
1 The Software Development Process ► Systems analysis ► Systems design ► Implementation ► Testing ► Documentation ► Evaluation ► Maintenance.
21/1/ Analysis - Model of real-world situation - What ? System Design - Overall architecture (sub-systems) Object Design - Refinement of Design.
1-1 © Prentice Hall, 2004 Chapter 1: The Object-Oriented Systems Development Environment Object-Oriented Systems Analysis and Design Joey F. George, Dinesh.
Lecture 2 Intro. To Software Engineering and Object-Oriented Programming (1/2)
Modern Systems Analysis and Design Third Edition
Modern Systems Analysis and Design Third Edition
Modern Systems Analysis and Design Third Edition
Introduction to Systems Analysis and Design Stefano Moshi Memorial University College System Analysis & Design BIT
Top-Down Design & JSP Skill Area Part D
Presentation transcript:

CSCE 121, Sec 200, 507, 508 Software Engineering Fall 2010 Prof. Jennifer L. Welch

Why is Software Engineering Difficult? For constructing large physical systems, there are well-established engineering techniques for – designing the project – coordinating the people over time – estimating the cost – dividing the project into manageable sub-pieces – measuring the progress CSCE

Why is Software Engineering Difficult? But software is different: – tolerances are harder to define in a meaningful way (a program is 90% correct?? ) – lack of quantitative metrics for measuring performance Difficult area; design fads are popular, but are subjective and fade. Underlying, scientifically valid, theory has not yet been found. CSCE

Software Lifecycle Analysis: identify the needs of the user. – Result is a set of requirements Design: Break system into manageable units, or modules. – Modular design is key to the ability to create large systems – Object-oriented methodology is helpful here Implementation: write the code Testing: – test each module in isolation – test the modules together – make sure every line of code is tested CSCE

Software Engineering Tools Computer-aided software engineering (CASE) tools are becoming increasingly sophisticated CASE tools facilitate prototyping: quickly design and code the system, do some experimentation, and see if you want to change the design – increased speed makes this approach feasible CSCE

What CASE Tools Can Do update data-flow diagrams – describe how info flows through modules update entity-relationship diagrams – identify the kinds of info in the system and how they relate to each other update data dictionaries – keep track of all data items, their identifiers, their types, and constraints on their values even generate code from specifications CSCE

Modularity and Software Engineering The object-oriented approach begins during requirements analysis Requirements refer to nouns –– things, concepts, entities –– that are relevant to the application – most likely, these will end up being objects in the code – Identify them and how they relate to teach other at the very beginning CSCE

Modularity There are standardized kinds of diagrams for representing objects and their relationships to each other. There is even software – to draw the diagrams – to extract the diagrams from the code CSCE

Coupling Separate modules must communication with each other, called coupling – control coupling: transfer control from one module to another, using a function call – data coupling: sharing data between modules Object-oriented systems minimize data coupling, since a well-designed object should bundle together all the functions that act on a particular piece of data Make coupling as explicit as possible: – Ex: pass parameters instead of using global variables CSCE

Cohesion Cohesion means that each module “hangs together”, i.e., everything that it does is closely related Each object should be a separate, well-defined entity – Ex: Have a Triangle class and a Rectangle class instead of a Lots_of_shapes class Each function should perform a single, well-defined task – Ex: Have separate area and perimeter functions instead of an area_and_perimeter function CSCE

Modular Decomposition Top-down design: – start with a high-level idea of solution and successively refine it – favors hierarchical organization with modules inside modules – Advantage: divide and conquer the problem – Disadvantage: design decisions made at high levels are set in stone for lower levels CSCE

Modular Decomposition Bottom-up design: – start by identifying individual tasks at the bottom level, and then combine them to solve the main problem – Disadvantage: how do you know the required individual tasks initially? – Advantage: favors reusing existing objects and classes CSCE

Modular Decomposition Middle-out design: – start with a set of classes that model application concepts. – Then work down to implement the classes – Also work up to combine the classes to solve the main problem. No magical automated way to come up with a good design. It takes creativity experience, understanding of application domain, trial-and-error. CSCE

Documentation No one likes to write it, but everyone hates to work on a system without it! User documentation: explains to the user how to use the software. Usually non-technical. System documentation: describes the system and its implementation so that it can be maintained. Technical. Software tools for updating diagrams and dictionaries and for formatting source code help ease the pain of keeping documentation up-to-date. CSCE