Lecture 1 (1) - Copy
Lecture 1 (1) - Copy
Software Engineering
Software engineering is made of two words, software and engineering.
Software
Today, everything done on a computer involves using software, from the operating system that acts as a
base layer to run additional programs to the computer, mobile apps to mobile devices, and games; all can
be considered software.
Perhaps the best way to understand the software concept is to think of it as the interface between human
users and computers.
Indeed, without software, most of us wouldn’t know where to start with a computer.
Software essentially ‘speaks’ to a machine in a language it can understand, allowing it to perform useful or
entertaining tasks on behalf of the user.
Software cont’d
Software Defined:
It is a generic term used to refer to applications, scripts and programs that run on a
device.
It can be thought of as the variable part of a computer, while hardware is the
invariable part.
Engineering
things.
Software Engineering
In 1948, The world’s first piece of software was written by a computer scientist named Tom
Kilburn.
Previously, Kilburn and Freddie Williams had developed one of the world’s earliest computers
called the Manchester Small-Scale Experimental Machine and ran Kilburn’s code to execute
mathematical computations.
Unlike the machines we see in use today, the early decade computers were controlled and
programmed using cards with punch holes.
As the integration of programming continued to develop, early languages such as Fortran, BASIC
and C evolved.
The early days of software development
How personal computer changed the world
When these early achievements provided building blocks for the growth of computing,
the software development came into existence on its own in the ’70s and ‘80s
At the same time, a rival product, VisiCalc, was launched, bringing spreadsheet
As interest grew in the realm of personal computers, other companies were quick to
enter the market with the likes of industry titan, IBM, launching in 1981.
The majority of the software developed around this period was very much
related to the work and business community. The most significant apps
were Microsoft Word and Excel and were both launched in the mid-’80s.
Later in software development came the release of open-source
programs, which became popular through the 90s, driven largely by the
interest generated online.
Eg, the earliest version of the Linux kernel (which later developed into the
operating system of the same name) was published online in 1991.
The role of mobile devices in software development
Many would argue mobile devices brought computing – and therefore software – to the masses.
The rise of mobile devices particularly smartphones revolutionized the entire computing
landscape.
From the release of the first PDA(personal digital assistant) in 1996 – the Palm OS – and
Blackberry range that was first launched in 1999 made the mobile company the fastest-growing
in the world. Computing finally hit the masses with mobile devices.
For the first time, the normal man and woman in the street could benefit from ground-breaking
tech bundled in the form of user-friendly, pocketable devices.
The future of software development
With computers and technology now playing a major part in all our lives –
plus latest industrial revolution bringing Industry 4.0, the IoT, the AI, there’s
little doubt that software will continue to shape our societies.
Today, software has become ubiquitous, even in places that you might not
expect it, from crock pots (cooker)to nuclear submarines.
Nuclear submarine, submarine that relies on a nuclear reactor to drive its
propulsion system. A nuclear submarine may or may not be armed with nuclear
weapons)
Some programming languages, like C and Cobol, have survived the test of time
and are still in use.
Other languages, such as Java and Python, are somewhat younger and have
been used in countless software development projects.
Still others, such as Apple’s Swift programming language for iOS or Go Open
source, are relatively new and exciting.
Software terminologies
Agile
Agile is an iterative and collaborative software development approach
emphasizing adaptability, customer feedback, and incremental delivery. It
promotes cross-functional teams and continuous improvement throughout the
development process.
Bug
A bug is a flaw or defect in software that causes it to behave unexpectedly or
produce incorrect results. Bug tracking and fixing are essential parts of
software engineering to ensure high-quality products.
Debugging is identifying and fixing errors or issues in software code.
Developers use various tools and techniques to locate and resolve bugs during
software development.
Functional Testing
Functional testing verifies the application's functions and features to meet the specified
requirements. It involves testing individual functions or modules in isolation.
Git
Git is a widely used version control system that tracks changes in source code during
software development. It allows multiple developers to collaborate on a project efficiently.
High-Level Language (programmer language like C, Python) compiler or interpreter for
translation.
A high-level language is a more user-friendly programming language closer to a human-
readable form. It abstracts low-level machine operations, making it easier for developers to
write code.
Low-Level Language (machine language) needs assembler for translation
A low-level language is a programming language that closely resembles machine code and
is specific to a particular computer architecture. It provides more direct control over
hardware resources.
Quality Assurance (QA)
Quality Assurance systematically monitors and evaluates software quality to ensure it
meets the desired standards and requirements. QA activities aim to prevent defects
and provide high-quality products.
Usability Testing
Usability testing evaluates the user-friendliness and effectiveness of software by
testing it with real users. It helps identify usability issues and improve the overall user
experience.
Test-Driven Development (TDD)
Test-Driven Development is a software development approach where
developers write tests before writing the actual code. It ensures that the
code meets the expected functionality and improves test coverage.
Maintenance
Maintenance in software engineering involves updating, modifying, or
enhancing software after its initial release. It includes bug fixes, feature
additions, and improvements to keep the software up-to-date and functional.
Waterfall Model is a traditional software development approach where
each phase of the SDLC follows a linear sequence. It involves strict planning
and documentation before proceeding to the next phase.
Types of software
1. System software
System software programs are designed to run a computer's application programs and hardware.
They coordinate all activities and functions of the hardware and application software.
In addition, system software controls the operations of the computer hardware and provides a platform for all the
An operating system is a program that manages resources (computer hardware) and controls users and
software.
It provides a basis for application programs and acts as an intermediary between the computer user and the
computer hardware.
Examples of OS are MS Windows, macOS, Linux, iOS, Android, CentOS, Ubuntu and Unix.
Drivers :
Diverse hardware gadgets which require driver to interface with system effectively eg
printers, sound cards, console, and mice. Examples of such drivers are :
Motherboard Drivers
ROM Drivers
Printer Drivers
USB Drivers
VGA Drivers.
Utility software :
It offers help to PC foundation. Software like circle cleanup and board apparatuses
protect against infections, defragmenters, pressure devices and so forth are on whole
utility software.
Examples are:
Antivirus such as McAfee Antivirus
WinRAR
WinZip
Inserted Systems
2. Application software
Application software consists of many programs that perform
specific functions for end users, such as writing reports and
navigating websites.
Applications can also perform tasks for other applications.
Applications on a computer cannot run on their own; they
require a computer's OS to work.