Software Architecture and Design 1 · TDD & Refactoring (just a bit) Tentative Fall Quarter...
Transcript of Software Architecture and Design 1 · TDD & Refactoring (just a bit) Tentative Fall Quarter...
Software Architecture
and Design 1 CSSE 574: Intro
Steve Chenoweth Phone: Office (812) 877-8974
Cell (937) 657-3885 Email: [email protected]
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.
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
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
And something about this course…
Question? So, what is Design?
Art?
Engineering?
Mix of the both?
6
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
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
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
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
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
12
Where do Software Designs Come From?
Intuition/Evolution
Adoption
Engineering
©2005 Shawn Bohner
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
Course Mechanics
Find most material: http://www.rose-hulman.edu/class/csse/csse574/
Grades and drop boxes will be on Angel
14
15
Learning Outcomes: Real Work
Work effectively with any relevant project stakeholders, including customers, as you do your design work.
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/
17
Learning Outcomes: Architecture
Demonstrate a basic understanding of system architecture principles.
http://tshirts.codesmack.com/tshirts/programming
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
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
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.
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.
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.
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.
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!
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…
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.
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
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