29
1 Software Design and Analysis CSCI 2040U Acknowledgments: Introduction to Software Engineering Design: Processes, Principles and Patterns with UML2 - Christopher Fox

Acknowledgments: Introduction to Software Engineering ...data.science.uoit.ca/wp-content/uploads/2016/01/2040_1_Intro.pdfDesign Heuristics—Rules providing guidance, ... Design methods

  • Upload
    others

  • View
    4

  • Download
    0

Embed Size (px)

Citation preview

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

[email protected]

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

Get a textbook! Read chapter 1 from the textbook

Software Design and Analysis CSCI 2040U 29