Loading...
Loading...
Why SE? 1968 NATO conference — software projects failing: over budget, late, buggy. Engineering discipline needed.
Software Crisis Problems:
Cost overruns → projects 3-10x over budget
Schedule delays → months/years late
Poor quality → bugs, crashes, security holes
Maintenance nightmare → 60-80% total cost
SE Definition (IEEE): Application of systematic, disciplined, quantifiable approach to development, operation, and maintenance of software.
Requirements
↓
System Design
↓
Implementation (Coding)
↓
Testing
↓
Deployment
↓
Maintenance
Pros: Simple, clear phases, documentation good
Cons: Rigid, no changes, late customer feedback
Best for: Small projects, well-defined requirements
Requirements → Core Module → Deliver Increment 1
↓
More Features → Deliver Increment 2
↓
More Features → Deliver Increment 3
↓
Final Product
Each increment adds functionality
Customer gets working software early
Business Modeling → Data Modeling → Process Modeling
→ Application Generation → Testing & Turnover
Reusable components, fast prototyping
60-90 day projects
Requires skilled developers, small teams
Quadrants per loop:
1. Planning (objectives, constraints)
2. Risk Analysis (identify, resolve risks)
3. Engineering (design, build, test)
4. Evaluation (customer review)
Risk-driven, iterative, large/complex projects
Barry Boehm, 1988
Scrum Framework:
─────────────────────────────────────────────────────
Sprint (1-4 weeks, fixed)
─────────────────────────────────────────────────────
Sprint Planning → Daily Standup → Sprint Review → Retrospective
Roles:
Product Owner: Product backlog, priorities, stakeholders
Scrum Master: Facilitator, removes blockers, coach
Dev Team: 3-9 people, cross-functional, self-organizing
Artifacts:
Product Backlog: All user stories, prioritized
Sprint Backlog: Stories committed for this sprint
Increment: Potentially shippable product each sprint
Ceremonies:
Sprint Planning: What to build this sprint?
Daily Standup: 15 min, 3 questions (yesterday/today/blockers)
Sprint Review: Demo to stakeholders
Sprint Retrospective: How to improve team process?
User Stories:
Format: "As a [type of user], I want [goal], so that [reason]"
Example: "As a BCA student, I want to search notes by subject,
so that I can find relevant content quickly."
Acceptance Criteria (Given-When-Then):
Given: I am on notes page
When: I type "Data Structures" in search box
Then: I see all notes with "Data Structures" in title/content
Story Points: 1, 2, 3, 5, 8, 13 (Fibonacci) — relative complexity
Velocity: avg story points per sprint → capacity planning
Types of Requirements:
Functional (FR):
What system does.
"System shall allow user to login with email and password"
"System shall send email notification on successful enrollment"
Non-Functional (NFR):
How system performs.
Performance: "Page load < 3 seconds on 4G"
Security: "Passwords stored using bcrypt hashing"
Availability: "System uptime > 99.5% per month"
Usability: "Onboarding completed in < 5 minutes by new user"
SRS Document (IEEE 830) Sections:
1. Introduction (purpose, scope, definitions)
2. Overall Description (product perspective, users)
3. Specific Requirements (FR, NFR)
4. Appendices
System: Notes Portal
Actors: Student, Teacher, Admin
Use Cases:
Student: Login, Search Notes, Download PDF, Bookmark
Teacher: Upload Notes, Create Quiz, View Analytics
Admin: Manage Users, Approve Content
Relationships:
<<include>>: Login included in Search (must be logged in)
<<extend>>: Show Premium extends View Notes (optional)
┌──────────────────┐
│ «interface» │
│ Downloadable │
├──────────────────┤
│ + download(): void│
└──────────────────┘
△ (implements)
│
┌──────────────────┐ 1 * ┌─────────────┐
│ Note │─────────────── │ Category │
├──────────────────┤ has-a ├─────────────┤
│ -id: UUID │ │ -name: String│
│ -title: String │ └─────────────┘
│ -content: Text │
│ -author: User │
├──────────────────┤
│ +publish(): void │
│ +download(): void│
└──────────────────┘
Student :Browser :API :AuthService :NoteService :Database
│ │ │ │ │ │
│─login──►│ │ │ │ │
│ │─POST /login─► │ │ │
│ │ │─verify──►│ │ │
│ │ │ ◄─token─ │ │
│ │◄─200 token── │ │ │
│ │ │ │ │ │
│─search──►│ │ │ │ │
│ │─GET /notes?q=DS────────────► │ │
│ │ │ │─query DS────────►│
│ │ │ │◄────results──────│
│ │◄─200 [notes]─────────────────────── │
V-Model (testing mirrors development):
Requirements ─────────────────── Acceptance Test
System Design ─────────── System Test
Architecture ─────── Integration Test
Module Design ─── Unit Test
Implementation ─┘
Unit Testing:
Test individual functions/methods
Tools: JUnit (Java), pytest (Python), Jest (JS)
Fast, isolated, mock dependencies
Integration Testing:
Test combined components
Top-down: high-level first, stub lower
Bottom-up: low-level first, driver for higher
System Testing:
Complete system against SRS requirements
Functional, performance, security, usability
Acceptance Testing (UAT):
Customer validates requirements met
Alpha: in-house users, Beta: external users
Test Case ID: TC-001
Test Name: Valid User Login
Preconditions: User account exists with email=alice@test.com
Test Steps:
1. Navigate to /login
2. Enter email: alice@test.com
3. Enter password: correct123
4. Click Login button
Expected Result: Redirect to dashboard, show "Welcome Alice"
Actual Result: [fill after execution]
Status: Pass / Fail
Equivalence Partitioning:
Age input (1-100): valid=[1-100], invalid=[<1, >100, non-numeric]
Test one from each class: 50 (valid), 0, 101, "abc"
Boundary Value Analysis:
Range 1-100: test 0, 1, 2, 99, 100, 101
(boundaries most likely to have bugs)
Decision Table Testing:
Conditions → Actions table
Every combination of conditions tested
LOC (Lines of Code): simple but imprecise
Function Points: functionality-based, language independent
Cyclomatic Complexity: V(G) = E - N + 2P
E=edges, N=nodes, P=connected components
V(G)=1 no branches, each if/while/case adds 1
V(G) < 10: simple, V(G) > 20: too complex
Defect Density = Defects / KLOC (thousand lines)
Code Coverage = (lines tested / total lines) × 100%
MTBF (Mean Time Between Failures): reliability
MTTR (Mean Time To Repair): maintainability
Q: Technical debt kya hota hai? A: Jab quick/shortcut code likhte hain — future mein refactoring/fixes mein extra time lagata hai, jaise interest. Ward Cunningham ne term banaya. Regular refactoring se debt reduce karo — otherwise codebase unmaintainable ho jaata hai.
Q: Regression testing kyun zaroori hai? A: Nayi code changes existing functionality break na karein — verify karo. Har release ke pehle run karo. Automated regression suite time bachata hai. Continuous Integration mein automatically run hota hai.
Q: CMMI kya hai? A: Capability Maturity Model Integration — organization ki software process maturity measure karta hai. 5 levels: Initial → Managed → Defined → Quantitatively Managed → Optimizing. Level 3+ = established processes. Large orgs CMMI certification lete hain.
Complete Software Engineering notes for BCA Sem 6 — SDLC models, Agile Scrum, SRS document, UML diagrams, Software testing, Design patterns, Project management with examples.
40 pages · 2.0 MB · Updated 2026-03-11
Software Development Life Cycle — software banane ka systematic process. Phases: Requirements → System Design → Implementation (Coding) → Testing → Deployment → Maintenance. Har phase ka output next ka input.
Waterfall: sequential, documentation heavy, no changes after phase complete, customer end mein milta hai. Agile: iterative 2-4 week sprints, customer feedback continuous, changes welcome, working software har sprint mein.
Black box: internal code nahi pata, functional testing, requirements se test cases. White box: code visible, structural testing, statement/branch coverage. Black box = what to test, White box = how it works.
Use Case: formal, detailed, actor-system interaction, UML diagram (Waterfall). User Story: informal, Agile, As-a-[user] I want [feature] so that [benefit]. Short, card-sized, conversation starter.
McCall's Quality Factors: Correctness, Reliability, Efficiency, Integrity, Usability, Maintainability, Flexibility, Testability, Portability, Reusability, Interoperability. ISO 25010, CMMI standards. Metrics: defect density, code coverage, cyclomatic complexity.
Python & Data Science Notes — BCA Sem 6
Python Data Science
Database Management System Notes — BCA Sem 3
Database Management
C Programming Notes — BCA Sem 1
C Programming
Computer Networks Notes — BCA Sem 4
Computer Networks
Java Programming Notes — BCA Sem 4
Java Programming
Your feedback helps us improve notes and tutorials.