CT41                                                                Software Engineering

 

 

Details

 

  1. Introduction

                                                                                                                 

1.1  Evolution and historical aspects

1.2  Software Engineering Principles

1.3  Software product and process

1.4  Software process models

 

  1. Software Analysis

                                                                                                     

2.1  Requirements Engineering

2.2  Requirements Analysis

 

2.2.1       Domain analysis

2.2.2       Informal analysis

2.2.3       Prototyping

2.2.4       Structured Analysis (using DFD)

2.2.5       Object Oriented Analysis (using UML)

2.3  Requirements Specification

2.3.1       Software Requirement Specification document (SRS document) - Characteristics and Components

2.3.2       Specification tools - Structured English, Pre-Post conditions, Data Dictionary, Decision Tables

2.4  Requirements Validation

2.4.1       Reviews - Walkthroughs and Inspections

2.4.2       Automated Cross-Referencing

2.4.3       Constructing Scenarios

2.4.4       Prototyping

 

3      Software Design

                                                                                                           

3.1  Modularity - Cohesion and Coupling

3.2  Design Strategies - Top-Down and Bottom-Up

3.3  Structured Design (using Structure Charts)

3.4  Object Oriented Design (using UML)

3.5  Software Design Document (SDS) - Characteristics and Components

3.5.1       Architectural Design

3.5.2       Detailed Design

3.6  Design Verification - Design Reviews, Automated Cross-Referencing

 

4      Software Coding  

                                                                                               

4.1  Coding strategies - Top-Down and Bottom-Up

4.2  Structured programming

4.3  Object-oriented programming

4.4  Coding standards

4.5  Coding guidelines

4.6  Code Verification - Static analysis, Symbolic execution, Code Walkthroughs, Code Inspections

 

5      Software Testing 

                                                                                               

5.1  Objectives, Goals, Principles, Guidelines

5.2  Software Testing Techniques

5.2.1       Structural Testing - Statement, Branch, Condition and Path Coverage, Basis Path Testing, Mutation Testing

5.2.2       Functional Testing - Equivalence Partitioning, Boundary Value analysis, Cause-Effect Graphing Technique, Comparison Testing

 

5.3  Software Testing Strategies

5.3.1       Unit Testing

5.3.2       Integration Testing

5.3.3       System Testing

5.3.4       Regression Testing

5.3.5       Validation Testing

5.4  Software Debugging

5.4.1       Debugging process

5.4.2       Debugging approaches

 

6      Software Maintenance

                                                                                               

6.1  Maintenance process and models

6.2  Maintenance cost models

6.3  Software Reverse Engineering

6.4  Software Re-engineering

6.5  Software Configuration Management

 

7      Software Metrics

                                                                                                           

7.1  Project Size Metrics - Lines of Code, Function Point, Feature Point

7.2  Project Estimation Techniques

7.2.1           Empirical techniques - Expert Judgment, Delphi-Cost Estimation

7.2.2           Heuristic technique - COCOMO

7.2.3           Analytical technique - Halstead Software Science

7.3  Project Scheduling

7.3.1           Critical Path Method (CPM)

7.3.2           Project Evaluation and Review Technique (PERT)

7.3.3           Project Crashing

7.4  Software Reliability

7.4.1           Metrics

7.4.2           Time Dependent models - Goel-Okumoto model, Jelenski Moranda model

7.4.3           Time Independent models - Input domain model, Fault seeding model

 

Text/Reference Books

 

1.     Roger Pressman, Software Engineering: A Practitioners approach, Sixth Edition, McGraw-Hill International Edition

2.     Ian Sommerville, Software Engineering, Seventh Edition, Pearson Education India

3.     Carlo Ghezzi, Mehdi Jazayeri and Dino Mandrioli, Fundamental of Software Engineering, Second Edition, Pearson Education India

4.     Richard Fairley, Software Engineering Concepts, Tata McGraw-Hill

5.     Dorathy Graham and Isabel Evans, Foundation of Software Testing, Cengage Learning

6.     James F. Peters and Witold Pedrycz, Software Engineering: An Engineering Approach, John Wiley and Sons

7.     Edward Yourdon, Modern Structured Analysis, Prentice Hall of India

8.     Grady Booch, James Rumbaugh and Ivar Jacobson, The Unified Modeling Language: A User Guide, Pearson Education India

9.     Pankaj Jalote, An Integrated Approach to Software Engineering, Third Edition, Narosa Publishing House

10.  Rajib Mall, Fundamentals of Software Engineering, Second Edition, Prentice-Hall India