Unit 1: Introduction




Introduction to Software Engineering 

Software Engineering is a systematic and organized approach to design, develop, test, and maintain software so that it works correctly, is delivered on time, and remains cost-effective.

In simple words: Software Engineering = Applying engineering principles to software development

Software Engineering is the application of engineering principles to the design, development, testing, and maintenance of software.

Why Software Engineering is Needed?

  • Software today is large and complex
  • Multiple users work on the same project
  • Need high quality, low cost, and on-time delivery
  • To avoid software failures and errors

Software Components

Software is not just a program. It consists of multiple parts that work together.

Main Components of Software

ComponentExplanation
ProgramsSet of instructions written in a programming language
DataInformation used or processed by the software
DocumentationManuals, reports, and guides for users and developers
ProceduresSteps to operate and maintain the software

Example

For a banking software:

  • Program → Code for transactions
  • Data → Customer details
  • Documentation → User manual
  • Procedures → Backup and recovery steps

Software Characteristics

Characteristics of Software

Software is different from hardware in many ways.

Key Characteristics

FeatureExplanation
IntangibleSoftware cannot be touched or seen
Developed, not manufacturedIt is created by coding, not by machines
Does not wear outSoftware does not decay like hardware
Highly complexLarge number of instructions
Easy to modifyCan be updated easily
Custom-builtOften made according to user needs

Software Crisis

Software Crisis refers to the problems faced in software development due to increasing size and complexity of software.

Reasons for Software Crisis

  • Poor planning
  • Lack of proper methods
  • Untrained developers
  • Changing user requirements

Problems Caused by Software Crisis

ProblemDescription
Cost OverrunSoftware costs more than expected
Time DelayProjects not completed on time
Poor QualitySoftware contains many bugs
Maintenance IssuesDifficult to update or fix
User DissatisfactionSoftware does not meet user needs

Solution to Software Crisis: Software Engineering techniques and processes

Software Engineering Processes

A Software Process is a set of activities used to develop software in a structured manner.

Main Activities in Software Engineering Process

ActivityExplanation
Requirement AnalysisUnderstanding user needs
DesignPlanning structure and architecture
Development (Coding)Writing the actual code
TestingFinding and fixing errors
DeploymentDelivering software to users
MaintenanceUpdating and improving software

Popular Software Process Models

  • Waterfall Model
  • Spiral Model
  • Agile Model
  • Incremental Model

(Only names are enough if not asked in detail.)

Quick Revision Table (One-Glance)

TopicKey Point
Software EngineeringEngineering approach to software
Software ComponentsProgram, Data, Documentation, Procedures
Software CharacteristicsIntangible, complex, does not wear out
Software CrisisProblems due to poor development methods
Software ProcessStep-by-step development approach

Important Exam Questions

  • Define Software Engineering
  • Explain software components
  • Write characteristics of software
  • What is software crisis? Causes and solutions
  • Explain software engineering process

Conclusion 

Software Engineering plays a vital role in developing reliable, efficient, and quality software. It helps in managing complexity, reducing cost, avoiding failures, and delivering software that meets user requirements.

Similarity and Differences between Software Engineering and Conventional Engineering Processes

Although software engineering is different in nature, it follows many principles of traditional engineering (civil, mechanical, electrical).

Key Similarities

BasisExplanation
Systematic ApproachBoth follow step-by-step processes
Requirement AnalysisUser needs are studied before development
Design PhaseProper planning and design is done
Testing & VerificationQuality is checked before delivery
Project ManagementCost, time, and resources are managed
DocumentationReports, manuals, and records are maintained
Quality FocusBoth aim for reliable and safe products

Exam Tip: Write any 5 similarities for full marks.

Differences between Software Engineering and Conventional Engineering

Software engineering differs from conventional engineering mainly due to the intangible nature of software.

Difference Table (Very Important for Exams)

BasisSoftware EngineeringConventional Engineering
Nature of ProductIntangible (cannot be touched)Tangible (can be seen and touched)
ManufacturingDeveloped by codingManufactured using machines
Wear and TearDoes not wear outWears out with time
Cost DistributionHigh development cost, low reproduction costHigh manufacturing cost
Change HandlingEasy to modifyDifficult and costly to modify
Failure ReasonDue to design or logical errorsDue to physical damage
MaintenanceMostly updating and enhancementRepair or replacement
StandardizationLess standardizedHighly standardized

Software Quality Attributes

Software Quality refers to how well software meets user requirements, works correctly, and performs efficiently under given conditions.

Software quality is the degree to which software satisfies stated and implied user needs.

Major Software Quality Attributes

1. Functionality

  • Software performs required functions correctly
  • Meets user requirements

2. Reliability

  • Software works without failure for a specified time
  • Example: Banking software must not crash

3. Usability

  • Easy to learn and use
  • User-friendly interface

4. Efficiency

  • Uses minimum resources (CPU, memory)
  • Fast response time

