| ![[The University of Leicester]](http://www.le.ac.uk/corporateid/departmentresource/000066/unilogo.gif) |           Department of Mathematics & Computer Science         | 
|  | 
 Next: MC111 Logic and Discrete Structures
 Up: Year 1
 Previous: MC104 Algorithms and Data Structures
 
MC106 Software Engineering and Professional Practice
| Credits: 10 | Convenor: Dr S. J. Ambler | Semester: 2 | 
| Prerequisites: | essential: MC103 |  | 
| Assessment: | Continual assessment: 40% | Two hour exam in May/June: 60% | 
| Lectures: | 18 | Problem Classes: | 6 | 
| Tutorials: | none | Private Study: | 45 | 
| Labs: | none | Seminars: | none | 
| Project: | none | Other: | none | 
| Surgeries: | 6 | Total: | 75 | 
Explanation of Pre-requisites
  This module assumes that you have some feeling for the problems
  inherent in writing software and therefore some prior programming
  experience is required. In addition, it is beneficial if you are
  alert to current issues in software engineering as they occur and
  are reported in the news media.
 
Course Description
  By the late 1960's it had become very clear within the software and
  computing industries that there were major problems inherent in the
  construction of large software systems. Many projects were delayed,
  or never completed. Those that were completed were over budget.
  A large proportion of systems were found to be unsatisfactory in
  use: they were ``buggy'' and required constant maintenance to fix
  problems; they did not satisfy the needs of the actual users.
In this module we will be taking an introductory look at the many
  approaches that have been devised and developed to try to tackle
  these problems in the past 30 or more years, and trying to assess
  how successful they have been. These techniques have generally
  resulted in a more structured and controlled development lifecycle
  for software systems, and as a result the people involved have had
  to adopt a more professional attitude. The module examines what it
  means to be a professional in the software industry. 
Aims
  To provide an understanding of the problems and difficulties and
  issues associated with specifying, designing and building high
  quality large software systems. To discuss the management,
  professional and ethical issues of software development.
 
Objectives
- To gain a broad understanding of the development processes
    involved in producing a large software system;
- to be exposed to the typical problems inherent in large
    projects involving many people over extended periods of time;
- to be able to write clear and concise goals for projects,
    presenting the information in a well structured fashion suitable
    for measuring project progress;
- to be able to make reasoned choices among alternative
    development paths;
- to understand the need for quality assurance techniques, and
    gain the knowledge required to apply suitable strategies in simple 
    cases;
- to understand what ``professionalism'' means in the context of 
    the software industry;
- to be aware of the legal and ethical issues likely to affect
    every professional in the software industry.
  
Syllabus
Software development a brief history of software development; the
  problems of software development; the software development crisis; a
  solution -- software engineering.
The system development process developing large systems; the need
  for abstraction; the development process.
The system development cycle managing the development process;
  how software is produced; frameworks for system development.
Planning a software project describing project goals;
  evaluating project goals; choosing solutions to meet the
  project goals.
Quality assurance what is quality; the development cycle and QA;
  documentation requirements; validation and verification;
  reviews and inspections; measuring the development process.
Testing and maintenance testing the result; behavioural testing
  techniques; testing for quality.
The professional software engineer what is software
  engineering; professional practice; ethics; ensuring quality;
  standards and procedures; standards and procedures; tools for
  management.
 
Transferable Skills
- Improved analytical and problem solving skills.
- Improved ability to think and describe things abstractly.
- Emphasis on developing and presenting an argument.
- Research skills.
- Teamworking is required during problem classes.
  
Reading list
  Essential:
R. Pressman, 
  Software Engineering -- A Practitioner's Approach, European 4th
    edition, 
  McGraw Hill, 1994.
R. Ayres, 
  The Essence of Professional Issues in Computing, 
  Prentice Hall, 1999.
Background:
T. Gilb, 
  Principles of Software Engineering Management, 
  Addison-Wesley, 1988.
I. Sommerville, 
  Software Engineering, 5th edition, 
  Addison-Wesley, 1996.
F. Bott, A. Coleman, J. Eaton, D. Rowland, 
  Professional Issues in Software Engineering, 2nd Edition, 
  UCL Press, 1995.
R.G. Epstein, 
  The Case of the Killer Robot, 
  John Wiley and Sons, 1997.
 
Details of Assessment
  The coursework is divided into 3 (or more) exercises spread over the
  teaching semester. The first exercises concentrate on practical
  aspects of software projects, such as: specifying a project's goals
  clearly and concisely; evaluating possible solutions to a problem in
  order to choose the most cost effective; the application of
  validation and verification techniques. The final exercise requires
  students to research a topical professional issue and write an essay 
  on their findings.
 
 Next: MC111 Logic and Discrete Structures
 Up: Year 1
 Previous: MC104 Algorithms and Data Structures
Author: S. J. Ambler, tel: +44 (0)116 252 3884
Last updated: 2001-09-20
MCS Web Maintainer
  This document has been approved by the Head of Department.
© University of Leicester.