To provide an understanding of the challenges associated with the software life-cycle, focusing on the processes and techniques which promote the design of high quality software.
To instil an understanding of the concepts and benefits of rigorous design.
To equip participants with a broad understanding of software design methods and processes.
To equip participants with an in-depth knowledge of UML notation
To instil an understanding of design patterns and their value
To provide a broad understanding of verification and validation issues associated with software engineering.
To equip CS participants with an in-depth understanding of analysis techniques, i.e. static analysis and dynamic analysis.
To instil IS participants with a broad understanding of the information systems lifecycle, and an in-depth understanding of feasibility studies.
To provide participants with an understanding of software design challenges in the real-world via guest speakers from industry.
Motivations for design and the need for design processes and methodologies.
Software process models, e.g. waterfall model, Boehm's spiral model, evolutionary development, agile development.
Design methods and processes, i.e. architectural design, function-oriented design, object-oriented design, component-based design.
Object-oriented design using UML notation & CRC cards: use case diagrams, noun verb analysis, class diagrams, sequence diagrams, communication diagrams, state machine diagrams, activity diagrams.
An introduction to patterns and anti-patterns
Software testing and analysis: a strategy for dynamic testing; test case design; assertion based testing; functional testing; structural testing; hybrid testing; auto unit testing; reviews & inspections; metrics; flow analysis; formal methods (CS stream)
Open source vs closed source and means of assessing which is appropriate to a project – Boehm’s ADA and other methods
Documentation practice and standards in software engineering and information systems
Information systems lifecycle focussing on feasibility studies. Evaluating potential projects by considering operational, technical, schedule and economic feasibility. Cost/benefit analysis. (IS stream).
Understanding, Knowledge and Subject-Specific Skills
To demonstrate a critical understanding of modern software engineering practice and be able to evaluate the strengths and weaknesses of current software engineering methods and technique
To be able to choose appropriate metrics to measure software quality and quantity in a modern software engineering environment
To understand and demonstrate object oriented design techniques, including the use of UML notation
Cognitive skills, Core skills and Professional Awareness
Take responsibility for own work and exhibit critical reflection on development process. (PDP)
To be able to use appropriate methods and standards for practice and documentation in software engineering and information systems.
Demonstrate evidence based approaches to problem solving.
Use a range of numerical and graphical skills in evaluating and communicating ideas, as well as measuring progress toward achieving goals.
Examination: (weighting – 100%)
Examination: (weighting – 100%)
Database Management Systems
F27DB2 Introduction to Database Systems or equivalent
To familiarise students with the principles of database management systems, to enable them to design and implement databases for specific applications and to integrate databases with application programs.
Database Design: data requirements, entity relationship diagrams, relational data model, integrity constraints, key constraints, types, integrity maintenance