Software Architecture and Design 1 · TDD & Refactoring (just a bit) Tentative Fall Quarter...

28
Software Architecture and Design 1 CSSE 574: Intro Steve Chenoweth Phone: Office (812) 877-8974 Cell (937) 657-3885 Email: [email protected]

Transcript of Software Architecture and Design 1 · TDD & Refactoring (just a bit) Tentative Fall Quarter...

Page 1: Software Architecture and Design 1 · TDD & Refactoring (just a bit) Tentative Fall Quarter Timeline - 1 10 weeks, 10 class sessions… So much to do and so little time… Exam 1

Software Architecture

and Design 1 CSSE 574: Intro

Steve Chenoweth Phone: Office (812) 877-8974

Cell (937) 657-3885 Email: [email protected]

Page 2: Software Architecture and Design 1 · TDD & Refactoring (just a bit) Tentative Fall Quarter Timeline - 1 10 weeks, 10 class sessions… So much to do and so little time… Exam 1

2

Agenda

Introductions

Software Design - What is it?

Course Outcomes

Guidelines and Expectations

Semester Schedule

Homework Assignment

Credits: Prior versions of this material taught by Shawn Bohner,

Curt Clifton and Steve Chenoweth of RHIT. Some slides taken

from resources provided by Craig Larman for with his book.

Page 3: Software Architecture and Design 1 · TDD & Refactoring (just a bit) Tentative Fall Quarter Timeline - 1 10 weeks, 10 class sessions… So much to do and so little time… Exam 1

Introductions – Tell us

Name

Company

Current Project

Prior Large System Experience

Largest system you have developed

(and how big was it?)

Part of the system you had to understand

3 http://www.laquso.com/services/analysis/sourcecode.html

Name

Company

Current Project

Prior Large System Experience

Largest system you have developed

(and how big was it?)

Part of the system you had to understand

Page 4: Software Architecture and Design 1 · TDD & Refactoring (just a bit) Tentative Fall Quarter Timeline - 1 10 weeks, 10 class sessions… So much to do and so little time… Exam 1

Something about me…

I came to Rose from industry

NCR – a computer vendor

AT&T / Lucent – a telecom / vendor

Designed & built software systems

Taught the same subjects there – like systems

architecture

Worked on big systems like 5E switch

Fun fact about me: I live in 2 places, here

and Dayton, OH

http://www.wap.org/journal/cotour/default.html

Page 5: Software Architecture and Design 1 · TDD & Refactoring (just a bit) Tentative Fall Quarter Timeline - 1 10 weeks, 10 class sessions… So much to do and so little time… Exam 1

And something about this course…

Page 6: Software Architecture and Design 1 · TDD & Refactoring (just a bit) Tentative Fall Quarter Timeline - 1 10 weeks, 10 class sessions… So much to do and so little time… Exam 1

Question? So, what is Design?

Art?

Engineering?

Mix of the both?

6

Page 7: Software Architecture and Design 1 · TDD & Refactoring (just a bit) Tentative Fall Quarter Timeline - 1 10 weeks, 10 class sessions… So much to do and so little time… Exam 1

Is Design Creative Problem Solving?

“Design is directed toward

human beings. To design is

to solve human problems by

identifying them and

executing the best solution.”

Ivan Chermayeff

7

Page 8: Software Architecture and Design 1 · TDD & Refactoring (just a bit) Tentative Fall Quarter Timeline - 1 10 weeks, 10 class sessions… So much to do and so little time… Exam 1

Is Design what Innovators do?

“In most people's vocabularies,

design means veneer. It's

interior decorating. It's the

fabric of the curtains, of the

sofa. But to me, nothing could

be further from the meaning of

design. Design is the

fundamental soul of a human-

made creation that ends up

expressing itself in successive

outer layers of the product or

service.”

Steve Jobs 8

Page 9: Software Architecture and Design 1 · TDD & Refactoring (just a bit) Tentative Fall Quarter Timeline - 1 10 weeks, 10 class sessions… So much to do and so little time… Exam 1

Is Design what Architects do?

Some architects have a

preconceived notion of what a

building should be — they

design from the outside like the

building is a piece of sculpture.

I prefer to patiently search

through extensive discovery

until I find a seam somewhere,

crack it open and discover the

art inside of the process.

Curtis W. Fentress

9 http://www.businesswire.com/multimedia/home/20090106005735/de/1739565

Some architects have a

preconceived notion of what a

building should be — they

design from the outside like the

building is a piece of sculpture.

I prefer to patiently search

through extensive discovery

until I find a seam somewhere,

crack it open and discover the

art inside of the process.

Curtis W. Fentress

Page 10: Software Architecture and Design 1 · TDD & Refactoring (just a bit) Tentative Fall Quarter Timeline - 1 10 weeks, 10 class sessions… So much to do and so little time… Exam 1

10

Couple Software Design Perspectives

"There are two ways of

constructing a software design:

One way is to make it so simple

that there are obviously no

deficiencies, and the other way is

