Course Description
This course presents contemporary issues related to the field of software engineering. It deeply examines the software life cycle models, including phases software specification, design, develop, test, and maintain. Object-oriented design methods and practices, their application to the development of computer-based systems.
Course Objectives
By the end of this course, students will be able to explain fundamental software engineering principles and evaluate different software development life cycle models, including traditional and agile approaches; elicit, analyze, and model software requirements using appropriate techniques; apply system and object-oriented design methodologies to develop structured and maintainable software solutions; implement software following established coding standards and best practices; apply appropriate testing strategies to ensure software quality; analyze issues related to software evolution and maintenance; utilize basic software project management techniques for planning and coordination; and understand contemporary practices such as DevOps, code management, and cloud-based software development.
Key Concepts
- Software Engineering – Engineering discipline focused on systematic software development and maintenance.
- Software Development Life Cycle (SDLC) – Structured phases guiding software creation from requirements to maintenance.
- Software Process Models – Frameworks organizing development activities (e.g., plan-driven and agile).
- Requirements Engineering – Eliciting, analyzing, documenting, and managing system requirements.
- System and Software Modeling – Using diagrams and abstractions to represent system structure and behavior.
- Software Architecture and Design – Defining system structure and detailed design decisions.
- Object-Oriented Development – Designing systems using encapsulation, inheritance, and polymorphism.
- Software Testing and Quality Assurance – Verifying and validating software correctness and quality.
- Software Maintenance and Evolution – Modifying and improving software after deployment.
- Software Project Management and DevOps – Planning, coordinating, and automating collaborative software development.
14-Week Outline
| Week | Topic |
|---|
| 1 | Introduction to Software Engineering |
| 2 | SDLC and Software Processes |
| 3 | Agile Development |
| 4 | Requirements Engineering |
| 5 | Requirements Modeling |
| 6 | System Modeling |
| 7 | Design |
| 8 | Implementation |
| 9 | Midterm |
| 10 | Software Testing |
| 11 | Software Evolution |
| 12 | Software Project Management |
| 13 | DevOps and Code Management |
| 14 | Cloud-based Software |
Learning Outcomes
- An ability to identify, formulate, and solve complex engineering problems by applying principles of engineering, science, and mathematics. Aligned through requirements analysis, system modeling, software design, and problem-solving in implementation tasks.
- An ability to apply engineering design to produce solutions that meet specified needs with consideration of public health, safety, welfare, and other relevant factors. Aligned through software specification, architectural design, object-oriented design practices, and cloud-based system considerations.
- An ability to communicate effectively with a range of audiences. Aligned through requirements documentation, modeling artifacts (e.g., UML), project reports, and presentations.
- An ability to recognize ethical and professional responsibilities in engineering situations and make informed judgments. Aligned through discussions on software quality, professional standards, maintenance responsibility, and project management practices.
- An ability to function effectively on a team whose members provide leadership, create a collaborative environment, and establish goals. Aligned through team-based development activities, Agile practices, DevOps collaboration, and code management workflows.
- An ability to develop and conduct appropriate experimentation, analyze and interpret data, and use engineering judgment. Aligned through software testing strategies, quality assurance activities, and evaluation of alternative design solutions.
- An ability to acquire and apply new knowledge as needed, using appropriate learning strategies. Aligned through exposure to contemporary topics such as DevOps and cloud-based software development.
Assessment Methods
| Method | % Each | Quantity |
|---|
| Homework | 5 | 2 |
| Midterm Exam(s) | 30 | 1 |
| Project | 20 | 1 |
| Final Exam | 40 | 1 |
Recommended Textbooks
Software Engineering by Ian Sommerville,10th edition Pearson,2015; Engineering Software Products: An Introduction to Modern Software Engineering by Ian Sommerville, 1st edition Pearson, 2020