1. What is software? What are the types of software? What is software engineering? Describe the software myth and ethics.
Software: Collection of programs, procedures and related documents used to operate computer system and solve user problems.
Types of
software:
i) System software: Controls hardware and system operation. Eg: OS,
compiler, driver.
ii) Application software: Performs user tasks. Eg: MS Word, billing
system.
iii) Utility software: Maintenance and security software. Eg: Antivirus,
backup tools.
iv) Embedded software: Used inside devices. Eg: ATM, mobile system.
Software
engineering: Systematic and disciplined approach for development,
operation, testing and maintenance of software in cost effective and reliable
way.
Objectives:
Quality software, low cost, reliability, timely delivery, maintainability.
Software
myths: False beliefs about software development.
i) Customer myth: “Requirement can change anytime easily.” Reality:
increases cost and delay.
ii) Management myth: “Adding more programmers finishes project faster.”
Reality: increases coordination complexity.
iii) Developer myth: “Coding is only important.” Reality: design,
testing and maintenance are equally important.
Software
ethics: Moral and professional rules followed by software engineers during
software development.
Main ethics:
- Maintain confidentiality of client data
- Respect copyright and license
- Be honest about project status
- Develop safe and reliable software
- Work within professional skill
Example:
Engineer should not leak banking customer information because it violates
professional ethics and confidentiality.
2. Explain the spiral software development process model.
Spiral model is a risk-driven software development model proposed by Barry Boehm. It combines features of waterfall model and prototyping model. Development is completed through repeated cycles called spirals.
Each spiral
contains four major activities:
i) Planning:
Objectives, requirements, cost and schedule are identified.
ii) Risk
analysis:
Possible risks are identified and solutions are planned. Prototype may be
developed to reduce risk.
iii)
Engineering:
Coding, design and testing of software are performed.
iv)
Evaluation:
Customer evaluates the product and provides feedback for next cycle.
Process
continues repeatedly until final software is completed.
Advantages:
- Suitable for large and complex projects
- Better risk management
- Customer feedback in every phase
- Requirement changes can be handled easily
Disadvantages:
- Expensive model
- Complex to manage
- Requires risk analysis expertise
- Not suitable for small projects
Applications:
Used in banking system, military software, large business systems and high-risk
projects.
3. Describe the importance of SRS and explain requirement engineering process, requirement and component.
SRS (Software Requirement Specification):
SRS is a document that describes functional and non-functional requirements of
software system clearly and completely.
Importance
of SRS:
- Acts as agreement between customer and developer
- Reduces development error
- Helps in testing and validation
- Provides basis for design and coding
- Reduces cost and development time
- Helps maintenance and future enhancement
Requirement
Engineering:
Requirement engineering is the process of collecting, analyzing, documenting
and managing software requirements.
Requirement
Engineering Process:
i) Feasibility study:
Checks whether project is technically, economically and operationally possible.
ii)
Requirement elicitation:
Requirements are collected from users using interview, questionnaire,
observation etc.
iii)
Requirement analysis:
Collected requirements are analyzed and conflicts are removed.
iv)
Requirement specification:
Requirements are documented in SRS form.
v)
Requirement validation:
Requirements are checked for correctness and completeness.
vi)
Requirement management:
Manages requirement changes during development.
Requirement:
Requirement is a condition or capability needed by user or system.
Types:
i) Functional requirement: Describes system functions. Eg: login, report
generation.
ii) Non-functional requirement: Describes quality attributes. Eg:
security, performance, reliability.
Components
of SRS:
- Introduction
- Overall description
- Functional requirements
- Non-functional requirements
- Interface requirements
- Database requirements
- Constraints and assumptions
Conclusion:
SRS and requirement engineering help developers clearly understand user needs
and develop quality software systematically.
4. What are the activities of software project management? Explain the software development planning process.
Software Project Management
Activities:
i) Project planning: Define scope, objectives, schedule and resources.
ii) Effort estimation: Estimate time, cost and manpower required.
iii) Scheduling: Prepare timeline and task sequence.
iv) Resource allocation: Assign team, tools and budget.
v) Risk management: Identify and control possible risks.
vi) Monitoring and control: Track progress and compare with plan.
vii) Quality management: Ensure software meets required standards.
viii) Communication management: Maintain coordination among
stakeholders.
Software Development Planning
Process:
i) Define scope:
Identify system boundaries, objectives and deliverables.
ii) Requirement analysis:
Understand user needs and system requirements.
iii) Estimation:
Estimate cost, time and effort using techniques like COCOMO, expert judgment.
iv) Scheduling:
Prepare project schedule using Gantt chart or PERT.
v) Resource planning:
Assign developers, tools, hardware and budget.
vi) Risk planning:
Identify risks and prepare mitigation strategies.
vii) Quality planning:
Define testing strategy, standards and quality goals.
viii) Documentation:
Prepare project plan document for execution and monitoring.
Conclusion:
Software project management ensures proper planning, execution and control of
software projects for successful delivery within time and cost.
5. What are software matrices? Describe the calculation parameters of functional point and object point.
Software
Metrics:
Software metrics are quantitative measures used to estimate, evaluate and
control software development process, product and project.
Functional
Point (FP):
FP measures software size based on user functionality.
Calculation
parameters:
- External Input (EI): User inputs to system
(data entry, login)
- External Output (EO): Reports or output
generated
- External Inquiry (EQ): Query/response without
major processing
- Internal Logical File (ILF): Internal database
files
- External Interface File (EIF): Files used from
other systems
Each component
is rated as simple, average or complex and assigned weight.
FP formula:
FP = Total Unadjusted Function Points × Value Adjustment Factor (VAF)
Object Point
(OP):
Object point measures software size based on objects like screens, reports and
modules.
Calculation
parameters:
- Screens (user interfaces)
- Reports
- 3GL components (program modules)
Each is
classified as simple, medium or complex and weighted.
OP formula:
OP = (Number of objects × weight) – percentage of reuse
Conclusion:
Software metrics like FP and OP help in effort estimation, cost prediction and
project planning.
6. Describe the black box and white box software Testing approach.
Software
engineers need ethics because software affects users, organizations and society
directly. Ethical behavior ensures trust, safety and professional
responsibility in software development.
Importance
of ethics:
- Protects user data and privacy
- Ensures software reliability and safety
- Builds trust between client and developer
- Prevents legal and financial issues
- Maintains professional integrity
- Avoids misuse of software systems
Main ethical
responsibilities:
- Maintain confidentiality of client information
- Be honest in reporting project status
- Respect intellectual property rights
- Develop safe and secure software
- Work within professional competence
Example:
In a banking system, a software engineer must not access or leak customer
account details. If he shares or sells this data, it is unethical and illegal
because it violates confidentiality and trust.
Another
example:
If a developer knows a system has security bugs, he must report it instead of
hiding it, because ignoring it may harm users.
Conclusion:
Ethics is essential in software engineering to ensure responsible behavior,
protect users and maintain trust in software systems.
7. Why software engineers need to be ethical? Support your answer with example.
Software
engineers need ethics because software affects users, organizations and society
directly. Ethical behavior ensures trust, safety and professional
responsibility in software development.
Importance
of ethics:
- Protects user data and privacy
- Ensures software reliability and safety
- Builds trust between client and developer
- Prevents legal and financial issues
- Maintains professional integrity
- Avoids misuse of software systems
Main ethical
responsibilities:
- Maintain confidentiality of client information
- Be honest in reporting project status
- Respect intellectual property rights
- Develop safe and secure software
- Work within professional competence
Example:
In a banking system, a software engineer must not access or leak customer
account details. If he shares or sells this data, it is unethical and illegal
because it violates confidentiality and trust.
Another
example:
If a developer knows a system has security bugs, he must report it instead of
hiding it, because ignoring it may harm users.
Conclusion:
Ethics is essential in software engineering to ensure responsible behavior,
protect users and maintain trust in software systems.
8. What is software process model? Explain waterfall model.
Software
Process Model:
A software process model is a structured framework that defines the sequence of
activities involved in software development.
It provides a
systematic way to develop software efficiently and ensures proper planning,
execution and maintenance.
Waterfall
Model:
Waterfall model is a linear sequential software development model where each
phase is completed before the next begins.
Phases:
i) Requirement analysis:
System requirements are collected and documented.
ii) System
design:
Architecture and system design are prepared.
iii)
Implementation:
Coding is done based on design.
iv) Testing:
Software is tested to find and fix errors.
v)
Deployment:
Software is delivered to users.
vi)
Maintenance:
Updates and error fixes are done after delivery.
Characteristics:
- Sequential process
- No overlapping of phases
- Easy to understand and manage
- Each phase has specific deliverables
Advantages:
- Simple and structured
- Easy to manage and understand
- Suitable for small projects
- Clear documentation
Disadvantages:
- Not flexible for requirement changes
- Testing happens late
- Not suitable for complex and evolving projects
Conclusion:
Waterfall model is a simple and structured process model suitable for small and
well-defined projects where requirements are clear.
9. Define “Requirement elicitation”. Explain any two elicitation technique with example.
Requirement
Elicitation:
Requirement elicitation is the process of collecting requirements from
stakeholders, users and clients for software development.
It helps to
understand what the user actually needs from the system.
Techniques:
- Interview:
In this technique, developer directly interacts with users and asks questions to gather requirements.
Example:
Developer interviews school admin to know requirements of student admission
system like registration, fee entry, report generation.
- Questionnaire:
A set of written questions is given to users to collect requirements.
Example:
In a banking system, customers fill questionnaire about needed services like
account inquiry, fund transfer, loan services.
Conclusion:
Requirement elicitation is an important step in requirement engineering to
ensure correct and complete understanding of user needs using different
techniques.
10. Define project planning. Explain work breakdown structure(WBC) with example.
Project
Planning:
Project planning is the process of defining project objectives, scope,
schedule, resources and cost to complete a software project successfully.
It provides
roadmap for development and helps in monitoring progress.
Work
Breakdown Structure (WBS):
WBS is a technique used to divide a project into smaller, manageable tasks or
modules.
It helps in
organizing work and assigning responsibilities.
Structure:
Project → Major modules → Sub modules → Tasks
Benefits:
- Easy project management
- Clear task distribution
- Better estimation of time and cost
- Improves control and monitoring
Example:
Student Management System
- Project: Student Management System
- Modules:
i) Student Registration
ii) Attendance Management
iii) Exam Management - Sub tasks:
Registration → form design, database setup, validation
Attendance → daily entry, report generation
Exam → marks entry, result calculation
Conclusion:
Project planning with WBS helps in breaking complex projects into simple tasks
for efficient execution and control.
11. Explain cost estimation technique in brief.
Cost estimation
is the process of predicting the effort, time and money required to develop
software.
Techniques:
- Expert judgment:
Estimation done by experienced professionals based on past projects. - COCOMO model:
Constructive Cost Model uses software size (KLOC) to estimate effort, time and cost. - Function Point analysis:
Estimates cost based on functionality delivered to user instead of lines of code. - Delphi technique:
Group of experts give estimates independently and final estimate is reached by consensus. - Top-down estimation:
Overall project cost is estimated first and then divided into modules. - Bottom-up estimation:
Each module cost is estimated separately and then summed up.
Conclusion:
Cost estimation techniques help in planning budget, schedule and resources for
successful software development.
12. Why software need to be validated? Explain.
Software
validation is the process of checking whether the developed software meets user
requirements and intended purpose.
Need of
validation:
- Ensures software meets user needs
- Detects missing or incorrect requirements
- Improves software quality
- Reduces failure after deployment
- Increases customer satisfaction
- Ensures correctness of final product
Explanation:
Validation checks “Are we building the right product?” rather than “Are we
building the product right?”
It is done
after development or during testing phase using methods like:
- System testing
- Acceptance testing
- User feedback
- Requirement review
Example:
In a student management system, validation ensures that features like
registration, attendance, and result generation actually satisfy school
requirements.
Conclusion:
Software validation is essential to confirm that the final product fulfills
user expectations and real-world needs.
13. What is the difference between software maintenance and software evolution?
Software
Maintenance:
Software maintenance is the process of correcting faults, improving
performance, or adapting software after delivery.
It is done
after deployment to keep software working properly.
Types:
- Corrective: Fixing bugs
- Adaptive: Adjusting to environment changes
- Perfective: Improving performance or features
- Preventive: Improving maintainability
Software
Evolution:
Software evolution is the continuous process of changing and improving software
over time to meet new requirements and environment changes.
It includes
maintenance plus major structural changes and enhancements.
Difference:
- Meaning:
Maintenance: Fixing and small improvements after delivery
Evolution: Continuous growth and major changes of software over time - Scope:
Maintenance: Limited to fixing and minor updates
Evolution: Includes large enhancements and redesign - Nature:
Maintenance: Reactive process (fix problems)
Evolution: Both reactive and proactive (improve system) - Focus:
Maintenance: Keep system working
Evolution: Keep system relevant and up-to-date - Example:
Maintenance: Fix login bug
Evolution: Adding mobile app version of system
Conclusion:
Software maintenance ensures system stability while software evolution ensures
long-term improvement and adaptation to changing needs.
14. In Recent year university has computerized its examination system by using various software application. Find out Risk involved in implementing and administration you as software expert. Prepare risk integration, monitoring and management plan.
Risk
Identification:
i) Technical risk: system failure, bugs, server crash
ii) Security risk: hacking, data leakage, exam paper theft
iii) Operational risk: user errors, staff untrained
iv) Schedule risk: delay in development or deployment
v) Hardware risk: power failure, network failure
vi) Data risk: loss or corruption of exam records
Risk
Management Plan:
- Risk integration:
Risk management is integrated into all phases of SDLC from planning to maintenance. Each module (exam upload, login, result) has risk checklist. - Risk analysis:
Each risk is analyzed based on probability and impact.
High priority: security breach, server crash
Medium: user error, delay
Low: minor UI issues - Risk mitigation strategies:
- Backup system and database replication
- Strong authentication and encryption
- Load balancing for server failure
- Training for staff and users
- Regular system testing and audits
- Risk monitoring:
- Continuous system monitoring during exams
- Log tracking and alert system
- Regular security audits
- Monitoring server performance and uptime
- Risk control:
- Immediate backup activation on failure
- Emergency shutdown plan if data breach occurs
- Patch updates and bug fixing
Conclusion:
Proper risk management ensures secure, reliable and uninterrupted computerized
examination system with minimal failure chances.
15. List the software development process activities. Explain the Raid application development (RAD) Model.
Software
development process activities:
i) Requirement analysis
ii) System design
iii) Coding/implementation
iv) Testing
v) Deployment
vi) Maintenance
vii) Project planning and estimation (supporting activity)
viii) Configuration management and documentation
RAD Model
(Rapid Application Development):
RAD is an incremental software development model that focuses on fast
development with less planning and more user involvement.
Phases of
RAD:
i) Business
modeling:
Understand business processes and information flow.
ii) Data
modeling:
Identify data objects and relationships.
iii) Process
modeling:
Define process logic and transformations of data.
iv)
Application generation:
Code is generated using tools, reusable components and CASE tools.
v) Testing
and turnover:
Final testing is done and system is delivered to user.
Characteristics:
- Fast development
- High user involvement
- Component-based development
- Parallel development of modules
Advantages:
- Very fast delivery
- Reduces development time
- Easy to accommodate changes
Disadvantages:
- Not suitable for large complex systems
- Requires skilled developers and tools
- Depends on user availability
Conclusion:
RAD model is suitable for fast development of systems where requirements are
well understood and time is limited.
16. What is agile software development? Explain Challenges & Strategies in scaling agile method in large scale. Why agile software development principles are adopted in software development? Describe the XP methodology.
Agile
Software Development:
Agile is an iterative and incremental software development approach where
requirements and solutions evolve through collaboration between self-organizing
teams and customers.
Challenges in
scaling agile:
- Difficulty in coordinating multiple teams
- Communication gaps in large projects
- Integration issues between modules
- Maintaining consistent quality standards
- Resistance to organizational change
- Complex documentation management
Strategies
for scaling agile:
- Use of Scrum-of-Scrums for coordination
- Strong product backlog management
- Continuous integration and automated testing
- Modular architecture for parallel development
- Standardized coding and quality practices
- Regular cross-team communication meetings
Why agile
principles are adopted:
- Faster delivery of software
- Easy adaptation to changing requirements
- High customer satisfaction
- Early detection of defects
- Continuous improvement of product
- Better team collaboration
XP (Extreme
Programming) methodology:
XP is an agile methodology focused on improving software quality and
responsiveness to changing requirements.
Key
practices:
- Pair programming
- Test-driven development (TDD)
- Continuous integration
- Small releases
- Simple design
- Refactoring
- Customer involvement throughout development
Conclusion:
Agile and XP improve flexibility, quality and speed of software development,
especially in dynamic environments.
17. Explain the software requirement engineering process with example of each process.
Software Requirement
Engineering Process:
It is the structured process of gathering, analyzing, documenting and managing
software requirements.
Steps:
i) Feasibility
study:
Checks whether system is practical in terms of cost, technology and time.
Example: Checking if online exam system can be developed with available server
and budget.
ii) Requirement
elicitation:
Collecting requirements from users.
Example: Interview teachers for exam system features like question upload and
result generation.
iii) Requirement
analysis:
Remove conflicts and prioritize requirements.
Example: Decide whether manual grading or automatic grading is needed.
iv) Requirement
specification:
Document requirements in SRS.
Example: “System shall allow student login using ID and password.”
v) Requirement
validation:
Check correctness and completeness of requirements.
Example: Review SRS with school admin to confirm exam rules are correct.
vi) Requirement
management:
Handle changes in requirements during development.
Example: Adding new feature like online proctoring during development phase.
Conclusion:
Requirement engineering ensures correct understanding, documentation and
control of software requirements throughout SDLC.
18. Demonstrate the class diagram & sequence diagram with reference outline student admission system in school.
Class
Diagram (Student Admission System):
Main
classes:
- Student
- student_id, name, dob, address
- apply(), updateDetails()
- AdmissionForm
- form_id, date, status
- submit(), verify()
- Admin/Clerk
- staff_id, name
- approve(), reject()
- Course/Class
- class_id, name, capacity
- addStudent()
Relationships:
- Student submits AdmissionForm
- Admin verifies AdmissionForm
- AdmissionForm linked to Course
Simple
structure:
Student → submits → AdmissionForm → verified by → Admin → assigned to → Course
Sequence
Diagram (Admission Process):
Steps:
- Student fills admission form
- System receives form
- Clerk verifies details
- Admin approves/rejects form
- If approved, student assigned to class
- Confirmation message sent to student
Sequence
flow:
Student → Form Submission → System → Clerk → Admin → System → Class Allocation
→ Student Notification
Conclusion:
Class diagram shows structure of system, while sequence diagram shows
step-by-step interaction in admission process.
19. What is software re-engineering process? Why software maintenance is implemented? Describe the forward and reverse engineering process.
Software
Re-engineering Process:
Software re-engineering is the process of improving or transforming existing
software to a better form without changing its external behavior.
It includes
understanding, restructuring, and re-implementing old software to improve
quality, performance, and maintainability.
Why software
maintenance is implemented:
- To fix errors (bug fixing)
- To adapt software to new environment (OS, hardware,
rules)
- To improve performance and efficiency
- To add new features based on user needs
- To ensure long-term usability of software
Forward
Engineering:
Forward engineering is the process of developing software from requirement to
design and implementation.
Flow:
Requirements → Design → Code → Testing → Deployment
Purpose:
- Build new software system
- Normal SDLC process
Reverse
Engineering:
Reverse engineering is the process of analyzing existing software to understand
its design and structure.
Flow:
Code → Design → Requirements (understanding system backward)
Purpose:
- Understand legacy systems
- Recover lost design documentation
- Modify or improve old systems
Difference
(simple):
Forward: design to code (new system)
Reverse: code to design (existing system analysis)
Conclusion:
Re-engineering improves old software systems, while forward and reverse
engineering help in building and understanding software effectively.
20. Compare the software quality control and quality assurance with indicators.
Software
Quality Assurance (SQA):
It is a process-oriented activity that ensures proper processes are followed
during software development to prevent defects.
Software
Quality Control (SQC):
It is a product-oriented activity that focuses on identifying defects in the
final software product.
Comparison:
- Meaning:
SQA: Ensures process quality
SQC: Ensures product quality - Focus:
SQA: Prevent defects
SQC: Detect defects - Nature:
SQA: Proactive (before development issues occur)
SQC: Reactive (after product is developed) - Activities:
SQA: Process audits, standards, reviews
SQC: Testing, inspections, debugging - Responsibility:
SQA: Entire development team + QA team
SQC: Testing team - Timing:
SQA: Throughout SDLC
SQC: After or during implementation
Indicators:
SQA
indicators:
- Process compliance rate
- Defect prevention rate
- Audit results
- Requirement coverage
SQC
indicators:
- Number of defects found
- Defect density
- Test case pass/fail rate
- Reliability of software
Conclusion:
SQA improves development process quality while SQC ensures final product
quality through testing and defect detection.
21. What is software testing? Why configuration management is required?
Software
Testing:
Software testing is the process of executing a program to find errors and
ensure that it meets specified requirements.
Objectives:
- Detect defects in software
- Ensure software quality
- Verify and validate system functionality
- Improve reliability and performance
Types
(brief):
- Unit testing
- Integration testing
- System testing
- Acceptance testing
Configuration
Management (CM):
Configuration management is the process of controlling and tracking changes in
software components during development and maintenance.
Why
configuration management is required:
- Controls version of software components
- Manages changes systematically
- Prevents confusion between multiple versions
- Ensures consistency in development team
- Supports rollback to previous versions if error
occurs
- Improves coordination in large projects
Activities
in CM:
- Version control
- Change control
- Build management
- Release management
Conclusion:
Software testing ensures defect-free software, while configuration management
ensures controlled and organized development with proper version tracking and
change handling.
22. How is requirement validation carried out in the context of software engineering.
Requirement
validation is the process of checking whether the documented requirements are
correct, complete, consistent and meet user needs.
It ensures we are
building the right system.
Methods of
requirement validation:
i) Requirement
review:
SRS document is reviewed by developers, testers and users to detect errors and
missing requirements.
Example: checking if student admission system includes fee payment and
verification steps.
ii) Prototyping:
A prototype is built and shown to users to confirm requirements.
Example: a sample login and admission form is shown to school admin for
feedback.
iii) Test case
generation:
Test cases are derived from requirements to ensure they are testable and
correct.
Example: login requirement must have test cases for valid and invalid inputs.
iv) Consistency
checking:
Ensures no conflicting requirements exist.
Example: system cannot both allow and disallow late admission simultaneously.
v) Acceptance
testing:
Final validation done by user after system development.
Example: school admin verifies if exam system works as expected.
Conclusion:
Requirement validation ensures correctness, completeness and usability of
requirements before full development, reducing costly errors later.
23. What is the role of development testing ins software development life cycle?
Development
testing is the testing performed during the development phase to detect and fix
defects early in the software.
Role of
development testing:
i) Early
defect detection:
Finds errors during coding stage before they become costly.
ii) Improves
software quality:
Ensures each module works correctly and meets requirements.
iii) Reduces
development cost:
Fixing bugs early is cheaper than fixing after deployment.
iv) Supports
continuous improvement:
Helps developers improve code while building the system.
v) Ensures
module correctness:
Verifies individual components before integration.
Types
involved:
- Unit testing: tests individual functions/modules
- Integration testing: tests interaction between
modules
- Static testing: reviews code without execution
Example:
In a student system, unit testing checks login function, while integration
testing checks login + database connection.
24. How risk management integrated into software project management?
Risk management is
integrated into software project management by identifying, analyzing,
controlling and monitoring risks throughout the project lifecycle.
Integration in
project management:
i) Project planning
stage:
Risks are identified early (technical, cost, schedule, security) and documented
in risk plan.
ii) Risk analysis
stage:
Each risk is assessed based on probability and impact and prioritized.
iii) Risk mitigation
planning:
Strategies are prepared to reduce or avoid risks.
Example: backup systems for data loss, training for users.
iv) Resource
allocation:
Extra buffer time, budget and skilled staff are allocated for high-risk areas.
v) Implementation
stage:
Risk control actions are applied during development (testing, reviews,
monitoring).
vi) Monitoring and
review:
Risks are continuously tracked and updated using reports, audits and status
meetings.
vii) Communication:
Risk status is regularly shared with stakeholders for decision making.
Example:
In an online exam system, risk of server crash is handled by load balancing and
backup servers.
Conclusion:
Risk management is fully integrated into software project management to ensure
smooth execution, reduced failures and successful delivery of software
projects.
25. Short notes on SDLC,SCRUM, prototype model.
SDLC
(Software Development Life Cycle):
SDLC is a structured process used to develop software step by step.
Phases:
- Requirement analysis
- Design
- Implementation (coding)
- Testing
- Deployment
- Maintenance
Importance:
- Ensures systematic development
- Improves quality
- Reduces cost and risk
- Clear documentation and control
SCRUM:
SCRUM is an agile framework used for managing and completing complex software
projects.
Key roles:
- Product Owner
- Scrum Master
- Development Team
Key terms:
- Sprint: short time iteration (1–4 weeks)
- Product backlog: list of requirements
- Daily scrum: short daily meeting
Advantages:
- Fast development
- Flexible to changes
- Continuous feedback
Prototype
Model:
Prototype model is a development approach where a working model is built early
to understand requirements.
Steps:
- Gather requirements
- Build prototype
- User evaluation
- Refine prototype
- Develop final system
Advantages:
- Better requirement understanding
- User involvement
- Reduces risk of misunderstanding
Conclusion:
SDLC provides structure, SCRUM provides agility, and prototype model helps in
requirement clarity through early working model.
26. Short notes on COCOMO.
COCOMO
(Constructive Cost Model) is a software cost estimation model used to estimate
effort, time, and cost of software projects based on size.
It uses KLOC
(Kilo Lines of Code) as input.
Basic COCOMO
formula:
Effort = a × (KLOC)^b
Time = c × (Effort)^d
Types of
COCOMO:
i) Basic
COCOMO:
Used for small, simple projects with limited analysis.
ii)
Intermediate COCOMO:
Includes cost drivers like product, hardware, personnel and project attributes.
iii)
Detailed COCOMO:
More detailed version where each phase of SDLC is analyzed separately.
Project modes:
i) Organic:
Small, simple projects with experienced team.
ii)
Semi-detached:
Medium complexity projects.
iii)
Embedded:
Complex projects with tight constraints and hardware interaction.
Advantages:
- Simple and widely used
- Good for early estimation
- Helps in planning cost and schedule
Limitations:
- Depends on accurate KLOC
- Not suitable for modern reuse-based development
- Less accurate for agile projects
Conclusion:
COCOMO is a useful model for estimating software cost and effort based on
project size and complexity.
27. What is version control? How version control is differing from change management?
Version
Control:
Version control is a system that records and manages changes made to software
code or documents over time.
It allows
developers to track, store, and restore different versions of software.
Features:
- Keeps history of changes
- Supports collaboration among developers
- Allows rollback to previous version
- Manages multiple versions of same software
Example:
Git is a popular version control system.
Difference
between Version Control and Change Management:
- Meaning:
Version control: Manages different versions of code/files
Change management: Controls and approves changes in software system - Focus:
Version control: Technical tracking of code changes
Change management: Process of evaluating and approving changes - Level:
Version control: Developer level activity
Change management: Project management level activity - Tools:
Version control: Git, SVN
Change management: Jira, service desk systems - Purpose:
Version control: Maintain code history and collaboration
Change management: Ensure controlled and safe implementation of changes
Conclusion:
Version control manages code versions technically, while change management
ensures proper approval and control of software changes in a project.
Some Important Notes
1.
Software Engineering Ethics
Software
Engineering Ethics refers to the set of moral principles, values, and
professional standards that guide software engineers in the design,
development, testing, and maintenance of software systems. It ensures that
software professionals act responsibly while handling data, user privacy,
security, and system reliability. Since software systems are widely used in
banking, healthcare, education, and government sectors, ethical behavior is
very important to protect individuals and society.
Ethical
practices help engineers make correct decisions when facing dilemmas such as
data misuse, security risks, or system failures.
Importance
of Software Engineering Ethics
- Ensures responsible development of
software systems
- Protects user privacy and personal
data
- Prevents misuse of software and
technology
- Improves trust between users and
developers
- Ensures compliance with laws and
regulations
- Reduces security risks and system
failures
Main
Ethical Principles
- Privacy Protection:
User data must be kept confidential and not shared without permission.
- Security Responsibility:
Software should be protected from unauthorized access and cyber attacks.
- Honesty and Integrity:
Engineers should provide accurate information about software capabilities.
- Professional Responsibility:
Follow coding standards, rules, and industry guidelines.
- Public Interest:
Software should not harm society or individuals.
Main
Points
- Protect user privacy and data
- Ensure system safety and reliability
- Avoid misuse of information
- Follow professional standards and
code of conduct
- Maintain public trust and
transparency
Example
In
a hospital management system, patient records such as medical history, reports,
and personal details must be securely stored and should not be accessed or
shared by unauthorized users. If leaked, it can harm patients and violate
ethical and legal standards.
Another
example is banking software, where customer account details must be protected
from hackers and unauthorized access.
Conclusion
Software
Engineering Ethics plays a vital role in ensuring safe, secure, and responsible
software development. It helps developers create trustworthy systems that
protect users and society while maintaining professionalism and legal
compliance. Without ethics, software systems may lead to privacy violations,
security threats, and loss of public trust.
2.
Software Process Model (Waterfall)
A
Software Process Model is a structured framework used to develop software in a
systematic and organized way. It defines a step-by-step approach for software
development, starting from requirement gathering and ending with maintenance.
It helps developers manage activities properly, reduce errors, and improve
software quality. One of the most widely used traditional models is the Waterfall
Model, which follows a linear and sequential process.
Waterfall
Model
The
Waterfall Model is a classic software development model in which each phase
must be completed before moving to the next one. It is called “waterfall”
because the process flows downward like a waterfall, with no overlapping of
phases.
Each
phase produces output that becomes the input for the next phase.
Phases
of Waterfall Model
- Requirement Analysis:
Collect and analyze user needs and system requirements.
- System Design:
Prepare system architecture, database design, and overall structure.
- Implementation (Coding):
Developers write code based on design specifications.
- Testing:
The software is tested to find and fix errors and bugs.
- Deployment:
The system is delivered and installed for users.
- Maintenance:
Regular updates, bug fixes, and improvements are made after deployment.
Main
Points
- Requirement analysis is done at the
beginning
- Design is prepared before coding
starts
- Coding is done after finalizing
design
- Testing is performed after
implementation
- Maintenance is the final and
continuous phase
Advantages
- Simple and easy to understand
- Easy to manage due to clear structure
- Suitable for small and well-defined
projects
- Each phase has specific deliverables
- Easy documentation process
Disadvantages
- Not flexible for changes
- Difficult to go back to previous
stages
- Not suitable for complex or large
projects
- Testing is done late in the process
Example
The
Waterfall Model is commonly used in government systems, payroll systems, and
banking applications, where requirements are clearly defined and changes
are minimal.
Conclusion
The
Waterfall Model is a simple and structured software development approach. It is
suitable for small and stable projects with fixed requirements. However, it is
less flexible compared to modern models, making it less suitable for complex
and changing systems.
3.
SDLC (Software Development Life Cycle)
SDLC
(Software Development Life Cycle) is a structured, step-by-step process used
for developing high-quality software efficiently. It defines a complete
framework that covers all stages of software development from initial planning
to final maintenance. The main goal of SDLC is to produce reliable, efficient,
and cost-effective software while reducing risks and errors during development.
Purpose
of SDLC
- To develop software in a systematic
and organized way
- To improve software quality and
reliability
- To reduce cost, time, and development
risks
- To ensure proper documentation and
planning
- To manage complex software projects
effectively
Phases
of SDLC
- Requirement Gathering & Analysis:
Collect user needs and system requirements.
- System Design:
Design system architecture, database, and interface structure.
- Implementation (Coding):
Convert design into actual program code.
- Testing:
Identify and fix bugs and errors in the software.
- Deployment:
Install and deliver software to users.
- Maintenance:
Update, improve, and fix issues after deployment.
Main
Points
- Requirement gathering from users
- System design and planning
- Coding or implementation of software
- Testing for error detection
- Deployment and maintenance of system
Advantages
of SDLC
- Provides clear structure for
development
- Improves software quality
- Reduces development risks and
confusion
- Easy project management and control
- Ensures better documentation
Disadvantages
of SDLC
- Can be time-consuming for large
projects
- Difficult to handle requirement
changes
- Not suitable for rapidly changing
systems in traditional models
- Requires detailed planning and
documentation
Example
SDLC
is used in developing websites, mobile applications, banking systems, and
management systems where proper planning and structured phases are required.
Conclusion
SDLC
is a systematic approach to software development that ensures proper planning,
design, implementation, testing, and maintenance. It helps in producing
high-quality and reliable software while reducing risks and improving
development efficiency.
4.
Project Planning & WBS
Project
Planning is the process of defining how a project will be completed, including
tasks, time, cost, resources, and responsibilities. It is done before starting
actual development to ensure smooth execution and successful delivery of the
project. It helps in organizing work in a systematic manner and reduces
confusion, delays, and risks.
Work
Breakdown Structure (WBS) is an important part of project planning. It is a
technique used to break a large project into smaller, manageable tasks or
modules. Each task can be assigned, tracked, and completed easily.
Importance
of Project Planning
- Helps in proper organization of
project activities
- Defines clear goals and objectives
- Reduces project risks and uncertainty
- Ensures efficient use of time and
resources
- Improves communication among team
members
Work
Breakdown Structure (WBS)
WBS
divides a project into smaller components or modules. Each module represents a
specific task that contributes to the final project.
It
follows a top-down approach:
- Project → Major Modules → Sub-modules
→ Tasks
Main
Components of Project Planning & WBS
- Task Division:
Breaking the project into smaller tasks
- Resource Allocation:
Assigning developers, tools, and materials
- Scheduling:
Setting deadlines for each task
- Cost Estimation:
Estimating budget required for the project
- Progress Monitoring:
Tracking project development status
Advantages
of WBS
- Makes complex projects easier to
manage
- Improves task clarity and
organization
- Helps in better time management
- Reduces chances of missing important
tasks
- Improves team coordination
Example
An
Online Examination System can be divided into modules such as:
- User login module
- Question management module
- Exam scheduling module
- Result evaluation module
- Report generation module
Each
module is further divided into smaller tasks for development.
Conclusion
Project
Planning and Work Breakdown Structure (WBS) are essential for successful
project management. They help in organizing, dividing, and managing tasks
efficiently. WBS simplifies complex projects into manageable parts, ensuring
timely delivery and better quality output.
5.
Cost Estimation Techniques
Cost
Estimation is the process of predicting the required effort, time, and total
cost needed to develop a software system. It is an important activity in
software project planning that helps in budgeting, resource allocation, and
decision-making. Cost estimation is usually done in the early stage of a
project before development begins. It reduces financial risks and improves the
chances of project success.
Importance
of Cost Estimation
- Helps in proper budgeting and
financial planning
- Ensures efficient use of resources
- Reduces risk of project failure due
to cost issues
- Helps managers make better project
decisions
- Improves project scheduling and
planning
Cost Estimation
Techniques
- Expert Judgment:
Estimation is done by experienced professionals based on their knowledge and past experience. - Analogous Estimation:
Cost is estimated by comparing the current project with similar completed projects. - COCOMO Model (Constructive Cost
Model):
A mathematical model that estimates cost, effort, and time based on project size (usually lines of code). - Bottom-Up Approach:
The project is divided into smaller modules, and cost is estimated for each module separately, then combined. - Parametric Estimation:
Uses statistical relationships between historical data and project variables to estimate cost.
Main
Points
- Expert judgment based estimation
- Use of past project comparison
- COCOMO mathematical model
- Bottom-up module-wise estimation
- Parametric estimation using data
analysis
Example
If
a company has previously developed a website for 50,000 NPR, it can use that
past data to estimate the cost of a similar new website, adjusting for new
features and complexity.
Conclusion
Cost
Estimation Techniques are essential in software project management. They help
predict the cost, time, and effort required for development. Proper estimation
ensures effective planning, reduces risks, and increases the chances of
successful project completion.
6.
Software Validation
Software
validation checks whether the software meets user requirements. It ensures that
the correct product is developed. It is performed before delivery. It improves
quality and reliability. It avoids user dissatisfaction.
Main
Points
- Ensures correct functionality
- Detects errors early
- Improves reliability
- Ensures user satisfaction
- Reduces system failure
Example
Ticket
booking system must correctly reserve seats.
Conclusion
Validation
ensures the right product is built.
7.
Risk Management (RMMM Plan)
Risk
Management is the process of identifying, analyzing, and controlling potential
problems that may occur during software development. These problems (risks) can
affect cost, time, quality, or system performance. To handle risks effectively,
software engineers use the RMMM Plan, which stands for Risk
Mitigation, Monitoring, and Management. It is an important part of software
project management, especially in large and critical systems such as banking,
healthcare, and online examination systems.
Importance
of Risk Management
- Helps in identifying potential
project failures early
- Reduces cost and time overruns
- Improves software quality and
reliability
- Ensures smooth project execution
- Increases system safety and stability
RMMM Plan (Risk
Mitigation, Monitoring, and Management)
- Risk Mitigation:
Strategies used to reduce the probability or impact of risks before they occur. - Risk Monitoring:
Continuous observation of identified risks during the project to detect changes early. - Risk Management:
Actions taken to handle risks if they occur and minimize their effects on the project.
Main
Types of Risks
- Technical risks (system failure,
bugs, technology issues)
- Financial risks (budget overrun)
- Schedule risks (project delay)
- Operational risks (system downtime,
performance issues)
- Security risks (data breach, hacking)
Main
Points
- Risk identification in early stages
- Planning mitigation strategies
- Continuous monitoring of risks
- Proper control and response plan
- Disaster recovery planning
Example
In
an online examination system, if there is a server failure or data loss, a
backup system and recovery plan help restore data and continue the exam process
without disruption.
Conclusion
RMMM
is a crucial part of software engineering that ensures safe and reliable system
development. It helps in identifying and controlling risks effectively, making
software systems more stable, secure, and dependable.
8.
Software Testing
Software
Testing is the process of evaluating and verifying a software system to
identify errors, bugs, or missing requirements. It ensures that the software
works correctly according to user requirements before it is released to users.
Testing is a critical phase in the Software Development Life Cycle (SDLC)
because it improves software quality, performance, and reliability. It helps
reduce system failures after deployment and ensures the software is safe and
efficient.
Importance
of Software Testing
- Ensures software correctness and
reliability
- Detects errors and bugs in early
stages
- Improves software quality and
performance
- Reduces maintenance cost after
release
- Increases user satisfaction and trust
Types
of Software Testing
- Unit Testing:
Testing individual components or modules of software separately.
- Integration Testing:
Testing combined modules to check interaction between them.
- System Testing:
Testing the complete system as a whole to ensure it meets requirements.
- Acceptance Testing:
Checking whether the system is ready for delivery to the user.
- Error Detection:
Identifying and fixing defects in the software.
Main
Points
- Unit testing for individual modules
- Integration testing for module
interaction
- System testing for complete software
- Focus on error detection and
correction
- Ensures overall quality improvement
Example
Testing
a login system by entering valid and invalid usernames and passwords to check
whether the system correctly allows or rejects access.
Conclusion
Software
Testing is an essential phase of SDLC that ensures the delivery of
high-quality, error-free software. It improves system reliability, performance,
and user satisfaction by detecting and fixing defects before release.
9.
Black Box vs White Box Testing
Black
Box Testing and White Box Testing are two important software testing techniques
used to ensure the quality and reliability of software systems. These
techniques help in identifying errors, improving performance, and verifying
that the software works as expected. Both methods are widely used in software
development life cycle (SDLC) to deliver bug-free applications.
Black
Box Testing
Black
Box Testing is a type of testing in which the internal structure or code of the
software is not known to the tester. The tester only focuses on input and
output behavior. It checks whether the software is working correctly according
to requirements.
- It is also called functional
testing.
- It tests what the system does,
not how it does.
- No programming knowledge is required.
- Test cases are based on user
requirements.
Example:
Testing a login system by entering valid and invalid usernames and passwords
without knowing how the login code is written.
White
Box Testing
White
Box Testing is a type of testing in which the internal structure, logic, and
code of the software are tested. The tester needs programming knowledge to
design test cases.
- It is also called structural or
glass box testing.
- It tests internal logic, loops,
conditions, and paths.
- Requires knowledge of source code.
- Focuses on code optimization and
security.
Example:
Checking whether all loops and conditions in a program are executed correctly
during login validation or calculation logic testing.
Main
Differences
- Black box testing focuses on external
behavior (input/output), while white box testing focuses on internal
code structure.
- Black box testing does not require
code knowledge, while white box testing requires programming knowledge.
- Black box is done by testers or
users, while white box is done by developers.
- Black box is requirement-based
testing, while white box is logic-based testing.
Importance
- Helps in finding different types of
software errors.
- Ensures complete test coverage (both
functional and structural).
- Improves software quality,
reliability, and security.
- Reduces chances of system failure
after deployment.
Conclusion
Black
Box and White Box Testing are both essential for effective software testing.
Black Box ensures that the system works according to user requirements, while
White Box ensures that the internal code is correct and optimized. Together,
they provide complete software quality assurance.
10.
Agile Model & Principles
Agile
is a flexible software development approach. It focuses on customer
satisfaction and continuous improvement. It delivers software in small
iterations. It supports changing requirements. It improves collaboration and
speed.
Main
Points
- Customer collaboration
- Iterative development
- Continuous feedback
- Adaptive to change
- Working software priority
Example
Mobile
apps updated based on user feedback.
Conclusion
Agile
improves flexibility and delivery speed.
11.
RAD Model
RAD
(Rapid Application Development) is a software development model that focuses on
quick development and delivery of software. It uses prototypes instead of full
system development in early stages. This model emphasizes user feedback
throughout the development process. It reduces overall development time by
using reusable components. RAD is mainly suitable for projects where
requirements are well understood and time is limited.
2.
Main Points
- Uses rapid prototyping for quick
development
- Reusable components reduce coding
effort
- Continuous user involvement and
feedback
- Short and fast development cycles
- Requires skilled developers and
strong tools
3.
Example
A
mobile application developed quickly using pre-built modules and user feedback
during each prototype stage.
4.
Conclusion
RAD
model is best suited for fast and flexible software delivery where time and
user involvement are critical.
12.
SRS (Software Requirement Specification)
Software
Requirement Specification (SRS) is a formal document that clearly describes all
the requirements of a software system. It defines what the system should do and
how it should behave. SRS acts as a communication bridge between the client and
the developer. It is prepared before the design phase to avoid confusion and
misunderstanding. It is also considered as a contract between both parties.
Main
Points
- Functional requirements of the system
- Non-functional requirements
(performance, security, etc.)
- System constraints and limitations
- External interfaces
(hardware/software/user)
- User requirements and expectations
Example
In
a login system, the SRS defines that only users with valid username and
password can access the system securely.
Conclusion
SRS
plays a key role in software development as it provides a clear blueprint for
designing, coding, and testing the system.
13.
Software Project Management
Software
Project Management is the process of planning, organizing, and controlling
software development activities. It ensures that the project is completed
within the given time, cost, and quality requirements. It involves managing
resources, tasks, and risks throughout the project. It helps in smooth
coordination among team members. It is essential for successful completion of
large and complex software systems.
Main
Points
- Project planning and scope definition
- Task scheduling and tracking progress
- Cost estimation and budget control
- Risk identification and management
- Resource allocation and team
management
Example
Using
a Gantt chart to schedule and monitor tasks in an online examination system
project.
Conclusion
Effective
project management ensures timely delivery of software with required quality
and minimal risk.
14.
Software Myths
Software
myths are false beliefs or assumptions about software development that are
commonly accepted as true. In reality, software development is complex,
requires planning, teamwork, and proper engineering practices. Many people
misunderstand how software is built and maintained. These wrong beliefs often
lead to poor decisions and project failure. Understanding the difference
between myth and reality is important for successful software engineering.
Types
of Myths with Reality
a. Management
Myths
- Myth:
Adding more programmers will speed up a delayed project.
Reality: It often slows down the project due to communication overhead. - Myth:
Software development is just coding.
Reality: It includes planning, design, testing, and maintenance.
b. Customer
Myths
- Myth:
A general idea is enough to start development.
Reality: Clear and complete requirements are necessary. - Myth:
Changes can be easily added anytime without cost.
Reality: Changes later increase cost and effort.
c. Developer
Myths
- Myth:
Once the program runs, the job is finished.
Reality: Maintenance and updates are continuous processes. - Myth:
Testing is not very important if code works.
Reality: Testing is essential to ensure quality and reliability.
Example
A project manager adds
extra developers to finish a late project, but instead of speeding it up, the
project becomes more delayed due to coordination problems.
Conclusion
Understanding the
difference between software myths and reality helps in better planning,
realistic expectations, and successful project execution.
15.
Spiral Model
The
Spiral Model is a risk-driven software development model that combines the
features of both iterative development and the waterfall model. It is mainly
used for large, complex, and high-risk software projects. In this model,
development is done in repeated cycles called spirals. Each cycle focuses on
identifying and reducing risks before moving forward. It improves system
reliability, flexibility, and control over the project.
Main
Points
- Planning of objectives and
requirements
- Risk analysis in every cycle
- System design and development
- Customer evaluation and feedback
- Iterative development process
Example
The
Spiral Model is commonly used in banking systems and defense-related software
where risk management is very important.
Conclusion
The
Spiral Model is best suited for high-risk and complex projects because it
focuses on continuous risk analysis and iterative improvement.
16.
SRS Components & Requirement Engineering Process
Requirement
Engineering is the process of gathering, analyzing, documenting, and validating
software requirements. It ensures that the final system meets user needs
correctly. SRS (Software Requirement Specification) is the final document
produced after requirement analysis. It acts as a communication bridge between
client and developer. It reduces misunderstanding and project failure.
Main
Points
- Feasibility study
- Requirement elicitation (gathering)
- Requirement analysis
- Requirement specification (SRS
writing)
- Requirement validation
Example
Interviewing
hospital staff to design a patient management system.
Conclusion
Requirement
engineering ensures clear and correct software requirements.
17.
Software Project Management Activities + Development Planning
Software
project management involves planning, organizing, and controlling software
development activities. It ensures that projects are completed within time,
cost, and quality constraints. Development planning defines how the project
will be executed step by step. It improves coordination and resource
utilization. It is essential for successful delivery.
Main
Points
- Project planning and scope definition
- Cost estimation
- Scheduling (Gantt/PERT chart)
- Risk management
- Resource allocation
Example
Gantt
chart used for scheduling online exam system tasks.
Conclusion
Proper
planning ensures successful project execution.
18.
Software Metrics (FP and OP)
Software
metrics are quantitative measures used to evaluate software size, quality, and
performance. They help in project estimation and productivity measurement.
Function Point (FP) measures software functionality from user perspective.
Object Point (OP) is used in object-oriented systems. These metrics help in
better project planning.
Main
Points
- Function Point counts inputs,
outputs, files
- Object Point measures screens,
reports, modules
- Used for cost estimation
- Helps measure productivity
- Supports project comparison
Example
Estimating
software size using number of inputs and outputs.
Conclusion
Metrics
help in accurate planning and estimation.
19.
Feasibility Study & Types
Feasibility
study is the process of analyzing whether a software project is practical and
worth developing. It is performed before starting the project. It checks
technical, financial, and operational feasibility. It helps avoid project
failure. It supports decision making.
Main
Points
- Technical feasibility
- Economic feasibility
- Operational feasibility
- Legal feasibility
- Schedule feasibility
Example
Checking
whether a hospital system can be built with available resources.
Conclusion
Feasibility
study ensures project viability.
20.
Cost Estimation (COCOMO vs Other Techniques)
Cost
estimation is the process of predicting effort, time, and cost required for
software development. It helps in budgeting and planning resources. Different
techniques are used depending on project size. COCOMO is a widely used
mathematical model for estimation. It improves accuracy in project planning.
Main
Points
- Expert judgment
- Analogous estimation
- COCOMO model
- Bottom-up approach
- Parametric model
Example
Using
past project cost to estimate a new website.
Conclusion
Cost
estimation helps in effective project budgeting.
21.
Software Re-engineering & Maintenance
Software
re-engineering is the process of improving existing software without changing
its functionality. It involves restructuring and updating old systems. Software
maintenance ensures software continues to work after delivery. It fixes bugs
and improves performance. Both are important for long-term software usability.
Main
Points
- Corrective maintenance (bug fixing)
- Adaptive maintenance (environment
changes)
- Perfective maintenance (new features)
- Preventive maintenance (future
improvement)
- Reverse engineering
Example
Updating
old banking software to new technology.
Conclusion
Maintenance
keeps software useful and updated.
22.
Quality Assurance vs Quality Control
Quality
Assurance (QA) and Quality Control (QC) are important processes used to ensure
the quality of software. QA focuses on preventing defects, while QC focuses on
detecting and fixing defects.
QA
is process-oriented, proactive, and prevents bugs —
it happens during development and involves the whole team (reviews,
planning). QC is product-oriented, reactive, and finds bugs —
it happens after development and mainly involves testers (testing, inspection).
A key exam point: QA does not need a finished product, but QC does. Example
— checking a cooking method = QA; tasting the finished dish = QC.
|
QA
(Quality Assurance) |
QC
(Quality Control) |
|
Focuses
on the process – Ensures the way you build
software is correct and prevents mistakes before they happen. |
Focuses
on the product – Checks the final software for
defects after it has been built. |
|
Prevents
errors – Aims to stop defects from being created
during development by improving how work is done. |
Finds
errors – Identifies bugs and issues by testing the
software after it is developed. |
|
Done
before mistakes occur – Activities like planning,
training, and setting standards happen early, before coding starts. |
Done
after mistakes occur – Testing happens after
development, so you only see the problem once it exists. |
|
All
team members involved – Developers, analysts, and
managers all help follow and improve the process. |
Mainly
testing team involved – Testers run test cases, log
bugs, and verify fixes. |
|
Uses
reviews and planning – Methods include code
reviews, process audits, checklists, and defining workflows. |
Uses
testing and checking – Methods include running
tests, comparing outputs, and inspecting features. |
|
Example:
Checking the process – Reviewing if developers
follow a coding standard or attend requirement meetings. |
Example:
Testing the software – Running a login test to see
if the password field accepts invalid input. |
23.
Software Engineering Definition & Problems
Software
engineering is the systematic application of engineering principles to software
development. It ensures structured design, development, and maintenance of
software systems. It aims to produce reliable and efficient software. Software
engineers face many real-world challenges. These challenges affect project
success.
Main
Points
- Changing requirements
- Tight deadlines
- Communication issues
- Integration problems
- Security challenges
Example
Requirement
changes during project development.
Conclusion
Software
engineering requires proper planning to overcome challenges.
24.
Software Quality & Standards
Software
quality refers to how well software meets user requirements and expectations.
It includes reliability, usability, and performance. Software standards are
guidelines that ensure consistency and quality in development. Standards like
ISO and IEEE are widely used. They improve software reliability.
Main
Points
- Reliability
- Usability
- Efficiency
- Maintainability
- ISO/IEEE standards
Example
ISO
standards used in software documentation.
Conclusion
Standards
ensure high-quality software development.
25.
Configuration Management & Version Control
Configuration
management is the process of tracking and controlling changes in software. It
ensures consistency across development stages. Version control manages
different versions of software files. It helps developers collaborate
efficiently. It prevents data loss and conflicts.
Main
Points
- Tracks software changes
- Maintains version history
- Supports rollback
- Ensures team coordination
- Tools: Git, SVN
Example
Git
used for managing code versions.
Conclusion
Version
control improves software development efficiency.
0 comments:
Post a Comment