Software Engineering

Page 1: Introduction

  • Software Engineering (R18A0511)

    • Lecture notes for B.Tech III Year, I Sem (2021-22) from Department of Computer Science and Engineering.

    • Malla Reddy College of Engineering & Technology (Autonomous Institution – UGC, Govt. of India).

Page 2: Course Objectives and Units Overview

  • Course Objectives:

    1. Comprehend various software process models.

    2. Understand types of software requirements and SRS documents.

    3. Know different software design and architectural styles.

    4. Learn software testing approaches and metrics in software development.

    5. Understand quality control and risk management.

  • Units Overview:

    • Unit 1: Introduction to Software Engineering

    • Unit 2: Software Requirements

    • Unit 3: Design Engineering

    • Unit 4: Testing Strategies

    • Unit 5: Risk Management and Quality Management

Page 3: Unit 5 – Risk Management and Quality Management

  • Risk Management:

    • Types: Reactive vs. Proactive strategies.

    • Risk identification, projection, and refinement.

    • RMMM Plan (Risk Mitigation, Monitoring, and Management).

    • Key concepts of quality management and software quality assurance.

  • Text Books and Reference Books:

    • Roger S. Pressman, Ian Sommerville, Pankaj Jalote, etc.

Page 4: Index of Topics

  • Summary of units and topics along with page numbers for easy navigation.

    1. Unit 1: Introduction to Software Engineering (Page 5)

    2. Unit 2: Software Requirements (Page 21)

    3. Unit 3: Design Engineering (Page 33)

    4. Unit 4: Testing Strategies (Page 44)

    5. Unit 5: Risk Management (Page 58)

Page 5: Introduction to Software Engineering

  • Definition:

    • Framework for building software; an engineering approach to software development.

  • Characteristics of Software:

    • Developed, not manufactured.

    • Does not wear out but deteriorates with changes.

    • Custom-built rather than assembled.

Page 6: Legacy Software and Software Myths

  • Legacy Software:

    • Older programs with poor quality, convoluted code, and inadequate documentation.

  • Software Myths:

    • False beliefs in software engineering leading to misunderstandings (e.g., the idea that more programmers can always help meet deadlines).

Page 7: Software Engineering as a Layered Technology

  • Layers:

    1. Quality focus - fundamental support.

    2. Process - foundations of software engineering.

    3. Methods - provide technical guidance.

    4. Tools - support software engineering methods.

Page 8: Process Framework

  • Elements of a Process Framework:

    • Common process framework, umbrella activities, and framework activities.

Page 9: Capability Maturity Model Integration (CMMI)

  • CMMI Levels:

    • Level 0: Incomplete

    • Level 1: Performed

    • Level 2: Managed

    • Level 3: Defined

    • Level 4: Quantitatively managed

    • Level 5: Optimized

Page 10: Process Patterns and Assessment

  • Process Patterns:

    • Collection of process templates for software development.

  • Process Assessment:

    • Aimed at improving the state of the software process without guaranteeing delivery of the product on time.

Page 11: Process Models

  • Types of Process Models:

    • Waterfall, Incremental, Evolutionary, and Agile models.

  • Waterfall Model:

    • Sequential approach where requirements need to be well understood from the beginning.

Page 12: Incremental Process Model

  • Incremental Model:

    • Develops software in increments with partial functionality released earlier.

Page 13: RAD Model

  • Rapid Application Development (RAD):

    • Focuses on early delivery of a fully functional system via a short development cycle.

Page 14: Evolutionary Process Models

  • Types:

    • Prototyping, Spiral, and Concurrent Development models.

Page 15: Prototyping

  • Description:

    • A mock-up version to understand requirements better.

Page 16: The Spiral Model

  • Characteristics:

    • Combines iterative development with risk assessment.

Page 17: Unified Process

  • Phases:

    • Inception, Elaboration, Construction, Transition.

Page 18: Agile Process Model

  • Phases:

    1. Requirements gathering

    2. Design

    3. Construction/ iteration

    4. Testing

    5. Deployment

    6. Feedback

Page 19: Extreme Programming (XP)

  • Overview:

    • Agile methodology focused on small teams and flexible development.

Page 20: Scrum Methodology

  • Key Roles:

    • Scrum Master: facilitates and removes obstacles.

    • Product Owner: represents stakeholder interests.

    • Scrum Team: responsible for production.

Page 21: Software Requirements - Unit II

  • IEEE Definitions:

    • Necessary capabilities to achieve objectives.

    • Representation of conditions needed by a system.

Page 22: Types of Software Requirements

  • User Requirements:

  • System Requirements:

  • Functional vs. Non-functional Requirements.

Page 23: Software Requirements Document

  • Purpose:

    • Official statement of what the system should do.

Page 24: Requirements Engineering Process

  • Phases:

    1. Feasibility Study

    2. Elicitation and Analysis

    3. Specification

    4. Validation

