SECTION A
SECTION A
b. Software Characteristics
Reduces misunderstandings
Stubs: Temporary code that simulates called functions (used in top-down testing)
Drivers: Temporary code that calls functions being tested (used in bottom-up testing)
Changing requirements
Poor planning/estimation
Complex technology
Software engineering is built like a layered cake with four important levels:
2. Process Layer
3. Methods Layer
o How to do the technical work
o Includes:
Programming practices
Testing approaches
o Examples:
All layers work together - tools support methods, methods follow processes, and everything aims for
quality.
Importance:
Types of Feasibility:
1. Technical Feasibility
o Is hardware/software available?
o Licensing requirements
4. Operational Feasibility
o Training requirements
5. Schedule Feasibility
o Realistic deadlines?
o Resource availability
1. Code Inspection
o Steps:
a) Planning - decide what to review
b) Overview - author explains code
c) Preparation - reviewers study code
d) Meeting - discuss defects
e) Rework - fix found issues
f) Follow-up - verify fixes
o Goals:
Find errors
Share knowledge
o Participants:
3. Walkthrough
o Purpose:
Get feedback
Find improvements
o More discussion-oriented
Comparison:
Mutation Testing
Alpha Testing:
o Done by test team at developer site
Beta Testing:
Regression Testing
What is Re-engineering?
Why Needed?
2. Outdated technology
3. Poor documentation
4. Performance issues
Re-engineering Process:
Benefits:
Improves maintainability
Better performance
1. Correctness
Meets requirements
No bugs in implementation
2. Reliability
3. Efficiency
Fast performance
4. Integrity
Security features
5. Usability
Easy to learn
Easy to use
Helpful documentation
6. Maintainability
Well-structured code
Good documentation
7. Testability
Easy to test
8. Flexibility
Easy to modify
Adapts to changes
Modular design
9. Portability
10. Reusability
1. Interviews
One-on-one meetings
2. Questionnaires
3. Workshops
4. Observation
5. Prototyping
6. Document Analysis
7. Brainstorming
8. Use Cases
What is COCOMO?
Types:
o Effort = a×(KLOC)^b
o Most accurate
1. Software Engineering Basics
Software Characteristics:
o Reusability of components
Software Crisis: Problems in development (delays, high costs, poor quality, changing
requirements).
Layered Technology:
Reliability: No crashes/failures.
Phases:
4. Development (coding)
6. Deployment (launch)
4. SDLC Models
1. Waterfall Model:
3. Spiral Model:
4. Iterative Model:
5. Key Comparisons
Testing Types:
Maintenance:
7. Risk Management
8. Documentation
Steps:
2. Feasibility Study
Types:
Parts:
o Functional Requirements (What the system does, e.g., "User can login").
Characteristics:
o Levels:
o Rules for conditions/actions (e.g., Loan Approval: "If employed AND credit score >700
→ Approve").
Activities:
Quality Frameworks:
Quality Management
Focus Process improvement.
System (QMS).
Key One-Liners