Software Engineering Notes

C
DSA
Software Engineering
Software Architecture
Operating System
Big Data
Data Mining and Warehousing
TOC
Ada
CPP
DBMS

All Topics (14)

  • 1. Software Engineering
  • 2. Why We Need Software Engineering
  • 3. Principles of Software Engineering (SE)
  • 4. Software Product and Software Process
  • 5. Program vs Software Product in Software Engineering
  • 6. TYPES OF SOFTWARE
  • 7. CHARACTERISTICS OF SOFTWARE ENGINEERING
  • 8. SDLC – Software Development Life Cycle
  • 9. Linear Sequential Model (Waterfall Model)
  • 10. Prototyping Model
  • 11. RAD (Rapid Application Development) Model
  • 12. EVOLUTIONARY MODEL (Iterative Model)
  • 13. Spiral Model
  • 14. Agile Software Process

6. TYPES OF SOFTWARE

(i) System Software

System software is a type of computer program designed to manage computer hardware and provide a platform for running application software. It acts as an interface between the user and the hardware.

Examples:

  • Operating System (Windows, Linux, Android)
  • Device Drivers

(ii) Programming Software

Programming software is used to develop other software. It helps programmers write, test, debug, and maintain code.

Examples:

  • Compilers
  • Text Editors (VS Code, Notepad++)
  • Interpreters

Example:
To write PHP code, we use a text editor. It helps in developing software in PHP or other languages.

(iii) Application Software

Application software is designed to help users perform specific tasks or solve problems.

Examples:

  • MS Office (Word, Excel, PowerPoint)
  • Games
  • Image editing software (Photoshop)

(iv) Custom Software

Custom software is developed according to the specific requirements of a client or organization.

Examples:

  • Banking applications
  • Hospital management systems
  • Railway reservation systems

DISADVANTAGES OF SOFTWARE

  1. Many software projects fail.
  2. Projects may be delayed and exceed budget.
  3. Software can be unreliable and expensive to maintain.
  4. Large software systems are difficult and costly to maintain.
  5. Demand for new software increases faster than the ability to develop it.

7. CHARACTERISTICS OF SOFTWARE ENGINEERING

1. Correctness

The software must meet all the specifications given by the customer.

2. Usability

The software should be easy to learn and use, requiring less time and effort. It should be user-friendly, even for non-technical users.

3. Integrity

Software should not negatively affect other systems or applications while running.

4. Reliability

The software should not have defects and should not fail during execution.

5. Maintainability

The software should be flexible so that future changes and updates can be done easily.

8. SDLC – Software Development Life Cycle

SDLC (Software Development Life Cycle) is a well-defined process followed by the software industry to design, develop, test, and maintain software applications.

It provides a structured sequence of stages to develop a software product in a systematic way.

SDLC helps engineers to:

  • Follow a proper development strategy
  • Use tools and methods effectively
  • Complete software within time and budget
  • Meet customer requirements

Main Objective of SDLC

The goal of SDLC is to produce high-quality software that:

  • Meets customer expectations
  • Is completed within time and cost estimates
  • Works efficiently and reliably

Phases of SDLC

  1. Requirement Analysis
    • Collect and understand customer requirements
    • Identify system needs
  2. Design
    • Create system architecture and design
    • Define software structure and components
  3. Coding / Implementation
    • Actual development of software using programming languages
  4. Testing
    • Check software for errors and bugs
    • Ensure software works correctly
  5. Deployment
    • Install and deliver software to users
  6. Maintenance
    • Fix errors after delivery
    • Update and improve software

SDLC / Software Life Cycle Model

A software life cycle model is a diagrammatic or descriptive representation of the SDLC process. It defines:

  • Sequence of phases
  • Entry and exit criteria for each phase

Without SDLC models, it becomes difficult for project managers to track project progress.

Types of SDLC Models

  1. Linear Sequential Model (Waterfall Model)
  2. Prototyping Model
  3. RAD Model (Rapid Application Development)
  4. Evolutionary Process Model
  5. Incremental Model
  6. Spiral Model

