--> Sayadasite

Multiple Ads

Search

Menu Bar

Major Roles of a Software Engineer

Definition of Software Engineering

Software Development Life Cycle (SDLC)

Types of Software

Role of Software Engineer

1. Requirement Analysis

A software engineer studies the requirements of users and customers to understand what the software should do.

Example:
For a college management system, the engineer identifies requirements such as student registration, attendance, examination, and fee management.

2. Software Design

The engineer creates the overall design of the software.

This includes:

System architecture

Database design

User interface

Software modules

Data flow

The aim is to create a system that is reliable, efficient, secure, and easy to maintain.

3. Coding and Implementation

The software engineer converts the design into an actual working program using programming languages.

Examples:

C

C++

Java

Python

JavaScript

The engineer follows appropriate coding standards to produce readable and maintainable code.

4. Testing

Software engineers test the software to identify bugs and errors.

They may perform:

Unit testing

Integration testing

System testing

Performance testing

Security testing

Example: Checking whether a student's attendance is correctly stored and displayed.

5. Debugging

When an error occurs, the software engineer identifies its cause and corrects it.

Example: If the system calculates a student's attendance percentage incorrectly, the engineer examines the program and fixes the problem.

6. Deployment

After successful development and testing, the software engineer helps install and release the software for users.

Deployment may involve:

Installing software on servers

Configuring databases

Setting up cloud services

Configuring networks

7. Maintenance

Software requires continuous maintenance after deployment.

The engineer:

Fixes bugs

Adds new features

Improves performance

Updates security

Adapts software to new technologies

8. Documentation

Software engineers prepare technical documentation explaining:

System design

Program structure

Database details

Installation procedures

User instructions

Maintenance procedures

Good documentation makes future maintenance easier.

9. Security

A software engineer must consider security throughout the development process.

They should:

Protect user data

Prevent unauthorized access

Use secure coding practices

Identify vulnerabilities

Implement authentication and authorization

10. Team Collaboration

Software development is generally a team activity. Software engineers work with:

Project managers

Software developers

Testers

UI/UX designers

Database administrators

Customers

System administrators

Good communication and teamwork are therefore important.

11. Performance Improvement

Software engineers monitor and improve the performance of software.

They try to:

Reduce execution time

Reduce memory usage

Improve scalability

Optimize database queries

Improve system reliability

12. Problem Solving

A major role of a software engineer is to solve technical and business problems using software solutions.

They analyze problems, evaluate possible solutions, and select an appropriate approach.

Role of a Software Engineer in SDLC

SDLC Phase

Role of Software Engineer

Planning

Understand project goals and feasibility

Requirement Analysis

Analyze user requirements

Design

Design architecture and modules

Coding

Develop the software

Testing

Test and debug the system

Deployment

Release and configure the software

Maintenance

Fix, update, and improve the software

 

 

Types of Software

Software is a collection of programs, instructions, and related data that tells a computer what to do and how to perform a particular task.

Software is mainly classified into two main types:

System Software and Application Software.

 

                                               SOFTWARE

 


                                                                                

                                                            

              SYSTEM SOFTWARE                                 APPLICATION SOFTWARE

                                                    

     

 Operating      Language           Utility                        General        Special         Customized

 Systems          Translators       Software                    Purpose       Purpose

1. System Software

System software controls and manages the computer hardware and provides a platform for running application software.

It acts as an interface between the user/application software and computer hardware.

Examples:

  • Operating systems – Windows, Linux, Android
  • Device drivers
  • Language translators – Compiler, Interpreter, Assembler
  • Utility programs – Antivirus, Disk Cleanup

Example: Windows manages the computer's hardware and allows other programs to run.

 

Functions of System Software

1.                      Manages computer hardware.

2.                      Controls memory and CPU.

3.                      Manages files and storage.

4.                      Controls input and output devices.

5.                      Provides a platform for application software.

6.                      Provides security and system management.

 

Types of System Software

A. Operating System

An Operating System (OS) is the most important system software. It manages hardware resources and provides services to application programs.

Examples:

  • Windows
  • Linux
  • macOS
  • Android
  • iOS – iPhone, First released in June 2007

Functions:

  • Process management
  • Memory management
  • File management
  • Device management
  • Security
  • User interface

Example: When you open MS Word, the operating system allocates memory and CPU resources to it.

B. Device Drivers

A device driver is software that allows the operating system to communicate with a hardware device.

Examples:

  • Printer driver
  • Graphics driver
  • Keyboard driver
  • Audio driver
  • Network driver

Example: When you connect a printer to a computer, the printer driver helps the operating system communicate with the printer.

C. Language Translators

Computers understand machine language, but programmers generally write programs using high-level or assembly languages. Language translators convert these programs into machine-understandable instructions.

There are three major types:

1. Compiler

A compiler translates the entire source program into machine code before execution.

