Eng. Mohammed Timraz Electronics & Communication Engineer University of Palestine Faculty of Engineering and Urban planning Software Engineering Department.

Slides:



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

Software Modeling SWE5441 Lecture 3 Eng. Mohammed Timraz
Information Systems Analysis and Design
Prentice Hall, Database Systems Week 1 Introduction By Zekrullah Popal.
Chapter 6: Design of Expert Systems
©Ian Sommerville 2006Software Engineering, 8th edition. Chapter 8 Slide 1 System models.
Modified from Sommerville’s originalsSoftware Engineering, 7th edition. Chapter 8 Slide 1 System models.
Analysis Stage (Phase I) The goal: understanding the customer's requirements for a software system. n involves technical staff working with customers n.
Chapter 1 Software Development. Copyright © 2005 Pearson Addison-Wesley. All rights reserved. 1-2 Chapter Objectives Discuss the goals of software development.
Project Life Cycle Jon Ivins DMU. Introduction n Projects consist of many separate components n Constraints include: time, costs, staff, equipment n Assets.
Modified from Sommerville’s originalsSoftware Engineering, 7th edition. Chapter 8 Slide 1 System models.
1 Lecture 5 Introduction to Software Engineering Overview  What is Software Engineering  Software Engineering Issues  Waterfall Model  Waterfall Model.
9 1 Chapter 9 Database Design Database Systems: Design, Implementation, and Management, Seventh Edition, Rob and Coronel.
© 2006 Pearson Addison-Wesley. All rights reserved2-1 Chapter 2 Principles of Programming & Software Engineering.
CSC230 Software Design (Engineering)
Introduction To System Analysis and design
Systems Analysis – Analyzing Requirements.  Analyzing requirement stage identifies user information needs and new systems requirements  IS dev team.
1 Data Modeling : ER Model Lecture Why We Model  We build models of complex systems because we cannot comprehend any such system in its entirety.
Copyright 2002 Prentice-Hall, Inc. Chapter 1 The Systems Development Environment 1.1 Modern Systems Analysis and Design.
©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 7 Slide 1 System models l Abstract descriptions of systems whose requirements are being.
The Structured Specification. Why a Structured Specification? System analyst communicates the user requirements to the designer with a document called.
Chapter 4 System Models A description of the various models that can be used to specify software systems.
System models Abstract descriptions of systems whose requirements are being analysed Abstract descriptions of systems whose requirements are being analysed.
Topics Covered: Software requirement specification(SRS) Software requirement specification(SRS) Authors of SRS Authors of SRS Need of SRS Need of SRS.
SWE 316: Software Design and Architecture – Dr. Khalid Aljasser Objectives Lecture 11 : Frameworks SWE 316: Software Design and Architecture  To understand.
© 2007 Pearson Education, Inc. Publishing as Pearson Addison-Wesley 1 A Discipline of Software Design.
ITEC224 Database Programming
CSE 303 – Software Design and Architecture
©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 6 Slide 1 Requirements Engineering Processes l Processes used to discover, analyse and.
Instructor: Tasneem Darwish1 University of Palestine Faculty of Applied Engineering and Urban Planning Software Engineering Department Object Oriented.
CS 360 Lecture 6.  A model is a simplification of reality  We build models to better understand the system being developed.  We build models of complex.
Software Engineering Management Lecture 1 The Software Process.
Object-Oriented Software Engineering Practical Software Development using UML and Java Chapter 1: Software and Software Engineering.
CSE 219 Computer Science III Program Design Principles.
Chapter 7 System models.
Lecture 7: Requirements Engineering
1 Systems Analysis and Design in a Changing World, Thursday, January 18, 2007.
Object-Oriented Software Engineering Practical Software Development using UML and Java Chapter 1: Software and Software Engineering.
System models l Abstract descriptions of systems whose requirements are being analysed.
CS 4310: Software Engineering Lecture 4 System Modeling The Analysis Stage.
Modified by Juan M. Gomez Software Engineering, 6th edition. Chapter 7 Slide 1 Chapter 7 System Models.
1 Introduction to Software Engineering Lecture 1.
Chapter 10 Analysis and Design Discipline. 2 Purpose The purpose is to translate the requirements into a specification that describes how to implement.
1 Software Development Software Engineering is the study of the techniques and theory that support the development of high-quality software The focus is.
Chapter 8 Object Design Reuse and Patterns. Object Design Object design is the process of adding details to the requirements analysis and making implementation.
Historical Aspects Origin of software engineering –NATO study group coined the term in 1967 Software crisis –Low quality, schedule delay, and cost overrun.
CS Data Structures I Chapter 2 Principles of Programming & Software Engineering.
Systems Analysis and Design in a Changing World, Fourth Edition
ECE450 - Software Engineering II1 ECE450 – Software Engineering II Today: Introduction to Software Architecture.
Cmpe 589 Spring 2006 Lecture 2. Software Engineering Definition –A strategy for producing high quality software.
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.
Systems Development Life Cycle
© 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.
Architecture View Models A model is a complete, simplified description of a system from a particular perspective or viewpoint. There is no single view.
CSC 480 Software Engineering Test Planning. Test Cases and Test Plans A test case is an explicit set of instructions designed to detect a particular class.
Topic 4 - Database Design Unit 1 – Database Analysis and Design Advanced Higher Information Systems St Kentigern’s Academy.
CS223: Software Engineering Lecture 13: Software Architecture.
Software Development Process CS 360 Lecture 3. Software Process The software process is a structured set of activities required to develop a software.
1 SWE Introduction to Software Engineering Lecture 14 – System Modeling.
Software Design Requirements Design Code-Implementation Test Case Design Builds Testing Rel. Maintenance Reqs. may be from customer or “home invented”
From Use Cases to Implementation 1. Structural and Behavioral Aspects of Collaborations  Two aspects of Collaborations Structural – specifies the static.
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.
INTRODUCTION CSE 470 : Software Engineering. Goals of Software Engineering To produce software that is absolutely correct. To produce software with minimum.
MANAGEMENT INFORMATION SYSTEM
The Software Lifecycle Stuart Faulk. Definition Software Life Cycle: evolution of a software development effort from concept to retirement Life Cycle.
Software Engineering Lecture 4 System Modeling The Analysis Stage.
The Development Process of Web Applications
From Use Cases to Implementation
Presentation transcript:

