I. Preliminaries to the first meeting ------------------------------------------ WELCOME TO Computer Science 362 OBJECT-ORIENTED ANALYSIS AND DESIGN Professor Gary T. Leavens 229 Atanasoff Hall phone: 294-1580 email: leavens at cs.iastate.edu Office Hours: Course home page on web: http://www.cs.iastate.edu/~cs362/index.shtml 1. Pick up handouts (2 of them) ------------------------------------------ A. staff introductions II. The course itself A. What is a analysis and design? ------------------------------------------ ANALYSIS def: *analysis* is investigation of a problem def: *requirements analysis* is investigation of requirements for a system. I.e., what is the right system to build? Requirements can be codified in use cases. Example use case (Larman, p. 8) Play a Dice Game: A player picks up and rolls the two dice. If the dice face value total seven, they win; otherwise they lose. ------------------------------------------ ------------------------------------------ OBJECT-ORIENTED (OO) ANALYSIS Describes the domain in terms of objects. Identifies noteworthy: - concepts, - attributes, - associations |----------| |-----------| | Player | 1 Rolls 2 | Die | |----------|-----------|-----------| | name | | faceValue | |----------| |-----------| | | | 1 | | | | Plays | | | | 1 | |------------| | | DiceGame | Includes | |------------|--------------- | | |------------| ------------------------------------------ ------------------------------------------ DESIGN def: A *design* is a conceptual solution (a plan of how to solve the problem) An OO design defines classes of software objects and how they collaborate to fulfill the requirements. Examples: Class diagram for the dice game |------------| |---------------------| | DiceGame | | Die | |------------|1 2|---------------------| | die1 : Die |---->| faceValue : int | | die2 : Die | |---------------------| |------------| | getFaceValue(): int | | play() | | roll() | |------------| |---------------------| ----------------------------------------- B. Overview ------------------------------------------ THE COURSE IN A NUTSHELL We learn OO techniques for iterative analysis and design (and development) by analyzing and designing a system in several passes. Main skills: - requirements analysis - responsibility assignment How? - team projects, 3-4 people per team - several iterations of same project The class meeting: - 2 "lectures" per week - 1 team meeting time per week ------------------------------------------ C. objectives ------------------------------------------ Com S 362 ESSENTIAL OBJECTIVES You should be able to: 1. Analyze, design, and build object-oriented systems. 2. Explain and justify designs based on design principles, patterns, and heuristics. 3. Evaluate the quality of an analysis or design, and be able to explain how to improve it. 4. Write object-oriented code to correctly implement a design. Reading and writing UML is a necessary skill ------------------------------------------ D. syllabus 1. prerequisites ------------------------------------------ PREREQUISITES C- or better in Com S 228 ------------------------------------------ What did you learn about ADTs in 228? What did you learn about information hiding in 228? Why is information hiding important? Did you learn about and use inheritance in 228? 2. texts ------------------------------------------ TEXTBOOKS Required: 1. Craig Larman. Applying UML and Patterns: An Introduction to Object-Oriented Analysis and Design and the Unified Process, Second Edition. Prentice Hall PTR, Upper Saddle River, NJ, 2001. ISBN 0130925691. 2. Martin Fowler with Kendall Scott. UML Distilled Second Edition: A Brief Guide to the Standard Object Modeling Language. Addison-Wesley Longman, Inc., Reading, MA, 2000. ISBN 020165783X. 3. Erich Gamma, Richard Helm, Ralph Johnson, and John Vlissides. Design Patterns: Elements of Reusable Object-Oriented Software. Addison-Wesley, Boston, MA, 1995. ISBN 0201633612. 4. Arthur J. Reil. Object-Oriented Design Heuristics. Addison-Wesley, Reading, MA, 1996. ISBN 020163385X. ------------------------------------------ 3. grading ------------------------------------------ GRADING + No curve grading + Your grade is 40% based on exams 60% on homework ------------------------------------------ 4. ask for questions/concerns III. forming teams ------------------------------------------ FOR YOU TO DO Find 3 (or 2) other people so you will be in a team of 4 (or 3). 1. Introduce yourselves 2. Make sure you have compatible schedules so you can meet (outside of class) 3. Make sure you are all taking the class for a grade, and discuss the kind of grade you are willing to work for 4. Exchange names, email addresses, and phone numbers. 5. Have someone email this list to all the team members and a copy to the TA. 6. Start thinking about what project you'd like to do. ------------------------------------------