CS251 Intermediate Software Design - PowerPoint PPT Presentation

1 / 16
About This Presentation
Title:

CS251 Intermediate Software Design

Description:

... (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 ... – PowerPoint PPT presentation

Number of Views:53
Avg rating:3.0/5.0
Slides: 17
Provided by: douglasc3
Category:

less

Transcript and Presenter's Notes

Title: CS251 Intermediate Software Design


1
CS251Intermediate 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
2
CS 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
3
CS 251 Course Information
  • Required textbooks
  • 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

4
CS 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.

5
CS 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

6
CS 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


7
Overview of C
8
Overview of C
9
Overview of C
10
Overview of Patterns
11
Overview 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

12
Taxonomy of Patterns Idioms
13
Overview of Frameworks
Framework Characteristics
14
Comparing Class Libraries, Frameworks,
Components
15
Overview 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
16
The 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
Write a Comment
User Comments (0)
About PowerShow.com