5. Maintainability

  • Easy to modify and update
  • Bugs can be fixed easily

6. Portability

  • Software can run on different platforms
  • Example: Windows, Linux, Mac

7. Security

  • Protects data from unauthorized access
  • Important for financial and personal data

8. Scalability

  • Handles increasing users or data
  • Important for web applications

Software Quality Attributes Table (Quick Revision)

AttributeMeaning
FunctionalityCorrect working
ReliabilityFailure-free operation
UsabilityEasy to use
EfficiencyOptimal performance
MaintainabilityEasy to update
PortabilityPlatform independent
SecurityData protection
ScalabilityHandles growth

Importance of Software Quality Attributes

  • Increases customer satisfaction
  • Reduces maintenance cost
  • Improves software life
  • Ensures safety and security
  • Enhances business reputation

Exam-Focused Short Notes (2–3 Marks)

Software Quality Attributes

They are the characteristics that define the overall quality and performance of software, such as reliability, usability, efficiency, and maintainability.

Frequently Asked Exam Questions

  • Compare software engineering with conventional engineering
  • Write similarities between software and conventional engineering
  • Explain software quality attributes
  • What is software quality?

Conclusion

Software engineering shares many principles with conventional engineering but differs due to its intangible nature and high flexibility. Software quality attributes ensure that software is reliable, efficient, secure, and user-friendly.

Software Development Life Cycle (SDLC) Models

SDLC (Software Development Life Cycle) is a step-by-step process used to plan, design, develop, test, and maintain software.

Main Phases of SDLC

  • Requirement Analysis
  • System Design
  • Development (Coding)
  • Testing
  • Deployment
  • Maintenance

Waterfall Model

The Waterfall Model is the oldest and simplest SDLC model. It follows a linear and sequential approach, where each phase must be completed before the next phase begins.

Phases of Waterfall Model

  • Requirement Analysis
  • System Design
  • Implementation (Coding)
  • Testing
  • Deployment
  • Maintenance

Looks like a waterfall flowing downward.

Advantages

  • Simple and easy to understand
  • Proper documentation
  • Suitable for small projects
  • Easy to manage

Disadvantages

  • Changes are difficult after development
  • No working software until late
  • High risk for large projects

When to Use

  • Requirements are clear and fixed
  • Small and low-risk projects

Prototype Model

In the Prototype Model, a working model (prototype) is developed to understand user requirements clearly.

Working Process

  • Initial requirements
  • Build prototype
  • User feedback
  • Improve prototype
  • Final system development

Advantages

  • Clear understanding of requirements
  • High user involvement
  • Reduces requirement errors

Disadvantages

  • Increased development cost
  • Poor documentation
  • Users may think prototype is final product

When to Use

  • Requirements are unclear
  • User interaction is important

Spiral Model

The Spiral Model combines Waterfall model + Prototyping + Risk analysis. It is risk-driven and follows a spiral loop structure.

Phases of Spiral Model (Each Loop)

  • Planning
  • Risk Analysis
  • Engineering
  • Evaluation

Advantages

  • Best risk management
  • Flexible to changes
  • Suitable for large projects

Disadvantages

  • Complex model
  • Expensive
  • Requires expert management

When to Use

  • Large, complex, and high-risk projects

Evolutionary Development Model

In this model, software is developed step by step (incrementally) and improved over time based on user feedback.

Types

  • Incremental Model
  • Prototype-based Evolution

Key Features

  • Early delivery of working software
  • Continuous improvement
  • User feedback at every stage

Advantages

  • Flexible to changes
  • Reduced risk
  • Early customer satisfaction

Disadvantages

  • Difficult planning
  • Requires continuous user involvement

When to Use

  • Requirements change frequently
  • Long-term projects

Iterative Enhancement Model

In the Iterative Enhancement Model, software is developed in multiple iterations, where each iteration adds new features and improvements.

Process

  • Develop basic version
  • Test and review
  • Enhance features
  • Repeat until final system

Advantages

  • Early working version available
  • Errors detected early
  • Easy to manage changes

Disadvantages

  • Requires good planning
  • Needs skilled team

When to Use

  • Medium to large projects
  • Continuous improvement needed

Comparison Table of SDLC Models (Exam Favorite)

ModelKey FeatureBest Used When
WaterfallSequentialFixed requirements
PrototypeUser feedbackUnclear requirements
SpiralRisk-drivenHigh-risk projects
EvolutionaryGradual developmentChanging requirements
IterativeRepeated cyclesContinuous enhancement

Important Exam Questions

  • Explain Waterfall Model with advantages and disadvantages
  • Describe Prototype Model
  • Explain Spiral Model with risk analysis
  • Compare SDLC models
  • Write short notes on Evolutionary and Iterative models

Conclusion

Different SDLC models are used based on project size, complexity, risk, and requirement stability. Choosing the correct model improves software quality, cost control, and user satisfaction.