Software engineering is the systematic application or of engineering approaches
to the development of software. A software engineer is a person who applies the
principles of software engineering to design, develop, maintain, test, and
evaluate computer software.
The systematic approach that is used in software engineering is sometimes called
a software process. A software process is a sequence of activities that leads to the
production of a software product. Four fundamental activities are common to
all software processes.
Software specification, where customers and engineers define the software
that is to be produced and the constraints on its operation.
Software development, where the software is designed and programmed.
Software validation, where the software is checked to ensure that it is what
the customer requires.
Software evolution, where the software is modified to reflect changing
customer and market requirements.
Different types of software:
Heterogeneity: Increasingly, systems are required to operate as distributed
systems across networks that include different types of computer and mobile
devices. As well as running on general-purpose computers, software may also
have to execute on mobile phones and tablets. You often have to integrate new
software with older legacy systems written in different programming languages.
The challenge here is to develop techniques for building dependable software that
is flexible enough to cope with this heterogeneity.
Business and social change Businesses and society are changing incredibly
quickly as emerging economies develop and new technologies become available.
They need to be able to change their existing software and to rapidly develop
new software. Many traditional software engineering techniques are time
consuming, and delivery of new systems often takes longer than planned. They
need to evolve so that the time required for software to deliver value to its
customers is reduced
Security and trust As software is intertwined with all aspects of our lives, it is
essential that we can trust that software. This is especially true for remote
software systems accessed through a web page or web service interface. We have
to make sure that malicious users cannot successfully attack our software and
that information security is maintained
Scale Software has to be developed across a very wide range of scales, from very
small embedded systems in portable or wearable devices through to Internet-
scale, cloud-based systems that serve a global community
Types of Software:
Software can take the form of one line of code or, like Microsoft’s Windows
operating system, span into millions.
Software also works with other software to join as a cohesive system. Your
smartphone is a collection of thousands of software components designed to work
together.
Code languages and styles vary in size and scope. The software used to work a
modern microwave is very different from the code that runs an Apple Mac.
Application Software
System Software
Firmware
Programming Software
Driver Software
Freeware
Shareware
Open Source Software
Closed Source Software
Utility Software
Application Software
Application software is a software program or group of programs designed for
end-users. There are many types of application software.
Types of Application Software and Examples
Word Processing Software: Google Docs, Microsoft Word, WordPad and
Notepad
Database Software: MySQL, Microsoft SQL Server, Microsoft Access,
Oracle, IBM DB2 and FoxPro
Spreadsheet Software: Google Sheets, Apple Numbers and Microsoft Excel
Multimedia Software: Media Player, Winamp, QuickTime and VLC Media
Player
Presentation Software: Google Slides, Microsoft Powerpoint, Keynotes,
Prezzy
Enterprise Software: customer relationship management (CRM)
Information Worker Software: Documentation tools, resource
management tools
Communication Software: Zoom, Google Meet, Skype
Educational Software: Dictionaries – Encarta, Britannica; Mathematical:
MATLAB; Others: Google Earth, NASA World Wind
Simulation Software: Flight and scientific simulators
Content Access Software: Accessing content through media players, web
browsers
Application Suites: Apache OpenOffice, Microsoft Office365, Apple’s iWork,
LibreOffice, G-Suite, Oracle E-Business Suite
Software for Engineering and Product Development: IDE or Integrated
Development Environments
Email Software: Microsoft Outlook, Gmail, Apple Mail
Benefits of Application Software
Applications are the lifeblood of our digital devices.
Mobile app developers create solutions to let businesses sell and market
themselves online. Financial applications run the stock market. The banking
system uses applications to transfer money and log transactions.
System Software
System software provides a platform for other software and includes the
programs managing the computer itself, such as the computer’s operating
system, file management utilities and disk operating system (or DOS). The
system’s files consist of libraries of functions, system services, drivers for printers
and other hardware, system preferences and other configuration files. The
programs in system software encompass assemblers, compilers, file management
tools, system utilities and debuggers.
While application software is non-essential and won’t shut down your device by
being uninstalled, system software is essential and creates a platform that apps
sit inside.
Examples of System Software
System software runs things in the background and operating systems are an
example of system software.
For desktop computers, laptops and tablets:
Microsoft Windows
MacOS (for Apple devices)
GNU/Linux
For smartphones:
Apple’s iOS
Google’s Android
Windows Phone OS
Other examples include game engines, computational science software,
industrial automation software and software as a service application.
Other than operating systems, some people also classify programming software
and driver software as types of system software.
Benefits of System Software
Open-source operating systems let businesses create their own OS
Firmware
Firmware is software that’s stored on a computer’s motherboard or chipset.
Its job is to ensure the device works directly. When you switch on your laptop,
the Basic Input Output System (BIOS) wakes everything up.
It checks the drive for errors then queries if the operating system is present. If
so, it then turns control over to the likes of Windows 10.
Programming Software
How does software get developed? The answer is by using programming
software.
Most code is written in English using a specific format or syntax. High-level
programming languages are then converted into machine code. It then takes
another type of software called a compiler to achieve this.
Programming software, also known as a programming tool or software
development tool, is a program that assists software developers or programmers
with creating, debugging and maintaining other programs and applications.
Programming software is considered to be a subset of system software, although
there is debate regarding this.
Examples of Programming Software
It’s possible to write computer languages like Java or PHP in plain-text editor
apps, but more robust, industry-standard applications are available. Compilers,
assemblers, debuggers, interpreters etc. are examples of programming software.
Integrated development environments (IDEs) are combinations of all these
software.
Most software developers use programming software apps like:
GitHub
GitLab
Android Studio
Visual Studio Code
Eclipse
XCode
Notepad++
Atom
They’re termed IDEs or integrated development environments and
programmers use them for a reason.
Benefits of Programming Software
IDEs have tools like highlighting errors in code. They also contain in-built
compilers and preview how the app will work before testing it on a phone.
Trying to track down a bug over thousands of lines of code is next to impossible
in a simple text editor. Yet an IDE makes that easier resulting in quicker
development time and robust software.
Driver Software
Driver software communicates with hardware and control devices and
peripherals attached to a computer. It does this by gathering input from the OS
(operating system) and giving instructions to the hardware to perform an action
or other designated task.
Internal components like the hard drive and processor each require its own
driver. If the wrong software’s installed the device won’t work correctly.
In older versions of Windows, device drivers became the bane of office life.
New peripherals like a printer required the correct driver. When the CD went
missing it took forever to find the right driver software online.
Thankfully Windows and other operating systems install and manage drivers
behind the scenes. The result is an optimised and working machine.
Examples of Driver Software
All hardware devices require drivers. For example:
Graphic cards
Network cards
Mouse and keyboard
When you insert a USB flash drive into your computer, the OS recognises it as a
new device. The driver then gets installed automatically to make it functional.
Benefits of Driver Software
Drivers are part of the system software category. Without them, nothing would
work.
Hardware manufacturers are usually responsible for creating driver software.
However, Linux and Chromebook often get overlooked because of their small
market share.
Thankfully the coding community comes to the rescue.
Someone writes the code to make the device work correctly on their system. They
then share the driver online for others to download and use.
Freeware
Freeware sounds like free software or open-source software but there’s a
difference.
Freeware software does not expose or share its source code. Yet the software
owner does not charge others to use it.
Freeware licences vary as to what the software can be used for and who can
share it.
Some developers only allow their freeware for private or personal use. Businesses
need a paid licence or get written permission. An example of this is GPT-3 – and
only approved developers and marketers can get access to the program.
Always read the small print and be wary of the copyright of freeware licences.
Examples of Freeware
Freeware software examples cover a wide base of useful applications from audio
to virtual machines.
Benefits of Freeware
You pay nothing for fully developed software. You can uninstall it if you don’t
like the features. There are no companies ‘forcing’ you to upgrade.
Freeware also helps the online community to share and grow. Developers can
showcase their talents while businesses can avail of some excellent apps.
Shareware
Like freeware, shareware is free to use and share with others, but only for a short
time.
It acts as an evaluation. You can try some or all of the features before committing
to a purchase.
Examples of Shareware
WinZip is one of the most established shareware apps.
It started in 1991 when compression software wasn’t included in Windows.
Nearly thirty years later, it still sees high download volumes. The free trial is
time-limited but all versions include encryption.
Benefits of Shareware
Shareware lets you try the software for free before purchasing a full licence.
Some give a limited feature set or are time-locked. “Try before you buy” is a great
way to check if the software is right for your business’s needs.
Open Source Software
Open source means you can explore the actual code that the app was written in.
Strict software licenses restrict what another developer is able to do with the
code. However, the ethos behind open-source is to encourage development.
Open source means evolving the code to make it better for everyone.
Examples of Open Source Software
The Linux OS is the perfect example of open-source software.
Developers can download the source code and edit it as they see fit. New flavours
of Linux help target a certain need as a result.
Benefits of Open Source Software
Github.com is the top destination for coders to save and share their code.
Repositories are often open source and developers can find the right solution to
their issues easily. They can clone whole projects or download elements for free.
Closed Source Software
Most applications are closed source in that they do not expose the original code.
Licences are stringent. No unauthorised copying or cracking is allowed. The app
can be commercial or private but it requires payment of some kind to use.
Examples of Closed Source Software
Any app that hides or encrypts its source code is considered closed-source.
For example, Skype allows video conferencing. It’s owned by Microsoft and
although free to use, the corporation charges high-volume users a fee.
Benefits of Closed Source Software
Closed source software is designed for commercial use.
Developers are often employed to write code. That costs money. Therefore
companies don’t want their investment shared without recompense.
Utility Software
Utility software is designed to analyse and optimise a device.
These apps are usually bundled with an OS. They track performance and alert
the system if there’s a problem like overheating.
Examples of Utility Software
The Windows Task Manager shows all open processes in Windows. It details
performance over time and showcases how much memory each uses.
Utilities also include anti-virus software and backup apps.
Benefits of Utility Software
Keeping a close eye on overheating is essential as is scanning for malware.
Utility software helps to keep things stable. It’s designed to make your system
run smooth and not get damaged due to overuse.
Evolving Role of Software:
Software Evolution is a term which refers to the process of developing software
initially, then timely updating it for various reasons, i.e., to add new features or
to remove obsolete functionalities etc. The evolution process includes
fundamental activities of change analysis, release planning, system
implementation and releasing a system to customers.
The cost and impact of these changes are accessed to see how much system is
affected by the change and how much it might cost to implement the change. If
the proposed changes are accepted, a new release of the software system is
planned. During release planning, all the proposed changes (fault repair,
adaptation, and new functionality) are considered.
A design is then made on which changes to implement in the next version of the
system. The process of change implementation is an iteration of the development
process where the revisions to the system are designed, implemented and tested.
The necessity of Software evolution: Software evaluation is necessary just
because of the following reasons:
a) Change in requirement with time: With the passes of time, the organization’s
needs and modus Operandi of working could substantially be changed so in this
frequently changing time the tools(software) that they are using need to change
for maximizing the performance.
b) Environment change: As the working environment changes the things(tools)
that enable us to work in that environment also changes proportionally same
happens in the software world as the working environment changes then, the
organizations need reintroduction of old software with updated features and
functionality to adapt the new environment.
c) Errors and bugs: As the age of the deployed software within an organization
increases their preciseness or impeccability decrease and the efficiency to bear
the increasing complexity workload also continually degrades. So, in that case,
it becomes necessary to avoid use of obsolete and aged software. All such obsolete
Softwares need to undergo the evolution process in order to become robust as per
the workload complexity of the current environment.
d) Security risks: Using outdated software within an organization may lead you
to at the verge of various software-based cyberattacks and could expose your
confidential data illegally associated with the software that is in use. So, it
becomes necessary to avoid such security breaches through regular assessment
of the security patches/modules are used within the software. If the software isn’t
robust enough to bear the current occurring Cyber attacks so it must be changed
(updated).
e) For having new functionality and features: In order to increase the
performance and fast data processing and other functionalities, an organization
need to continuously evolute the software throughout its life cycle so that
stakeholders & clients of the product could work efficiently.
Laws used for Software Evolution:
Law of continuing change:
This law states that any software system that represents some real-world reality
undergoes continuous change or become progressively less useful in that
environment.
Law of increasing complexity:
As an evolving program changes, its structure becomes more complex unless
effective efforts are made to avoid this phenomenon.
Law of conservation of organization stability:
Over the lifetime of a program, the rate of development of that program is
approximately constant and independent of the resource devoted to system
development.
Law of conservation of familiarity:
This law states that during the active lifetime of the program, changes made in
the successive release are almost constant.