Review of last class Software Engineering Modeling Problem Solving

Slides:



Advertisements
Similar presentations
Software Architecture Design Chapter 12 Part of Design Analysis Designing Concurrent, Distributed, and Real-Time Applications with UML Hassan Gomaa (2001)
Advertisements

Using UML, Patterns, and Java Object-Oriented Software Engineering Chapter 1: Introduction.
Computer Science Department
Bernd Bruegge & Allen Dutoit Object-Oriented Software Engineering: Conquering Complex and Changing Systems 1 Software Engineering September 12, 2001 Capturing.
Using UML, Patterns, and Java Object-Oriented Software Engineering Chapter 1: Introduction.
L4-1-S1 UML Overview © M.E. Fayad SJSU -- CmpE Software Architectures Dr. M.E. Fayad, Professor Computer Engineering Department, Room #283I.
Chapter 1: Introduction
Chapter 8, Object Design Introduction to Design Patterns
Feb. 23, 2004CS WPI1 CS 509 Design of Software Systems Lecture #5 Monday, Feb. 23, 2004.
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.
Software Issues Derived from Dr. Fawcett’s Slides Phil Pratt-Szeliga Fall 2009.
Chapter 1: Introduction
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 1 Introduction to Software Engineering CEN 4010.
CPTE 209 Software Engineering Summary and Review.
Katanosh Morovat.   This concept is a formal approach for identifying the rules that encapsulate the structure, constraint, and control of the operation.
Conquering Complex and Changing Systems Object-Oriented Software Engineering Chapter 1, Introduction to Software Engineering.
COP 3331 OO Analysis and Design
© 2007 Pearson Education, Inc. Publishing as Pearson Addison-Wesley 1 A Discipline of Software Design.
An Introduction to Software Architecture
Instructor: Peter Clarke
Programming in Java Unit 3. Learning outcome:  LO2:Be able to design Java solutions  LO3:Be able to implement Java solutions Assessment criteria: 
Odyssey A Reuse Environment based on Domain Models Prepared By: Mahmud Gabareen Eliad Cohen.
Using UML, Patterns, and Java Object-Oriented Software Engineering Chapter 4, Requirements Elicitation.
CS 319: Object Oriented Software Engineering
1 Systems Analysis and Design in a Changing World, Thursday, January 18, 2007.
Using UML, Patterns, and Java Object-Oriented Software Engineering Chapter 2, Modeling with UML: Review Session (Optional)
1 Introduction to Software Engineering Lecture 1.
The Systems Development Life Cycle
Enterprise Systems Architectures EGN 5621 Enterprise Systems Collaboration (Professional MSEM) Fall, 2012.
Chapter 10 Analysis and Design Discipline. 2 Purpose The purpose is to translate the requirements into a specification that describes how to implement.
SOFTWARE DESIGN AND ARCHITECTURE LECTURE 05. Review Software design methods Design Paradigms Typical Design Trade-offs.
ECE 355: Software Engineering CHAPTER 1 Unit 1. Outline for today Introduction Course description  Software engineering basics.
Using UML, Patterns, and Java Object-Oriented Software Engineering Chapter 1: Introduction.
Software Engineering Prof. Ing. Ivo Vondrak, CSc. Dept. of Computer Science Technical University of Ostrava
Unified Modeling Language* Keng Siau University of Nebraska-Lincoln *Adapted from “Software Architecture and the UML” by Grady Booch.
L6-S1 UML Overview 2003 SJSU -- CmpE Advanced Object-Oriented Analysis & Design Dr. M.E. Fayad, Professor Computer Engineering Department, Room #283I College.
Systems Analysis and Design in a Changing World, Fourth Edition
Object-Oriented Software Engineering using Java, Patterns &UML. Presented by: E.S. Mbokane Department of System Development Faculty of ICT Tshwane University.
Requirements Engineering-Based Conceptual Modelling From: Requirements Engineering E. Insfran, O. Pastor and R. Wieringa Presented by Chin-Yi Tsai.
Using UML, Patterns, and Java Object-Oriented Software Engineering Chapter 1: Introduction.
21/1/ Analysis - Model of real-world situation - What ? System Design - Overall architecture (sub-systems) Object Design - Refinement of Design.
From Use Cases to Implementation 1. Structural and Behavioral Aspects of Collaborations  Two aspects of Collaborations Structural – specifies the static.
Using UML, Patterns, and Java Object-Oriented Software Engineering Chapter 1: Introduction.
Introduction to Software Engineering 1. Software Engineering Failures – Complexity – Change 2. What is Software Engineering? – Using engineering approaches.
From Use Cases to Implementation 1. Mapping Requirements Directly to Design and Code  For many, if not most, of our requirements it is relatively easy.
Why is Design so Difficult? Analysis: Focuses on the application domain Design: Focuses on the solution domain –The solution domain is changing very rapidly.
Design Engineering 1. Analysis  Design 2 Characteristics of good design 3 The design must implement all of the explicit requirements contained in the.
Engineering, 7th edition. Chapter 8 Slide 1 System models.
Object-Oriented Software Engineering Using UML, Patterns, and Java,
What is UML? What is UP? [Arlow and Neustadt, 2005] October 5, 2017
Software Lifecycle Activities
Software Engineering – Introduction
Software Engineering – Introduction
The Systems Engineering Context
IEEE Std 1074: Standard for Software Lifecycle
Abstract descriptions of systems whose requirements are being analysed
Chapter 4, Requirements Elicitation
Chapter 8, Object Design Introduction to Design Patterns
Model-Driven Analysis Frameworks for Embedded Systems
Dr. Samer Odeh Hanna (PhD)
Chapter 5 Designing the Architecture Shari L. Pfleeger Joanne M. Atlee
Chapter 1, Introduction to Software Engineering
Object oriented analysis and design
Chapter 0 : Introduction to Object Oriented Design
Analysis models and design models
An Introduction to Software Architecture
CSC 480 Software Engineering
Chapter 8, Design Patterns Introduction
Software Development Process Using UML Recap
From Use Cases to Implementation
Presentation transcript:

