Software engineering: theory and application
С открытой датой
Описание мероприятияЯзык обучения: английский
This course covers the methods, values, attitudes and techniques in software systems. It provides an understanding of the need for rigour, and enables students to select and apply a relevant methodological approach to the development of well designed and documented systems.
The main aims of this course are to:
- introduce students to the overarching concerns of software engineering practice
- provide an understanding of the various processes software engineers may employ in developing software
- develop an understanding of the tools and techniques employed in contemporary software engineering
- provide students with an experience of the way techniques are applied in practice (this is achieved through the individual project work)
- develop the capacity to identify relevant approaches to software engineering.
This course is assessed by a three-hour unseen written examination and coursework. See ‘Coursework and assessment’ overleaf.
Section 1: Software Engineering Process
- The changing pressures on software engineering practices: History of the field, definition of software, the software crisis.
- The Process for Developing Software and its importance
- The Capability Maturity Model
- The traditional software engineering process: The lifecycle model, evolutionary software development, incremental software development, spiral model. Prototyping
- Rapid software development
- Internet speed web based application development
- End-user development.
- Agile methods
- Extreme programming
Introduction to Structured vs. object oriented paradigms.
Specifying requirements and design (both structured and object oriented)
- Structured approaches: ER diagram, Data flow diagrams, Data dictionary
- OO approach (Using UML): Use-case diagrams, Class diagrams, Object sequence diagrams, State-chart diagrams
Features of good design
Coding and configuration management
Implementation and testing (both structured and object oriented)
- Choice of programming languages and techniques
- Test planning
- White-box and black-box testing
- Testing automation
Maintenance and software evolution
- Systems re-engineering for Legacy systems
- Reasons for reuse.
- Concept reuse – patterns, configurable
- systems products and program generators.
- Component-based software engineering
Computer Aided Software Engineering (CASE) Tools.
Documentation and Help Systems.
Project management in software engineering.
Documentation and help systems.
Managing Software Engineering Projects.
Coursework and assessment The examination will be three hours and consist of seven questions of which students must answer four. This will contribute 60% to the overall mark.
Students will undertake a project for the remaining 40% of marks. This will require them to review a software engineering approach or technique, apply this to a real problem and finally reflect on the experience. The project will require them to write a short essay describing the approach they are intending to apply and its relevance to the problem chosen. They will then present an account of how the approach was applied in practice. This should include the relevant documentary material required for the chosen approach (e.g. if the Rational Unified Process is chosen UML diagrams and various documents should be included). Finally they will need to complete a two page pro forma in which they will reflect on the practice of developing the system from the approach chosen. This should include lessons learnt and critical reflections on the process. A bibliography must also be provided demonstrating reading beyond the core textbooks.
Students are not required to produce programming code, but rather are assessed on their attempt to apply software engineering techniques and principles in practice. The focus is not on the produced system but on the quality of the process undertaken, the coherence of the documents presented and how successful the documents would be in developing a software system. Clearly however, for some students programming will be an integral part of this exercise.
At the end of this course and having completed the essential reading and activities students should be able to:
- describe the expectations, pressures and problems faced in developing software and the need for processes, tools, techniques and approaches
- outline the underlying processes of software engineering and critically assess relevant approaches
- analyse, design, test and maintain software systems and document these actions correctly
Требования к поступающим:
If taken as part of a BSc degree, courses which must be passed before this course may be attempted:
- IS2062 Information systems development and management and
- IS2138 Information and communication technologies: principles and perspectives.