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/ 1. Pick up handouts (2 of them) ------------------------------------------ A. staff introductions II. The course vision A. Meta B. Vision introduction C. Business Motivation D. What is object-orientation? 1. meta 2. Object-based 3. Object-oriented 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"? E. 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? ------------------------------------------ F. Overview 1. meta 2. overview of course ------------------------------------------ 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 - try to make them interactive via exercises, some quizzes - some devoted to team meeting or review or help (no separate discussion sect.) ------------------------------------------ G. objectives 1. meta 2. main objectives ------------------------------------------ Com S 362 ESSENTIAL OBJECTIVES You should be able to: 1. Analyze system requirements and model problem domains. 2. Evaluate the quality of an analysis, and be able to explain how to improve it. 3. Design and build object-oriented systems. 4. Explain and justify designs based on design principles, patterns, and heuristics. 5. Evaluate the quality of a design, and be able to explain how to improve it. 6. Write object-oriented code to correctly implement a design. Reading and writing - Java - UML are a necessary skills ------------------------------------------ H. syllabus 1. meta 2. actual syllabus How much are you willing to read? 3. 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? 4. 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. Ken Arnold, James Gosling, and David Holmes. The Java Programming Language Third Edition. Addison-Wesley, Reading, Mass., 2000. ISBN 0201704331. Recommended: Martin Fowler with Kendall Scott. UML Distilled Third Edition: A Brief Guide to the Standard Object Modeling Language. Addison-Wesley Longman, Inc., Reading, MA, 2003. ISBN 0321193687. Alan Shalloway and James R. Trott. Design Patterns Explained: A New Perspective on Object-Oriented Design. Addison-Wesley, Boston, MA, 2002. ISBN 0-201-71594-5. ------------------------------------------ 5. grading ------------------------------------------ GRADING + No curve grading + Your grade is 40% based on exams 50% on homework 10% on exercises and quizzes ------------------------------------------ 6. ask for questions/concerns