Review of last class Software Engineering Modeling Problem Solving An abstract representation of a system To deal with systems too large, too complicated, too expensive Problem Solving Analysis Synthesis Knowledge Acquisition Rationale-driven

Review of last class (cont.) Software Engineering is a collection of techniques, methodologies and tools that help with the production of a high quality software system with a given budget before a given deadline while change occurs.

Review of last class (cont.) Dealing with Complexity Abstraction Chunking: Group collection of objects Ignore unessential details: => Models Decomposition Functional decomposition Object-oriented decomposition Hierarchy

Today’s Outline Identify classes Dealing with change: Reuse: Software lifecycle modeling Reuse: Design Patterns Frameworks Concluding remarks

Class Identification Class identification is crucial to object-oriented modeling Basic assumption: We can find the classes for a new software system: We call this Greenfield Engineering We can identify the classes in an existing system: We call this Reengineering We can create a class-based interface to any system: We call this Interface Engineering Why can we do this? Philosophy, science, experimental evidence What are the limitations? Depending on the purpose of the system different objects might be found How can we identify the purpose of a system?

What is this Thing?

Modeling a Briefcase BriefCase Capacity: Integer Weight: Integer Open() Close() Carry()

A new Use for a Briefcase Capacity: Integer Weight: Integer Open() Close() Carry() SitOnIt()

Why did we model the thing as “Briefcase”? Questions Why did we model the thing as “Briefcase”? Why did we not model it as a chair? What do we do if the SitOnIt() operation is the most frequently used operation? The briefcase is only used for sitting on it. It is never opened nor closed. Is it a “Chair”or a “Briefcase”? How long shall we live with our modeling mistake?

3. Hierarchy We got abstractions and decomposition This leads us to chunks (classes, objects) which we view with object model Another way to deal with complexity is to provide simple relationships between the chunks One of the most important relationships is hierarchy 2 important hierarchies "Part of" hierarchy "Is-kind-of" hierarchy

