Survey
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
OOSD Using Java Lecture 1 Introduction Introduction 350 – Tools & CSC 485 – OOD? Software Development vs. Programming Activities, Processes, & Tools Why Object Orientation? Class Goals & Roadmaps OO Software Development Processes IST 8/19/04 introduction 2 Two Courses Co-listed Why co-listed? An IST course emphasizes s/w development with the aid of tools A CSC course focuses on OO design Tool-based software development – an OO approach 8/19/04 Without the knowledge of OO methodology, the best one can be is a tool operator One may be able to write some code, but it’s hard to development large systems without tools introduction 3 Textbook(s) Required OOSD using Java, 2/e Jia/Addison Wesley • Concepts & principles • OO design as used in Java APIs • System development methodology Recommended Rapid application development using Sun ONE studio Liang/Prentice Hall • Extensive use of IDE Other online resources 8/19/04 introduction 4 Software vs. Programs Complexity Longevity & evolution Break down the task into smaller increments Analysis & design before coding Using appropriate tools is essential Documentation: for communication and maintenance Flexibility High user expectations 8/19/04 Enterprise applications introduction 5 The Traditional Approach Activities 8/19/04 Requirements analysis Design Implementation & unit testing Integration & system testing Maintenance introduction 6 The Traditional Approach The waterfall process Flowing from one step (or phase) to the next There is no return: from begin to end Pros • Simple to manage Cons • Know everything a system needs to provide before ever designing • Inflexible for changing requirements • No (partially) working system until the end, no user feedback 8/19/04 introduction 7 Desirable Qualities Usefulness Timeliness Reliability Maintainability Reusability User friendly Efficiency 8/19/04 introduction 8 Tools? IDE: for Editing, w/ context-sensitive menu Form editing and code generation Compiling/debugging/executing Code documenting: w/ javadoc Packaging: w/ jar JUint: for unit testing ANT: for system building Rational Rose: for OO modeling 8/19/04 introduction 9 Why Object Orientation? Programming paradigm A way of organizing programs on the basis of some conceptual model of programming and an appropriate language to make program written in the style clear Examples • Procedure-oriented • Object-oriented • Rule-oriented 8/19/04 algorithms classes & objects if-then rules OO paradigm is best suited to a broad set of applications (e.g., the so-called enterprise application) introduction 10 What’s Object Orientation For all things object-oriented, the conceptual framework is the object model Four major elements [essential] Abstraction Encapsulation Modularity Hierarchy Three minor elements [useful but not essential] 8/19/04 Typing Concurrency Persistence introduction 11 Class Roadmaps – an overview class discussion and labs Component design and implementation (build the building blocks) Inception Test 1 Component-based system development (from building Blocks to systems) Design Test 2 Construction Demo & Presentation project 8/19/04 introduction 12 Class Roadmaps – components Visual Programming w/ Swing & AWT Introduction Lab 3 Lab 4 Swing Event OO Concepts & Principles Using Collection Classes Lab 1 UML Lab 5 JCF Mapping OO Models to Java Using Java IO Classes Lab 2 IDE 8/19/04 Lab 6 IO introduction 13 Class Roadmaps – system Case Study: A Drawing Pad Java Component Model: JavaBeans Lab 7 Create Persistence: JDBC Component-based Development Lab 10 JDBC Lab 8 Use Design Patterns I & II Distributed Apps: JSP Lab 9 Patterns 8/19/04 Lab 11 JSP introduction 14 Score Breakdown Tests 400 2@200 pts each Labs & case study 250 Assignments & quizzes 150 assignments 4~6 @ 20~30 pts each Project 200 design/documentation 100 coding & testing 50 system demo & presentation 50 8/19/04 introduction 15 OO Processes What’s the difference? Different mindset determines different activities be recognized and different approaches be chosen Evolutionary/iterative process models Boehm’s spiral model Booch’s iterative model • Micro process: OOAD @ component development level • Macro process: project/product evolution level 8/19/04 introduction 16 Micro Process Identifying classes and objects specifying class interfaces & impl’s Identifying class & object semantics Identifying class & object relationships 8/19/04 introduction 17 Macro Process Develop a model of the desired behavior (analysis) Establish core requirements (conceptualization) Create an architecture (design) Manage postdelivery evolution (maintenance) Evolve the Implementation (evolution) 8/19/04 introduction 18 OO Development Activities Conceptualization OO analysis & modeling OO design Implementation Maintenance 8/19/04 introduction 19 System Development - A Practical View Ideas Conceptualization High-up in the air Needs statement C-req’ts Analysis Functional spec (D-req’ts) Design Prototypes Design docs System under dev. System in production 8/19/04 Implementation introduction Solid ground 20 The Unified Process Real distinguishing aspects Use-case driven Architecture-centric Iterative and incremental Key practices 8/19/04 Develop software iteratively Elicit, organize, and manage changing requirements Use component-based architecture Visually model software using UML Continuously verify software quality Control changes to software introduction 21 The Unified Process Workflows 8/19/04 Business modeling Requirements Analysis & design Implementation Testing Deployment Configuration management Project management Environment introduction 22 The Unified Process Major phases 8/19/04 Inception: establishes the business case for the project Elaboration: establishes a project plan and a sound architecture Construction: grows the system Transition: supplies the system to its end users introduction 23 Spiral Development Product:class models + Product: requirements specifications Step n: Analyze requirements Step n+1: Design complete targeted requirements Step n+2: Implement Step n+3: Test Product: code + 8/19/04 Product: test results + introduction 24 RUP – activities vs. phases Inception Elaboration Construction Prelim. Iter. .. Iter. Iter. iterations #1 #n #n+1 ….. Transition Iter. Iter. ….. #m #m+1 Iter. #k Amount of effort expended on the requirements phase during the first Construction iteration Requirements Analysis Design Implementation Test 8/19/04 introduction 25 Extreme Programming (XP) Key practices Planning game Frequent and small release Simple design Test first Refactoring Pair programming Continuous integration Coding standards Read more at http://www.extremeprogramming.org 8/19/04 introduction 26 Summary Desired qualities of software systems Iterative object-oriented development process Description Advantages over the waterfall model RUP 8/19/04 Phases and workflows introduction 27 Announcements We will be meeting in lab 200 starting next week Useful links 8/19/04 Liang’s book website (Java coding standards, multiple choice review questions, etc) http://www.cs.armstrong.edu/liang/radft.html Sun’s Java tutorials: http://java.sun.com/docs/books/tutorial/ introduction 28