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:
Comprehend various software process models.
Understand types of software requirements and SRS documents.
Know different software design and architectural styles.
Learn software testing approaches and metrics in software development.
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.
Unit 1: Introduction to Software Engineering (Page 5)
Unit 2: Software Requirements (Page 21)
Unit 3: Design Engineering (Page 33)
Unit 4: Testing Strategies (Page 44)
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:
Quality focus - fundamental support.
Process - foundations of software engineering.
Methods - provide technical guidance.
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:
Requirements gathering
Design
Construction/ iteration
Testing
Deployment
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:
Feasibility Study
Elicitation and Analysis
Specification
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.