Title: CS251 Intermediate Software Design
1CS251Intermediate Software Design
Dr. Douglas C. Schmidt d.schmidt_at_vanderbilt.edu ww
w.dre.vanderbilt.edu/schmidt/cs251/
Professor of EECS Vanderbilt University
Nashville, Tennessee
2CS 251 Course Philosophy
Good design and programming is not learned by
generalities, but by seeing how significant
programs can be made clean, easy to read, easy to
maintain and modify, human-engineered, efficient,
and reliable, by the application of good design
and programming practices. Careful study and
imitation of good designs and programs
significantly improves development skills. -
Kernighan and Plauger
3CS 251 Course Information
- CS 251 class web page
- www.dre.vanderbilt.edu/ schmidt/cs251/
- My office hours in Featheringill Hall room 226
are - Mon Wed from 100pm to 3pm
- TAs Krzysztof Zienkiewicz William Chappell
- krzysztof.k.zienkiewicz_at_Vanderbilt.Edu
william.t.chappell_at_Vanderbilt.Edu - TA office hours are on the CS 251 web page
- Please send all questions to d.schmidt_at_vanderbilt.
edu - Ill send the answers to the class mailing list
4CS 251 Ground Rules
- Assignments must be submitted on time
- Work must be your own
- No laptops open in class during lecture or
quizzes - You will be called upon periodically to answer
questions - Youll get out of this course what you put into
it, so be prepared to work hard - Be prepared for weekly quizzes occasional guest
lectures - Make sure to avail yourself of available help,
e.g., office hours, TAs, mailing list, etc.
5CS 251 Course Contents
- Focus on topics important to developing
maintaining quality software - Reuse of patterns software components
- Developing, documenting, testing, applying
reusable classes object-oriented frameworks
using C - Patterns will be taught to provide good role
models for software designs to clearly
articulate design tradeoffs - Object-oriented techniques will be taught to show
how to build software architectures that decouple
inter-dependencies between components - I assume you know C a little bit, e.g., you
know how to use a C compiler
- The course will cover object-oriented techniques
that address - Decentralized software architecture
- Architectural and design patterns
- Class interface definition
- Component reuse
- Module decomposition
- Hierarchical classification
- Extensible object-oriented application frameworks
- Many case studies will be used in class to
illustrate the OO design programming process
6CS 251 Course Work
- There will be 5-6 programming assignments written
in C - Can be done on Windows, Linux, Mac, etc.
- Must be done individually
- Programs will be graded as follows
- 40 execution correctness
- 30 structure (e.g., modularization, information
hiding, etc.) - 10 insightful programming (e.g., developing
reusable class components, etc.) - 10 Consistent style (e.g., capitalization,
indenting, etc.) - 10 appropriate commenting style
- There will be a 5 point deduction (out of a
possible 100 points) for each day that your
program is late - Programs turned in later than two calendar days
after the due date will receive a 0 - There will be weekly quizzes (starting today)
- There will be a comprehensive final exam
- The relative weighting of each portion of the
course is - 45 Programming projects
- 40 Quizzes
- 15 Final Exam
7Overview of C
8Overview of C
9Overview of C
10Overview of Patterns
11Overview of Pattern Languages
- Motivation
- Individual patterns pattern catalogs are
insufficient - Software modeling methods tools largely just
illustrate how not why systems are designed
- Benefits of Pattern Languages
- Define a vocabulary for talking about software
development problems - Provide a process for the orderly resolution of
these problems, eg - What are key problems to be resolved in what
order - What alternatives exist for resolving a given
problem - How should mutual dependencies between the
problems be handled - How to resolve each individual problem most
effectively in its context - Help to generate reuse software architectures
12Taxonomy of Patterns Idioms
13Overview of Frameworks
Framework Characteristics
14Comparing Class Libraries, Frameworks,
Components
15Overview of the ACE Frameworks
- Features
- Open-source
- 6 integrated frameworks
- 250,000 lines of C
- 40 person-years of effort
- Ported to Windows, UNIX, real-time operating
systems - e.g., VxWorks, pSoS, LynxOS, Chorus, QNX
- Large user community
www.cs.wustl.edu/schmidt/ACE.html
16The POSA2 Pattern Language
- Pattern Benefits
- Preserve crucial design information used by
applications middleware frameworks components - Facilitate reuse of proven software designs
architectures - Guide design choices for application developers