Examples: C, C++, Java compiler.

Advantages:

  • Faster execution after compilation
  • Reports errors during compilation

2. Interpreter

An interpreter translates and executes a program line by line.

Example: Python commonly uses an interpreter-based execution approach.

Advantage:

  • Easy to test and debug individual sections.

3. Assembler

An assembler converts an assembly language program into machine language.

Assembly language → Assembler → Machine code

D. Utility Software

Utility software helps users maintain, protect, and optimize a computer system.

Examples:

  • Antivirus software
  • Backup software
  • Disk cleanup tools
  • File compression software
  • Disk management tools

Functions:

  • Protects against malware
  • Creates backups
  • Removes unnecessary files
  • Compresses files
  • Monitors system performance

2. Application Software

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

Unlike system software, application software is mainly concerned with user-oriented tasks.

Examples

  • MS Word → Creating documents
  • MS Excel → Calculations and spreadsheets
  • PowerPoint → Presentations
  • Google Chrome → Web browsing
  • Photoshop → Image editing
  • VLC → Playing multimedia (VideoLAN Client)

Types of Application Software

A. General-Purpose Software

General-purpose software is developed to perform common tasks required by many users.

Examples:

  • MS Word
  • MS Excel
  • PowerPoint
  • Web browsers
  • Media players

Example

MS Word can be used by:

  • Students for assignments
  • Teachers for notes
  • Businesses for reports
  • Writers for documents

Therefore, it is general-purpose software.

B. Special-Purpose Software

Special-purpose software is developed to perform one particular type of task or solve a specific problem.

Examples:

  • Railway reservation software
  • Billing software
  • Payroll software
  • ATM software (Automated Teller Machine)
  • Hospital management software

Example

An ATM system is designed mainly for banking transactions such as:

  • Cash withdrawal
  • Balance enquiry
  • Deposit
  • Fund transfer

Therefore, it is special-purpose software.

C. Customized Software

Customized software is developed according to the specific requirements of a particular person or organization.

Examples:

  • A college's customized student management system
  • A company's employee management system
  • A hospital's customized patient management system

Example

Suppose college needs software with:

  • Student attendance
  • Examination management
  • Fee management
  • Results
  • Student records

A software company can develop a system specifically for that college. This is customized software.

3. Web-Based Software

Web-based software is accessed through a web browser rather than being completely installed on the user's computer.

Examples:

  • Gmail
  • Google Docs
  • Online banking
  • Online shopping websites
  • Learning management systems

Advantages

  • Can be accessed from different devices
  • Usually requires less local installation
  • Easy to update centrally
  • Useful for remote access

4. Mobile Application Software

Mobile applications are software programs designed primarily for smartphones and tablets.

Examples:

  • WhatsApp
  • Google Maps
  • Mobile banking apps
  • Educational apps
  • Shopping apps

They are generally developed for platforms such as Android and iOS.

5. Embedded Software

Embedded software is software built into a hardware device to control its functions.

It is commonly found in:

  • Washing machines
  • Microwave ovens
  • Cars
  • Smart TVs
  • Digital cameras
  • Medical equipment
  • Smart watches

Example

A washing machine contains software that controls:

  • Water level
  • Washing time
  • Spin speed
  • Temperature

The software is embedded inside the device.

6. Open-Source and Proprietary Software

Software can also be classified according to how its source code and usage rights are provided.

Open-Source Software

The source code is made available under an open-source license, allowing users and developers to study, modify, and redistribute it according to the license terms.

Examples:

  • Linux
  • LibreOffice
  • Mozilla Firefox

Proprietary Software

The software is controlled by its owner or organization, and its source code is generally not publicly available.

Examples:

  • Microsoft Windows
  • Microsoft Office
  • Adobe Photoshop

Difference Between System Software and Application Software

System Software

Application Software

Manages computer resources

Performs user-specific tasks

Works closely with hardware

Works mainly for the user

Usually starts with or supports the system

Usually launched when required

Provides a platform for applications

Runs on the platform provided by system software

Examples: Windows, Linux, drivers

Examples: Word, Excel, Chrome

Simple Example

Think of a restaurant:

  • System software is like the kitchen infrastructure that makes everything work.
  • Application software is like the specific services provided to customers.

Similarly, the operating system provides the environment, while applications perform tasks for the user.

Software Development Life Cycle (SDLC)

SDLC stands for Software Development Life Cycle.

It is a systematic process used to develop software from the initial idea to deployment and maintenance.

Main Phases of SDLC

It is a step-by-step process used by teams to plan, build, test, and maintain high-quality software.

Following this structured cycle helps developers deliver projects on time, stay within budget, and ensure the software meets user needs.

Planning → Requirement Analysis → Design → Implementation → Testing → Deploy→ Maintenance

The Standard Phases of SDLC

