SOFTWARE ENGINEERING
Mr. Aldrin T Muramba | amuramba@[Link] | +263 774 110 024 | Office 114, Computer Science
SYNOPSIS: This course introduces the principles, methodologies and practices of software engineering,
with an emphasis on the software development life cycle (i.e., from requirements analysis to design,
implementation, testing, deployment, and maintenance), software quality, and software project
management. Students will learn how to apply various software engineering methods and tools to analyze,
design, implement, test, and maintain software systems. The course aims to equip students with the
knowledge and skills necessary to develop high-quality software solutions that meet user needs and adhere
to industry standards. Students will also work in teams to develop a software project using an agile
methodology.
OBJECTIVES: By the end of this course, students will be able to:
• Explain the concepts and challenges of software engineering.
• Compare and contrast different software development models and methodologies.
• Apply software engineering techniques and tools to elicit, analyze, and specify software
requirements.
• Design software architectures and components using appropriate modeling languages and patterns.
• Implement software systems using programming languages, frameworks, and libraries.
• Test software systems using testing strategies, tools, and frameworks.
• Maintain and evolve software systems using configuration management, refactoring, and
debugging tools.
• Manage software projects using agile methods, tools, and practices.
• Communicate effectively and collaborate with stakeholders and team members throughout the
software development process.
OUTLINE:
1. Software Engineering Fundamentals:
o Key software engineering concepts.
o History and evolution of software engineering.
o Emerging Technologies: AI, ML, and IoT in software engineering.
o Importance of software engineering in modern technology.
2. Software Development Life Cycle (SDLC):
o SDLC models (Waterfall, Agile, etc.).
o Apply SDLC principles to real-world software projects.
3. Requirements Engineering:
o Techniques for eliciting and analyzing software requirements.
o Creating effective and traceable software requirements specifications.
o Managing and prioritizing requirements throughout the development process.
4. System Design and Architecture:
o Architectural patterns and design principles.
o Develop detailed system design documents and using UML.
5. Programming Paradigms and Best Practices:
o Programming paradigms (procedural, object-oriented, functional), programming
languages, frameworks and libraries.
o Coding standards and best practices for maintainable code.
o Version control and collaborative development using tools like Git.
6. Software Testing and Quality Assurance:
o Types of testing (unit, integration, system, acceptance).
o Testing strategies, using appropriate tools and frameworks.
o Quality assurance principles.
7. Agile Methodologies and Scrum:
o Introduction to Agile methodologies.
o Scrum framework and its roles (Scrum Master, Product Owner, Development Team).
o Sprint planning, daily scrums, sprint review, and retrospective.
8. Software Maintenance and Evolution:
o Techniques for software maintenance and enhancement.
o Challenges of legacy systems.
o Strategies for evolving software systems over time.
9. Ethical and Professional Considerations:
o Explore ethical issues in software engineering.
o Understand the responsibilities of a software engineer.
o Comprehend the impact of software on society and individuals.
10. Project Management and Collaboration:
• Project management principles (planning, estimation, scheduling, tracking, risk management).
• Collaboration tools and techniques for distributed development teams.
• Effective communication and documentation in software projects.
DELIVERY METHODS 1. Online self-paced content (OER)
2. Online lectures
3. Physical tutorials
ASSESSMENT: • Assignments and quizzes to evaluate theoretical understanding.
• Free online courseware certifications such as SCRUM Study.
• Individual and group projects to apply concepts in real-world scenarios.
• Final exam covering the entire course content.
STUDY GUIDE: SWEBOK v4