to make it so complicated that

there are no obvious deficiencies.

The first method is far more

difficult."

-C.A.R. Hoare

Page 11: Software Architecture and Design 1 · TDD & Refactoring (just a bit) Tentative Fall Quarter Timeline - 1 10 weeks, 10 class sessions… So much to do and so little time… Exam 1

11

Engineering Design – A Simple Definition

“Design” specifies the strategy of

“how” the Requirements will be

implemented

Design is both a “Process”

… and an “Artifact”

©2005 Shawn Bohner

Page 12: Software Architecture and Design 1 · TDD & Refactoring (just a bit) Tentative Fall Quarter Timeline - 1 10 weeks, 10 class sessions… So much to do and so little time… Exam 1

12

Where do Software Designs Come From?

Intuition/Evolution

Adoption

Engineering

©2005 Shawn Bohner

Page 13: Software Architecture and Design 1 · TDD & Refactoring (just a bit) Tentative Fall Quarter Timeline - 1 10 weeks, 10 class sessions… So much to do and so little time… Exam 1

13

Software Design has Evolved!

Software Programmers (Database, Algorithm...)

Structured Design (Data flow, modules, …)

Computing = Centralized

Systems = Stove-piped

Change focus = Code

Trade-offs = Efficiency (Memory, processing time…)

Software Disciplines (Database, HCI, Web...)

Computer Disciplines (Network, Embedded, Sensors...)

Application Domain Disciplines (Aerospace, Telecommunications, ...)

Engineering Design (Inter/Multidisciplinary…)

Human Centered Design (Usability, Customer…)

Model-Based Design…

Computing = Pervasive

Systems = Distributed

Change Focus = Architecture

Trade-Offs = Effectiveness (Product-Line, Changeability, Platform…)

1976

Page 14: Software Architecture and Design 1 · TDD & Refactoring (just a bit) Tentative Fall Quarter Timeline - 1 10 weeks, 10 class sessions… So much to do and so little time… Exam 1

Course Mechanics

Find most material: http://www.rose-hulman.edu/class/csse/csse574/

Grades and drop boxes will be on Angel

14

Page 15: Software Architecture and Design 1 · TDD & Refactoring (just a bit) Tentative Fall Quarter Timeline - 1 10 weeks, 10 class sessions… So much to do and so little time… Exam 1

15

Learning Outcomes: Real Work

Work effectively with any relevant project stakeholders, including customers, as you do your design work.

Page 16: Software Architecture and Design 1 · TDD & Refactoring (just a bit) Tentative Fall Quarter Timeline - 1 10 weeks, 10 class sessions… So much to do and so little time… Exam 1

16

Learning Outcomes: Object-Oriented Design

Demonstrate object-oriented design basics

like domain models, class diagrams,

and interaction (sequence and communication) diagrams.

http://enterprisegeeks.com/blog/2009/07/

Page 17: Software Architecture and Design 1 · TDD & Refactoring (just a bit) Tentative Fall Quarter Timeline - 1 10 weeks, 10 class sessions… So much to do and so little time… Exam 1

17

Learning Outcomes: Architecture

Demonstrate a basic understanding of system architecture principles.

http://tshirts.codesmack.com/tshirts/programming

Page 18: Software Architecture and Design 1 · TDD & Refactoring (just a bit) Tentative Fall Quarter Timeline - 1 10 weeks, 10 class sessions… So much to do and so little time… Exam 1

18

Learning Outcomes: Problems and Solutions

Recognize the differences between problems and solutions and deal with their interactions.

http://www.geekologie.com/2007/02/rubiks_cube_for_the_lazy_perso.php

Page 19: Software Architecture and Design 1 · TDD & Refactoring (just a bit) Tentative Fall Quarter Timeline - 1 10 weeks, 10 class sessions… So much to do and so little time… Exam 1

19

Learning Outcomes: Fundamental Design

Use fundamental design

principles, methods,

patterns and strategies in

the creation of a software

system and its supporting

documents.

http://www.amazon.com/Design-Patterns-Elements-Reusable-Object-Oriented/dp/0201633612

Page 20: Software Architecture and Design 1 · TDD & Refactoring (just a bit) Tentative Fall Quarter Timeline - 1 10 weeks, 10 class sessions… So much to do and so little time… Exam 1

20

Learning Outcomes: Patterns, Frameworks,…

Identify criteria for the

design of a software

system and select

patterns, create

frameworks, and

partition software to

satisfy the inherent

trade-offs.

Above: Mercedes-Benz 300SLR, with which Stirling Moss won the 1955 Mille Miglia. This

series of Mercedes racing car included novel features such as fully independent suspension,

inboard brakes, an air brake, a magnesium body, and desmodromic valves on a straight-8 engine

with its power takeoff in the middle. Picture from http://www.webridestv.com/photos/mercedes-

benz-300-slr-115395/9.

Page 21: Software Architecture and Design 1 · TDD & Refactoring (just a bit) Tentative Fall Quarter Timeline - 1 10 weeks, 10 class sessions… So much to do and so little time… Exam 1

