0% found this document useful (0 votes)
30 views8 pages

Software Engineering Notes Clean

Uploaded by

hayon27563
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
30 views8 pages

Software Engineering Notes Clean

Uploaded by

hayon27563
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 8

Software Engineering Notes

Unit 1: The Software Product and Software Process

Software Product and Process Characteristics:


- Software products are developed for a purpose, and their quality depends on functionality, usability,
efficiency, reliability, maintainability, and portability.
- Software processes define the steps to produce software, including activities, methods, practices, and tools.

Software Process Models:


1. Linear Sequential Model (Waterfall):
- Follows a strict sequence: Requirements Design Implementation Testing Deployment Maintenance.
- Suitable for projects with well-defined requirements.

2. Prototyping Model:
- Involves building a prototype to clarify requirements and get user feedback early.
- Helps in refining requirements.

3. RAD (Rapid Application Development):


- Emphasizes quick development using component-based construction.
- Suitable for systems that can be modularized.

4. Evolutionary Process Models:


- Incremental Model: Develops system in increments, each delivering a portion of functionality.
- Spiral Model: Combines iterative development with risk analysis.
- Component Assembly Model: Reuses existing components to build new systems.
- Rational Unified Process (RUP): Iterative software development framework.
- Agile Processes: Emphasizes collaboration, flexibility, working software, and customer feedback.

Software Process Customization and Improvement:


- Tailoring standard processes to fit specific project needs.
- Continuous improvement via feedback, metrics, and reviews.

Capability Maturity Model (CMM):


- A framework to assess and improve software processes.
- Levels: Initial, Repeatable, Defined, Managed, Optimizing.
Software Engineering Notes

Product and Process Metrics:


- Product metrics: Size, complexity, performance.
- Process metrics: Productivity, defect rate, effort, cost, time.
Software Engineering Notes

Unit 2: Requirement Elicitation, Analysis, and Specification

Requirement Elicitation, Analysis, and Specification:

Functional Requirements:
- Define system behavior, functions, and services.

Non-functional Requirements:
- Constraints such as performance, reliability, security, usability.

Requirement Sources:
- Stakeholders, existing systems, standards, documents.

Elicitation Techniques:
- Interviews, questionnaires, observations, workshops, brainstorming, use cases.

Analysis Modeling:
- Function-oriented: DFDs, flowcharts.
- Object-oriented: Class diagrams, interaction diagrams.

Use Case Modeling:


- Describes user-system interaction through use cases and actors.

SRS (System and Software Requirement Specification):


- Structured document that defines all requirements in detail.

Requirement Validation:
- Ensures requirements are complete, consistent, and correct.

Traceability:
- Linking requirements to design, implementation, and testing.
Software Engineering Notes

Unit 3: Software Design

Software Design:

Software Design Process:


- Translating requirements into architecture and design models.

Design Concepts and Principles:


- Abstraction, modularity, information hiding, cohesion, coupling.

Software Modeling and UML:


- UML: Unified Modeling Language used for class diagrams, sequence diagrams, activity diagrams, etc.

Architectural Design:
- Defines high-level structure using components and their interactions.

Architectural Views and Styles:


- Views: Logical, process, development, physical.
- Styles: Layered, client-server, MVC, pipe-and-filter.

User Interface Design:


- Focuses on usability, layout, interaction, and user experience.

Function-oriented Design:
- Structured Analysis and Structured Design (SA/SD) using DFDs.

Component-Based Design:
- Building systems using pre-defined components/modules.

Design Metrics:
- Evaluate design quality through measures like complexity, cohesion, and coupling.
Software Engineering Notes

Unit 4: Software Analysis and Testing

Software Analysis and Testing:

Static and Dynamic Analysis:


- Static: Code analysis without execution (e.g., code review).
- Dynamic: Analyzing behavior by running the software.

Code Inspections:
- Manual code reviews to find defects early.

Software Testing Fundamentals:


- Ensures correctness, completeness, and quality.

Testing Levels:
- Unit, Integration, System, Acceptance.

Test Criteria:
- Conditions that must be met for testing (entry/exit criteria).

Test Case Design:


- Specifies inputs, expected outputs, and execution steps.

Test Oracles:
- Mechanism for determining test results.

Test Techniques:
- Black-box: Based on specifications.
- White-box: Based on internal code logic.

Unit Testing & Frameworks:


- Testing individual modules using JUnit, NUnit, etc.

Integration and System Testing:


- Combines components and tests the whole system.
Software Engineering Notes

Specialized Testing:
- Regression, performance, security, usability.

Test Plan & Metrics:


- Documentation and measurement of testing process.

OOAD vs Structured SE:


- Object-Oriented focuses on encapsulation and reuse.
- Structured SE is function-driven.
Software Engineering Notes

Unit 5: Software Maintenance & Software Project Measurement

Software Maintenance & Project Measurement:

Maintenance:
- Need: Fix defects, improve performance, adapt to changes.
- Types: Corrective, Adaptive, Perfective, Preventive.

Software Configuration Management (SCM):


- Manages changes in software artifacts.

Software Change Management:


- Tracks and controls changes during development.

Version Control, Change Control:


- Systems like Git to manage versions and changes.

Program Comprehension:
- Techniques to understand legacy systems.

Re-engineering and Reverse Engineering:


- Re-engineering: Restructuring or rewriting old software.
- Reverse Engineering: Analyzing software to derive design/requirements.

Project Management Concepts:


- Planning, monitoring, controlling, closing.

Feasibility Analysis:
- Assess viability of a project (technical, economic, legal).

Resource Allocation:
- Assigning people, time, budget.

Estimation:
- Effort, cost, schedule estimation using models like COCOMO.
Software Engineering Notes

Project Scheduling and Tracking:


- Using Gantt charts, PERT, CPM.

Risk Assessment & Mitigation:


- Identify, analyze, and plan for risks.

Software Quality Assurance (SQA):


- Ensures quality via reviews, audits, standards.

Project Plan & Metrics:


- Detailed roadmap and measurement for monitoring progress.

You might also like