Software Engineering
Subject Code: ECP4156
Aim of Subject: To provide the students with a understanding of theoretical and practical foundation of software engineering.
Learning Outcome of Subject: At the completion of the subject, students should be able to :
  • Explain the software development life cycle.
  • Endentify the difference between software engineering and system engineering.
  • Explain the importance of requirements and specification of a project.
  • Organize and specify requirements in a software project.
  • Explain the basic concept in software design.
  • Apply testing, assessing and recovering of software errors.
  • Manage and monitor project cost, schedule and quality.
Programme Outcomes:
  • Ability to acquire and apply fundamental principles of science and engineering.(50%)
  • Capability to communicate effectively.(10%)
  • Acquisition of technical competence in specialised areas of engineering discipline.(10%)
  • Ability to identify, formulate and model problems and find engineering solutions based on a systems approach.(10%)
  • Ability to conduct investigation and research on engineering problems in a chosen fields of study.(5%)
  • Understanding of the importance of sustainability and cost-effectiveness in design and development of engineering solutions.(5%)
  • Understanding and commitment to professional and ethical responsibilities.(10%)
Assessment Scheme:
  • Tutorial / Assignment - group assignment,focus group discussion at tutorial,to enhance understanding of basic concepts in lecture (30%)
  • Test/Quiz - written exam(10%)
  • Final Exam - written exam(60%)
Teaching and Learning Activities: 45 hours (lectures and tutorials)
Credit Hours: 3
Pre-Requisite: ECP1026: Algorithm and Data Structure
  • Roger S. Pressman, “Software Engineering: A Practitioner’s Approach”, 7th ed., McGraw Hill, 2009. (Textbook)
  • Ivan Jacobson, “Software Engineering”, Addision Wesley, 1992
  • Andrew Topper et. Al., “Structure Methods: Merging Models, Techniques and CASE”, McGraw Hill, 1992
  • Ian Sommerville, “Software Engineering”, 4th ed., Addision Wesley, 1992

Subject Contents

  • Introduction

  • Principles of software engineering. Software life cycle. Project management. Computer based system engineering.
  • Requirements and Specification

  • Analysis, definition, specification, software prototyping, formal specification, algebraic specification and model-based specification.
  • Software Design

  • Architectural design. Object-oriented design. Function-oriented design. Real-time system design. User interface design. Dependable Systems. Reliability and reusability. Safety-critical consideration. Good programming practice. Computer-aided Software Engineering (CASE)
  • Verification and Validation

  • Validation and testing. Problems of assessing and quantifying the system reliability. Test case and test data design.
  • Management

  • People and organization issues. Cost estimation. Quality management. Process improvement. Maintenance, configuration and re-engineering of software.