Unformatted text preview:

Bringing Order to ChaosKenneth M. AndersonUniversity of Colorado, BoulderCSCI 4448/6448 — Lecture 12 — 10/04/2007© University of Colorado, 20071Friday, October 5, 2007Lecture Goals• Review material from Chapter 7 of the OO A&D textbook• 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• Discuss the Chapter 7 Example: Gary’s Game Framework• Emphasize the OO concepts and techniques encountered in Chapter 7• Review Homework 12Friday, October 5, 2007Bringing Order to Chaos• At the start of a development project for a large, complex software system• You don’t have a lot of information• You don’t know a lot about your domain• And yet…• You are expected to make• implementation decisions (concerning expensive pieces of middleware)• decisions regarding non-functional requirements• progress on decomposing the problem domain into manageable pieces• progress on identifying the features of the system under design3Friday, October 5, 2007How Does One Start?• Indeed after doing the work that we described in the last lecture…• domain analysis• talking to customer• developing feature list• developing use case diagram• which requires hard work like identifying all of the different types of users an their major tasks• decomposing “big problem” into “smaller modules”• You may be feeling overwhelmed with the information you have so far• or have doubts about its accuracy (which then leads to paralysis)• So, how does one identify what to do next?4Friday, October 5, 2007Answer: Software Architecture• It’s not enough to identify the individual pieces of a big problem• You also need to know how those pieces fit together• You need to have a mechanism for prioritizing your work on those pieces• The missing piece is the software architecture for your system•A software architecture provides a structure to the design of a software system, highlights the most important parts of your system, and the relationships between those parts• A second definition•A software architecture is the organizational structure of a system, including its decomposition into parts, their connectivity, interaction mechanisms, and the guiding principles and decisions you use in the design of a system• An architecture can take a chaotic mess and turn it into a well-ordered app!5Friday, October 5, 2007Back to the Three Step Process• Our three step OO A&D process• Make sure your software does what the customer wants it to do• Apply basic OO principles to add flexibility• Strive for a maintainable, reusable design• points the way towards what to do first: Focus on Functionality• As such, we will start with what the customer wants to do• And for large systems that means looking at the feature list6Friday, October 5, 2007The Feature ListFeatures for Gary’s Game System1. Supports different time periods, including fictional periods like sci-fi and fantasy2. Supports add-on modules for additional campaigns or battle scenarios3. Supports different types of terrain4. Supports multiple types of troops or units that are game-specific5. Each game has a board, made up of square tiles, each with a terrian type.6. The framework keeps up with whose turn it is an coordinates basic movementBut now the question is which of these are the most important?7Friday, October 5, 2007The Three Qs of Architecture• We are trying to identify the important functionality of our system•the features that are architecturally significant•To identify important pieces of functionality, ask 3 questions of each feature•Is the feature part of the essence of the system?• The essence of a system is what that system is at its most basic level• “If I don’t implement this feature, would the system meet its goals?”•What does the feature mean?• Not having a clear idea might indicate that the feature can take a lot of time to get right; best to start on it early• How will I implement the feature?•Focus on features that seem really hard to implement so they don’t bog you down later in the development cycle8Friday, October 5, 2007The Essence of Gary’s Game Framework• After applying the 3 Qs of architecture, the book focuses on these features• The board for the game (the essence)• Game-Specific Units (the essence and what does this mean?)• Framework coordinate basic movement (Can we implement this?)• Having identified these features, we can now examine them in depth• and this will serve to finally get the project moving… after these features get fleshed out, it will be easier to move on to the remaining features/modules and flesh them out as well9Friday, October 5, 2007Why are these features important? Risk• The importance of the three Qs of architecture is that these questions help you to identify the major risks associated with your development process• The reason that the three features on the previous slide are architecturally significant is that they all introduce RISK to your project (i.e. the risk that the project will fail due to this particular feature/requirement)• If we don’t know what some feature means, we have a risk of not meeting schedules and deadlines as we perform a lot of work to discover its meaning• If a feature seems hard to implement, there is a risk we won’t figure it out or it will take a really long time to accomplish• If the core features are not in place, there’s a risk that the customer won’t like the finished product• The key task during this phase of transitioning from large, complex problems to smaller, more manageable, problems is reducing risk10Friday, October 5, 2007Feature 1: The board• We want to consider the design of the board• an essential part of the framework• Since we don’t have a lot of detail from the user, we can’t create a use case• but we may have enough information to develop a single scenario• recall that a single use case will have one or more paths (aka scenarios)• A scenario for the board is developed• create the board• move player 1’s and player 2’s units such that a battle takes place• take into consideration the terrain that they encounter• perform the battle• remove units that lost the battle from the board11Friday, October 5, 2007From Scenario to Codepublic class Board {12 private int width, height;3 private List tiles;4 5


View Full Document

CU-Boulder CSCI 6448 - Bringing Order To Chaos

Documents in this Course
Struts

Struts

12 pages

Adapter

Adapter

23 pages

Prototype

Prototype

16 pages

Weka

Weka

15 pages

qooxdoo

qooxdoo

16 pages

Django

Django

12 pages

Overview

Overview

22 pages

XNA

XNA

5 pages

Load more
Download Bringing Order To Chaos
Our administrator received your request to download this document. We will send you the file to your email shortly.
Loading Unlocking...
Login

Join to view Bringing Order To Chaos and access 3M+ class-specific study document.

or
We will never post anything without your permission.
Don't have an account?
Sign Up

Join to view Bringing Order To Chaos 2 2 and access 3M+ class-specific study document.

or

By creating an account you agree to our Privacy Policy and Terms Of Use

Already a member?