acknowledgments: introduction to software engineering...
TRANSCRIPT
![Page 1: Acknowledgments: Introduction to Software Engineering ...data.science.uoit.ca/wp-content/uploads/2016/01/2040_1_Intro.pdfDesign Heuristics—Rules providing guidance, ... Design methods](https://reader034.vdocuments.us/reader034/viewer/2022051811/601c263efd942e5b932d3261/html5/thumbnails/1.jpg)
1Software Design and Analysis CSCI 2040U
Acknowledgments: Introduction to Software
Engineering Design: Processes, Principles and Patterns
with UML2 - Christopher Fox
![Page 2: Acknowledgments: Introduction to Software Engineering ...data.science.uoit.ca/wp-content/uploads/2016/01/2040_1_Intro.pdfDesign Heuristics—Rules providing guidance, ... Design methods](https://reader034.vdocuments.us/reader034/viewer/2022051811/601c263efd942e5b932d3261/html5/thumbnails/2.jpg)
http://data.science.uoit.ca
-> Home
-> Teaching
2Software Design and Analysis CSCI 2040U
![Page 3: Acknowledgments: Introduction to Software Engineering ...data.science.uoit.ca/wp-content/uploads/2016/01/2040_1_Intro.pdfDesign Heuristics—Rules providing guidance, ... Design methods](https://reader034.vdocuments.us/reader034/viewer/2022051811/601c263efd942e5b932d3261/html5/thumbnails/3.jpg)
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
3Software Design and Analysis CSCI 2040U
![Page 4: Acknowledgments: Introduction to Software Engineering ...data.science.uoit.ca/wp-content/uploads/2016/01/2040_1_Intro.pdfDesign Heuristics—Rules providing guidance, ... Design methods](https://reader034.vdocuments.us/reader034/viewer/2022051811/601c263efd942e5b932d3261/html5/thumbnails/4.jpg)
Software products and software design Abstraction and modeling Varieties of design Software design in the life cycle Software engineering design methods
4Software Design and Analysis CSCI 2040U
![Page 5: Acknowledgments: Introduction to Software Engineering ...data.science.uoit.ca/wp-content/uploads/2016/01/2040_1_Intro.pdfDesign Heuristics—Rules providing guidance, ... Design methods](https://reader034.vdocuments.us/reader034/viewer/2022051811/601c263efd942e5b932d3261/html5/thumbnails/5.jpg)
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.
5Software Design and Analysis CSCI 2040U
![Page 6: Acknowledgments: Introduction to Software Engineering ...data.science.uoit.ca/wp-content/uploads/2016/01/2040_1_Intro.pdfDesign Heuristics—Rules providing guidance, ... Design methods](https://reader034.vdocuments.us/reader034/viewer/2022051811/601c263efd942e5b932d3261/html5/thumbnails/6.jpg)
6
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 an essential
ingredient in some other artifact.
Software Design and Analysis CSCI 2040U
![Page 7: Acknowledgments: Introduction to Software Engineering ...data.science.uoit.ca/wp-content/uploads/2016/01/2040_1_Intro.pdfDesign Heuristics—Rules providing guidance, ... Design methods](https://reader034.vdocuments.us/reader034/viewer/2022051811/601c263efd942e5b932d3261/html5/thumbnails/7.jpg)
Software designers do what designers in other disciplines do, except they do it for software products.
7
Software design is the activity of specifying the composition of software products that satisfy client needs and
desire, subject to constraints.
Software Design and Analysis CSCI 2040U
![Page 8: Acknowledgments: Introduction to Software Engineering ...data.science.uoit.ca/wp-content/uploads/2016/01/2040_1_Intro.pdfDesign Heuristics—Rules providing guidance, ... Design methods](https://reader034.vdocuments.us/reader034/viewer/2022051811/601c263efd942e5b932d3261/html5/thumbnails/8.jpg)
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.
8Software Design and Analysis CSCI 2040U
![Page 9: Acknowledgments: Introduction to Software Engineering ...data.science.uoit.ca/wp-content/uploads/2016/01/2040_1_Intro.pdfDesign Heuristics—Rules providing guidance, ... Design methods](https://reader034.vdocuments.us/reader034/viewer/2022051811/601c263efd942e5b932d3261/html5/thumbnails/9.jpg)
Abstraction is an important problem-solving technique, especially in software design.
9
Abstraction is suppressing or ignoring some properties of objects, events, or
situations in favor of others.
Software Design and Analysis CSCI 2040U
![Page 10: Acknowledgments: Introduction to Software Engineering ...data.science.uoit.ca/wp-content/uploads/2016/01/2040_1_Intro.pdfDesign Heuristics—Rules providing guidance, ... Design methods](https://reader034.vdocuments.us/reader034/viewer/2022051811/601c263efd942e5b932d3261/html5/thumbnails/10.jpg)
Problem simplification Abstracting allows us to focus on the most
important aspects of a problem in (partially) solving it.
Structuring problem solving Top-down strategy: Solve an abstract version of the
problem, then add details (refinement)
Bottom-up strategy: Solve parts of a problem and connect them for a complete solution
10Software Design and Analysis CSCI 2040U
![Page 11: Acknowledgments: Introduction to Software Engineering ...data.science.uoit.ca/wp-content/uploads/2016/01/2040_1_Intro.pdfDesign Heuristics—Rules providing guidance, ... Design methods](https://reader034.vdocuments.us/reader034/viewer/2022051811/601c263efd942e5b932d3261/html5/thumbnails/11.jpg)
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
11Software Design and Analysis CSCI 2040U
![Page 12: Acknowledgments: Introduction to Software Engineering ...data.science.uoit.ca/wp-content/uploads/2016/01/2040_1_Intro.pdfDesign Heuristics—Rules providing guidance, ... Design methods](https://reader034.vdocuments.us/reader034/viewer/2022051811/601c263efd942e5b932d3261/html5/thumbnails/12.jpg)
Modeling is used for the following purposes: Problem understanding
Design creation
Design investigation
Documentation Modeling works because models abstract
details of the target. Models can fail if important and relevant
details are left out.
12Software Design and Analysis CSCI 2040U
![Page 13: Acknowledgments: Introduction to Software Engineering ...data.science.uoit.ca/wp-content/uploads/2016/01/2040_1_Intro.pdfDesign Heuristics—Rules providing guidance, ... Design methods](https://reader034.vdocuments.us/reader034/viewer/2022051811/601c263efd942e5b932d3261/html5/thumbnails/13.jpg)
Static model examples include class and object models.
Dynamic model examples include state diagrams and sequence diagrams.
13
A static model represents aspects of programs that do not change during program
execution.
A dynamic model represents what happens during program execution.
Software Design and Analysis CSCI 2040U
![Page 14: Acknowledgments: Introduction to Software Engineering ...data.science.uoit.ca/wp-content/uploads/2016/01/2040_1_Intro.pdfDesign Heuristics—Rules providing guidance, ... Design methods](https://reader034.vdocuments.us/reader034/viewer/2022051811/601c263efd942e5b932d3261/html5/thumbnails/14.jpg)
Product designers are concerned with styling and aesthetics, function and usability, manufacturability and manageability. Industrial designers, (building) architects,
interior designers, graphic designers, etc. Engineering designers are concerned with
technical mechanisms and workings. Structural, mechanical, chemical, and electrical
engineers Design teams often include both product
and engineering designers.
14Software Design and Analysis CSCI 2040U
![Page 15: Acknowledgments: Introduction to Software Engineering ...data.science.uoit.ca/wp-content/uploads/2016/01/2040_1_Intro.pdfDesign Heuristics—Rules providing guidance, ... Design methods](https://reader034.vdocuments.us/reader034/viewer/2022051811/601c263efd942e5b932d3261/html5/thumbnails/15.jpg)
Requires skills in user interface and interaction design, communications, industrial design, and marketing
15
Software product design is the activity of specifying software product features, capabilities, and interfaces to
satisfy client needs and desires.
Software Design and Analysis CSCI 2040U
![Page 16: Acknowledgments: Introduction to Software Engineering ...data.science.uoit.ca/wp-content/uploads/2016/01/2040_1_Intro.pdfDesign Heuristics—Rules providing guidance, ... Design methods](https://reader034.vdocuments.us/reader034/viewer/2022051811/601c263efd942e5b932d3261/html5/thumbnails/16.jpg)
Requires skills in programming, algorithms, data structures, software design principles, practices, processes, techniques, architectures, and patterns
16
Software engineering design is the activity of specifying programs and sub-systems, and their constituent parts and workings, to meet software
product specifications.
Software Design and Analysis CSCI 2040U
![Page 17: Acknowledgments: Introduction to Software Engineering ...data.science.uoit.ca/wp-content/uploads/2016/01/2040_1_Intro.pdfDesign Heuristics—Rules providing guidance, ... Design methods](https://reader034.vdocuments.us/reader034/viewer/2022051811/601c263efd942e5b932d3261/html5/thumbnails/17.jpg)
Requirements
Specification
Design
Implementation
Testing
Maintenance
Software Product Life Cycle
17
The waterfall model captures the logical, but not the temporal, relationships between software development activities.
Software Design and Analysis CSCI 2040U
![Page 18: Acknowledgments: Introduction to Software Engineering ...data.science.uoit.ca/wp-content/uploads/2016/01/2040_1_Intro.pdfDesign Heuristics—Rules providing guidance, ... Design methods](https://reader034.vdocuments.us/reader034/viewer/2022051811/601c263efd942e5b932d3261/html5/thumbnails/18.jpg)
Engineering Design
Product Redesign and
Engineering Redesign
Product DesignRequirements
Specification
Design
Implementation
Testing
Maintenance
Software Product Life Cycle
18Software Design and Analysis CSCI 2040U
![Page 19: Acknowledgments: Introduction to Software Engineering ...data.science.uoit.ca/wp-content/uploads/2016/01/2040_1_Intro.pdfDesign Heuristics—Rules providing guidance, ... Design methods](https://reader034.vdocuments.us/reader034/viewer/2022051811/601c263efd942e5b932d3261/html5/thumbnails/19.jpg)
Traditional way to make the distinction between requirements and design activities
Not adequate because
Many “what” specifications turn out to be design decisions
Many “how” 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
19Software Design and Analysis CSCI 2040U
![Page 20: Acknowledgments: Introduction to Software Engineering ...data.science.uoit.ca/wp-content/uploads/2016/01/2040_1_Intro.pdfDesign Heuristics—Rules providing guidance, ... Design methods](https://reader034.vdocuments.us/reader034/viewer/2022051811/601c263efd942e5b932d3261/html5/thumbnails/20.jpg)
Engineering
Design
Product
Design
Solution: SRS
Problem: Needs,
Desires, Constraints
Solution: Features
and Capabilities
Solution:
Interactions
Solution: Design
Document
Solution: High-
Level Design
Solution: Low-
Level Design
Solution: Code
Design Features
and Capabilities
Design Interactions
Create High-Level
Design
Create Low-Level
Design
Write Code
Software Design
20Software Design and Analysis CSCI 2040U
![Page 21: Acknowledgments: Introduction to Software Engineering ...data.science.uoit.ca/wp-content/uploads/2016/01/2040_1_Intro.pdfDesign Heuristics—Rules providing guidance, ... Design methods](https://reader034.vdocuments.us/reader034/viewer/2022051811/601c263efd942e5b932d3261/html5/thumbnails/21.jpg)
21
A software design method is an orderly procedure for generating a precise and complete software design solution that
meets client needs and constraints.
Software Design and Analysis CSCI 2040U
![Page 22: Acknowledgments: Introduction to Software Engineering ...data.science.uoit.ca/wp-content/uploads/2016/01/2040_1_Intro.pdfDesign Heuristics—Rules providing guidance, ... Design methods](https://reader034.vdocuments.us/reader034/viewer/2022051811/601c263efd942e5b932d3261/html5/thumbnails/22.jpg)
Design Process—A collection of related tasks that transforms a set of inputs into a set of outputs
Design Notations—A symbolic representational system
Design Heuristics—Rules 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.
22Software Design and Analysis CSCI 2040U
![Page 23: Acknowledgments: Introduction to Software Engineering ...data.science.uoit.ca/wp-content/uploads/2016/01/2040_1_Intro.pdfDesign Heuristics—Rules providing guidance, ... Design methods](https://reader034.vdocuments.us/reader034/viewer/2022051811/601c263efd942e5b932d3261/html5/thumbnails/23.jpg)
1971 Niklaus Wirth introduces stepwise refinement (top-down design).
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.
23Software Design and Analysis CSCI 2040U
![Page 24: Acknowledgments: Introduction to Software Engineering ...data.science.uoit.ca/wp-content/uploads/2016/01/2040_1_Intro.pdfDesign Heuristics—Rules providing guidance, ... Design methods](https://reader034.vdocuments.us/reader034/viewer/2022051811/601c263efd942e5b932d3261/html5/thumbnails/24.jpg)
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.
24Software Design and Analysis CSCI 2040U
![Page 25: Acknowledgments: Introduction to Software Engineering ...data.science.uoit.ca/wp-content/uploads/2016/01/2040_1_Intro.pdfDesign Heuristics—Rules providing guidance, ... Design methods](https://reader034.vdocuments.us/reader034/viewer/2022051811/601c263efd942e5b932d3261/html5/thumbnails/25.jpg)
Introduction to Software Engineering Design: Processes, Principles and Patterns with UML2 - Christopher Fox
25Software Design and Analysis CSCI 2040U
![Page 26: Acknowledgments: Introduction to Software Engineering ...data.science.uoit.ca/wp-content/uploads/2016/01/2040_1_Intro.pdfDesign Heuristics—Rules providing guidance, ... Design methods](https://reader034.vdocuments.us/reader034/viewer/2022051811/601c263efd942e5b932d3261/html5/thumbnails/26.jpg)
26Software Design and Analysis CSCI 2040U
![Page 27: Acknowledgments: Introduction to Software Engineering ...data.science.uoit.ca/wp-content/uploads/2016/01/2040_1_Intro.pdfDesign Heuristics—Rules providing guidance, ... Design methods](https://reader034.vdocuments.us/reader034/viewer/2022051811/601c263efd942e5b932d3261/html5/thumbnails/27.jpg)
Lectures: Twice a week, refer to www.uoit.ca/mycampus
Labs: Once a week (First labs in the week of 25th-29th of January)
Midterm: One (1+1)
Final: One (3 hours)
Marking Labs: 30% (10%: 10 x 1% each lab + 20%: 2 x 10% reports)
Midterm: 20%
Final: 50%
27Software Design and Analysis CSCI 2040U
![Page 28: Acknowledgments: Introduction to Software Engineering ...data.science.uoit.ca/wp-content/uploads/2016/01/2040_1_Intro.pdfDesign Heuristics—Rules providing guidance, ... Design methods](https://reader034.vdocuments.us/reader034/viewer/2022051811/601c263efd942e5b932d3261/html5/thumbnails/28.jpg)
Blackboard for Labs/Midterms/Exam/Marking Take time when composing a message - think of it as a
professional message to a co-worker.
There will not be space for SMS-speak in your work life. Use e-mail for correspondence
TA: [email protected] (communicate all questions wrt labs and project with TA)
If you miss a lab you need a doctor’s notice
Software Design and Analysis CSCI 2040U 28
![Page 29: Acknowledgments: Introduction to Software Engineering ...data.science.uoit.ca/wp-content/uploads/2016/01/2040_1_Intro.pdfDesign Heuristics—Rules providing guidance, ... Design methods](https://reader034.vdocuments.us/reader034/viewer/2022051811/601c263efd942e5b932d3261/html5/thumbnails/29.jpg)
Get a textbook! Read chapter 1 from the textbook
Software Design and Analysis CSCI 2040U 29