21

Learning Outcomes: Architecture

Analyze and explain the

feasibility and soundness

of a software design.

Especially –

Show you can engineer quality attributes into a software-intensive system.

Above: Maybe more what you need for daily driving? The Mercedes-Benz 240D, a car people

bought because it seemed to last forever, even if you weren’t very consistent about scheduled

maintenance. From http://www.nextautos.com/question-of-the-day/question-of-the-day-

what%E2%80%99s-the-most-reliable-car-you%E2%80%99ve-ever-owned.

Page 22: Software Architecture and Design 1 · TDD & Refactoring (just a bit) Tentative Fall Quarter Timeline - 1 10 weeks, 10 class sessions… So much to do and so little time… Exam 1

22

Guidelines and Expectations

Demanding Course ALERT: 8+ hours/week outside of class

Read the assigned material before class

Want in-class quizzes to fill-out as we talk?

Check email, Angel, and the course website daily

Be mindful of the CSSE Honesty Policy

Electronic Distraction Policy

Strongly encourage you to turn off IM and email and only use

laptop for things directly related to class.

Page 23: Software Architecture and Design 1 · TDD & Refactoring (just a bit) Tentative Fall Quarter Timeline - 1 10 weeks, 10 class sessions… So much to do and so little time… Exam 1

23

Grading and Evaluation

40% Theory Exam 1 (15%), Exam 2 (15%)

Class Discussion (& Quizzes) (10%)

60% Practicum (Project Work) Ongoing Project & other HW (50%)

Project Meeting/Discussion & Presentations (10%)

Grade Scale

The usual RHIT point scale will apply.

Statute of Limitations Any questions (or concerns) about the evaluation of an assignment

must be raised within two weeks of the posting of score information.

Page 24: Software Architecture and Design 1 · TDD & Refactoring (just a bit) Tentative Fall Quarter Timeline - 1 10 weeks, 10 class sessions… So much to do and so little time… Exam 1

24

Late Work

There are legitimate reasons for late

work, but must be acknowledged

before due date, except in

emergencies.

If you are coordinating the class

project as also being a work

assignment, I’ll work with you to

coordinate any school impacts from

work changes.

Deadlines

– Deadlines temperamental beasts,

… you hug one too close and it’s liable bite you!

Page 25: Software Architecture and Design 1 · TDD & Refactoring (just a bit) Tentative Fall Quarter Timeline - 1 10 weeks, 10 class sessions… So much to do and so little time… Exam 1

25

Course Textbook and Readings

Required Textbooks - 1

Applying UML and Patterns: An

Introduction to Object-Oriented

Analysis and Design and Iterative

Development (3ed)”

by Craig Larman; Prentice Hall PTR

(2004).

ISBN-13: 978-0131489066

This one’s an “intro” book, used for

both undergrad and grad design

courses.

And…

Page 26: Software Architecture and Design 1 · TDD & Refactoring (just a bit) Tentative Fall Quarter Timeline - 1 10 weeks, 10 class sessions… So much to do and so little time… Exam 1

26

Course Textbook and Readings

Required Textbooks - 2

Software Architecture in Practice

(3ed)

by Bass, Clements and Kazman,

Addison-Wesley (2012).

ISBN 0321815734

This one’s an “intermediate” book,

discussing tradeoffs for different

large-scale design alternatives.

Both books provided!

Readings may be also be

assigned from relevant papers.

Page 27: Software Architecture and Design 1 · TDD & Refactoring (just a bit) Tentative Fall Quarter Timeline - 1 10 weeks, 10 class sessions… So much to do and so little time… Exam 1

27

Sep Oct

Class Begins Intro.

OOA/D

Sys. Seq. Diagrams

Intro. to GRASP

Mapping Design to

Code

Domain Models

TDD & Refactoring

(just a bit)

Tentative Fall Quarter Timeline - 1

10 weeks, 10 class sessions… So much to do and so little time…

Exam 1

Operation Contracts

Logical Arch. &

Obj. Design

Interaction Diagrams

Class Diagrams

Objects w/ Respons-ibilities

GoF Design

Patterns

Activity Diagrams

DM Refinement

Package Design

Architecture

Analysis

Class Continues

Page 28: Software Architecture and Design 1 · TDD & Refactoring (just a bit) Tentative Fall Quarter Timeline - 1 10 weeks, 10 class sessions… So much to do and so little time… Exam 1

28

Nov Class

Continues

Exam 2

Tentative Fall Quarter Timeline - 2

10 weeks, 10 class sessions… So much to do and so little time…

More Design

Patterns

Deployment

& Components

Where

Arch

Comes

From

What

Makes

Good

Arch?

Arch

Styles & Patterns

Case

Study 1 Achieving

Qualities

The Arch

Business

Cycle

Arch

Structures

& Views

Quality

Attributes Student

Case

Studies

Switch

Books

Project

Presen-

tations