Software and Software Engineering — Study Notes

Unit 01

Software fundamentals and software process models — organized as exam-ready answers.

9 Questions5 Marks EachSEC
01
5 Marks Question

Explain the Characteristics of Software

Software has several characteristics that make it different from physical products such as computer hardware.

Software is Engineered, Not Manufactured
Software is designed, coded, tested, and maintained by programmers rather than being manufactured in a factory. Developing the first copy requires significant time and effort, while making additional copies costs almost nothing.
Software Does Not Wear Out
Unlike hardware, software does not physically wear out due to usage. Software mainly fails or deteriorates because of bugs, updates, modifications, and compatibility issues.
Software is Custom-Built
Software is generally developed according to the specific requirements of a customer or organization.
Software is Intangible (Invisible)
Software has no physical form and cannot be touched or held like hardware. Its progress is generally measured through documentation, reports, and testing.
Software is Highly Flexible
Software can be modified, updated, and enhanced relatively easily, although excessive changes can increase complexity, introduce new bugs, and make maintenance difficult.
ConclusionSoftware is engineered rather than manufactured, does not physically wear out, is usually custom-built, is intangible, and is highly flexible.
02
5 Marks Question

Explain Different Types of Software with Suitable Examples

System Software
Programs that directly control, manage, and optimize computer hardware. Examples: Windows, Linux, device drivers, and language compilers.
Application Software
Programs designed to solve real-world problems and help users perform specific tasks. Examples: MS Excel, web browsers, and payroll management systems.
Engineering and Scientific Software
Software for complex mathematical calculations, scientific algorithms, and large amounts of data. Examples: weather forecasting and scientific simulation tools.
Embedded Software
Software stored in physical devices to control their specific functions. Examples: washing machines, printers, microwaves, and car dashboards.
Product-Line Software
General-purpose software developed and sold as a ready-made product to many customers. Examples: Microsoft Office, Adobe Reader, photo-editing tools, and commercial video games.
Web and Cloud Applications
Applications that run through the Internet and are accessed using a web browser. Examples: Amazon, online banking portals, and Google Docs.
ConclusionSoftware can be broadly classified into System Software, Application Software, Engineering and Scientific Software, Embedded Software, Product-Line Software, and Web/Cloud Applications.
03
5 Marks Question

Differentiate Between Programming and Software Engineering

Programming mainly involves writing code to solve a particular problem, whereas Software Engineering is a systematic and disciplined approach to developing, testing, deploying, and maintaining complete software systems.

BasisProgrammingSoftware Engineering
MeaningWriting code to solve a problem.Complete software development process.
Project SizeGenerally suitable for small projects.Suitable for large and complex projects.
WorkOften performed by an individual programmer.Usually involves teamwork.
FocusMainly coding.Planning, coding, testing, deployment, and maintenance.
PlanningComparatively less formal.Systematic planning and defined processes.
DocumentationMay be limited.Documentation and standards are important.
Quality & TestingTesting may be limited to the program.Systematic testing and validation are important.
MaintenanceLess emphasis on long-term maintenance.Maintenance and evolution are considered throughout the lifecycle.

Key Characteristics of Software Engineering

Systematic
Development is performed step-by-step, such as Requirement → Design → Coding → Testing → Deployment.
Disciplined
Developers follow coding standards and documentation practices.
Measurable
Cost, time, bugs, and progress can be measured.
ConclusionProgramming mainly deals with writing code, while Software Engineering manages the complete, systematic software development process from planning to maintenance.
04
5 Marks Question

Explain the Waterfall Model with its Advantages and Disadvantages

The Waterfall Model is a classic, linear SDLC model in which development progresses through a fixed sequence of phases. One phase must be completed, verified, and documented before the next phase begins.

Requirements Analysis
        ↓
     System Design
        ↓
   Implementation
      (Coding)
        ↓
 Integration & Testing
        ↓
      Deployment
        ↓
     Maintenance

Phases

1. Requirements Analysis

Gather the customer requirements and document them in the Software Requirements Specification (SRS).

2. System Design

Use the SRS to design architecture, database, interface, technology, and other technical details.

3. Implementation (Coding)

Convert the design into source code and develop the software in smaller code units.

4. Integration and Testing

Combine individual units and test them to find bugs and verify the software meets the SRS.

5. Deployment

Release and install the sufficiently tested software in the production environment.

6. Maintenance

