Software Engineering — Concise Answers (Open-book)
1. Introduction
Software engineering applies systematic, disciplined methods to develop reliable, maintainable,
cost-effective software. It evolved to solve the software crisis (projects late, over-budget, or
failing). Key tactics: abstraction, decomposition, structured processes.
2. Nature of Software
Intangible and complex; does not physically wear out but degrades through changes. Evolves with
requirements and technology. Heavily human-driven, so standardization is challenging.
3. Types of Software (corrected & concise)
By function: System software (OS, drivers); Application software (productivity, domain apps);
Embedded software (controllers, appliances); Real-time/safety-critical systems. By delivery: Off-
the-shelf (product), Bespoke/Custom (client-specific), Outsourced development. By deployment:
Desktop, Web/SaaS, Mobile.
4. Software Dependability
Dependability includes reliability, availability, safety, and security. Reliable software performs
correctly over time; dependability is essential in critical domains (aviation, healthcare, finance).
5. Software Characteristics
Intangible, complex, team-developed, evolving, modifiable, and reusable. Bugs can remain hidden
until specific execution scenarios occur.
6. Product Characteristics
A professional product = well-tested source code + requirement/design docs + user & maintenance
manuals + test reports + support. Documentation and tests differentiate products from small
programs.
7. Software Engineering Perspective
An engineering discipline that uses documented principles and trade-offs (cost, performance,
maintainability). Emphasizes repeatable processes over intuition.
8. Achievements & Challenges
Achievements: high-level languages, OOP, Agile, CASE tools, testing techniques. Challenges: managing
complexity, rapidly changing requirements, reducing time-to-market, ensuring dependability at scale.
9. Purpose of Software Engineering
Deliver high-quality software on time and within budget by managing complexity and risk; enable
maintainability and team collaboration.
10. Generic View
Life-cycle models (waterfall, iterative, spiral, agile) outline stages from requirements to
maintenance. Core ideas: abstraction, decomposition, verification at each stage.
11. Need & Significance
Addresses the software crisis—reduces delays, cost overruns, and quality issues. Provides structure,
predictability, and quality assurance for large systems.
12. Criticism
Can be rigid or bureaucratic for small projects; may slow rapid prototyping. Still essential for
large, critical systems where discipline reduces risk.
13. Principles of Software Engineering
Abstraction, decomposition, modularity, encapsulation, reusability, maintainability, simplicity, and
structured programming (avoid harmful constructs).
14. Process Development
Phases: Requirements → Design → Implementation → Testing → Deployment → Maintenance. Models:
Waterfall (linear), Iterative/Incremental, Spiral (risk-driven), Agile (iterative & flexible).
15. Project Management
Key tasks: planning, estimation, scheduling, staffing, risk management, monitoring & control.
Manager ensures scope, time, cost, and communication.
16. Configuration Management
Controls changes: version control, baselines, change requests, build/release management, and
traceability. Common tools: Git, SVN, Mercurial.