Course Description
The course is designed to present software engineering concepts and principles in parallel with the software development life cycle. The first unit will introduce you to Software Engineering, giving you a definition of this body of knowledge, as well as a discussion of the main Methodologies of Software Engineering. You will then learn about the Software Development Life Cycle (SDLC) followed by Software Modeling using Unified Modeling Language (UML), a standardized general-purpose modeling language used to create visual models of object-oriented software. You will go on to learn about three major phases of SDLC including Software Requirements and Analysis, Software Design, and Software Testing. You will also learn about Project Management for the purpose of delivering timely and high-quality software. By the time the course is complete, you will master software engineering concepts, principles and essential processes of SDLC; you will demonstrate this knowledge by creating UML artifacts for Requirements and Analysis as well as Software Design phases using an object-oriented methodology.
Course Objectives
Survey the discipline of software engineering, including development processes, life-cycle models, quality issues, requirements analysis, design techniques, testing, and project management.
Provide experience as a team member of a medium-scale software development project, focusing on requirements elicitation, specification, and design.
Study and practice oral and written communication skills with respect to software development projects.
Explore modern software development tools.
Gain a strong enough foundation in Software Engineering that it could lead to a career.
Course Aims
The general course goal is to give basic skills and understanding of software engineering.
Knowledge and understanding
· Demonstrate basic knowledge and understanding of software engineering both individually and in a group.
· Demonstrate basic knowledge of proven software engineering methods and theories.
· Demonstrate insight in how software is engineered in industry.
· Demonstrate in-depth knowledge within the following areas of software engineering:
System analysis based on use-cases.
System analysis through requirement engineering.
Modeling in UML (Unified Modeling Language)
Modeling using patterns.
Iterative and light-weight system design (Evolutionary Design)
Course Components
· Introduction To Software Engineering
· Software Engineering Overview
· Software Processes
· Project management and Software change management
· System modelling
· Software Requirements
· System modelling and Introduction to the Unified Modeling Language
· Architectural Design and Object-oriented Design
· Software testing and Software Testing Techniques
· Technical Metrics for Software
Text book
Ian Sommerville, Software Engineering, Pearson Education, 7th edition.
(Seventh, Sixth and Fifth editions are fine as well).
In addition to the above, the students will be provided with handouts by the lecturer.
Learning Outcomes
· Knowledge and understanding
· Cognitive skills (thinking and analysis).
· Communication skills (personal and academic).
· Practical and subject specific skills (Transferable Skills).
Assessment Instruments
Makeup Policy
No missed tests without prior excuse. Each case will be handled separately based on its own merits. Makeup tests will be much more difficult than regularly scheduled tests. Each student is responsible for what is covered and assigned in any classes which they miss. Abuse of this policy will result in a loss of leniency.
Note that:
· You should know something about UML
· This syllabus may change as the course progresses