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