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 (1 of them) ------------------------------------------ A. staff introductions II. The course itself A. What is object-orientation? In which paradigm were my assistants most helpful? How is the word "object" in normal English usage different from what we mean by "object"? what about "objectify"? B. What is analysis and design? ------------------------------------------ ANALYSIS def: *analysis* is investigation of a problem def: *requirements analysis* is investigation of what a system should do. I.e., what is the right system to build? Requirements can be codified in use cases. Example use case: Run a compiler: The user gives source files, the compiler produces object files and error messages. ------------------------------------------ ------------------------------------------ OBJECT-ORIENTED (OO) ANALYSIS Describes the domain in terms of objects. Identifies noteworthy: - concepts, - attributes, - associations What concepts are there in the domain of running a compiler? What attributes? What associations? ------------------------------------------ ------------------------------------------ ARCHITECTURE We will generally build systems in 3 layers: User Interface ======================= Application Logic ======================= Services ------------------------------------------ What advantages might this have? ------------------------------------------ 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. What classes might we have for running a compiler? What attributes? Associations? Responsibilities? ------------------------------------------ C. 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 Supporting skills/knowledge: - OO programming (in Java) - UML notation How? - some individual work to get concepts, and notation clear - team projects, 3-4 people per team - several iterations of same project The class meeting: - 3 "lectures" per week - some devoted to team meeting or review or help (no separate discussion sect.) ------------------------------------------ D. 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 - Java - UML are a necessary skills ------------------------------------------ E. syllabus How much are you willing to read? 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. Recommended: 1. Ken Arnold, James Gosling, and David Holmes. The Java Programming Language Third Edition. Addison-Wesley, Reading, Mass., 2000. ISBN 0201704331. ------------------------------------------ 3. grading ------------------------------------------ GRADING + No curve grading + Your grade is 40% based on exams 60% on homework ------------------------------------------ 4. ask for questions/concerns