The Software Development Life Cycle typically involves the following core stages:

1 Planning: Define the project's goals, scope, cost, and overall strategy.

2 Requirements Analysis: Gather and document exactly what the software needs to do.

3 Design: Create the technical blueprint, system architecture, and user interface.

4 Development (Coding, Implementation): Write the actual code to build the software.

5 Testing: Check the software for bugs and make sure it works perfectly.

6 Deployment: Release the software to the public or the production environment.

7 Maintenance: Provide ongoing support, fix any new bugs, and release updates.

1 Planning:

In this phase, the organization decides what software needs to be developed and why.

It includes:

  • Identifying the problem
  • Defining project goals
  • Estimating cost and time
  • Identifying required resources

Example: A college decides to develop an online student attendance system.

2Requirements Analysis:

Developers collect and understand what the users expect from the software.

Requirements may include:

  • Functional requirements – what the system should do
  • Non-functional requirements – performance, security, reliability, etc.

Example: The attendance system should allow teachers to mark attendance and students to view their attendance.

3 Design:

In this phase, the requirements are converted into a technical design.

Developers decide:

  • Database structure
  • System architecture
  • User interface
  • Modules
  • Technologies to be used

Example: Designing tables for students, teachers, subjects, and attendance records.

4 Development (Coding, Implementation):

The actual software is developed by writing program code.

Different modules are coded according to the design.

Example: Developers write Python, Java, PHP, or other code to create the attendance system.

 

5 Testing:

The developed software is tested to identify and correct errors, bugs, and defects.

Common testing types include:

  • Unit testing (such as individual functions, methods, or classes)
  • Integration testing (individual units or modules are combined and tested as a group)
  • System testing (in which the complete and integrated application is tested as a whole to ensure it meets the requirements)
  • Acceptance testing (the final phase of software evaluation where real users or stakeholders check if a system satisfies business requirements and is ready for production.)

Example: Checking whether attendance is correctly saved in the database and displayed to students.

6 Deployment:

After successful testing, the software is installed or released for actual users.

Example: The college uploads the attendance system to its server and teachers and students start using it.

7 Maintenance:

After deployment, the software needs continuous maintenance and improvement.

