Course Objectives
- The objective of the course is to provide understanding of the Software Engineering Fundamentals, Requirements Engineering, and Software Design Principles etc.
- Provide the skills for understanding the techniques to acquire Object-Oriented Design Skills, Gain Expertise in Software And Verification.
- To learn the Ensure Software Quality Assurance and Software Maintenance and Evolution.
COs | Course outcomes |
CO1 | Knowledge on the software development life cycle (SDLC) phases and their significance with respect to various software process models (Waterfall, Agile, Spiral) and comparison their concepts. |
CO2 | Acquire the roles and responsibilities within software development teams and differentiate between functional and non-functional requirements in software engineering. |
CO3 | Applying requirement elicitation techniques (interviews, surveys) to gather software requirements effectively and evaluate the effectiveness of different software testing strategies for specific scenarios. |
CO4 | Creating comprehensive requirement specifications using use case modeling and user stories. |
CO5 | Critique and compare different software process models based on project requirements and evaluate the impact of software design decisions on system scalability and maintainability. |
Module 1: Software Engineering (4hrs)
- Overview of Software Engineering
- Software Development Life Cycle (SDLC)
- Software Process Models: Waterfall, Agile, Spiral
- Roles and Responsibilities in Software Development Teams
Module 2: Requirements Engineering (4hrs)
- Requirements Elicitation and Analysis
- Functional and Non-functional Requirements
- Use Case Modeling and User Stories
- Requirement Specification and Documentation
Module 3: Software Design Principles (4hrs)
- Software Design Basics
- Modularization and Abstraction
- Design Patterns: Creational, Structural, Behavioral
- Architectural Styles: Layered, Client-Server, MVC
Module 4: Object-Oriented Design (3hrs)
- Object-Oriented Programming
- Classes, Objects, and Inheritance
- Encapsulation and Polymorphism
- Design Principles: SOLID, GRASP
Module 5: Software Testing Fundamentals (5hrs)
- Software Testing
- Testing Levels: Unit Testing, Integration Testing, System Testing
- Testing Techniques: Black Box, White Box, Grey Box
- Test Case Design: Equivalence Partitioning, Boundary Value Analysis
- Testing Strategies: Regression Testing, Smoke Testing, Acceptance Testing
- Test Planning and Execution
- Test Automation Frameworks and Tools
- Continuous Integration and Continuous Testing
Module 6: Software Quality Assurance (3hrs)
- Quality Assurance Quality Control
- Software Quality Attributes: Reliability, Usability, Maintainability, Scalability
- Metrics for Software Quality Measurement
- Defect Tracking and Management
Module 7: Software Maintenance and Evolution (3hrs)
- Software Maintenance Activities: Corrective, Adaptive, Perfective
- Impact Analysis and Change Management
- Refactoring Techniques
- Legacy System Migration and Modernization
Practical/Labs:
-
Lab 1: Requirement Elicitation Techniques: Interviews, Surveys
· Lab 2: Use Case Modeling and User Story Writing
· Lab 3: Software Design Exercise: UML Diagrams
· Lab 4: Object-Oriented Design Principles: Implementation in Java/C++
· Lab 5: Writing and Executing Unit Tests
· Lab 6: Integration Testing: Testing APIs and Interfaces
· Lab 7: Test Automation Using Selenium or JUnit
· Lab 8: Software Quality Metrics
· Lab9: Software Measurement techniques and method
· Lab 10: Defect Tracking and Management Tools
· Lab 11: Refactoring Legacy Codebase Maintenance
· Lab12: Verification and validation Testing
· Lab13: More Oops design principles Implementation in C++
Recommended Resources:
- Books:
- “Software Engineering: A Practitioner’s Approach” by Roger Pressman
- “Clean Code: A Handbook of Agile Software Craftsmanship” by Robert Martin
- ” Software Testing” by Paul Ammann and Jeff Offutt
· Online Courses:
- Coursera: “Software Engineering Fundamentals” by University of Alberta
- edX: “Software Testing Fundamentals” by University of Maryland
- Udemy: “Java Design Patterns and Architecture” by various instructors
· Tools:
- Version Control Systems: Git, Subversion
- Integrated Development Environments (IDEs): Eclipse, IntelliJ IDEA
- Testing Tools: JUnit, Selenium, JIRA, Bugzilla
Session Plan
Lect. No | Proposed Date | Points To Covered | Methodology/Activities | Unit No. | Study material No. |
1 | 01-07-2024 | Overview of Software Engineering
Software Development Life Cycle (SDLC) Notes1: : https://www.geeksforgeeks.org/software-engineering-introduction-to-software-engineering/ Video: https://www.youtube.com/watch?v=ITlyBV4ttts https://www.youtube.com/watch?v=IHx9ImEMuzQ Video: https://www.youtube.com/watch?v=SaCYkPD4_K0 Software Process Models: Waterfall, Agile, Spiral, Roles and Responsibilities in Software Development Teams Notes: https://www.educative.io/blog/software-process-model-types |
Lecture with interaction | 1 | 1 |
2 | 03-07-2024 | Requirement Elicitation Techniques: Interviews, Surveys
Note 2: https://www.geeksforgeeks.org/software-engineering-requirements-elicitation/ |
Practical | 1 | 1 |
3 | 08-07-2024 | Requirements Elicitation and Analysis
Functional and Non-functional Requirements Vides : https://www.youtube.com/watch?v=sTUccQ8QG0I Notes: https://www.geeksforgeeks.org/functional-vs-non-functional-requirements/ |
Lecture with interaction | 1 | 1 |
4 | 10-07-2024 | Use Case Modeling and User Story Writing | Practical | 1 | 1 |
5 | 15-07-2024 | Integration Testing: Testing APIs and Interfaces
Notes https://www.leapwork.com/blog/api-testing-vs-integration-testing-whats-the-difference Video: https://www.youtube.com/watch?v=DsLa4SSF37o |
Lecture with interaction | 2 | 1 |
6 | 17-07-2024 | Software Design Exercise: UML Diagrams
Notes:https://courses.cs.washington.edu/courses/cse403/09sp/lectures/lecture07-uml.pdf |
Practical | 2 | 1 |
7 | 22-07-2024 | Requirement Specification and Documentation
Note: https://www.geeksforgeeks.org/software-requirement-specification-srs-format/ |
Lecture with interaction | 2 | 1 |
8 | 24-07-2024 | Object-Oriented Design Principles: Implementation in Java/C++ | Practical | 2 | 1 |
9 | 29-07-2024 | Integration Testing: Testing APIs and Interfaces
Notes: https://luxequality.com/blog/api-integration-testing/ Notes: https://luxequality.com/blog/api-integration-testing/ |
Lecture with interaction | 2 | 1 |
10 | 31-07-2024 | Writing and Executing Unit Tests | Practical | 2 | 1 |
11 | 05-08-2024 | Modularization and Abstraction, Design Patterns: Creational, Structural Behavioral
Video; https://www.youtube.com/watch?v=Y6wOf3e7TJ4 https://www.youtube.com/watch?v=Hpk601vzhUY https://www.youtube.com/watch?app=desktop&v=cGVojSNQHUk
|
Lecture with interaction | 3 | 1 |
12 | 07-08-2024 | Defect Tracking and Management Tools | Practical | 3 | |
13 | 12-08-2024 | Software Quality Metrics and Measurement
Video: https://www.youtube.com/watch?v=M1uc3Fq5z4c Notes : https://www.geeksforgeeks.org/measuring-software-quality-using-quality-metrics/ |
Lecture with interaction | 3 | 2 |
14 | 14-08-2024 | Architectural Styles: Layered, Architectural Styles: Client-Server, | Practical | 3 | 1 |
15 | 19-08-2024 | Architectural Styles: MVC | Lecture with interaction | 3 | 2 |
16 | 21-08-2024 | Object-Oriented Programming, Classes, Objects, and Inheritance | Practical | 4 | 1 |
17 | 26-08-2024 | Encapsulation and Polymorphism | Lecture with interaction | 4 | 1 |
18 | 28-08-2024 | Design Principles: SOLID, GRASP, Software Testing | Practical | 4 | 2 |
19 | 02-09-2024 | Testing Levels: Unit Testing, Integration , Test Case Design: Equivalence | Lecture with interaction | 5 | 1 |
20 | 04-09-2024 | Testing Techniques: Black Box, White Box, Grey Box | Practical | 5 | 2 |
21 | 09-09-2024 | Smoke Testing, Acceptance Testing, Continuous Integration and Continuous Testing | Lecture with interaction | 5 | 2 |
22 | 11-09-2024 | Test Planning and Execution
https://www.youtube.com/watch?v=8U0SO1pa-EA https://www.youtube.com/watch?v=VPnWoroH7yA Partitioning, Boundary Value Analysis, Testing Strategies: Regression Testing, |
Practical | 5 | 2 |
23 | 16-09-2024 | Usability, Maintainability, Scalability
Metrics for Software Quality Measurement https://www.youtube.com/watch?v=NU_0r5cAJ8E https://www.youtube.com/watch?v=mJbNOI4_xDU Impact Analysis and Change Management |
Lecture with interaction | 5 | 2 |
24 | 18-09-2024 | Quality Assurance vs. Quality Control | Practical | 6 | 2 |
25 | 23-09-2024 | Defect Tracking and Management
https://www.youtube.com/watch?v=Rn94w_0XQvs https://www.youtube.com/watch?v=q6-QIcNCxRo Refactoring Techniques, Legacy System Migration and Modernization https://www.youtube.com/watch?v=odY0iTatFjM https://www.youtube.com/watch?v=fF1uVTkw1BM |
Lecture with interaction | 6 | 1 |
26 | 25-09-2024 | Software Maintenance Activities: Corrective, Adaptive, Perfective | Practical | 7 | 2 |