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:

  1. 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.

  2. 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 .

  3. 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.

  4. 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 .

  5. 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.

  6. 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.

  7. 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.