9. Linear Sequential Model (Waterfall Model)

The Linear Sequential Model, also called the Waterfall Model or Classic Life Cycle Model, is a systematic and sequential approach to software development.

In this model, development moves step by step in a fixed order:
Requirement Analysis → Design → Coding → Testing → Maintenance

Each phase must be completed before the next phase begins.

Phases of Waterfall Model

(i) Requirement Analysis

  • Focuses on understanding what the customer wants.
  • Software engineers collect and analyze requirements.
  • Requirements include:
    • Functionality
    • Performance
    • Behavior
    • Interface needs
  • All requirements are documented and reviewed with the customer.

(ii) Design

  • Converts requirements into a software design.
  • It is a multi-step process that includes:
    • Data structures
    • Software architecture
    • Interface design
    • Algorithm (procedural details)
  • The design acts as a blueprint for coding.

(iii) Coding (Implementation)

  • The design is translated into programming code.
  • Source code is written in a programming language.
  • Code is converted into machine-readable form.

(iv) Testing

  • After coding, software is tested for errors (bugs).
  • Ensures all functions work correctly.
  • Verifies actual output matches expected output.
  • Helps in detecting and fixing defects.

(v) Maintenance

  • After delivery, software is updated and improved.
  • Fixes bugs and adds new features if required.
  • This phase continues throughout the software life.

Advantages of Waterfall Model

  1. Simple and Easy to Understand
    • Clear structure and easy to follow.
  2. Disciplined Process
    • Each phase has a defined start and end.
    • Progress can be easily tracked.
  3. Less Wastage of Time
    • Requirements and design are completed before coding starts.
  4. Better Quality Control
    • Errors are easier to detect in early stages.
  5. Well-Defined Requirements
    • Works best when requirements are clear and stable.

Disadvantages of Waterfall Model

  1. Uncertain Requirements
    • Difficult to handle changing customer needs.
  2. Not Suitable for Complex Projects
    • Not ideal for large or object-oriented systems.
  3. No Backtracking
    • Once a phase is completed, going back is difficult.
  4. Blocking State
    • Delay in one phase affects the entire project.
  5. Time-Consuming and Costly
    • Errors found late are expensive to fix.

10. Prototyping Model

The Prototyping Model is a software development approach in which a prototype (initial working model) of the system is created before the actual software is developed.

A prototype is an incomplete version of the software used to understand requirements and get user feedback.

It usually has:

  • Limited functionality
  • Low performance efficiency
  • Simplified or dummy features

Phases of Prototyping Model

  1. Initial Requirements
    • Basic requirements are collected from the customer.
  2. Quick Design
    • A simple design of the system is created.
  3. Build Prototype
    • A working model (prototype) is developed.
  4. Customer Evaluation
    • Customer uses the prototype and gives feedback.
  5. Review and Update
    • Changes are made based on customer feedback.
  6. Development / Coding
    • Actual system is developed using final requirements.
  7. Testing
    • Software is tested for errors and correctness.
  8. Maintenance
    • Updates and improvements are done after delivery.

Need for Prototype in Software Development

A prototype is useful because it helps to:

  • Understand customer requirements clearly
  • Show how the user interface will look
  • Demonstrate system behavior
  • Predict system output
  • Clarify technical issues in early stages

A prototype is especially useful when:

  • Requirements are unclear
  • Technical solutions are not well understood

Advantages of Prototyping Model

  1. High User Involvement
    • Users actively participate in development.
  2. Better Understanding of Requirements
    • Users can see and understand the system early.
  3. Reduced Risk
    • Errors and misunderstandings are identified early.
  4. Cost and Time Saving
    • Issues are detected before final development.
  5. Improved System Quality
    • Continuous feedback improves final product.

Disadvantages of Prototyping Model

  1. User Confusion
    • Users may confuse prototype with the final system.
  2. Extra Effort Required
    • Building prototypes takes additional time and resources.
  3. Uncontrolled Changes
    • Frequent changes may affect project schedule.
  4. Not Suitable for Large Systems
    • Can become complex for big projects.
Page 2 of 3