Eng. Mohammed Timraz Electronics & Communication Engineer University of Palestine Faculty of Engineering and Urban planning Software Engineering Department Software Modeling SWE5441 Lecture 2

Introduction Software Engineer Software Design Software Design Activities

Hacking vs. Software Engineering Hacking  Writing code without thought or plan.  Hacking is often marked by unbridled optimism (without clearly control).  Writing lots of code before testing any of it  Keeping all the details in your head, assuming you’ll remember forever.  Assuming that bugs will be nonexistent, or else easy to find and fix.

Software engineering is not hacking  Think first, then code.  You need tools for thinking, such as models and notations for expressing design problems.  Engineers are pessimists  Write a little bit at a time, testing as you go.  Document the assumptions that the code depends on.  Defend your code against stupidity, especially your own. Hacking vs. Software Engineering

A Larger View of Good Software  Correct Gets the right answers.  Economical Runs fast, uses minimal resources, doesn’t cost much to produce.  Dependable Safe from bug.  Maintainable Easy to understand and ready for change.  Usable Has an effective user interface.  Secure Safe from malicious attacks. Note: all these properties matter in practice sometimes supporting each other, sometimes in conflict

What Makes “Good” Software Easy to understand,  Simple, short methods.  Well chosen, descriptive names.  Clear, accurate documentation.  Indentation. Ready for change,  No redundant: complex code or important design decisions appear in only one place (Use common tools).  “Decoupled”: changeable parts are isolated from each other. (Use separable frameworks). safe from bugs,  Static typing helps find bugs before you run.  Assertions and runtime checking catch bugs quickly at runtime.  Testable in small parts.  No hidden assumptions waiting to trap you or another programmer later.

