COM 401 Software Engineering Lecture Overview Object-Oriented Software Engineering: Using UML, Patterns, Java, and Software Development Processes Prof. Dr. Halûk Gümüşkaya haluk.gumuskaya@gediz.edu.tr haluk@gumuskaya.com http://www.gumuskaya.com Computer Engineering Department Tuesday, October 09, 2012 1 2 Welcome to Software Engineering! In this course you will be introduced to how to conquer real complex and changing software systems. You will learn modern object oriented analysis, design, and implementation techniques using UML, Design Patterns, Java and Software Development Processes to develop a complex software project with a small team having limited resources (qualified developers, time) and some people related problems. Why is Software Development Difficult? The problem domain (also called application domain) is difficult The solution domain is difficult The development process is difficult to manage Software offers extreme flexibility Software is a discrete system Continuous systems have no hidden surprises Discrete systems can have hidden surprises! (Parnas) David Lorge Parnas is an early pioneer in software engineering who developed the concepts of modularity and information hiding in systems which are the foundation of object oriented methodologies. 3 4
1. Course Overview: Course Information Today 2. Introduction to Software Engineering: A quick overview of the course: (Why: see the big picture, getting motivation and mentally prepared for the course): What is Software Engineering? Modeling and Model Driven Development, UML, Design Patterns, Software Development Phases, Software Process (Methodology), Software Development using UML, Design Patterns and Processes 5 Course Overview 6 Course Description An overview of software engineering, software life cycle, and methodologies. Modeling with UML and design patterns, project management and software development, team organization, requirements elicitation and analysis, system design, object design, software testing. Software engineering concepts are realized on a nontrivial team design project in which a group of students implements a system from its specification and design using a UML modeling and implementation tool. 7 Course Description This course introduces the essential aspects of softwareengineering from an object-oriented point of view. The topics covered include modeling with UML, introduction to design patterns, project management and software development processes, requirements elicitation and analysis, system design, object design, testing, rational and configuration management, software life cycle, and methodologies. The Unified Modeling Language (UML) and Design Patterns are used for the analysis and design work. The software engineering concepts are realized in Java. Particular emphasis is on a team project in which a group of students implement a system from its specification. Students are expected to complete and report assignments and a nontrivial design project developed in Java using a UML design tool. 8
Objectives of the Course Appreciate Software Engineering Principles: Methodologies Process models Description and modeling techniques System analysis - Requirements engineering System design Implementation: Principles of system development Build complex software systems in the context of frequent change Understand how to produce a high quality software system within time, bugget and scope (OTOBOS) while dealing with complexity and change. 9 10 Objectives of the Course Acquire technical knowledge (main emphasis) Acquire managerial knowledge Learn and Apply: Acquire Technical Knowledge System Modeling and Model Driven Development UML Design Patterns and Frameworks How to use CASE Tools Enterprise Architect, Rational Rhapsody,... Different modeling methods: Use Case modeling, Object Modeling, Dynamic Modeling, Issue Modeling,... Practice the application of principles of object-oriented software development through the course team project Start reading some technical documents and papers on software engineering 11 12
Acquire Managerial Knowledge Learn and Apply: The basics of software project management How to manage with a software lifecycle, development phases and processes Be able to capture software development knowledge (Rationale Management) Manage change: Configuration Management Learn the basic methodologies Traditional software development Agile methods. Develop teamwork and communication skills and techniques through the course team project How to prepare SE documents, like SPMP, RAD, SAD,... 13 14 Lecture Slides and Readings Required Object-Oriented Software Engineering: Conquering Complex and Changing Systems, Using UML, Patterns, and Java, 3rd Ed., B. Bruegge, A. H. Dutoit, Prentice-Hall, 2010. Practical Software Engineering: A Case Study Approach, L. Maciaszek, B. L. Liong, Addison Wesley, 864 pages, 2004. These two books tell you how to do software engineering Recommended Requirements Analysis and Systems Design, 3rd Edition, L. Maciaszek, Addison-Wesley, 656 pages, 2007. Applying UML and Patterns: An Introduction to Object-Oriented Analysis and Design and Iterative Development, Craig Larman, Prentice Hall, 2004. UML for Java Programmers, Robert C. Martin, Prentice Hall, 288 pages, 2003. Lecture Slides This course is based on the slides of many text books and my slides. You can download the lecture slides presented in the class after (unfortunately) the lecture from the course s web site. Readings Some readings will be posted on the course web site. Depending on your needs, these will be highlighted, and assigned if needed. 15 16
Contents of the Books: OOSE I. GETTING STARTED 1. Introduction to Software Engineering 2. Modeling with UML 3. Project Organization and Communication II. DEALING WITH COMPLEXITY 4. Requirements Elicitation 5. Analysis 6. System Design: Decomposing the System 7. System Design: Addressing Design Goals 17 8. Object Design: Reusing Pattern Solutions 9. Object Design: Specifying Interfaces 10. Mapping Models to Code 11. Testing 18 Contents of the Books: OOSE III. MANAGING CHANGE 12. Rationale Management 13. Configuration Management 14. Project Management 15. Software Life Cycle 16. Methodologies: Putting It All Together Contents of the Books: PSE Part A - Software Projects: Software lifecycle, modeling languages, engineering tools, project planning, and process management. The next three parts (B, C, and D) introduce the Case-Study, minicases and examples. The discussion in these three parts concentrates on the methods, techniques, processes, and development environments of software engineering. We will use some of the chapters starting from Part B: Part B - From Requirements via Architectural Design to Software Release Part C - Software Refactoring and User Interface Development Part D - Data Engineering and Business Components 19 20
Lecture Schedule (tentative) Week Topics Covered Projects Calendar and Artifacts 1 Course information, Introduction to Software Engineering (Chp 1) Background for Projects: Tools 2 Modeling with UML (Chp 2) UML 3 Introduction to Design Patterns UML and Introduction to Design Patterns 4 Project Organization and Communication (Chp 3) Project Organization and Management 5 Project Management and Introduction to Processes (Chp 14) Software Development Processes 6 Requirements Elicitation (Chp 4) Projects Start, Project Proposal 7 Requirements Analysis (Chp 5) 8 System Design I (Chp 6) 9 System Design II (Chp 7) Midterm Exam 10 Object Design I (Chp 8) Requirements Analysis Document (RAD) Software Project Management Plan (SPMP) System Architecture Document (SAD) Iterative Development Process Starts 11 Object Design II and Mapping Models to Code (Chp 9 and Chp 10) Return updated SAD Code and Design Review 1 12 Testing (Chp 11) Test Document 13 Rationale and Configuration Management (Chp 12 and Chp 13) Code and Design Review 3 14 Software Life Cycle (Chp 15) User Manual 15 Methodologies: Putting It All Together (Chp 16) Project Demonstrations and Evaluation 21 22 Basic Requirement: Proficiency in OO Programming You are proficient in an OO programming language (Java), but you have no experience in analysis or design of a system. You want to learn more about the technical aspects of analysis and design of complex software systems. But, in addition to proficiency in a programming language, you need more for real-life software engineering in real life projects... 23 24
Course Requirements and Assumptions Requirements: COM 401 is an advanced undergraduate course. We will be covering topics from a number of other courses: COM 102 Object Oriented Programming (Java), COM 201 Data Structures, COM 202 Algorithms, COM 303 Advanced Programming courses. It does require a high level of Java programming and good personal relations and management skills. Assumptions: You like to spent long hours with computer working on assignments and projects. You do your own assignments by yourself (if the assignment will be done individually) and like to work as a team and participate in the project actively (if the assignment is a team project). Bacground Needed for Software Engineering in Real Life Projects Object Oriented Analysis/Design/Programming Data Structures and Algorithms Database Programming Internet Programming (server side programming: HTML/XML, scripting, Servlets/JSP/JSF, PHP/ASP, Web/Application Servers, J2EE/.NET technologies, Object Relational Mapping techniques,...) Network Programming (TCP/UDP Socket Programming, Concurrent Programming, Communication Models-C/S, P2P, MOM, Multicasting, Distributed Objects-RMI/CORBA/DCOM/EJB, Web Services, Cloud Computing,...) Multimedia Networking (RTP, RTSP, RTCP, SIP,...) Computer Networks (TCP/IP layers,...) GUI Programming 25 26 Tutorials and Assistant Support 3. Contents of the Book to be Covered 4. Lecture Schedule 5. Requirements and Assumptions 6. Text Books, Lecture Slides and Readings Short tutorials which will be given by your TA: Program development using Enterprise Architect/Eclipse, Rational Rhapsody, OO analysis/design using UML Project processes and documentation Obtain the following resources from your TA: Our development tools: UML, Design Patterns, and process based project samples 27 28
Project: Emphasis is on team-work Participate in collaborative design. Work as a member of a project team, assuming various roles. Create and follow a project and test plan. Create the full range of work products associated with a software product. Complete a project on time. You will produce many work products during the project. Start to arrange your project teams (3-4 students). Project web sites. Try to find good project examples based on UML on the Internet. 29 Course Activities and Grading Lectures: Theoretical foundations and background. Attendance: Important in order to learn the topics in a timely manner. Attendance will be forced by taking attendance. (and by making quizzes at random times) Quizzes: There will short quizzes at random times. We may not inform you about the quizzes. A quiz may be done at any time during a lecture period. (not this semester) Project: Learn how to apply them in practice. Lectures and Project work are interleaved. HW Assignment: 3-4 assignments Readings: You will be responsible for readings in the midterm and final exams, but I will not discuss these readings in the class. (not this semester) Tutorials: By your TA Grading (tentative) The grade for COM 401 is calculated as 15 % : Homework Assignments 20 % : Midterm (near the middle of the course) 35 % : Project 30 % : Final Exam (a comprehensive exam at the end of the course) 30 Course Web Site 3. Contents of the Book to be Covered 4. Lecture Schedule 5. Requirements and Assumptions 6. Text Books, Lecture Slides and Readings At http://www.gumuskaya.com, click the CENG 401 s link. This page provides dynamic information and materials for the lecture, as it becomes available; please check it at least once in a week. 31 32