MCT610 Software Engineering Module Handbook

Size: px
Start display at page:

Download "MCT610 Software Engineering Module Handbook"

Transcription

1 MCT610 Software Engineering Module Handbook Master of Science in Software Engineering & Database Technologies (MScSED) Diploma in Software Engineering v3.1 (11 th August 2014)

2 Table of Contents 1 Module Details Module Description Prerequisites Module Aims Required Text Module Assignments Module Grading 4 2 Module Syllabus Workshop One (Introduction to Software Engineering) Workshop Two (Software Process) Workshop Three (Requirements Definition) Workshop Four (Software Project Management) Workshop Five (Software Design) Workshop Six (SCM, Testing & Risk Management) Workshop Seven (Software Quality: Product and Process) Workshop Eight (Software Engineering Course Review and Final Exam) 8 3 Appendices References Information Sources 9 1

3 1 Module Details 1.1 Module Description MCT610, Software Engineering, will provide students with the fundamental software engineering knowledge necessary to develop and deliver quality software products. It emphasizes a holistic and process based approach to the development of software systems, encompassing technology, business, organizational and human concerns. The module discusses various software components (technology) and the diverse issues impacting their development (process, project, people) and quality. Fundamental software process, project management, and product development skills are developed in this module. The challenges of successfully completing software development projects will be addressed practically, empirically, and theoretically. Upon successful completion, students will have a much greater understanding of software systems development from many perspectives. This understanding, combined with the practical product, process, and project management techniques learned, will equip the student to further develop their knowledge and skills in the field of software systems development both educationally and professionally. Process V-model (heavy) XP/Scrum (light) Project Management Product Requirements Design Testing People Quality 1.2 Prerequisites None 2

4 1.3 Module Aims Evaluate the successes and failures of the Software industry. Define Software Engineering. Evaluate the importance of software engineering education and an agreed Code of Ethics for the future development of the discipline. Appreciate the importance of Requirements & Quality management as the bedrock principles of sound SE. Formulate criteria for the selection of an appropriate approach to software process for any given project. Compare prescriptive process approaches like the V-model to Agile approaches like XP/Scrum. Introduce the module multi-week project. Select an appropriate approach and model an unambiguous, prioritized set of requirements for a software system. Compare V-model and Agile approaches to requirements gathering and modelling. Ensure that requirements are valid and testable. Initiate and scope a software project. Select appropriate approaches to estimation of effort in software projects. Schedule project tasks. Analyze approaches to managing people and teams in software projects. Outline the evolution of analysis and design approaches from Structured through OO & UML. Create a high level UML design for a case study from a requirements model. Evaluate the usefulness of Design Patterns. Evaluate approaches to Software Configuration Management (SCM) and Change Control. Design a test strategy for a software project. Design a Risk Management & Mitigation strategy for a project. Evaluate a selection of outputs and approaches from previous weeks against an appropriate CMMI level. Make recommendations for improving the case study product output and process quality. 3

5 1.4 Required Text Selected chapters and sections from the following text will be presented as part of the core content of this module: Sommerville, I. (2011) Software Engineering (9th ed.). Boston, MA: Addison-Wesley (Pearson Education). Companion website: Supplementary textbook (recommended but not required): Endres and Rombach (2003). A Handbook of Software and Systems Engineering. 1.5 Module Assessment Details of module assignments and a sample final examination are detailed fully in the MCT610 Facilitator Guide. Student assessment will take the form of: Weekly assignments which build into a complete project Participation in the weekly forum discussions A final exam consisting of both practical software engineering tasks and theoretical questions 1.6 Module Grading The balance of these marks reflects overall degree requirements and specific workshop assignments/labs within this module. Assessment Weight Workshop Forum participation 20% 1 to 7 Weekly assessments which build into a 50% 1 to 7 project Final exam 30% 8 Total 100% 4

6 2 Module Syllabus 2.1 Workshop One (Introduction to Software Engineering) Discuss the progress that has been made by the software industry in its short history Describe the Software Crisis Identify the common reasons why software fails Reflect on the rate and nature of software failure in your own professional experience Define the term Software Engineering Identify the fundamental elements of software engineering Describe the changes in software development in the past two decades Define SWEBOK and SEEK and how they categorize the knowledge requirements of software engineers Distinguish between software engineering licensing and certification Evaluate relevant Professional Development opportunities & resources Define Code of Ethics Outline the main components of the IEEE/ACM Code of Ethics for Software Engineers Reflect on the role of ethics at personal, professional and industry levels 2.2 Workshop Two (Software Process) Define Software Process Identify the generic framework activities in every software process Describe the Prescriptive Process Models Evaluate when Prescriptive models are appropriate Describe the Agile Process Models Evaluate when Agile models are appropriate 5

7 Choose a process approach 2.3 Workshop Three (Requirements Definition) Define what is meant by the term Software Requirements Evaluate the importance of requirements definition to software project success Compare and contrast V-model vs Agile techniques for requirements elicitation Discuss prioritization, negotiation and ensuring quality in requirements Modeling Requirements for a software project Create Use Cases for a Software Project Create Test Cases to validate Use Cases 2.4 Workshop Four (Software Project Management) Define what is meant by the term Software Project Management and evaluate its importance in software projects Analyze the importance of PM to software projects Create a Project Plan Define what is meant by the term Estimation Evaluate a number of Estimation techniques Choosing the most appropriate Estimation technique 2.5 Workshop Five (Software Design) 6

8 Discuss the importance of the design phase in software product development Describe what is meant by the Design Process Outline the elements of software product design Define a software product Explain the purpose of software modeling Outline the evolution of analysis and design approaches Describe what is meant by Design Quality Explain the importance of reuse in software development Discuss the use of patterns for the design of a system and its components Outline and explain the different types of framework Display an understanding of the various design laws and principles 2.6 Workshop Six (SCM, Testing & Risk Management) Describe the purposes of software configuration management Outline what software configuration items and software baselines are Discuss the different software configuration activities that take place Explain the software configuration management process Describe the differences between static and dynamic testing Explain the purposes of test planning and test strategy Outline the different types of testing Discuss the process of testing and debugging and explain what a bug is Describe the risk management process Explain what a risk is and why we should manage risks Discuss what a RMMM plan is Create your own RMMM plan 7

9 2.7 Workshop Seven (Software Quality: Product and Process) Define Quality in general terms and particularly in relation to software engineering Evaluate how software quality is achieved Analyze the importance of Quality Control and Quality Assurance Describe how software quality can be modeled Explain Software quality process and software process improvement Analyze a range of quality / process improvement frameworks e.g. CMMI, ISO Compare and contrast between CMMI and ISO Workshop Eight (Software Engineering Course Review and Final Exam) Review content covered in the previous seven weeks Integrate this Software Engineering content with your personal experience and your other MScSED modules Position the academic content covered in an industrial context where appropriate 8

10 3 Appendices 3.1 References Pfleeger, Shari Lawrence, and Atlee, Joanne: Software Engineering: Theory and Practice Third Edition. Please list. Pearson International Edition, ISBN: Boehm, Barry, and Turner, Richard: Balancing Agility and Discipline: A Guide for the Perplexed. Addison Wesley ISBN: Information Sources Web Sites: Software Engineering Institute: Project Management Institute: PRINCE 2 IEEE ACM 9