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

Video : https://www.youtube.com/watch?v=kwsKr1MObxs

Lecture with interaction 1 1
2 03-07-2024 Requirement Elicitation Techniques: Interviews, Surveys

Notes:1https://www.jamasoftware.com/requirements-management-guide/requirements-gathering-and-management-processes/a-guide-to-requirements-elicitation-for-product-teams

Note 2: https://www.geeksforgeeks.org/software-engineering-requirements-elicitation/

Video : https://www.youtube.com/watch?v=5dcLOm1LwYw

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

Notes:https://www.knowledgehut.com/blog/agile/use-cases-how-are-they-different-from-user-stories-how-to-create-them

Video: https://www.youtube.com/watch?v=zHKcBYzHK6A

Video: https://www.youtube.com/watch?v=SRRQCDZQ6G4

Practical 1 1
5 15-07-2024 Integration Testing: Testing APIs and Interfaces

Notes : https://www.merge.dev/blog/api-integration-testing#:~:text=API%20integration%20testing%20is%20the,rate%20limiting%2C%20and%20response%20bodies.

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

Video: https://www.youtube.com/watch?v=efJPNX03JVk

Practical 2 1
7 22-07-2024 Requirement Specification and Documentation

Note: https://www.geeksforgeeks.org/software-requirement-specification-srs-format/

Video: https://www.youtube.com/watch?v=klMyKL6luS8

Video: https://www.youtube.com/watch?v=2SUNWVwQaXs

Lecture with interaction 2 1
8 24-07-2024 Object-Oriented Design Principles: Implementation in Java/C++

Notes : https://www.digitalocean.com/community/conceptual-articles/s-o-l-i-d-the-first-five-principles-of-object-oriented-design

Video: https://www.youtube.com/watch?v=GtZtQ2VFweA

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/

Video: https://www.youtube.com/watch?v=xh03Hu19Ixk

Lecture with interaction 2 1
10 31-07-2024 Writing and Executing Unit Tests

https://www.youtube.com/watch?v=v0A9ztyVyUA

https://www.youtube.com/watch?v=_I2dKKFVmfo

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

Notes : https://theqalead.com/tools/defect-tracking-tools/

Video: https://www.youtube.com/watch?v=CrmdSqfD1hE

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,

https://www.youtube.com/watch?v=2JevepuPlYM

https://www.youtube.com/watch?v=kpjCWXnBiFo

Practical 3 1
15 19-08-2024 Architectural Styles: MVC

https://www.youtube.com/watch?v=mtZdybMV4Bw

https://www.youtube.com/watch?v=e9S90R-Y24Q

Lecture with interaction 3 2
16 21-08-2024 Object-Oriented Programming, Classes, Objects, and Inheritance

https://www.youtube.com/watch?v=RpBBzci_cBk

https://www.youtube.com/watch?v=_vr5faCXFo8

Practical 4 1
17 26-08-2024 Encapsulation and Polymorphism

https://www.youtube.com/watch?v=tbi0ow8YW7Y

https://www.youtube.com/watch?v=VevQllpCmgw

Lecture with interaction 4 1
18 28-08-2024 Design Principles: SOLID, GRASP, Software Testing

https://www.youtube.com/watch?v=fGNF6wuD-fg

https://www.youtube.com/watch?v=L4HLpsFPAtk

Practical 4 2
19 02-09-2024 Testing Levels: Unit Testing, Integration , Test Case Design: Equivalence

https://www.youtube.com/watch?v=TmOBLQ26sOM

https://www.youtube.com/watch?v=8UfQ8quw0Eg

Lecture with interaction 5 1
20 04-09-2024 Testing Techniques: Black Box, White Box, Grey Box

https://www.youtube.com/watch?v=oX3MQXNI8uw

https://www.youtube.com/watch?v=C5fUkYMV1-0

Practical 5 2
21 09-09-2024 Smoke Testing, Acceptance Testing, Continuous Integration and Continuous Testing

https://www.youtube.com/watch?v=2FE_RBxVnLg

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,

https://www.youtube.com/watch?v=H6IRY98Gu44

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

https://www.youtube.com/watch?v=ed7nZAr81dw

https://www.youtube.com/watch?v=4fqmcF5JNRk

Lecture with interaction 5 2
24 18-09-2024 Quality Assurance vs. Quality Control

https://www.youtube.com/watch?v=6L4RwALb-ow

https://www.youtube.com/watch?v=RSCGyXQ-YbI

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

https://www.youtube.com/watch?v=rq4HPm8kptg

https://www.youtube.com/watch?v=X5cBc9z_Ibs

Practical 7 2