11-solvingprobsordertochaos

11-solvingprobsordertochaos - Solving Really Big Problems...

Info iconThis preview shows pages 1–8. Sign up to view the full content.

View Full Document Right Arrow Icon
Solving Really Big Problems Bringing Order to Chaos Kenneth M. Anderson University of Colorado, Boulder CSCI 4448/5448 — Lecture 11 — 09/29/2009 © University of Colorado, 2009 1
Background image of page 1

Info iconThis preview has intentionally blurred sections. Sign up to view the full version.

View Full DocumentRight Arrow Icon
Listen: Stan Kenton’s Malaguena • What is the structure of this song? 2
Background image of page 2
Why Start with a Song? • We are going to be learning about software architecture this week • Thinking about music can help in understanding architecture • What is the architecture of a song? • Components: verses, refrain, solos, … • Sub-Components: Notes, Rests, Lyrics • Connectors: Arrangements, “the bridge”, “swing section”, … • Styles: Jazz, Classical, 80s alternative, indie, funk, goth, death metal, … • Common (or Stylistic) Elements: melody, counter melody, echoing, themes, muscial pyramids, etc. • Experience: same song can be vastly different based on the performers 3
Background image of page 3

Info iconThis preview has intentionally blurred sections. Sign up to view the full version.

View Full DocumentRight Arrow Icon
Lecture Goals • How do you solve big problems • That is, how do you design and build really large software systems? • Domain Analysis • Use Case Diagrams • Introduction to Software Architecture • How do you use software architecture to guide the development process? • The three Q’s of architecture • Risk and how to reduce it • Commonality Analysis 4
Background image of page 4
Living in Smallville? • Rick’s Guitars: Less than 15 classes (at its worst) • Doug’s Dog Doors: Never more than 5 classes! • Will the techniques that we’ve learned so far apply to real systems? • which tend to be big, complex, and consist of 100s to 1000s of classes • The quick answer? • Yes • Our three step life cycle (make your software work, apply OO principles, strive for a maintainable, reusable design) still applies to large situations • with the assistance of new techniques: software architecture, use case diagrams, domain analysis, design patterns, and more • The long answer? 5
Background image of page 5

Info iconThis preview has intentionally blurred sections. Sign up to view the full version.

View Full DocumentRight Arrow Icon
Its just a matter of perspective! 6
Background image of page 6
• Dealing with the difFculties of large- scale, real-world software development can feel the same as if a bull is rapidly bearing down on you! • But if you view the problem in the right way (and get out of the bull’s way pronto ), the complexity of the real world can be handled • The key is “divide and conquer” • You can solve a big problem by breaking it into lots of functional pieces, and then work on each piece individually • perhaps by applying “divide and conquer” again! Big Problem
Background image of page 7

Info iconThis preview has intentionally blurred sections. Sign up to view the full version.

View Full DocumentRight Arrow Icon
Image of page 8
This is the end of the preview. Sign up to access the rest of the document.

This note was uploaded on 03/11/2010 for the course CSCI 5448 taught by Professor Anderson during the Fall '09 term at Colorado.

Page1 / 61

11-solvingprobsordertochaos - Solving Really Big Problems...

This preview shows document pages 1 - 8. Sign up to view the full document.

View Full Document Right Arrow Icon
Ask a homework question - tutors are online