Software Engineering
Revised: August 2018
Course Description
The course will encompass rigorous approach to software engineering of software including
the software development lifecycle, the Unified Modeling Language (UML), requirements
specification, systems analysis, implementation, user interface design, testing, design
patterns and change management. This will be achieved by utilizing the Java programming
language for the specification, design, development, test and review of a long running
project in small development teams. Many of these soft skills relating to software
engineering cannot be obtained by programming alone. Therefore the aim is not only
to provide software development experience but also to provide an accurate simulation
working in small customer focused development teams under the supervision of manager.
Prerequisite & Notes
Objectives
- Appreciate the need for each of the stages of the software development lifecycle.
- Understand the real world 'in practice' implications and application of the SDLC.
- Gain applied skill in specifying, implementing, and testing a non-trivial software
project in small development teams.
- Learn and apply the Unified Modeling Language (UML) to a concrete programming problem.
- Build an application of significant size utilizing object oriented design patterns.
- Develop skill in designing user interfaces for modern GUI based computing systems.
- Design and put into practice test plans and unit tests to validate a software engineering
work product.
- Learn the implications of co-dependence when working on small to medium sized projects
in teams.
Text
Bernd Bruegge and Allen H. Dutoit, Object-Oriented Software Engineering Using UML, Patterns, and Java, Third Edition, Prentice Hall, 2010.
Grading Procedure
Grading procedures and factors influencing course grade are left to the discretion
of individual instructors, subject to general university policy.
Attendance Policy
Attendance policy is left to the discretion of individual instructors, subject to
general university policy.
Course Outline
- Background – What, and why, core concepts, and activities.
- Modeling techniques via the Unified Modeling Language (UML) including: use cases,
class interaction, state machines, and activity diagrams.
- Project organization, communication and management.
- Designing complex systems including: requirements gathering, systems analysis, and
design.
- Designing object oriented systems using tried and tested patterns and well defined
interfaces.
- Change management, version control, and testing.
- Software Development models and approaches (time permitting)