COM565: Software Engineering

Semester 1, Academic Year 2012/2013

Instructor

Dr Zumao Weng

Lecture/Lab Time

Tuesday, 9.15- 12.05/12.15-14.05

Location

Lecture MF023/Lab MG122

Module Specification

General Description

It is now widely recognized that the engineering of software systems has a pivotal role to play in the production of quality software systems which are produced on time, to budget, and to the correct level of quality. Indeed, the term Software Engineer has now replaced the term Programmer as the job description used in industry. This module will give the student a detailed understanding of many of the core and advanced topics within Software Engineering.

The aim of this module is to develop students?knowledge and capability in the theories, methods and tools required to build manage and evolve efficient, economic and effective software systems. To build upon the second year prerequisites and provide students with a critical awareness of the relationship between software engineering and systems design, quality management, process improvement, project and risk management, reliability and the ethical and legal dimensions of the subject. To provide the student with knowledge, understanding and experience in designing and implementing software solutions. To foster an understanding of the software engineering process, and the tools and technologies required to support this process. To engender an ability to operate in a proper professional and ethical framework.

 

Assignment 2 Marks

Recommended Reading List

R. Pressman, Software Engineering - A Practitioner’s Approach, 7th Ed., McGraw Hill, 2010

Leszek A. Maciaszek and Bruc Lee Liong, Practical Software Engineering: A Case Study Approach, Addison Wesley, 2005

I. Sommerville, Software Engineering, (9th ed.), Addison Wesley, 2010.

Bernd Bruegge, Allen H. Dutoit, Object-Oriented Software Engineering: Using UML, Patterns and Java, 3rd Edition, Prentice Hall, 2009; ISBN 0-13-606125-7

Indicative Reading List

Timothy C. Lethbridge and Robert Laganière, Object-Oriented Software Engineering: Practical Software Development using UML and Java, 2nd Ed., McGraw Hill, 2001

Mark Priestley, Practical Object-oriented Design with UML, McGraw-Hill, 2000

Steve C. McConnell, Code Complete: A Practical Handbook of Software Construction, Microsoft Press International, 1993

Simon Bennett, John Skelton, Ken Lunn, Schaums Outlines: UML, Schaum, 2001

P Stevens and R Pooley, Using UML ?Software Engineering with objects and components, Addison Wesley, 2000

Sinan Si Alhir, UML in a Nutshell, O’Reilly, 1998

Fowler, M. and Scott, K, UML Distilled, Addison Wesley, 1997

Meilir Page-Jones, Fundamentals of Object-oriented Design in UML, Addison Wesley, 2000

Ed Kit, Software Testing in the Real World, Addison Wesley, 1995

Leszek Maciaszek, Requirements Analysis and System Design, Addison Wesley, 2001

Suzanne Robertson, James Robertson, Mastering the Requirements Process, Addison Wesley, 1999

Stephen H. Kan, Metrics and Models in Software Quality Engineering, John Wiley and Sons,1995

Gerald Kotonya, Ian Somerville, Requirements Engineering, John Wiley and Sons, 1998

William Perry, Effective Methods for Software Testing, John Wiley and Sons, 1999

Karl E. Wiegers, Software Requirements, 1999

Shari Lawrence Pfleeger, Software Engineering: Theory and Practice, Prentice Hall, 2001

Ron Patton, Software Testing, Sams, 2001

Joseph Schmuller, Sams Teach Yourself UML in 24 Hours, Sams, 1999

Booch G, Object Oriented Analysis and Design, Benjamin-Cummings, 1994

Weekly Schedule

INTRODUCTION AND PROJECT PLANNING

 

Need for Software Engineering

Lab 1

25-Sept

 

Problems in software development

Ch1.ppt

Lab 1 Partial Solutions

25-Sept

 

What is software engineering?

Project Planning

 

Case Study

25-Sept

25-Sept

 

SOFTWARE PROCESS MANAGEMENT

 

Need for Software Process

 

 

02-Oct

 

Capability Maturity Model (CMM)

 

Lab 2

02-Oct

 

People Management

Ch2.ppt

Lab 2 Solutions

02-Oct

 

Project Communications

 

02-Oct

 

Risk Management

 

UML 2.0 in a Nutshell

02-Oct

 

Quality Management

 

02-Oct

 

REQUIREMENTS ENGINEERING

 

Requirements Engineering

 

 

09-Oct

 

Analysis, Definition, Specification

Ch3.ppt

Lab 3

09-Oct

 

Requirements document

OOAD_UML  

Lab 3 Solutions

09-Oct

 

Functional and Non-Functional Requirements

 

Assignment 1

09-Oct

 

UML - Use-cases

 

 

09-Oct

 

ANALYSIS/ DESIGN USING UML

 

Class Diagrams

Ch4.ppt

Lab 4

16-Oct

 

State Diagrams

Reference of CW1

Lab 4 Solutions

16-Oct

 

Sequence Diagrams

 

16-Oct

 

SOFTWARE DESIG PROCESS AND QUALITY

 

Principles of Design

 

 

23-Oct

 

Designing for reusability, adaptability and maintainability

Ch5.ppt

Lab 5

23-Oct

 

Design Quality

 

Lab 5 Solutions

23-Oct

 

Software Architecture

 

 

23-Oct

 

Software Design Process

 

 

23-Oct

 

Component-Level Design and User Interface Design

 

Component-level design

 

Lab 6

30-Oct

 

User Interface Design

Ch6.ppt

Lab 6 Solutions

30-Oct

 

VERIFICATION AND VALIDATION

 

Test Plans

 

 

06-Nov

 

Testing Methods

 

Lab 7

06-Nov

 

Test Strategies

Ch7.ppt updated!

Read R. Pressman’s book chapter 17-20

06-Nov

 

Software Inspection

 

06-Nov

 

Regression Testing

 

 

06-Nov

 

AGILE SOFTWARE DEVELOPMENT

 

Agile manifesto, process, principles

Assignment 2

13-Nov

 

Extreme programming

Adaptive and dynamic software development

Scrum

Feature driven development

Ch8.ppt

Lab8

13-Nov

 

Agile modelling

Lab 8 Solutions

13-Nov

 

Software Configuration Management and Product Metrics

 

Software configuration management

Ch9.ppt updated!

Lab 9

20-Nov

 

Software product metrics

Read R. Pressman’s book

Chapter 22-23

Lab 9 Solutions

20-Nov

 

Component-Based Software Engineering and Reuse

 

Component-based software engineering (CBSE)

Software reuse

Chapter 10

Lab 10

Lab 10 Solutions

27-Nov

27-Nov

 

Software Process Improvement and emerging trends in Software engineering

 

Software process improvement

 

Lab 11

04-Dec

 

 

CMM & CMMI

Chapter 11

 

 

 

Software engineering trends

Read Chapter 30,31

Lab 11 Solutions

04-Dec

 

Revision

 

Revision - concepts and questions

 

 

         11-Dec

 

 

 

Resources on the Web

 

 

The Generic Software Process


When you work to build a product or system, it's important to go through a series of predictable steps; a road map that helps you creating a timely, high quality result. The road map that you follow is called a 'software process.' The resources presented on this page address generic information about software engineering and the software process. The following topic categories are considered:

Generic Software Engineering Resources

General Process Information

Software Process Models—Generic Discussion

The Capability Maturity Model

Software Engineering Standards

Books