Introduction to Software Design

advertisement
Lecture 1: Introduction
to Software Design
Anita S. Malik
anitamalik@umt.edu.pk
Adapted from Budgen (2003) Chapters 1 and 2
CS540 Software Design
Lecture 1
1
What is Design?



Role of design in every day life
Good design and poor design
Design and fabrication of final product
Good design but poor fabrication
 Poor design but good fabrication


Safety concerns and reliability issues
CS540 Software Design
Lecture 1
2
The Garden Shed Case Study
Ref: Chapter 1 Budgen (2003)




Input to designer: requirements specifications,
constraints and domain knowledge
Time factor: easy to fabricate, less time sawing
Cost factor: keep the overall cost of sawing timber and
fabricating parts low
How is this achieved: reuse and standardization
CS540 Software Design
Lecture 1
3
Garden Shed Case Study – Model 1

CS540 Software Design
Lecture 1
4
Garden Shed Case Study – Model 2
CS540 Software Design
Lecture 1
5
Design as Problem Solving Process




Purpose of design is to produce a solution to a
problem
Design is not an analytical process
Design process requires evaluating different
options and trade-offs such as size, speed, ease
of use, cost etc.
Design methods, patterns, representations and
abstraction play an important part in the design
process
CS540 Software Design
Lecture 1
6
Design as a ‘Wicked’ Problem

Chapter 1 of Budgen (2003) discusses ten
distinguishing properties of design as a ‘wicked
problems’ of which the more relevant to
software design are:
Not analytical
 Can have a number of acceptable solutions (more of
an art than science)
 Providing design solutions for one aspect of a
problem may put constraints on another aspect of
the problem or create a new problem

CS540 Software Design
Lecture 1
7
Design Constraints





Constraints limit the overall solution space by
limiting the choices a designer has
Problem-specific constraints
Solution-specific constraints
Influence of constraints needs to be considered
through out the design phase
Design reviews is the best way to make sure
constraints are considered through out the
design process
CS540 Software Design
Lecture 1
8
Design Quality
What is quality? Generally construction quality of a
product comes in mind….
 Quality of the final product among other things
depends on good design
 If the product is badly assembled, no matter how good
the design is the final product will be considered bad
quality
 If the design is poor, no amount of good
craftsmanship will be able to disguise its fundamental
failings.
 We can only measure the ultimate success of a design
through its implementation
Lecture 1
9
CS540 Software Design

Design Quality - Summary

A Good Design should be:
Well structured
 Simple
 Efficient
 Adequate
 Flexible
 Practical
 Implementable

CS540 Software Design
Lecture 1
10
Designing in a Team




How to split the design tasks?
How to integrate the individual contributions?
Team size (10 -12 is probably an upper limit for
productive working)
Varying degree of domain knowledge in the
design team
CS540 Software Design
Lecture 1
11
Good Designer Skills




CS540 Software Design
Communication Skills
Domain Knowledge
Technical Skills
Managerial Skills
Lecture 1
12
Software Design




Software design is a phase in the software life cycle
Input: requirements specification, constraints, designer’s
decisions
Output: detailed specifications
Design objectives:





Reliability
Efficiency
Maintainability
Usability
Simplicity
CS540 Software Design
Lecture 1
13
Inherent Problems of Software
Production

Software has some inherent problems
Complexity
 Conformity
 Changeability
 Invisibility

CS540 Software Design
Lecture 1
14
Software Complexity
Software is ‘inherently’ complex because of a number
of reasons, for example, it goes through a number of
states during execution, it has a number of
interconnected components etc
 No one person may know a large scale software
product in its entirety
 Management is difficult
 Maintenance is a nightmare (documentation, too) –
difficult to modify

CS540 Software Design
Lecture 1
15
Software Conformity


Type 1 (Existing Business): The software has to conform to the
existing business, the business can not conform to software
Type 2 (New Business): In case of new business, there is a
misconception that software is the most conformable
component
CS540 Software Design
Lecture 1
16
Software Changeability

Pressure to change
Reality
 If software is useful its functionality may be
extended
 Software has a long lifetime (~15 yrs) compared
to hardware (~4 yrs)

CS540 Software Design
Lecture 1
17
Software Invisibility




Software is invisible and unvisualizable
Complete views are incomprehensible
Partial views are misleading
However, all views can be helpful
CS540 Software Design
Lecture 1
18
Other Problems




Delivered late
Over budget
Faults
Do not satisfy user needs
CS540 Software Design
Lecture 1
19
Software Design Phase in Software
Engineering



Software Engineering is an attempt to solve the
problems that we have just reviewed
Software Design is a phase in the software life
cycle
It is easier to correct a fault at or before the
design phase because the design is ‘on-paper’.
Once the implementation phase begins any
change is very costly.
CS540 Software Design
Lecture 1
20
Download