Software Engineering (BTCS 503-18) - Theory
Course Objectives
This course aims to:
- Provide a comprehensive understanding of the software development process.
- Introduce various software development models and methodologies.
- Teach students to analyze, design, implement, and test software systems.
- Emphasize the importance of software quality, maintenance, and project management.
Course Outcomes
Upon completion of this course, students will be able to:
- Apply software engineering principles and practices throughout the software development lifecycle.
- Elicit and analyze software requirements.
- Design software systems using appropriate modeling techniques.
- Implement and test software components and systems.
- Manage software projects effectively.
- Appreciate the importance of software quality and maintenance.
Detailed Syllabus
Module 1: Introduction to Software Engineering
- The evolving role of software
- Software characteristics
- Software engineering challenges
- Software myths
- A generic view of process: framework activities and umbrella activities.
- Process models: Waterfall model, incremental process models, evolutionary process models, spiral model, concurrent models, component based development.
- Specialized process models: Formal methods model, aspect oriented software development.
Module 2: Software Requirements
- Functional and non-functional requirements
- User requirements
- System requirements
- Interface specification
- The software requirements document.
- Requirement Engineering Process: Feasibility studies, Requirements elicitation and analysis, Requirements validation, Requirements management.
Module 3: Design Engineering
- Design process and design quality
- Design concepts: Abstraction, architecture, patterns, separation of concerns, modularity, information hiding, functional independence, refinement, aspects, refactoring, Object-Oriented design concepts
- Design Modeling: Data Design Elements, Architectural Design Elements, Interface Design Elements, Component-level Design Elements, Deployment-level Design Elements
- Architectural design: Architectural styles, Architectural design, Architectural mapping using Data Flow Diagrams (DFDs)
Module 4: Testing Strategies & Tactics
- Software testing fundamentals
- Internal and external views of testing, white box testing: Basis path testing, control structure testing
- Black Box testing: Boundary value analysis, equivalence class partitioning, state based testing, graph based testing, comparison testing, orthogonal array testing
- Testing for specialized environments: OO testing, client/server, web applications, real time systems
- Debugging process, testing tools.
Module 5: Software Project Management
- Estimation: project planning process
- Metrics for project size estimation: LOC and FP based estimation, make/buy decision
- COCOMO model, Risk management, Project scheduling and tracking, Project management tools.
Course Outcomes
The students will be able to:
- CO1: Understand the need and importance of software engineering principles and practices.
- CO2: Apply requirement engineering practices for analyzing, documenting, and managing software requirements.
- CO3: Apply software design principles and patterns for designing software solutions.
- CO4: Develop and apply various testing techniques to ensure software quality.
- CO5: Understand and apply software project management techniques.
Text Books
- Software Engineering, A Practitioner’s Approach by Roger S. Pressman, McGraw-Hill Education, 7/e.
- Software Engineering by Ian Sommerville, Pearson Education, 9/e.
Reference Books
- Software Engineering: Theory and Practice by Shari Lawrence Pfleeger, Pearson Education, 4/e.
- Software Engineering by Pankaj Jalote, Wiley India, 3/e.
Software Engineering Lab (BTCS 506-18)
List of Experiments
- Develop the requirement analysis of Library Management System using various elicitation techniques.
- Prepare Software Requirement Specification (SRS) for Library Management System using IEEE format.
- Perform Data Flow Diagram (DFD) modelling for Library Management System up to 2 levels and Object Modelling using UML.
- Develop Test Cases for unit testing and integration testing for Library Management System.
- Develop a Test Plan document for Library Management System.
- Prepare a Risk Management Plan for Library Management System.
- Estimate cost of Library Management System using COCOMO model.
- Prepare a Gantt Chart for Library Management System using any Project Management tool.
Course Outcomes
The students will be able to:
- CO1: Identify and apply appropriate software engineering tools and techniques for a given problem.
- CO2: Analyze and document software requirements using various elicitation techniques.
- CO3: Design software solutions using appropriate modeling techniques.
- CO4: Develop and execute test cases for various testing levels.
- CO5: Plan and manage software projects using project management tools.