0% found this document useful (0 votes)
12 views22 pages

Lecture 1 (1) - Copy

Software engineering combines software and engineering principles to develop software products through systematic analysis, design, and testing. The document covers the history of software development, the evolution of personal computers, and the impact of mobile devices on software accessibility. It also defines key software terminologies, types of software, and outlines the Software Development Life Cycle (SDLC).

Uploaded by

kmosesisaac
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
12 views22 pages

Lecture 1 (1) - Copy

Software engineering combines software and engineering principles to develop software products through systematic analysis, design, and testing. The document covers the history of software development, the evolution of personal computers, and the impact of mobile devices on software accessibility. It also defines key software terminologies, types of software, and outlines the Software Development Life Cycle (SDLC).

Uploaded by

kmosesisaac
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
You are on page 1/ 22

Introduction to Software engineering principles

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:

 Is a set of instructions, data or programs used to operate computers and execute


specific tasks.
 It is the opposite of hardware, which describes the physical aspects of a computer.

 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

 Engineering is about developing

products, using well-defined, scientific

principles and methods.

 In otherwards, It deals with the use

of science and math to design or make

things.
Software Engineering

What is Software Engineering?

 Software Engineering is about developing Software products,

using well-defined, scientific principles and methods.

 Software engineering is defined as a process of analyzing user

requirements and then designing, building, and testing software

application which will satisfy those requirements.


Software Engineering …Cont’d..

What is Software Engineering?


• The practical application of scientific knowledge to the design and construction
of computer programs and the associated documentation required to develop,
operate, and maintain them [Boehm].
• The systematic approach to the development, operation, maintenance, and
retirement of software [IEEE].
• The establishment and use of sound engineering principles (methods) in order to
obtain economically software that is reliable and works on real machines
[Bauer].
• Multi-person construction of multi-version software [Parnas].
• “Software from womb to tomb.”
History of software design and development

Through the last 40 or so years, computers and technology have


come to play an increasingly important role in all our lives – so much
so that it’s almost impossible to imagine modern life without them.
From the web browsers we use to access sites like YouTube,
Netflix, and Facebook through to the office productivity apps used by
companies around the world, software is now an integral part of our
personal and business lives.
The early days of software development

 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

particularly with the release of Apple II system.

At the same time, a rival product, VisiCalc, was launched, bringing spreadsheet

software to the masses for the first time.

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.

Many industry analysts believe we are now in the throes of a fourth


industrial revolution – a time when machines and the software that drives
them will come to dominate.

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.

Software Development Life Cycle (SDLC)


The Software Development Life Cycle is a structured approach that guides software
development from inception to deployment. It typically includes requirements
analysis, design, coding, testing, and maintenance.

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

other types of software to work in.

Examples of system software.


 Operating system:

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 :

Drivers control specific hardware which is basically connected to system.

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

Sound Card Driver

VGA Drivers.
 Utility software :

 These software are intended to arrange and keep up given PC system.

 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

 Windows File Explorer


 Firmware :A permanent software programmed into a read-only memory

 It is really perpetual software which is installed in system’s perused just


memory.
 It basically has guidelines which are for hardware gadgets.

 It offers essential data in regards to how specific gadget collaborates


with various other hardware. Examples of firmware are :
 PC Peripherals

 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.

You might also like