280 likes | 415 Views
This lecture introduces Object-Oriented Software Development (OOSD) using Java, differentiating between software development and programming. It covers essential activities, processes, and tools in software development, emphasizes the importance of object-oriented design (OOD), and explores why the OO methodology is critical for developing large systems. The session outlines the class goals and roadmaps, along with the tools like IDEs, document generation, and unit testing, necessary for effective development. Recommended resources for further learning are also provided.
E N D
OOSD Using Java Lecture 1 Introduction
Introduction • IST 350 – Tools & CSC 485 – OOD? • Software Development vs. Programming • Activities, Processes, & Tools • Why Object Orientation? • Class Goals & Roadmaps • OO Software Development Processes introduction
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 • 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
Textbook(s) • Required • OOSD using Java, 2/eJia/Addison Wesley • Concepts & principles • OO design as used in Java APIs • System development methodology • Recommended • Rapid application development using Sun ONE studioLiang/Prentice Hall • Extensive use of IDE • Other online resources introduction
Software vs. Programs • Complexity • Break down the task into smaller increments • Analysis & design before coding • Using appropriate tools is essential • Documentation: for communication and maintenance • Longevity & evolution • Flexibility • High user expectations • Enterprise applications introduction
The Traditional Approach • Activities • Requirements analysis • Design • Implementation & unit testing • Integration & system testing • Maintenance introduction
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 introduction
Desirable Qualities • Usefulness • Timeliness • Reliability • Maintainability • Reusability • User friendly • Efficiency introduction
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 introduction
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 algorithms • Object-oriented classes & objects • Rule-oriented if-then rules • OO paradigm is best suited to a broad set of applications (e.g., the so-called enterprise application) introduction
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] • Typing • Concurrency • Persistence introduction
Class Roadmaps – an overview class discussion and labs Component design and implementation (build the building blocks) Component-based system development (from building Blocks to systems) Test 1 Test 2 Design Construction Demo & Presentation Inception project introduction
Class Roadmaps – components Introduction Visual Programming w/ Swing & AWT Lab 3 Swing Lab 4 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 Lab 6 IO introduction
Class Roadmaps – system Java Component Model: JavaBeans Case Study: A Drawing Pad Lab 7 Create Persistence: JDBC Component-based Development Lab 10 JDBC Lab 8 Use Design Patterns I & II Distributed Apps: JSP Lab 9 Patterns Lab 11 JSP introduction
Score Breakdown • Tests 400 2@200 pts each • Labs & case study 250 • Assignments & quizzes 150assignments 4~6 @ 20~30 pts each • Project 200 design/documentation 100 coding & testing 50 system demo & presentation 50 introduction
OO Processes • What’s the difference?Different mindset determines differentactivities 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 introduction
Micro Process Identifying classes and objects specifying class interfaces & impl’s Identifying class & object semantics Identifying class & object relationships introduction
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) introduction
OO Development Activities • Conceptualization • OO analysis & modeling • OO design • Implementation • Maintenance introduction
System Development- A Practical View Ideas High-up in the air Conceptualization Needs statement Analysis C-req’ts Functional spec (D-req’ts) Design Prototypes Design docs Implementation Solid ground System under dev. System in production introduction
The Unified Process • Real distinguishing aspects • Use-case driven • Architecture-centric • Iterative and incremental • Key practices • 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
The Unified Process • Workflows • Business modeling • Requirements • Analysis & design • Implementation • Testing • Deployment • Configuration management • Project management • Environment introduction
The Unified Process • Major phases • 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
Spiral Development Product: requirements specifications Product:class models + Step n: Analyze requirements Step n+1: Design complete targeted requirements Step n+2: Implement Step n+3: Test Product: code + Product: test results + introduction
RUP – activities vs. phases Inception Elaboration Construction Transition Prelim. iterations Iter. #1 Iter. #n Iter. #n+1 Iter. #m Iter. #m+1 Iter. #k .. ….. ….. Requirements Analysis Amount of effort expended on the requirements phase during the first Construction iteration Design Implemen- tation Test introduction
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 introduction
Summary • Desired qualities of software systems • Iterative object-oriented development process • Description • Advantages over the waterfall model • RUP • Phases and workflows introduction
Announcements • We will be meeting in lab 200 starting next week • Useful links • 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