Software Engineering

Principles and Practices

October 01, 2018
Salahaddin University-Erbil
Electrical Engineering Dept.
BSc
2018-2020
5 mins read

General Information

  • University: Salahaddin University-Erbil
  • Department: Electrical Engineering Dept.
  • My Status: Lecturer
  • Level: BSc
  • Year: 2018-2020

Course Description

This course provides a comprehensive introduction to software engineering principles, methodologies, and practices. Software engineering is the systematic approach to developing, operating, and maintaining software systems, transforming coding activities into manageable, repeatable processes that can be effectively managed and transferred between development teams.

The curriculum covers the entire software development lifecycle, from initial requirements analysis through design, implementation, testing, deployment, and maintenance. Students will learn various software development methodologies, design patterns, and best practices that enable the creation of high-quality, maintainable software systems.

Through case studies, group projects, and hands-on exercises, students will gain practical experience in applying software engineering principles to real-world development scenarios, preparing them for professional software development careers.

Prerequisites

  • Programming Fundamentals
  • Data Structures and Algorithms
  • Basic mathematics and logic
  • Understanding of computer systems
  • Teamwork and communication skills

Course Objectives

Upon completion of this course, students will be able to:

  • Understand and apply software engineering principles and methodologies.
  • Conduct comprehensive requirements analysis and specification.
  • Design software systems using appropriate architectural patterns.
  • Implement software development processes and methodologies.
  • Apply testing strategies and quality assurance techniques.
  • Manage software projects and development teams effectively.
  • Maintain and evolve software systems throughout their lifecycle.

Course Outline

Week 1: Introduction to Software Engineering

  • Software engineering fundamentals and principles
  • Software development challenges and solutions
  • Software quality attributes and characteristics
  • Software engineering ethics and professional responsibility
  • Current trends and future directions in software engineering
  • Lab: Setting up development environment and tools

Week 2: Software Development Lifecycle Models

  • Waterfall model and its variations
  • Iterative and incremental development
  • Spiral model and risk-driven development
  • Agile methodologies (Scrum, Kanban, XP)
  • Lab: Project management tools and methodologies

Week 3: Project Management and Planning

  • Project planning and estimation techniques
  • Risk management and mitigation strategies
  • Resource allocation and team management
  • Project monitoring and control
  • Lab: Project planning and estimation exercises

Week 4: Requirements Engineering

  • Requirements elicitation techniques
  • Requirements analysis and specification
  • Functional and non-functional requirements
  • Requirements validation and verification
  • Lab: Requirements gathering and documentation

Week 5: Software Design Principles

  • Design principles and patterns
  • Architectural design and system architecture
  • Detailed design and component design
  • Design quality and evaluation
  • Lab: Software design and architecture modeling

Week 6: Software Implementation and Coding

  • Coding standards and best practices
  • Code organization and modularity
  • Version control and configuration management
  • Code review and quality assurance
  • Lab: Version control and collaborative development

Week 7: Midterm Exam and Review

  • Midterm Exam: Covers weeks 1-6 material
  • Review of software engineering fundamentals
  • Project management practice
  • Lab: Exam review and case study analysis

Week 8: Software Testing and Quality Assurance

  • Testing fundamentals and strategies
  • Unit testing and integration testing
  • System testing and acceptance testing
  • Test-driven development (TDD)
  • Lab: Testing frameworks and test case development

Week 9: Software Deployment and Delivery

  • Deployment strategies and environments
  • Release management and versioning
  • Installation and configuration management
  • Deployment automation and DevOps practices
  • Lab: Deployment automation and CI/CD pipelines

Week 10: Software Documentation

  • Documentation types and purposes
  • Technical documentation standards
  • User documentation and manuals
  • API documentation and specifications
  • Lab: Documentation tools and standards

Week 11: Software Maintenance and Evolution

  • Maintenance types and activities
  • Software evolution and reengineering
  • Legacy system maintenance
  • Performance optimization and tuning
  • Lab: Maintenance planning and legacy system analysis

Week 12: Agile Development and Modern Practices

  • Agile principles and values
  • Scrum framework and practices
  • Continuous integration and deployment
  • DevOps culture and practices
  • Lab: Agile project management and Scrum simulation
  • Current research areas in software engineering
  • Emerging technologies and methodologies
  • Software engineering challenges and solutions
  • Industry best practices and standards
  • Lab: Research paper analysis and trend evaluation

Week 14: Final Exam Preparation and Review

  • Comprehensive review of all course material
  • Practice problems and sample questions
  • Final Exam: Theoretical component
  • Lab: Final exam practice and preparation

Week 15: Final Project and Course Wrap-up

  • Final Exam: Practical software engineering project
  • Course evaluation and feedback
  • Future learning paths and advanced topics
  • Lab: Final project presentation and evaluation

Textbooks

  • [Recommended] “Software Engineering: A Practitioner’s Approach” by Roger S. Pressman
  • [Optional] “Clean Code: A Handbook of Agile Software Craftsmanship” by Robert C. Martin

Assessment

  • Group Projects (30%)
  • Individual Assignments (25%)
  • Case Study Analysis (20%)
  • Midterm Exam (15%)
  • Final Exam (10%)