Software Engineering Detailed Notes
Unit 1: Introduction to Software Engineering
Software Engineering is the application of engineering principles to software development
in a methodical way.
It involves the use of systematic, disciplined, and quantifiable approaches for software
design, development, operation, and maintenance.
Importance:
- Manages complexity in large software projects.
- Enhances software quality and reliability.
- Reduces software costs and time-to-market.
- Improves project management and documentation.
Software Development Principles:
- Modularity: Dividing software into smaller, manageable modules.
- Abstraction: Hiding complex details to simplify interaction.
- Reusability: Using existing software components in new projects.
- Maintainability: Making software easy to modify and enhance.
Process Models:
- Waterfall Model
- Incremental Model
- Spiral Model
- Agile Model
- V-Model
Each model outlines a structured sequence of stages in software engineering processes.
Unit 2: Requirements and Design
Requirements:
- Functional: Specific behavior or functions (e.g., login, report generation).
- Non-Functional: Constraints and quality aspects (e.g., performance, security).
Feasibility Study:
Evaluating technical, economic, legal, operational, and schedule feasibility before starting a
project.
Requirement Elicitation:
The process of gathering software requirements from stakeholders using techniques like
interviews, surveys, and observations.
Design Techniques:
- Structured Design
- Object-Oriented Design
UML Diagrams:
- Use Case Diagram
- Class Diagram
- Sequence Diagram
- Activity Diagram
Data Flow Diagram (DFD) and ER Diagram:
- DFD: Represents the flow of data in a system.
- ER Diagram: Represents entities and relationships in a database.
Unit 3: Software Testing
Test Plan:
A document describing the scope, approach, resources, and schedule of intended testing
activities.
Testing Principles:
1. Testing shows presence of defects.
2. Exhaustive testing is impossible.
3. Early testing.
4. Defect clustering.
5. Pesticide paradox.
6. Testing depends on context.
7. Absence-of-errors fallacy.
Testing Strategies:
- Unit Testing
- Integration Testing
- System Testing
- Acceptance Testing
- Regression Testing
Unit 4: Software Quality Management
ISO 9000:
A family of quality management standards for ensuring software quality.
Six Sigma:
A set of techniques for process improvement, reducing defects to minimal levels.
CMM (Capability Maturity Model):
Assesses the maturity of software development processes.
McCall's Quality Factors:
Attributes that measure software quality like reliability, maintainability, and usability.
Software Quality Activities:
- Quality Assurance
- Quality Planning
- Quality Control
Unit 5: Software Reengineering & SCM
Reengineering:
The process of improving existing software by restructuring or rewriting it.
Process Models:
Same as Unit 1 process models used in software reengineering.
Business Process Reengineering:
Redesigning business processes for efficiency improvement.
Software Configuration Management (SCM):
The discipline of controlling and tracking changes in software.
Includes version control, change control, and build management.
Unit 6: Software Project Management
Estimation Techniques:
- Function Point Analysis
- COCOMO Model
- Expert Judgment
- Delphi Method
Risk Management:
Identifying, analyzing, and mitigating risks in a software project.
Project Scheduling:
Creating a project timeline using tools like Gantt charts and PERT charts.
Project Costs:
Estimating total costs including human resources, tools, hardware, and overheads.