Part of Hierarchy Computer I/O Devices CPU Memory Cache ALU Program Counter

Is-Kind-of Hierarchy (Taxonomy) Cell Muscle Cell Blood Cell Nerve Cell Cortical Pyramidal Striate Smooth Red White

So where are we right now? Three ways to deal with complexity: Abstraction Decomposition Hierarchy Object-oriented decomposition is a good methodology Unfortunately, depending on the purpose of the system, different objects can be found How can we do it right? Many different possibilities Our current approach: Start with a description of the functionality (Use case model), then proceed to the object model This leads us to the software lifecycle The identification of objects and the definition of the system boundary are heavily intertwined with each other.

Software Lifecycle Activities ...and their models Requirements Elicitation Analysis System Design Object Design Implemen- tation Testing Use Case Model Test Cases ? Verified By class.... class... Source Code Implemented By Solution Domain Objects Realized By Subsystems Structured By Application Domain Objects Expressed in Terms Of

Software Lifecycle Definition Set of activities and their relationships to each other to support the development of a software system Typical Lifecycle questions: Which activities should I select for the software project? What are the dependencies between activities? How should I schedule the activities?

Software Engineering Development Activities Requirements Elicitation Analysis System Design Object Design Implementation Testing

Requirements Elicitation Who: Clients and developers Goal: Define the purpose of the system. Product: Description of the system in terms of actors and use cases. Actors: End users, other computers the system interacts with, etc. Use Cases: General sequences of events b/w actors and the system for each specific function.

Analysis Who: Developers Goal: Producing a model of the system that is correct, consistent, and unambiguous. How: Transform use cases (prev.step) into an object model Product: An object model and a dynamic model

Design Who: Developers Purpose: Identifying design goals and system decomposition. Product: Subsystem decomposition and a deployment diagram.

Object Design Who: Developers Goal: Refinement of object model (bridging the gap b/w analysis model and hw/sw platform defined in system design) Product: Detailed object model w/ constraints and precise descriptions.

Implementation Who: Developers Purpose: Translate the solution domain model (object-model) into source code. Product: Source code

Testing Who: Developers Purpose: To find differences b/w the system and its models by executing the system How: Unit testing, integration testing, system testing. Product: A tested and working system.

Managing Software Development Communication Rationale Management Rationale: Justification of decisions Important when changing the system Software Configuration Management Monitoring and controlling changes in the work products. Project Management: Planning and budgeting

Reusability A good software design solves a specific problem but is general enough to address future problems (for example, changing requirements) Experts do not solve every problem from first principles They reuse solutions that have worked for them in the past Goal for the software engineer: Design the software to be reusable across application domains and designs How? Use design patterns and frameworks whenever possible

Design Patterns and Frameworks A small set of classes that provide a template solution to a recurring design problem Reusable design knowledge on a higher level than datastructures (link lists, binary trees, etc) Framework: A moderately large set of classes that collaborate to carry out a set of responsibilities in an application domain. Examples: User Interface Builder Provide architectural guidance during the design phase Provide a foundation for software components industry

Patterns are used by many people Chess Master: Openings Middle games End games Writer Tragically Flawed Hero (Macbeth, Hamlet) Romantic Novel User Manual Architect Office Building Commercial Building Private Home Software Engineer Composite Pattern: A collection of objects needs to be treated like a single object Adapter Pattern (Wrapper): Interface to an existing system Bridge Pattern: Interface to an existing system, but allow it to be extensible

Summary Software engineering is a problem solving activity Developing quality software for a complex problem within a limited time and budget while things are changing There are many ways to deal with complexity Modeling, decomposition, abstraction, hierarchy Issue models: Show the negotiation aspects System models: Show the technical aspects Task models: Show the project management aspects Use Patterns: Reduce complexity even further Many ways to do deal with change Tailor the software lifecycle to deal with changing project conditions Use a nonlinear software lifecycle to deal with changing requirements or changing technology Provide configuration management to deal with changing entities