1
COM 401 Software Engineering
COM 401 Software Engineering
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 2
Lecture Overview
Object-Oriented Software Engineering:
Using UML, Patterns, Java, and
Software Development Processes
3
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.
4
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.
5
1. Course Overview:
Course Information
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
Today
6
1. Course Description
2. Objectives of the Course
3. Text Books, Lecture Slides and Readings 4. Contents of the Books to be Covered 5. Lecture Schedule
6. Requirements and Assumptions 7. Course Activities and Grading 8. Course Web Site
Course Overview
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.
Course Description
• This course introduces the essential aspects of software-engineering 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
9 1. Course Description
2. Objectives of the Course
3. Text Books, Lecture Slides and Readings 4. Contents of the Books to be Covered 5. Lecture Schedule
6. Requirements and Assumptions 7. Course Activities and Grading 8. Course Web Site
10
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.
11
Objectives of the Course
Acquire
technical knowledge (main emphasis)
Acquire
managerial knowledge
12
Acquire Technical Knowledge
Learn and Apply:
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
13
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, …
...
141. Course Description 2. Objectives of the Course
3. Text Books, Lecture Slides and Readings
4. Contents of the Books to be Covered
5. Lecture Schedule
6. Requirements and Assumptions 7. Course Activities and Grading 8. Course Web Site
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 and Readings
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.
17 1. Course Description
2. Objectives of the Course
3. Text Books, Lecture Slides and Readings
4. Contents of the Books to be Covered
5. Lecture Schedule
6. Requirements and Assumptions 7. Course Activities and Grading 8. Course Web Site
18
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 8. Object Design: Reusing Pattern Solutions 9. Object Design: Specifying Interfaces 10. Mapping Models to Code
11. Testing
19
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
20
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
21 1. Course Description
2. Objectives of the Course
3. Text Books, Lecture Slides and Readings 4. Contents of the Books to be Covered
5. Lecture Schedule
6. Requirements and Assumptions 7. Course Activities and Grading 8. Course Web Site
22
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) Requirements Analysis Document (RAD)
Software Project Management Plan (SPMP) 8 System Design I (Chp 6)
9 System Design II (Chp 7) Midterm Exam System Architecture Document (Iterative Development Process StartsSAD) 10 Object Design I (Chp 8)
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
1. Course Description 2. Objectives of the Course
3. Text Books, Lecture Slides and Readings 4. Contents of the Books to be Covered 5. Lecture Schedule
6. Requirements and Assumptions
7. Course Activities and Grading 8. Course Web Site
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 ...
25
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).
26
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 …
27 1. Course Description
2. Objectives of the Course
3. Contents of the Book to be Covered 4. Lecture Schedule
5. Requirements and Assumptions
6. Text Books, Lecture Slides and Readings
7. Course Activities and Grading
8. Course Web Site
28
Tutorials and Assistant Support
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: …
29
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.
30
• 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)
Course Activities and Grading
1. Course Description 2. Objectives of the Course
3. Contents of the Book to be Covered 4. Lecture Schedule
5. Requirements and Assumptions
6. Text Books, Lecture Slides and Readings 7. Course Activities and Grading
8. Course Web Site
• 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.