Fix bugs, improve performance, and update software when requirements or the operating environment changes.

Advantages

Simple
Easy to understand because phases follow a fixed sequence.
Clearly Defined
Each phase is clearly defined and documented.
Easy to Manage
Milestones and deliverables are clearly established.
Suitable for Stable Requirements
Suitable when requirements are clear and stable from the beginning.

Disadvantages

Difficult to Change
Requirement changes are difficult once development has progressed.
Late Error Discovery
Errors in earlier phases may be discovered late.
Late Feedback
Customer feedback is generally received only toward the end.
High Risk
High risk if initial requirements are incomplete or incorrect.
Not for Frequent Change
Not suitable when requirements are expected to change frequently.
ConclusionWaterfall is best suited for small, simple, and stable projects where requirements are clearly understood and unlikely to change.
05
5 Marks Question

Explain the Prototype Model with its Advantages and Disadvantages

The Prototype Model creates a quick, simplified, incomplete version of software first. It is shown to the customer to obtain early feedback and understand exact requirements before developing the final product.

Requirements Gathering
        ↓
      Quick Design
        ↓
   Build Prototype
        ↓
 Customer Evaluation
        ↓
   Refine Prototype
        │
        └──────↺ Repeat until
                customer is satisfied
                      ↓
               Final Development

Phases

1. Requirements Gathering

Collect the basic goals and requirements of the customer; detailed requirements are not necessary yet.

2. Quick Design

Prepare a simple design focused mainly on visible parts such as screens, forms, and interfaces.

3. Build Prototype

Develop a quick working model using temporary code and dummy data.

4. Customer Evaluation

The customer evaluates the prototype and provides feedback.

5. Refining the Prototype

Modify the prototype according to customer feedback and repeat evaluation/refinement until satisfied.

6. Final Development

After requirements are finalized, develop, test, and deliver the actual software.

Advantages

Clear Requirements
Helps understand customer requirements clearly.
Customer Involvement
Provides high customer involvement.
Fewer Misunderstandings
Reduces misunderstandings between customer and developer.
Better Satisfaction
Improves customer satisfaction.
Early Error Detection
Helps detect errors and requirement problems early.

Disadvantages

Higher Cost
Repeated changes can increase development cost.
Delay
Too many changes can delay the project.
Prototype Misunderstanding
Customer may mistake the prototype for final software.
Not for Very Large Systems
Not suitable for very large systems.
ConclusionThe Prototype Model is useful when requirements are unclear because customers can evaluate an early version and help refine the requirements before final development.
06
5 Marks Question

Explain the Incremental Model with its Advantages and Disadvantages

The Incremental Model divides complete software into smaller builds or increments. Each build is developed, tested, and delivered separately.

Requirements
      ↓
Build 1 → Design → Test → Implementation
      ↓
Working Product
      ↓
Build 2 → Design → Test → Implementation
      ↓
More Features
      ↓
Build N → Design → Test → Implementation
      ↓
Final Software

Working

1. Gather Requirements

Requirements are gathered completely from the client at the beginning.

2. Divide into Builds

The software is divided into separate builds or increments.

3. Design & Development

Features are planned and coded.

4. Testing

New code is tested and integrated with previous builds.

5. Implementation

The completed build is delivered to the user.

6. Repeat

The process continues until all required features are implemented.

Advantages

Quick Delivery
The customer receives a working product early.
Easy Testing
Smaller portions are easier to test and debug.
Less Risk
Problems generally affect the current build rather than the entire system.
Core Features Early
Core features can be delivered quickly.

Disadvantages

Difficult to Plan
A strong basic architecture must be designed from the beginning.
Higher Cost
Design, coding, and testing are repeated for each build.
Integration Problems
New code may cause errors when connected with previous builds.

When to Use

Clear Requirements
Requirements are clear from the beginning.
Early Core Features
The customer wants core features delivered quickly.
Small Team
A small team cannot develop the entire system at once.
ConclusionThe Incremental Model develops software piece by piece, allowing customers to receive working versions early while remaining features are added through successive builds.
07
5 Marks Question

Explain the Spiral Model with its Advantages and Disadvantages

The Spiral Model is an evolutionary software development model combining iterative prototyping with the controlled approach of Waterfall. Its main feature is systematic risk analysis at every stage.

1. Objectives & Alternative Solutions
                 ↓
2. Identify & Resolve Risks
                 ↓
3. Develop Next Version of Product
                 ↓