Software Design Activities  Architectural design Structure system into components Define the interfaces between components  Detailed design of each component Define internal logic Define internal data structures  Data design Define file structures Logical database design

Problem

Component 1 Component 3 Component 4 Component 2 Component 5 Classes Objects Attributes Classes Objects Attributes Classes Objects Attributes Classes Objects Attributes Classes Objects Attributes

Software Design

Important “End-Results” of Design “Well-Designed” software results in solution that is: Easy to learn. Easy to use. Easy to code. Easy to maintain. Affordable (economical). Dependable. Valuable (increase productivity, life saving, etc. – meets customer requirements ) Which ones do the users care? Any other property that you may want to add --- easy to integrate or test.

Design of Software Product Designers are interested not only in the code, but the complete product which includes:  Documentation and User Instructions.  Code (functionality, data, security, reliability, etc.).  Interfaces (including user).  Packaging Scheme.  Installation.  Service (including maintenance). This seems like a lot of topics that software designers must cover !! So, there are specializations within the field of software design.

 Software “Product” Design is the activity of specifying the nature and composition of software products that satisfy the clients’ needs and desires subject to certain set of constraints Design as an “Activity” (verb)

Understanding the Problem Design occurs “after” requirements (which identifies the “problems”) –“after” is fuzzy time boundary – there is no clean boundary. Think of Design as both: a) understanding & b) solving “problems” 1.Customer (user) identification of problem (requirements) sometimes borders on solution --- but is really a constraint. Thus we should thoroughly “understand” problems. 2.For each problem there may be several solutions or designs that apply. 3. Use some “time-honored” problem solving techniques Modifying the problem slightly to a) facilitate easier/cheaper solution. b) Match previously solved problem. Trial and error (e.g. iterative prototyping is the fancy term). Group brainstorming (I do not recommend this for design).

Two Basic Design Techniques  Abstraction Focusing on the “relevant” properties of an entity by suppressing and ignoring some other properties and the details trick is deciding on the “relevant.”  Modeling Constructing a model “entity” to represent the real entity of interest through: o Associating: parts of the model to the parts of the real entity o Associating: the relationships among parts of the model to the relationships among parts of the entity of interest.

2 aspects of Abstraction 1) Problem/Solution “Simplification”: concentrating on only the key property (For example): In drawing a figure, we choose to first focus on shape of the figure (e.g. circle, oval, rectangle, diamond, etc.) before worrying about the color, the line width, solid/dotted line, etc. 2) Problem/Solution “Refinement: simplify first and then enhance the solution with more details  Top-down refinement (Decomposition): partition the problem into several key components first and then solve the details of each component  Bottom-up aggregation : solving pieces of a complex problem and then aggregate the solutions Note: Bottom-up solution usually requires a top-down framework of key components.

Modeling  Modeling is based on problem/solution “simplification” part of Abstraction. –Decide on the key components (abstraction) of the entity of interest. –Decide on the key relationships that exist among the components of the entity of interest. –Construct the components of the model to represent the components of the entity of interest. –Construct the relationships among the components of the model to reflect the relationships among the components of the original entity of interest.  In doing so: –There may be parts in the model that do not match the original entity –There may be relationships in the model that do not match that in the original entity Note: If everything matched, then the model would just be a “copy,” not an abstraction of the original entity.

Modeling: “components” and “relations” “Thing” that Needs modeling Part C Part D Part B Part A Part F modeling

Another Definition of Design (from K. Lano)  Design is the activity of (i) “Constructing” components. (ii) “Organizing” their interactions in order to achieve the system that will satisfy the requirements. Components: o Identifying the components. o Specifying their functionalities. o Specifying any constraints (performance, security, etc.) Interactions: Identify and Specify Component relations (inheritance, aggregation, etc.) Identify and Specify Component dependencies (interfaces, joint responsibilities, sequences of interactions, etc.)

Advantages of modeling  Allows us to understand the problem or requirements better (model of the problem).  Allows us to create an “initial rough design”. “Model” of problem develops into “Model” of solution.  Allows us to investigate and study both the problem and the solution in more detail.  Allows us to have a documentation of the problem/solution descriptions (models).