Detailed Study Notes on Software Engineering

LECTURE NOTES ON SOFTWARE ENGINEERING

DISCLAIMER

  • This document does not claim any originality.
  • Cannot be used as a substitute for prescribed textbooks.
  • The information presented is merely a collection by committee members for teaching assignments.
  • Various textbooks and freely available materials from the internet have been consulted.
  • Ownership of information lies with respective authors or institutions.

SYLLABUS

Module I: Introductory concepts
  • Topics:
    • Introduction, definition, objectives
    • Life cycle – Requirements analysis and specification
    • Design and Analysis: Cohesion and coupling, Data flow oriented Design: Transform centered design, Transaction centered design.
    • Analysis of specific systems like Inventory control, Reservation system.
Module II: Object-oriented Design
  • Topics:
    • Object modeling using UML
    • Use case diagram
    • Class diagram
    • Interaction diagrams: activity diagram, unified development process.
Module III: Implementing and Testing
  • Topics:
    • Programming language characteristics
    • Fundamentals, languages, classes, coding style efficiency.
    • Testing: Objectives (black box and white box testing), various testing strategies, Art of debugging.
    • Maintenance, Reliability and Availability: Maintenance characteristics, controlling factors, tasks, side effects, preventive maintenance – Re-engineering, Reverse Engineering, configuration management, tools and techniques.
    • Reliability: Concepts, Errors, Faults, Repair and availability models.
    • Recent trends and developments.
Module IV: Software Quality
  • Topics:
    • SEI CMM and ISO-9001
    • Software reliability, fault-tolerance
    • Software project planning, monitoring, and control.
    • Computer-aided software engineering (CASE)
    • Component model of software development
    • Software reuse.
Text Books:
  1. Mall Rajib, Fundamentals of Software Engineering, PHI.
  2. Pressman, Software Engineering Practitioner’s Approach, TMH.

CONTENTS

Module 1:
  • Lecture 1: Introduction to Software Engineering
  • Lecture 2: Software Development Life Cycle - Classical Waterfall Model
  • Lecture 3: Iterative Waterfall Model, Prototyping Model, Evolutionary Model
  • Lecture 4: Spiral Model
  • Lecture 5: Requirements Analysis and Specification
  • Lecture 6: Problems without a SRS document, Decision Tree, Decision Table
  • Lecture 7: Formal System Specification
  • Lecture 8: Software Design
  • Lecture 9: Software Design Strategies
  • Lecture 10: Software Analysis & Design Tools
  • Lecture 11: Structured Design
Module 2:
  • Lecture 12 to Lecture 16: [Various topics including Object Modeling using UML, Use Case Diagrams, Class Diagrams, Interaction Diagrams].
Module 3:
  • Lecture 17 to Lecture 26: [Covering Coding, Testing strategies, Debugging, Integration Testing, Reliability and Quality Management].
Module 4:
  • Lecture 28 to Lecture 41: [Including Software Quality, SEI Capability Maturity Model, Project Planning, Computer Aided Software Engineering, Software Reuse].

MODULE 1

LECTURE NOTE 1: INTRODUCTION TO SOFTWARE ENGINEERING
  • The term software engineering is formed of two words: Software & Engineering.
    • Software: An assemblage of programs, libraries, and documentation designed for a specific computational task.
    • Engineering: Developing products systematically using scientific principles and methods.
  • Definition: Software engineering is an engineering discipline focused on the design and development of software products following defined principles and practices.
  • IEEE Definition: A systematic, disciplined, quantifiable approach to software development, operation, and maintenance.
  • Necessity: Due to increasing complexity, larger size, dynamic nature of user environments, and the need for better quality management, software engineering is essential.
Characteristics of a Good Software:
  1. Operational: Performance indicators include:
    • Budget, Usability, Efficiency, Correctness, Functionality, Dependability, Security, Safety.
  2. Transitional: Aspects during software transition between platforms include:
    • Portability, Interoperability, Reusability, Adaptability.
  3. Maintenance: Capabilities over time include:
    • Modularity, Maintainability, Flexibility, Scalability.
LECTURE NOTE 2: SOFTWARE DEVELOPMENT LIFE CYCLE (SDLC)
  • Life Cycle Model: Describes activities needed for software to transit its life phases.
  • Importance: Ensures systematic and disciplined development, preventing chaos in the project.
  • Different Models:
    1. Classical Waterfall Model.
    2. Iterative Waterfall Model.
    3. Prototyping Model.
    4. Evolutionary Model.
    5. Spiral Model.
Classical Waterfall Model Phases:
  1. Feasibility Study: Financial/technical viability assessment.
  2. Requirements Analysis and Specification: Gather and organize user requirements into software requirement specification (SRS).
  3. Design: Create software architecture based on SRS; divide into Traditional and Object-Oriented Design approaches.
  4. Coding & Unit Testing: Translate design into code and test individual modules.
  5. Integration & System Testing: Test system as a whole against SRS.
  6. Maintenance: Address any issues post-deployment including corrective, perfective, and adaptive maintenance.
Shortcomings of Classical Waterfall Model:
  • Assumes no errors in earlier phases. Practical projects exhibit numerous errors leading to significant rewrites.
ITERATIVE WATERFALL MODEL
  • Feedback loops added to the classical model facilitate error correction within phases, allowing for early model revisions, better suited for large projects.
PROTOTYPING MODEL
  • A prototype – simplified version of a system – developed to clarify functionality expectations; useful when user requirements are not clear. It is used to identify potential design issues early in the process, enhancing communication with stakeholders.
EVOLUTIONARY MODEL
  • Incremental enhancements to a core system based on initial user feedback, often seen in large projects where core functionalities can be delivered early.
SPIRAL MODEL
  • Incorporates iteration and risk management, suitable for technically challenging software projects prone to various risks.
    • Consists of loops representing process and phases, with a focus on risk assessment throughout…