OMSE 500D: Principles of Software Engineering

Spring 2006 (online version)
Instructor: Kal Toth, ktoth@cs.pdx.edu

This course is an introduction to software engineering as practiced in industry, with emphasis on understanding the nature of software engineering, the software engineering process, and the problems and solutions manifest in real software development and modification projects. Different models of the software engineering process are compared and contrasted. Current best practices in software engineering and various approaches to software process improvement are presented.

You will study several software development models and processes applicable to large and small projects. Starting with the foundation concepts of the waterfall model, you will be introduced to incremental, evolutionary, and spiral development models.  Agile, adaptive and "extreme" development approaches will also be explored.  This course will cover the actual benefits of these models and processes as well as the problems that can arise. You will also study software process improvement and software tailoring and adaptation strategies practiced in industry.

This is the online version of the course.  You will be accessing course resources and participating in online discussion forums every week.  You will be provided instructions on how to access the course materials and related services before the first week of class. 

Intended Audience

This course is intended for software developers and software engineering managers wanting to enhance their knowledge and understanding of software engineering principles and best practices. 

Prerequisites

The chief prerequisite for the course is hands-on work experience in software development, in particular, software design, programming, and testing. 

Course Content

Upon completion of this course, each student should be able to:

·    Describe the nature of software engineering and problems typically encountered by software engineering organizations.

·    Discuss the various types of work activities that occur and the types of work products that are generated in each phase of the software lifecycle.

·    Explain the problems typically encountered in each type of software engineering activity and discuss current best practices for overcoming those problems.

·    Compare, contrast, select and adapt various software engineering process models, and explain the strengths and weaknesses of each one.

·    Understand and apply software development standards and processes including those for requirements, design, construction, testing, project management and quality assurance.

·    Understand software process improvement models and the importance to the profession of applying and improving one’s software engineering competencies.

The Instructor

Dr. Kal Toth is an Associate Professor in the Maseeh College of Engineering and Computer Science at Portland State University in Portland Oregon.  He is the Associate Director of the Oregon Master of Software Engineering (OMSE) program and is also teaching software engineering courses in this program.  Kal is conducting research in the field of information security.  He has over 25 years of industry experience with large, medium and small companies including Hughes Aircraft of Canada, CGI Group, Datalink Systems Corp, Intellitech Canada Ltd. and various Canadian federal government agencies (notably Defence, Transport, and Communications).  Kal has a Ph.D. in Computer Systems Engineering from Carleton University (Ottawa) and is a P.Eng. (British Columbia) with a software engineering designation.

Required Textbooks and Resources

Software Engineering (7th Ed), Ian Sommerville, Addison-Wesley Pub Co; ISBN: 0-321-21026-3

The Mythical Man-Month (Anniversary / 2nd Ed), Fred Brooks, Addison Wesley, ISBN 0-201-83595-9

·        Other papers and articles will be made available; typically they are provided on-line. 

Course Calendar: Topics

Session

 

 

Context and Foundations

1

Introduction: Context, Mythical Man-Month, Best and Work Practices

2

Software Processes, Process Improvement; Foundation Software Lifecycles + Examples

3

Adaptive, Agile and Extreme Processes; Personal and Team Processes

 

Managing the Software Process

4

People and Teams; Software Engineering Ethics

5

Software Project Management

6

Requirements Engineering

 

Engineering-in Quality

7

Architectural Design

8

Software Construction

9

Software Quality and Testing

10

Software Maintenance; Course Summary and Review

Workload Distribution

To succeed in this course, students are expected to devote 9-12 hours of study per week as follows:

·        Review the required textbooks, lecture notes and reference materials (5 hrs/week)

·        Participate in class discussions / prepare for assignments (5 hrs/week).

General Instructions

The material in each week builds upon the material covered in previous weeks; therefore, it is essential that you not fall behind in your work. You are expected to be “in class” for all sessions and on time.  Every week starts nominally on Monday mornings and ends the following Sunday evening.  However, you are encouraged to start reading for the subsequent week on Sundays.  Every week you are assigned readings that you must complete early as possible in the week so that you can contribute effectively to that week’s on-line discussions and get maximum benefit from them.  Each week the instructor will post the questions for the next week that you are expected to address and then discuss with your fellow students and the instructor.  If you fall behind, you may not be able to successfully complete the course.  The reading assignments and on-line discussions will require more time than you think. Always contact your professor as soon as possible if you need help or have any questions.

 

Evaluation and Grades

You are expected to complete the readings, including on-line lecture materials, and respond critically to the related questions that have been posted by the instructor.  You should endeavor to formulate a first posting that is logically organized, is as meaningful as possible, yet to the point. You are also expected to respond to the postings of at least two fellow students and engage in meaningful discussion with them.  The instructor will review the quality of your postings and the degree to which you have engaged in the on-line discussions. 

Grades will be allocated as follows:

[10 weekly discussions] x [10 points per week] = [100 points in total]

 

Participation Guidelines

Before classes start, you will be provided guidance on how to access and sign into our on-line learning system.  You will also be given guidance on how to participate in the on-line discussions. 

 

Policy on Student Collaboration and Academic Integrity

You are encouraged to discuss the course material and the assignments with other students, but all assigned work must be done by individually unless the course professor explicitly tells you otherwise. You are expected to read and review a document detailing the policy on academic integrity which will be posted on-line.  Please contact the professor if you have any doubts about the propriety of your course activities.