Faculty of Engineering UNIVERSITY OF JOS
COMPUTING AND SOFTWARE
ENGINEERING
MODULE
4
Engr. Izuagbe S. Momoh
Department of Electrical and Electronics Engineering
Department of Electrical and Electronic
Engineering By Abdullahi Yusuf Sada
Faculty of Engineering UNIVERSITY OF JOS
Definition of Software
Computer software is a general name for all forms of programs. A
program itself is a sequence of instruction which the computer follows
to perform a given task.
Department of Electrical and Electronic GET 211 2
Engineering By Abdullahi Yusuf Sada
Faculty of Engineering UNIVERSITY OF JOS
Types of Software
Software can be categorised into three major types namely system
software, programming software and application software.
Department of Electrical and Electronic GET 211 3
Engineering By Abdullahi Yusuf Sada
Faculty of Engineering UNIVERSITY OF JOS
System Software
System Software helps to run the computer hardware and the entire
computer system. It includes the following:
▪ Device drivers
▪ Operating systems
▪ Servers
▪ Utilities
▪ Windowing systems
Department of Electrical and Electronic GET 211 4
Engineering By Abdullahi Yusuf Sada
Faculty of Engineering UNIVERSITY OF JOS
The function of systems software is to assist the applications
programmer from the details of the particular computer complex being
used, including such peripheral devices as communications, printers,
readers, displays and keyboards, and also to partition the computer's
resources such as memory and processor time, in a safe and stable
manner.
Department of Electrical and Electronic GET 211 5
Engineering By Abdullahi Yusuf Sada
Faculty of Engineering UNIVERSITY OF JOS
Programming Software
Programming software offers tools to assist a programmer in writing
programs, and software using different programming languages in a
more convenient way. The tools include:
Compilers
Debuggers
Interpreters
Linkers
Text editors.
Department of Electrical and Electronic GET 211 6
Engineering By Abdullahi Yusuf Sada
Faculty of Engineering UNIVERSITY OF JOS
Application Software
Application software is a class of software which the user of computer
needs to accomplish one or more definite tasks. The common
applications include the following:
▪ Industrial automation
▪ Business software
▪ Computer games
▪ Quantum chemistry and solid-state physics software
▪ Telecommunications (i.e., the internet and everything that flows on it)
▪ Databases
Department of Electrical and Electronic GET 211 7
Engineering By Abdullahi Yusuf Sada
Faculty of Engineering UNIVERSITY OF JOS
▪ Educational software
▪ Medical software
▪ Military software
▪ Molecular modeling software
▪ Photo-editing
▪ Spreadsheet
▪ Word processing
▪ Decision making software
A major component of computer system is the software and it plays a
major role in the functioning of the system.
Department of Electrical and Electronic GET 211 8
Engineering By Abdullahi Yusuf Sada
Faculty of Engineering UNIVERSITY OF JOS
Definition of Software Engineering.
Software engineering is the application of a systematic, disciplined,
quantifiable approach to the development, operation, and maintenance
of software, and the study of these approaches. In other words, it is the
application of engineering to software.
Software Engineering is the application of engineering to software.
Department of Electrical and Electronic GET 211 9
Engineering By Abdullahi Yusuf Sada
Faculty of Engineering UNIVERSITY OF JOS
Software engineering can be divided into ten sub-disciplines. They are
as follows:
Software requirements: The elicitation, analysis, specification, and
validation of requirements for software.
Software design: Software Design consists of the steps a programmer
should do before they start coding the program in a specific language. It
is usually done with Computer-Aided Software Engineering (CASE)
tools and use standards for the format, such as the Unified Modeling
Language (UML).
Software development: It is construction of software through the use
of programming languages.
Department of Electrical and Electronic GET 211 10
Engineering By Abdullahi Yusuf Sada
Faculty of Engineering UNIVERSITY OF JOS
▪ Software testing Software Testing is an empirical investigation
conducted to provide stakeholders with information about the quality
of the product or service under test.
▪ Software maintenance: This deals with enhancements of Software
systems to solve the problems they may have after being used for a
long time after they are first completed.
▪ Software configuration management: is the task of tracking and
controlling changes in the software. Configuration management
practices include revision control and the establishment of baselines.
▪ Software engineering management: The management of software
systems borrows heavily from project management.
Department of Electrical and Electronic GET 211 11
Engineering By Abdullahi Yusuf Sada
Faculty of Engineering UNIVERSITY OF JOS
Software development process: A software development process is a
structure imposed on the development of a software product. There are
several models for such processes, each describing approaches to a
variety of tasks or activities that take place during the process.
Software engineering tools, (CASE which stands for Computer Aided
Software Engineering) CASE tools are a class of software that
automates many of the activities involved in various life cycle phases.
Software quality The totality of functionality and features of a software
product that bear on its ability to satisfy stated or implied needs.
Department of Electrical and Electronic GET 211 12
Engineering By Abdullahi Yusuf Sada
Faculty of Engineering UNIVERSITY OF JOS
Software Engineering Goals and Principles
Department of Electrical and Electronic GET 211 13
Engineering By Abdullahi Yusuf Sada
Faculty of Engineering UNIVERSITY OF JOS
Goals
Stated requirements when they are initially specified for systems are
usually incomplete. Apart from accomplishing these stated
requirements, a good software system must be able to easily support
changes to these requirements over the system's life. Therefore, a major
goal of software engineering is to be able to deal with the effects of
these changes. The software engineering goals include:
Department of Electrical and Electronic GET 211 14
Engineering By Abdullahi Yusuf Sada
Faculty of Engineering UNIVERSITY OF JOS
Maintainability: Changes to software without increasing the
complexity of the original system design should be possible.
Reliability: The software should be able to prevent failure in design
and construction as well as recover from failure in operation. In other
words, the software should perform its intended function with the
required precision at all times.
Efficiency: The software system should use the resources that are
available in an optimal manner.
Department of Electrical and Electronic GET 211 15
Engineering By Abdullahi Yusuf Sada
Faculty of Engineering UNIVERSITY OF JOS
Understand ability: The software should accurately model the view the
reader has of the real world. Since code in a large, long-lived software
system is usually read more times than it is written, it should be easy to
read at the expense of being easy to write, and not the other way around.
Department of Electrical and Electronic GET 211 16
Engineering By Abdullahi Yusuf Sada
Faculty of Engineering UNIVERSITY OF JOS
Principles
Sounds engineering principles must be applied throughout development,
from the design phase to final fielding of the system in order to attain a
software system that satisfies the above goals. These include:
Abstraction: The purpose of abstraction is to bring out essential
properties while omitting inessential detail. The software should be
organized as a ladder of abstraction in which each level of abstraction is
built from lower levels. The code is sufficiently conceptual so the user
need not have a great deal of technical background in the subject. The
reader should be able to easily follow the logical path of each of the
various modules. The decomposition of the code should be clear.
Department of Electrical and Electronic GET 211 17
Engineering By Abdullahi Yusuf Sada
Faculty of Engineering UNIVERSITY OF JOS
Information Hiding: The code should include no needless detail.
Elements that do not affect other segment of the system are inaccessible
to the user, so that only the intended operations can be performed. There
are no "undocumented features".
Modularity: The code is purposefully structured. Components of a
given module are logically or functionally dependent.
Localization: The breakdown and decomposition of the code is
rational. Logically related computational units are collected together in
modules.
Department of Electrical and Electronic GET 211 18
Engineering By Abdullahi Yusuf Sada
Faculty of Engineering UNIVERSITY OF JOS
Uniformity: The notation and use of comments, specific keywords and
formatting is consistent and free from unnecessary differences in other
parts of the code.
Completeness: Nothing is deliberately missing from any module. All
important or relevant components are present both in the modules and in
the overall system as appropriate.
Confirm ability: The modules of the program can be tested
individually with adequate rigor. This gives rise to a more readily
alterable system, and enables the reusability of tested components.
Department of Electrical and Electronic GET 211 19
Engineering By Abdullahi Yusuf Sada
Faculty of Engineering UNIVERSITY OF JOS
Software Engineering as the application of engineering to software has
overall goal to easily support changes to software requirements over the
system's life. It is also characterised with sounds engineering principles
which must be applied throughout development, from the design phase
to final fielding of the system in order to attain a software system that
satisfies the overall goal
Department of Electrical and Electronic GET 211 20
Engineering By Abdullahi Yusuf Sada