Académique Documents
Professionnel Documents
Culture Documents
Page 1
ENGR2720U
Course Objective
To become familiar with the design of software. This framework encompasses A process A set of methods (notation) An array of tools This framework is called Software Engineering.
Page 2
ENGR2720U
Page 3
ENGR2720U
Notation
Process
Tool
Page 4
ENGR2720U
You can learn a Notation, but if you dont know how to use it (process), you will probably fail. You may have a great process, but if you cannot communicate the process (notation), you will probably fail. If you cannot document the artifacts of your work (tool), you will probably fail.
Page 5
ENGR2720U
Software is a vehicle for delivering a product Supports or directly provides system functionality Controls other programs (e.g., an operating system) Effects communications (e.g., networking software) Helps build other software (e.g., software tools)
Page 6
ENGR2720U
Software Challenges
The days of the lone programmer are gone. Modern software is developed by teams of software specialists. Yet, the software developer's concerns have remained the same. Why does software take so long to complete? Why does it cost so much to produce? Why can't all errors be found and removed before
software is delivered to the customer?
A clear answer is not readily available what are your views on this?
Page 7
ENGR2720U
What is Software?
Software is a set of items or objects that form a configuration that includes programs documents data ...
Page 8
ENGR2720U
Software doesnt wear out but it deteriorates!: The failure rate in hardware is like a cup shaped
curve, high in the beginning and end of its lifetime. Software failure rate is ideally L shaped.
Page 9
ENGR2720U
Page 10
ENGR2720U
Page 11
ENGR2720U
Software Applications
System software:
Application software:
Standalone programs that solve a specific business need. number crunching algorithms. Resides within a product and is meant to implement control features
and functions for end users.
Engineering/scientific software:
Embedded software:
Product-line software:
Provides a specific capability for use by many different customers. Strongly distributed and highly independent. Utilize non-numeric algorithms.
Page 12
ENGR2720U
SoftwareNew Categories
Ubiquitous computingwireless networks Netsourcingthe Web as a computing engine Open sourcefree source code open to the computing community (a blessing, but also a potential curse!) Also Data mining Grid computing Cognitive machines Software for nanotechnologies
Page 13
ENGR2720U
Legacy Software
Page 14
ENGR2720U
Software Myths
Affect managers, customers (and other nontechnical stakeholders) and practitioners Are believable because they often have elements of truth, but Invariably lead to bad decisions, therefore Insist on reality as you navigate your way through
software engineering
Page 15
ENGR2720U
Management Myths
Myth: We already have a book thats full of standards and procedures for building software. Wont that provide my people with everything they need to know? Reality: Is it used? Is it complete? Is it streamlined to improve time to delivery and still maintain good quality? More likely Not Myth: Mongolian horde Look at this one in the text book. Have you heard of it
before?
Page 16
ENGR2720U
Customer Myths
Myth: A general statement of objectives is sufficient to begin writing programs we can fill in the details later Reality: An ambiguous statement of objectives is a recipe for disaster. Myth: Is software flexible?
Page 17
ENGR2720U
Practitioners Myth
Myth: The only deliverable work product for a successful project is the working program Reality: Documentation provides a foundation for successful engineering and guidance for software support. Is Software Engineering about creating documents?
Page 18
ENGR2720U
Page 19
ENGR2720U
Objectives
To explain what design is and how various types of design deal with different aspects of a product To present design as problem solving and outline the roles of abstraction and modeling in design To place design in the software life cycle To survey software engineering design methods
Page 20
ENGR2720U
Topics
Software products and software design Abstraction and modeling Varieties of design Software design in the life cycle Software engineering design methods
Page 21
ENGR2720U
Importance of Software Design We live in a designed world. Design is economically important and effects our quality of life. Software is becoming ubiquitous. The quality of software design has important consequences that software designers should be aware of and take seriously.
Page 22
ENGR2720U
Software Products
A software product is an entity comprised of one or more programs, data, and supporting materials and services that satisfies client needs and desires either as an independent artifact or as essential ingredient in some other artifact.
Page 23
ENGR2720U
Page 24
ENGR2720U
Design as Problem Solving An especially fruitful way to think about design is as problem solving. Advantages Suggests partitioning information between problem
and solution Emphasizes that there may be more than one good solution (design) Suggests techniques such as changing the problem, trial and error, brainstorming, etc.
Page 25
ENGR2720U
Abstraction
Page 26
ENGR2720U
Importance of Abstraction
Page 27
ENGR2720U
Modeling
A model represents a target by having model parts corresponding to target parts, with relationships between model parts corresponding to relationships between target parts.
Target Model
Page 28
ENGR2720U
Modeling in Design
Modeling is used for the following purposes: Problem understanding Design creation Design investigation Documentation Modeling work because models abstract details of the target. Models can fail if important and relevant details are left out.
Page 29
ENGR2720U
Static model examples include class and object models. Dynamic model examples include state diagrams and sequence diagrams.
Page 30
ENGR2720U
and aesthetics, function and usability, manufacturability and manageability. Industrial designers, (building) architects, interior
designers, graphic designers, etc. Engineering designers are concerned with
ENGR2720U
Requires skills in user interface and interaction design, communications, industrial design, and marketing
Page 32
ENGR2720U
Requires skills in programming, algorithms, data structures, software design principles, practices, processes, techniques, architectures, and patterns
Page 33
ENGR2720U
Requirements Specification
Design
Implementation
Testing
The waterfall model captures the logical, but not the temporal, relationships between software development activities.
Maintenance
Page 34
ENGR2720U
Requirements Specification
Product Design
Design
Engineering Design
Implementation
Testing
Maintenance
Page 35
ENGR2720U
Traditional way to make the distinction between requirements and design activities Not adequate because Many how specifications turn out to be design
decisions Many what specifications turn out to be client or customer needs or desires
Distinguish requirements from design based on problem solving: requirements activity formulates a problem solved in design
Page 36
ENGR2720U
Product Design
Design Interactions
Write Code
Solution: Code
Page 37
ENGR2720U
A software design method is an orderly procedure for generating a precise and complete software design solution that meets clients needs and constraints.
Page 38
ENGR2720U
Design ProcessA collection of related tasks that transforms a set of inputs into a set of outputs Design NotationsA symbolic representational system Design HeuristicsRules providing guidance, but no guarantee, for achieving some end Design methods also use design principles stating characteristics of design that make them better or worse.
Page 39
ENGR2720U
1971 Niklaus Wirth introduces stepwise refinement. 1974 Stevens, Myers, Constantine introduce structured design. Late 1970s to early 1980s Structured analysis and design methods are dominant. Late 1980s Object-oriented analysis and design methods rise to prominence. 1995 UML 0.8 is released. 2004 UML 2.0 is released.
Page 40
ENGR2720U
I will use a number of activities in class that: The first of these is an introduction to the formation of teams. The first activity is in the learning modules Activities
section.
Steps: Create a group of 4 persons. Sign your group up in WebCT. Do the activity Submit the deliverables
Page 41
ENGR2720U
Summary
Software design is important. Software design is best thought of as problem solving. Abstraction is a fundamental design technique. Modeling (which relies on abstraction) is a basic design tool. Software design comprises both product and engineering design. Product design occurs mainly in the requirements specification phase; engineering design mainly in the design and implementation phases. OO analysis and design methods are now dominant.
Page 42