+ All Categories
Home > Documents > Introduction to Software Design by A.Surasit Samaisut Copyrights 2009-2010 : All Rights Reserved.

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

Date post: 17-Jan-2016
Category:
Upload: dorcas-woods
View: 217 times
Download: 0 times
Share this document with a friend
Popular Tags:
21
Introduction to Software Design by A.Surasit Samaisut Copyrights 2009-2010 : All Rights Reserved
Transcript
Page 1: Introduction to Software Design by A.Surasit Samaisut Copyrights 2009-2010 : All Rights Reserved.

Introduction to Software Designby A.Surasit Samaisut

Copyrights 2009-2010 : All Rights Reserved

Page 2: Introduction to Software Design by A.Surasit Samaisut Copyrights 2009-2010 : 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: Introduction to Software Design by A.Surasit Samaisut Copyrights 2009-2010 : All Rights Reserved.

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: Introduction to Software Design by A.Surasit Samaisut Copyrights 2009-2010 : All Rights Reserved.

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: Introduction to Software Design by A.Surasit Samaisut Copyrights 2009-2010 : All Rights Reserved.

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: Introduction to Software Design by A.Surasit Samaisut Copyrights 2009-2010 : All Rights Reserved.

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: Introduction to Software Design by A.Surasit Samaisut Copyrights 2009-2010 : All Rights Reserved.

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: Introduction to Software Design by A.Surasit Samaisut Copyrights 2009-2010 : All Rights Reserved.

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: Introduction to Software Design by A.Surasit Samaisut Copyrights 2009-2010 : All Rights Reserved.

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: Introduction to Software Design by A.Surasit Samaisut Copyrights 2009-2010 : All Rights Reserved.

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: Introduction to Software Design by A.Surasit Samaisut Copyrights 2009-2010 : All Rights Reserved.

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: Introduction to Software Design by A.Surasit Samaisut Copyrights 2009-2010 : All Rights Reserved.

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: Introduction to Software Design by A.Surasit Samaisut Copyrights 2009-2010 : All Rights Reserved.

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: Introduction to Software Design by A.Surasit Samaisut Copyrights 2009-2010 : All Rights Reserved.

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: Introduction to Software Design by A.Surasit Samaisut Copyrights 2009-2010 : All Rights Reserved.

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: Introduction to Software Design by A.Surasit Samaisut Copyrights 2009-2010 : All Rights Reserved.

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: Introduction to Software Design by A.Surasit Samaisut Copyrights 2009-2010 : All Rights Reserved.

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: Introduction to Software Design by A.Surasit Samaisut Copyrights 2009-2010 : All Rights Reserved.

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: Introduction to Software Design by A.Surasit Samaisut Copyrights 2009-2010 : All Rights Reserved.

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: Introduction to Software Design by A.Surasit Samaisut Copyrights 2009-2010 : All Rights Reserved.

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: Introduction to Software Design by A.Surasit Samaisut Copyrights 2009-2010 : All Rights Reserved.

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.


Recommended