Page 25: Feasibility Studies

  • Objective:

    • Determine the usefulness and technical feasibility of the project.

Page 26: Requirements Elicitation Techniques

  • Methods:

    • Viewpoints, Interviews, Scenarios, Use Cases.

Page 27: Requirements Validation

  • Importance:

    • Ensuring the requirements meet customer needs.

Page 28: Requirements Management

  • Management Process:

    • Required due to inevitable changes in large software systems.

Page 29: System Models

  • Types of Models:

    • Context Models, Behavioral Models, Data Models, Object Models.

Page 30: Data Models

  • Use:

    • Describe logical structure of data processed by the system.

Page 31: Object Models

  • Object-oriented Approach:

    • Represents system requirements using objects and classes.

Page 32: Design Engineering - Unit III

  • Design Process Goals:

    • High-quality software product development.

Page 33: Quality Guidelines in Design

  • Attributes to Ensure Design Quality:

    • Modularity, Architectural Styles, and Patterns.

Page 34: Design Concepts

  • Key Concepts:

    • Abstraction, Architecture, Patterns, Modularity, Information Hiding.

Page 35: Functional Independence

  • Criteria:

    • Cohesion and coupling measures for module independence.

Page 36: Architectural Design Model

  • Essentials:

    • Architectural components and the interconnections between them.

Page 37: Architectural Styles

  • Common Styles:

    • Layered architectures, Object-Oriented architectures.

Page 38: Object-Oriented Design Process

  • Stages:

    • Understanding context, designing architecture, identifying objects.

Page 39: User Interface Design Guidelines

  • Key Considerations:

    • Consistency, user control, accessibility issues.

Page 40: Interface Analysis and Design Process

  • Framework Activities:

    • User, task, and environment analysis, followed by design and validation.

Page 41: Design Issues in Interfaces

  • Focus Areas:

    • Response times, accessibility, error handling, etc.

Page 42: Design Evaluation Process

  • Steps:

    • Prototype building, evaluation, modifications based on feedback.

Page 43: Testing Strategies - Unit IV

  • Objectives of Testing:

    • Uncovering design errors and ensuring functional requirements are met.

Page 44: Testing Types

  • Strategies:

    • Unit Testing, Integration Testing, System Testing, User Acceptance Testing.

Page 45: Validation Testing

  • High-Order Tests:

    • Evaluating software against functional and performance criteria.

Page 46: System Testing Types

  • Types:

    • Stress testing, performance testing, recovery testing.

Page 47: Testing Tactics for Error Finding

  • Types of Testing:

    • Black-Box and White-Box testing strategies.

Page 48: Black Box Testing Overview

  • Approach:

    • Focus on functional requirements; examines output based on input.

Page 49: White Box Testing Overview

  • Methodology:

    • Testing internal structures and control flow of the software.

Page 50: Debugging Techniques

  • Strategies:

    • Brute Force, Back Tracking, Cause Elimination.

Page 51: Software Quality Factors

  • Key Quality Factors:

    • Correctness, reliability, usability, maintainability, and efficiency.

Page 52: Software Metrics Overview

  • Purpose of Metrics:

    • Evaluate software product and process attributes.

Page 53: Product Metrics Examples

  • Types of Metrics:

    • Function points, Halstead Metrics, dimensions of product attributes.

Page 54: Metrics for Quality Assessment

  • Quality Metrics:

    • Measurement of correctness, maintainability, effectiveness.

Page 55: Software Measurement Techniques

  • Oriented Types:

    • Direct and indirect measures, size-oriented, function-oriented.

Page 56: Software Quality and Improvement

  • Quality Goals:

    • Improve software development effectiveness and product value.

Page 57: Software Quality Assurance Concepts

  • Quality assurance activities influence overall software process quality.

Page 58: Risk Management - Unit V

  • Concept of Risk:

    • Addressing the possible undesirable events that impact project success.

Page 59: Risk Identification Techniques

  • Steps for Identification:

    • Develop checklists and categorize risks (performance, schedule, etc.).

Page 60: Risk Projection and Refinement

  • Objectives:

    • Assess the impact and timing of identified risks.

Page 61: Risk Mitigation & Management Plan

  • Goals:

    • Develop proactive strategies for risk management.

Page 62: Quality Management Strategies

  • Emphasis on Quality Control:

    • Techniques for monitoring compliance with quality standards.

Page 63: Quality Assurance and Reviews

  • Formal Technical Review (FTR):

    • Focus on uncovering errors through systematic peer reviews.

Page 64: Statistical Quality Assurance & Six Sigma

  • Methods for Defect Reduction:

    • Statistical analysis to control and improve quality outcomes.

Page 65: ISO 9000 Quality Standards

  • Overview:

    • International standards for maintaining quality in software production.