Introduction to Software Design by A.Surasit Samaisut Copyrights 2009-2010 : All Rights Reserved.

Slides:



Advertisements
Similar presentations
Design Validation CSCI 5801: Software Engineering.
Advertisements

Ch:8 Design Concepts S.W Design should have following quality attribute: Functionality Usability Reliability Performance Supportability (extensibility,
System Integration Verification and Validation
Object-Oriented Software Development CS 3331 Fall 2009.
CS540 Software Design Lecture 1 1 Lecture 1: Introduction to Software Design Anita S. Malik Adapted from Budgen (2003) Chapters 1.
Objektorienteret Middleware Presentation 2: Distributed Systems – A brush up, and relations to Middleware, Heterogeneity & Transparency.
Basic Concepts in Component-Based Software Engineering
Component Patterns – Architecture and Applications with EJB copyright © 2001, MATHEMA AG Component Patterns Architecture and Applications with EJB JavaForum.
Software Engineering and Design Principles Chapter 1.
1 Objectives To introduces the concept of software Design. To introduce the concept of Object- Oriented Design (OOD). To Define various aspects about object.
©Silberschatz, Korth and Sudarshan1.1Database System Concepts Chapter 1: Introduction Purpose of Database Systems View of Data Data Models Data Definition.
Chapter 1 Principles of Programming and Software Engineering.
Copyright © The McGraw-Hill Companies, Inc. Permission required for reproduction or display. Design Patterns.
© 2006 Pearson Addison-Wesley. All rights reserved2-1 Chapter 2 Principles of Programming & Software Engineering.
Software Issues Derived from Dr. Fawcett’s Slides Phil Pratt-Szeliga Fall 2009.
Evaluating Architectures Quality control: rarely fun, but always necessary
20 February Detailed Design Implementation. Software Engineering Elaborated Steps Concept Requirements Architecture Design Implementation Unit test Integration.
Systems Design. Analysis involves understanding and documenting user requirements in a clear and unambiguous way. It focuses on the business side and.
Dr. Kalpakis CMSC 461, Database Management Systems Introduction.
Course Instructor: Aisha Azeem
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 16 Slide 1 User interface design.
1 An introduction to design patterns Based on material produced by John Vlissides and Douglas C. Schmidt.
Software Dependability CIS 376 Bruce R. Maxim UM-Dearborn.
Managing Software Quality
What is Software Engineering? the application of a systematic, disciplined, quantifiable approach to the development, operation, and maintenance of software”
1 Shawlands Academy Higher Computing Software Development Unit.
CPSC 372 John D. McGregor Module 3 Session 2 Architecture Analysis/Design.
Introduction to Object-oriented programming and software development Lecture 1.
Chapter 5 Design Principles II: Flexibility, Reusability, and Efficiency.
Lecture # 06 Design Principles II
SWE 316: Software Design and Architecture – Dr. Khalid Aljasser Objectives Lecture 11 : Frameworks SWE 316: Software Design and Architecture  To understand.
Chapter 5 Design Principles II: Flexibility, Reusability, and Efficiency.
An Introduction to Software Architecture
CSE 303 – Software Design and Architecture
SAMANVITHA RAMAYANAM 18 TH FEBRUARY 2010 CPE 691 LAYERED APPLICATION.
JSF Introduction Copyright © Liferay, Inc. All Rights Reserved. No material may be reproduced electronically or in print without written permission.
1 The Software Development Process  Systems analysis  Systems design  Implementation  Testing  Documentation  Evaluation  Maintenance.
1 COMPSCI 110 Operating Systems Who - Introductions How - Policies and Administrative Details Why - Objectives and Expectations What - Our Topic: Operating.
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.
Question To know that quality has improved, it would be helpful to be able to measure quality. How can we measure quality?
SE: CHAPTER 7 Writing The Program
Component Technology. Challenges Facing the Software Industry Today’s applications are large & complex – time consuming to develop, difficult and costly.
Object-Oriented Software Engineering Practical Software Development using UML and Java Chapter 1: Software and Software Engineering.
Advanced Computer Networks Topic 2: Characterization of Distributed Systems.
Chapter 5 McGraw-Hill/Irwin Copyright © 2011 by The McGraw-Hill Companies, Inc. All rights reserved.
CS551 - Lecture 5 1 CS551 Lecture 5: Quality Attributes Yugi Lee FH #555 (816)
Basic Concepts of Component- Based Software Development (CBSD) Model-Based Programming and Verification.
The Software Development Process
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.
© 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.
Evaluating Architectures. Quality Control Rarely fun, but always necessary 1.
CSE 303 – Software Design and Architecture
© 2010 John Wiley & Sons Ltd. Software Engineering Modern Approaches Eric Braude and Michael Bernstein 1.
Fall 2015CISC/CMPE320 - Prof. McLeod1 CISC/CMPE320 Lecture Videos will no longer be posted. Assignment 3 is due Sunday, the 8 th, 7pm. Today: –System Design,
1 The Software Development Process ► Systems analysis ► Systems design ► Implementation ► Testing ► Documentation ► Evaluation ► Maintenance.
1. Overview of Software design 1.1 Process of problem-solving and planning for a software solution 1.1 Process of problem-solving and planning for a software.
Testing Overview Software Reliability Techniques Testing Concepts CEN 4010 Class 24 – 11/17.
Chapter 10 Software quality. This chapter discusses n Some important properties we want our system to have, specifically correctness and maintainability.
Why is Design so Difficult? Analysis: Focuses on the application domain Design: Focuses on the solution domain –The solution domain is changing very rapidly.
INTRO. To I.T Razan N. AlShihabi
Principles of Programming and Software Engineering
Software Quality Engineering
Lecture 2 of Computer Science II
Chapter 13 Quality Management
Software Engineering with Reusable Components
An Introduction to Software Architecture
Introduction To Distributed Systems
Oriented Design and Abstract Data Type
Presentation transcript:

Introduction to Software Design by A.Surasit Samaisut Copyrights : All Rights Reserved

Page  2 What is “Software” “ A generic term for those components of a computer system that are intangible rather than physical. It is most commonly used to refer to the programs executed by a computer system as distinct from the physical hardware of that computer system, and to encompass both symbolic and executable forms for such programs. A distinction can be drawn between systems software, which is an essential accompaniment to the hardware in order to provide an effective overall computer system (and is therefore normally supplied by the manufacturer), and applications software specific to the particular role performed by the computer within a given organization ”

Page  3 What is Software Design?  Is a process of problem-solving and planning for a software solution. Design is a problem-solving process  Different from most scientific problem-solving such as finding the distance between two points.  It is a wicked problem: a problem with no definitive solution  Many possible solutions.  May not have a single preferred solution.

Page  4 What is Software Design?  After the purpose and specifications of software are determined, software developers will design or employ designers to develop a plan for solution.  It includes low-level component and algorithm implementation issues as well as the architectural view.

Page  5 7 Goals of Software Design  Design faces many challenges to produce a good product, but what do we mean by good?  Correctness – does what it should  Robustness – tolerant of misuse, e.g. faulty data  Flexibility – adaptable to shifting requirements  Reusability – cut production costs for code  Efficiency – good used of processor and memory  Reliability – error free  Usability – user friendly interface

Page  6 Goal of Software Design: Correctness  A primary goal, incorrect software many look good, but will be poor or worse in term of correctness.  Software is correct, if it satisfies its requirements  Requirements are divided into functional (what it does) and non-functional (how it does it, etc.)  Sufficiency and Completeness

Page  7 Goal of Software Design: Robustness  A design or implementation is robust if it is able to handle various and unusual conditions without catastrophic failure such as bad data, user error, programmer error, and environmental conditions.  Robustness achieved in many ways: Data abstraction/encapsulation; simple interfaces; data corruption protected Initialize variables Qualify all inputs; precondition checking (e.g. range check) Qualify all formal parameters to a method Qualify invariants (e.g. non-null pointer, not end of file) Qualify postconditions

Page  8 Goal of Software Design: Flexibility  Requirements of an application may change in many ways during or after the project implementation  Aspects of flexibility Obtaining more or less of what’s already present –e.g. handle more kinds of account Adding new functionality –e.g. add internet banking to teller functionality Change functionality –e.g. allow withdrawal to create an overdraft

Page  9 Goal of Software Design: Flexibility  Separation of interface and implementation  Flexibility achieved in many ways: Encapsulation (representation hiding) Different types of the same base category by means of abstract classes Extend functionality by new class methods or with an abstract class & several derived classes.

Page  10 Goal of Software Design: Reusability  The trend in software is to reuse parts among applications JAVA API – a large, extensive body of widely reused classes Programming library  Types of reusability Object code (or equivalent) –Ex: sharing dll’s between word processor and spreadsheet Classes – in source code form –Ex: Customer class used by several applications Assemblies of Related Classes –Ex: the java.awt package Design patterns

Page  11 Goal of Software Design: Reusability  Aim: cut cost of code production over one or more projects.  Types of reusability Object code (or equivalent) –Ex: sharing dll’s between word processor and spreadsheet Classes – in source code form –Ex: Customer class used by several applications Assemblies of Related Classes –Ex: the java.awt package, software frameworks Design patterns

Page  12 Goal of Software Design: Reusability  The trend in software is to reuse parts among applications JAVA API – a large, extensive body of widely reused classes Programming library  Promoting source code reuse Use modularity –Use classes and interfaces which are independent and as general or specific as necessary Use Classes –Describe class with good name & documentation –Minimize dependency between classes –Maximally abstract and general or precisely matched to real objects and their function

Page  13 Goal of Software Design: Reusability  Write good methods Cleary explain the algorithm with comments where necessary Use good names for a global use and easy to understand Specify pre + post conditions+ invariants Don’t couple closely to class

Page  14 Goal of Software Design: Efficiency  Aim: make greatest use of the processing power, memory size, network speed, etc.  Efficiency refers to the use of available machine cycles and memory  Create designs and implementations that are as fast as required, and which make use of no more than available memory  Efficiency often against with other design goal

Page  15 Goal of Software Design: Reliability  An application is reliable if it is relatively fault free  Clean designs make it easier for developers to produce error-free applications  On architectural level can use hardware support, backup servers, multiple processors, hot swap, etc.  On code level achieved by software quality assurance methods, testing, walkthroughs, formal methods etc.

Page  16 Goal of Software Design: Usability  An application has high usability if users find it easy to use  Usability is attained through human-interface design

Page  17 Goals of Software Design Checklist  How can we tell from the code that all required functionality has been handled? correctness  If the user makes a mistake, does the system crash or perform unpredictably robustness  Is the system hard to modify, add or remove parts? flexibility

Page  18 Goals of Software Design Checklist  Does the system execute fast enough? speed efficiency  Does the system satisfy memory requirements? space efficiency  Are the class usable for other applications? reusability

Page  19 Basic Design Considerations for Software Design  There are many aspects to consider in the design of a piece of software. The importance of each should reflect the goals the software is trying to achieve. Some of these aspects are; Compatibility - The software is able to operate with other products that are designed for interoperability with another product. For example, a piece of software may be backward-compatible with an older version of itself. Extensibility - New capabilities can be added to the software without major changes to the underlying architecture. Maintainability - The software can be restored to a specified condition within a specified period of time. For example, antivirus software may include the ability to periodically receive virus definition updates in order to maintain the software's effectiveness.

Page  20 Basic Design Considerations for Software Design Modularity - the resulting software comprises well defined, independent components. That leads to better maintainability. The components could be then implemented and tested in isolation before being integrated to form a desired software system. This allows division of work in a software development project. Reliability - The software is able to perform a required function under stated conditions for a specified period of time. Reusability - the modular components designed should capture the essence of the functionality expected out of them and no more or less. This single- minded purpose renders the components reusable wherever there are similar needs in other designs.

Page  21 Basic Design Considerations for Software Design Robustness - The software is able to operate under stress or tolerate unpredictable or invalid input. For example, it can be designed with a resilience to low memory conditions. Security - The software is able to withstand hostile acts and influences. Usability - The software user interface must be intuitive (and often aesthetically pleasing) to its target user/audience. Default values for the parameters must be chosen so that they are a good choice for the majority of the users. In many cases, online help should be included and also carefully designed.