Lecture Overview. Object-Oriented Software Engineering: Using UML, Patterns, Java, and Software Development Processes. Prof. Dr.

Similar documents
IT3205: Fundamentals of Software Engineering (Compulsory)

Information systems modelling UML and service description languages

City University of Hong Kong Course Syllabus. offered by Department of Computer Science with effect from Semester A 2015/16

IT3203 Fundamentals of Software Engineering (Compulsory) BIT 2 nd YEAR SEMESTER 3

Course Computer Science Academic year 2012/2013 Subject Software Engineering II ECTS 6

Chapter 1: Introduction

Core Issues Affecting Software Architecture in Enterprise Projects

CS4507 Advanced Software Engineering

Masters of Science in Software & Information Systems

CS 4240: Principles of Software Design. Course Introduction. Tom Horton

SYLLABUS CIS 3660: OBJECT-ORIENTED SYSTEM ANALYSIS AND DESIGN SPRING 2010

Chapter 3 Chapter 3 Service-Oriented Computing and SOA Lecture Note

Chapter 13 Configuration Management

Chapter 1: Introduction

Chapter 13 Configuration Management

IES - Introduction to Software Engineering

NEW YORK CITY COLLEGE OF TECHNOLOGY/CUNY Computer Systems Technology Department

Using Simulation to teach project management skills. Dr. Alain April, ÉTS Montréal

City University of Hong Kong Course Syllabus. offered by Department of Computer Science with effect from Semester A 2015/16

Title: Topic 3 Software process models (Topic03 Slide 1).

In this Lecture you will Learn: Development Process. Unified Software Development Process. Best Practice

Tele3119 Trusted Networks Course Outline 2013

Software Engineering

CDA Introduction to Computer Networks

Software Engineering

!! " "!! # $ % " & ' $ % (! %) * +, $ ( ) ' " -

Real-World Object-Oriented Design Experience for Computer Science Students

Tool Support for Software Variability Management and Product Derivation in Software Product Lines

Data Encryption and Network Security

An Iterative and Agile Process Model for Teaching Software Engineering

Canisius College Computer Science Department Computer Programming for Science CSC107 & CSC107L Fall 2014

Foundations of Model-Driven Software Engineering

Software Lifecycles Models

BMI 540: Computer Science with Java Programming Oregon Health & Science University

A LOOK BACK: UNDERGRADUATE COMPUTER SCIENCE EDUCATION: A NEW CURRICULUM PHILOSOPHY & OVERVIEW

CSE 3231 (Approved): Software Engineering Techniques

Human Aspects of Software Engineering: The Case of Extreme Programming

Chapter 1 The Systems Development Environment

Course: ISYS 4373 Application Development with Java Prerequisite: ISYS 3293

The Software Process. The Unified Process (Cont.) The Unified Process (Cont.)

Syllabus CIS 3630: Management Information Systems Spring 2009

Chap 1. Introduction to Software Architecture

LONDON SCHOOL OF COMMERCE. Programme Specification for the. Cardiff Metropolitan University. BSc (Hons) in Computing

Organization. Introduction to Software Engineering

Syllabus MBA 501 Managerial Economics Fall 2011

Master Degree Program in Computer Science (CS)

CSci 4211: Data Communications and Computer Networks. Time: Tuesday and Thursday 8:15 to 9:30 am Location: Phyics 170 Spring 2015, 3 Credits

CSE532 Theory of Database Systems Course Information. CSE 532, Theory of Database Systems Stony Brook University

San José State University CS160, Software Engineering, Sections 1, 2, and 4, Fall, 2015

Scope of this Course. Database System Environment. CSC 440 Database Management Systems Section 1

Syllabus INFO-UB Design and Development of Web and Mobile Applications (Especially for Start Ups)

CPSC 4550 Computer Networks Fall 2012, Section 0

Computer Engineering ECSE-322B

COURSE OUTLINE. MBA 560 Small Business Management Fall 2015

SOA and BPO SOA orchestration with flow. Jason Huggins Subject Matter Expert - Uniface

Course Description. Prerequisites. CS-119/119L, Section 0137/0138 Course Syllabus Program Design & Development - Fall 2015

Chapter 11, Testing, Part 2: Integration and System Testing

CS 425 Software Engineering. Course Syllabus

I219 Software Design Methodology

COURSE PROFILE. Business Intelligence MIS531 Fall

A Software Engineering Senior Design Project Inherited From a Partially Implemented Software Engineering Class Project

Getting Started in Moodle

IINF 202 Introduction to Data and Databases (Spring 2012)

[2006] IEEE. Reprinted, with permission, from [M. Ye and K. Sandrasegaran, Teaching about Firewall Concepts using the inetwork Simulator, Information

COURSE PROFILE. Local Credits. Theory+PS+Lab (hour/week) ECTS. Course Name Code Semester Term. Accounting Information Systems MAN552T I I 3 3 6

Geography 676 Web Spatial Database Development and Programming

CS 450/650 Fundamentals of Integrated Computer Security

CS 425 Software Engineering

Agile Techniques for Object Databases

Department of Computer & Information Sciences. CSCI-445: Computer and Network Security Syllabus

Software development life cycle. Software Engineering - II ITNP92 - Object Oriented Software Design. Requirements. Requirements. Dr Andrea Bracciali

Keywords Aspect-Oriented Modeling, Rule-based graph transformations, Aspect, pointcuts, crosscutting concerns.

The Road in Software Engineering Education from Structured Programming to Object- Oriented Modelling

CSC 314: Operating Systems Spring 2005

DEGREE CURRICULUM SOFTWARE ARCHITECTURES Degree in Computer Engineering. Teaching staff: GIL IRANZO, ROSA MARIA GARCIA GONZALEZ, ROBERTO

Digital Industries Trailblazer Apprenticeship. Software Developer - Occupational Brief

DEGREE CURRICULUM COMPUTER GRAPHICS AND MULTIMEDIA Master's Degree in Informatics Enginneering

Course Design Document: IS429: Cloud Computing and SaaS Solutions. Version 1.0

Advanced Database Management MISM Course F A Fall 2014

The Norwegian School of Information Technology

COURSE PROFILE. IT323 Fall

Software Engineering/Courses Description Introduction to Software Engineering Credit Hours: 3 Prerequisite: (Computer Programming 2).

Software Development Life Cycle (SDLC)

The Role of the Software Architect

Computer and Information Sciences

IT4304 Rapid Software Development (Optional)

CMSC Fundamentals of Computer Programming II (C++)

SOFTWARE ENGINEERING TEAM STUDIOS. Jaime Niño Computer Science, University of New Orleans New Orleans, LA

Network Security Course Specifications

Transcription:

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