2D1385 - Course Objectives.
The aim of the course is to assist the student
in understanding the theory of software engineering, and to apply these theoretical principles
to a group software development project.
This understanding means that after the course you should be able to:
- Perform an object-oriented analysis of an
informal text-based software requirements document, identifying ambiguities,
omissions and inconsistencies; translate such a document into
object-oriented requirements using a Noun/Verb/Relational-Phrase methodology, and
construct a data dictionary.
You should be able to translate the information contained in a data dictionary
into a UML class diagram which accurately models the same information, including aggregation, inheritance
and multiplicity .
You should be able to draw object diagrams which correctly instantiate a class diagram
under different data constraints. You should be able to abstract information from one or more object diagrams
to derive a class diagram.
You should be able to critically analyse a short description of a software engineering project and an IT company's business model, and based on this analysis you should be able to recommend a software lifecycle model that is appropriate to the company and the project .
You should be able to critically analyse a short description of a software engineering project, and based on this analysis you should be able to recommend a global software architecture and small scale
software patterns that are appropriate to the project.
You should be able to design and understand language independent data models,
based on XML, that can be used to define data interchange standards between software systems,
databases, files and communication
protocols. You should understand the relationship between data models based on UML
class diagrams and DTD data models,
so that you can convert between the two. This understanding must also extend to UML object diagrams
and XML data files, so that again you can convert between the two.
You should understand a variety of advanced Java programming features, including
Swing GUI components, exceptions, network programming and concurrency, and be able to apply these to
small practical exercises arising from lab work.