Software engineering: theory and application IS3139

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.

Prerequisites

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
  • IS2138 Information and communication technologies: principles and perspectives.

Topics covered

This syllabus covers the methods, attitudes and values which underlie professional contemporary software systems development. The emphasis is on how to undertake formal software development through requirements specification, design and implementation, but within a broader understanding of software engineering practices.

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
  • Refactoring

The Practices of software engineering:

  • Introduction to Structured vs. object oriented paradigms. Acquiring requirements 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
  • Implementation
  • Maintenance and software evolution
  • Systems re-engineering for Legacy systems

Reuse:

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

Learning outcomes

If you complete the course successfully, you 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.

Assessment

Coursework and an unseen written examination (3 hrs).

Essential reading

  • Pressman, R.S. Software Engineering: A Practitioner’s Approach. Adapted by D. Ince. London: McGraw Hill.
  • Sommerville, I. Software Engineering. Wokingham: Addison Wesley.

Course information sheets

Download the course information sheets from the LSE website.