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:
- Mall Rajib, Fundamentals of Software Engineering, PHI.
- 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:
- Operational: Performance indicators include:
- Budget, Usability, Efficiency, Correctness, Functionality, Dependability, Security, Safety.
- Transitional: Aspects during software transition between platforms include:
- Portability, Interoperability, Reusability, Adaptability.
- 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:
- Classical Waterfall Model.
- Iterative Waterfall Model.
- Prototyping Model.
- Evolutionary Model.
- Spiral Model.
Classical Waterfall Model Phases:
- Feasibility Study: Financial/technical viability assessment.
- Requirements Analysis and Specification: Gather and organize user requirements into software requirement specification (SRS).
- Design: Create software architecture based on SRS; divide into Traditional and Object-Oriented Design approaches.
- Coding & Unit Testing: Translate design into code and test individual modules.
- Integration & System Testing: Test system as a whole against SRS.
- 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…