This may include:

  • Fixing newly discovered bugs (Incorrect Input Validation, Off-by-One Array Loop)
  • Adding new features (admin change a name or picture, Smartphone camera)
  • Improving security (Use multi-factor authentication (MFA): Require users to provide two or more verification factors to gain access (Use multi-factor authentication (MFA): Require users to provide two or more verification factors to gain access, Encrypt data: Make sensitive files unreadable both at rest and in transit using strong cryptographic methods.)
  • Updating the software (Operating System Patches: Your phone or computer getting a monthly security patch (like a minor Windows or Android security fix, App Bug Fixes: Social media apps like Instagram or Spotify downloading a patch to stop sudden crashes.)

Example: Later, the college adds an SMS or email notification feature to the attendance system.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Common SDLC Methodologies

The Software Development Life Cycle (SDLC) is a structured process used by teams to plan, design, build, test, and deploy software.

SDLC methodologies are different approaches used by software development teams to plan, develop, test, and maintain software. Each methodology defines how the different phases of SDLC are organized and carried out.

The most common SDLC methodologies are:

1.                      Waterfall Model

2.                      V-Model

3.                      Prototype Model

4.                      Iterative Model

5.                      Incremental Model

6.                      Spiral Model

7.                      Agile Model

8.                      RAD Model

Waterfall: A traditional, linear approach where each phase must be fully completed before the next one begins. This methodology was introduced first by Winston W. Royce in 1970 and has been adopted by the software industry over the period of time.

Phases

Requirements → Design → Implementation → Testing → Deployment → Maintenance

Each phase is generally completed before the next phase begins.

Advantages

Simple and easy to understand.

Easy to manage.

Clear documentation.

Suitable when requirements are stable.

Disadvantages

Difficult to accommodate changing requirements.

Testing occurs relatively late.

Errors discovered late can be expensive to fix.

Example

A classic real-world example of the Waterfall Model is building an Online Food Delivery System. Building a house or a commercial building

Developing software for a government project where requirements are clearly defined before development begins.

2. V-Model

The V-Model, or Verification and Validation Model, is an extension of the Waterfall approach.

In this model, each development phase has a corresponding testing phase.

The modern V-model (Verification and Validation model) for systems engineering was developed in 1991 by Kevin Forsberg and Harold Mooz, while earlier conceptual roots trace back to Barry Boehm in 1979 and refined variants used by NASA (NASA is the National Aeronautics and Space Administration)

Requirements          Acceptance Testing

                            

System Design         System Testing

                            

Architecture          Integration Testing

                            

Module Design         Unit Testing

                            

             Coding

 

 

Advantages

Testing is planned early.

Clearly defined development and testing activities.

Suitable for projects requiring high reliability.

Disadvantages

Changes are difficult to accommodate.

Requires clearly defined requirements.

Can be expensive for changing projects.

Example

A real-life example of the V-Model in software development is secure online banking application for money transfers. Another industry like automotive or healthcare.

3. Prototype Model

In the Prototype Model, a preliminary version of the software, called a prototype, is created to understand user requirements.

Process

Requirements → Prototype → User Feedback → Refinement → Final System

The prototype helps users and developers understand what the final system should look like.

As an industry-wide engineering response to the limitations of the rigid Waterfall model, with early formal frameworks proposed by researchers like Bally and others in 1977.

Advantages

Helps clarify unclear requirements.

Users can provide feedback early.

Reduces misunderstanding between users and developers.

Disadvantages

Can increase development time.

Users may think the prototype is the final product.

Poorly managed prototypes can lead to design problems.

Example

Before developing a complete college management system, developers create a simple prototype showing the login, student registration, and attendance screens.

4. Iterative Model

In the Iterative Model, software is developed through repeated cycles called iterations.

Each iteration produces an improved version of the software.

Plan → Design → Develop → Test

                       

 └──── Improve ← Feedback

The Iterative Enhancement technique and foundational concepts of iterative development in software engineering were introduced and published by Victor R. Basili and Joe E. Turner in 1975, while broader evolutionary and cyclic development frameworks like the Spiral model were later formalized by Barry Boehm in 1988.

Example

Banking App

Baking a Cake (Refining a Recipe)

Mobile Apps (like WhatsApp)

Advantages

Allows continuous improvement.

Feedback can be incorporated into later iterations.

Problems can be identified earlier.

Disadvantages

Requires good planning.

Repeated changes may increase cost.

The overall system architecture must be carefully managed.

 

5. Incremental Model

In the Incremental Model, the software is divided into smaller parts called increments. Each increment adds new functionality to the system.

The Incremental Model in software engineering was proposed by Harlan Mills in 1980.

Example

For an online college system:

Increment 1: Student registration

Increment 2: Attendance

Increment 3: Examination

Increment 4: Results

Increment 5: Fee management

Each increment is developed and tested before the next one is added.

Advantages

Working software is available early.

Easier to test smaller parts.

Changes can be accommodated more easily than in Waterfall.

Disadvantages

Requires proper planning.

Integration between increments can be challenging.

Not ideal when the system cannot be divided into independent functions.

6. Spiral Model

The Spiral Model combines iterative development with risk analysis.

Each cycle of the spiral generally involves:

Planning

Risk Analysis

Development and Testing

Evaluation and Planning for the Next Cycle

The spiral model was proposed by Barry Boehm in 1986

Advantages

Strong focus on risk management.

Suitable for large and complex projects.

Customer feedback can be incorporated.

Disadvantages

More expensive.

Requires experienced professionals.

Complex to manage.

Example

Large banking, aerospace, or defense software projects where identifying and controlling risks is extremely important.

7 Agile: A flexible approach where software is developed in small, continuous cycles, allowing for quick feedback and changes. Agile is a flexible project management and product development approach that breaks work into small, repeating cycles to help teams adapt quickly to change. February 2001 when 17 software developers met at a ski resort in Snowbird, Utah. Known as the Agile Alliance, prominent signatories included Kent Beck, Ward Cunningham, Martin Fowler, Ken Schwaber, and Jeff Sutherland.

The team develops a small set of features, tests them, obtains feedback, and then works on the next set.

Planning

  

Development

  

Testing

  

Customer Feedback ↓ Improvement    

Advantages

Highly flexible.

Quickly responds to changing requirements.

Frequent customer feedback.

Working software is delivered regularly.

Disadvantages

Requires active customer/team participation.

Documentation may receive less emphasis if poorly managed.

Scope can change frequently.

Example

Developing a mobile shopping application where customers' requirements and features change frequently.

Common Frameworks (Example)

Teams use different methods to put Agile into practice:

Scrum: Divides work into short, fixed time periods called sprints, usually lasting two weeks.

Kanban: Uses visual boards to track tasks and limit how much work happens at the same time

Spotify

Microsoft

Amazon

8. RAD Model

RAD stands for Rapid Application Development.

It focuses on developing software quickly through prototyping, reusable components, and continuous user involvement.

The Rapid Application Development (RAD) model was formally developed by James Martin in the early 1990s (with foundational concepts emerging at IBM during the 1980s).

Advantages

Faster development.

Frequent user feedback.

Useful for applications with tight deadlines.

Disadvantages

Requires skilled developers.

Not suitable for very large or highly complex systems.

Requires continuous user involvement.

Example

Building an internal employee travel request and approval app using a low-code platform.

E-Commerce Checkout Redesign.

Hospital Patient Check-In Kiosk.