Course Title: Software Engineering II
Course Overview:
Software Engineering II is an advanced course that builds upon the concepts learned in Software Engineering I. This course focuses on software design patterns, architectural styles, software modeling, software quality assurance, and advanced topics in software development. Students will deepen their understanding of software engineering principles and practices through case studies, projects, and advanced techniques.
Course Objectives:
Master software design patterns and architectural styles for scalable and maintainable software.
Learn advanced software modeling techniques for system analysis and design.
Understand software quality assurance practices, including testing, debugging, and performance optimization.
Explore software evolution and maintenance strategies.
Study software project management in complex environments.
Develop critical thinking and problem-solving skills through advanced software engineering projects.
Course Outline:
Software Design Patterns
Creational, structural, and behavioral design patterns
Application of design patterns in software architecture
Anti-patterns and refactoring techniques
Architectural Styles
Client-server architecture
Microservices architecture
Event-driven architecture
Cloud-native architecture
Advanced Software Modeling
UML diagrams for system modeling (class diagrams, sequence diagrams, activity diagrams, etc.)
Domain-specific modeling languages (DSLs)
Model-driven engineering (MDE) approaches
Software Quality Assurance
Testing strategies (unit testing, integration testing, system testing, acceptance testing)
Test automation and continuous integration/continuous deployment (CI/CD)
Debugging techniques and tools
Performance optimization and profiling
Software Evolution and Maintenance
Software maintenance processes (corrective, adaptive, perfective, preventive)
Version control systems and configuration management
Legacy system migration and modernization
Software Project Management
Agile methodologies (Scrum, Kanban, etc.) at scale
DevOps practices for software development and deployment
Software metrics and performance measurement
Risk management and mitigation strategies
Advanced Topics in Software Engineering
Software security principles and best practices
User experience (UX) design and usability testing
Emerging trends in software development (AI/ML integration, blockchain, IoT)
Case Studies and Project Work
Analysis of real-world software projects and case studies
Group projects focusing on advanced software engineering concepts
Project presentations and demonstrations
Assessment Methods:
Advanced programming assignments and projects.
Software design and architecture reviews.
Software testing and quality assurance assessments.
Team-based project deliverables and presentations.
Quizzes and exams covering advanced software engineering topics.
Textbook:
“Design Patterns: Elements of Reusable Object-Oriented Software” by Erich Gamma, Richard Helm, Ralph Johnson, and John Vlissides
References:
“Software Architecture in Practice” by Len Bass, Paul Clements, and Rick Kazman
“Continuous Delivery: Reliable Software Releases through Build, Test, and Deployment Automation” by Jez Humble and David Farley
This course structure aims to provide students with advanced knowledge and skills in software engineering, preparing them for leadership roles in software development, architecture, and project management.
Admission Open for this course
Contact Number: 03307615544