4. Review & Plan Next Phase
                 │
                 └──────→ Next Spiral

Each loop produces a more complete version of the software, and the cycle continues until the final product is completed.

Four Main Activities

1. Determine Objectives and Alternative Solutions

Identify requirements, objectives, possible solutions, and constraints such as cost, time, and technology.

2. Identify and Resolve Risks

Analyze possible risks and select solutions. This may include risk analysis, feasibility studies, and prototypes. This is the most important phase.

3. Develop the Next Version

Use the selected solution for design, coding, testing, and development of a working version.

4. Review and Plan the Next Phase

Customer reviews the current version, feedback is collected, problems are fixed, and objectives for the next spiral are planned.

Advantages

Excellent Risk Management
Risks are analyzed in every cycle.
Large & Complex Projects
Suitable for large and complex projects.
Continuous Feedback
Customer feedback is received after every iteration.
Changing Requirements
Easily accommodates changing requirements.
Continuous Testing
Helps produce high-quality software.

Disadvantages

Expensive
Repeated risk analysis is costly.
Complex
Complex to manage.
Needs Experts
Requires experts for proper risk assessment.
Not for Small Projects
Not suitable for small projects.

Applications

Banking Software
Suitable for banking software.
Defense and Military
Suitable for defense and military systems.
Medical Software
Applicable to medical software.
Airline Reservation
Applicable to airline reservation systems.
Large Enterprise
Suitable for large enterprise applications.
R&D Projects
Useful for research and development projects.
ConclusionThe Spiral Model is preferred for large, complex, and high-risk projects where risk analysis, continuous customer feedback, and changing requirements are important.
08
5 Marks Question

Compare the Four Software Process Models

The four major software process models are Waterfall, Prototype, Incremental, and Spiral. They differ in requirements, development, feedback, risk, and project suitability.

FeatureWaterfallPrototypeIncrementalSpiral
Basic IdeaStraight-line, step-by-step development.Quick prototype to understand requirements.Software delivered piece by piece.Repeated cycles with focus on risk.
RequirementsClear and fixed at the beginning.Initially unclear; finalized with prototype.Clear from start but divided into parts.Can change and evolve with each loop.
Customer FeedbackMainly at the end.Early during prototype evaluation.After each build.Continually after each loop.
RiskHigh; mistakes may be discovered late.Low; misunderstandings identified early.Low; problems generally isolated to a build.Very low; risks analyzed every loop.
DevelopmentOne phase completed before next.Prototype repeatedly refined.Each build: Design → Test → Implementation.Objectives → Risk Analysis → Development → Review.
Best Used ForSmall, simple, stable projects.Unclear requirements.Quick delivery of core features.Large, expensive, complex, high-risk systems.
Cost/ComplexityRelatively simple.Can become costly.Can have higher repeated-development cost.Most expensive and complex.

Key Differences

Waterfall
Best when requirements are clear and stable.
Prototype
Best when requirements are unclear and early customer feedback is needed.
Incremental
Best when a working product is needed quickly in parts.
Spiral
Best for large, complex, high-risk projects with continuous risk analysis.
ConclusionThe choice of process model depends mainly on requirement clarity, level of risk, need for customer feedback, project size, and delivery requirements.
09
5 Marks Question

Explain the Concept of Software Engineering

Software Engineering is a systematic, disciplined, and measurable approach to software development. It includes planning, designing, testing, deploying, and maintaining software.

Main Concepts

1. Systematic Approach

Software development is performed step-by-step through defined activities. Example: Requirement → Design → Coding → Testing → Deployment.

2. Disciplined Development

Developers follow coding standards, development procedures, and documentation practices to maintain consistency and quality.

3. Measurable Process

Cost, time, number of bugs, and project progress can be measured.

4. Complete Development Process

Software Engineering covers the complete development process rather than just programming, including planning, coding, testing, and maintenance.

5. Team-Based Development

Large projects involve teams where different people work on different parts of the system.

Software Engineering vs Programming

Programming
     ↓
Mainly writing code

Software Engineering
     ↓
Planning → Design → Coding → Testing → Deployment → Maintenance

Need for Software Engineering

Software projects were becoming late, over-budget, error-prone, or completely unsuccessful. This situation was known as the Software Crisis. Software Engineering introduced proper planning and development methods to address these problems.
ConclusionSoftware Engineering provides a systematic, disciplined, and measurable process for developing reliable software, especially for large and complex projects.