Mr.
Olamide
z
General issues
that affect
software
z
General issues that affect software
Heterogeneity
increasingly, systems are required to operate as distributed systems
across networks that include different types of computer and mobile
devices.
Business and social change
Business 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.
z
Security and trust
As software is intertwined with all aspects of our lives, it is essential
that we can trust that software.
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.
z
Software engineering diversity
There are many different types of software system and there is no
universal set of software techniques that is applicable to all of
these.
The software engineering methods and tools used depend on the
type of application being developed, the requirements of the
customer and the background of the development team.
z
Application types
Stand-alone applications: These are application systems that run on a
personal computer or apps that run on a mobile device. They include all
necessary functionality and may not need to be connected to a network.
Examples of such applications are office applications on a PC, CAD
programs, photo manipulation software, travel apps, productivity apps,
and so on.
Interactive transaction-based applications: These are applications
that execute on a remote computer and that are accessed by users from
their own computers, phones, or tablets. Obviously, these include web
applications such as e-commerce applications where you interact with a
remote system to buy goods and services.
z
Embedded control systems: These are software control systems
that control and manage hardware devices. Numerically, there are
probably more embedded systems than any other type of system.
Examples of embedded systems include the software in a mobile (cell)
phone, software that controls antilock braking in a car, and software in
a microwave oven to control the cooking process.
Batch processing systems: These are business systems that are
designed to process data in large batches. They process large
numbers of individual inputs to create corresponding outputs.
Examples of batch systems are periodic billingsystems, such as phone
billing systems, and salary payment systems.
z
Entertainment systems: These are systems for personal use that
are intended to entertain the user. Most of these systems are games
of one kind or another, which may run on special-purpose console
hardware. The quality of the user interaction offered is the most
important distinguishing characteristic of entertainment systems.
Systems for modeling and simulation: These are systems that
are developed by scientists and engineers to model physical
processes or situations, which include many separate, interacting
objects. These are often computationally intensive and require high-
performance parallel systems for execution.
z
Data collection and analysis systems: Data collection systems are
systems that collect data from their environment and send that data to other
systems for processing. The software may have to interact with sensors and
often is installed in a hostile environment such as inside an engine or in a
remote location. “Big data” analysis may involve cloud-based systems
carrying out statistical analysis and looking for relationships in the collected
data.
Systems of systems: These are systems, used in enterprises and other
large organizations, that are composed of a number of other software
systems. Some of these may be generic software products, such as an ERP
system. Other systems in the assembly may be specially written for that
environment.
z
Software engineering fundamentals
Some fundamental principles apply to all types of software system,
irrespective of the development techniques used:
Systems should be developed using a managed and understood
development process. Of course, different processes are used for
different types of software.
Dependability and performance are important for all types of
system.
Understanding and managing the software specification and
requirements (what the software should do) are important.
Where appropriate, you should reuse software that has already
been developed rather than write new software.
z
Software engineering ethics
Like other engineering disciplines, software engineering is carried
out within a social and legal framework that limits the freedom of
people working in that area. As a software engineer, you must
accept that your job involves wider responsibilities than simply the
application of technical skills. You must also behave in an ethical
and morally responsible way if you are to be respected as a
professional engineer. It goes without saying that you should
uphold normal standards of honesty and integrity. You should not
use your skills and abilities to behave in a dishonest way or in a
way that will bring disrepute to the software engineering profession.
z
However, there are areas where standards of acceptable behavior are not bound by
laws but by the more tenuous notion of professional responsibility. Some of the
issues of professional responsibility are:
Confidentiality: You should normally respect the confidentiality of your employers
or clients regardless of whether or not a formal confidentiality agreement has been
signed.
Competence: You should not misrepresent your level of competence. You should
not knowingly accept work that is outside your competence.
Intellectual property rights: You should be aware of local laws governing the use
of intellectual property such as patents and copyright. You should be careful to
ensure that the intellectual property of employers and clients is protected.
Computer misuse: You should not use your technical skills to misuse other people’s
computers. Computer misuse ranges from relatively trivial (game playing on an
employer’s machine) to extremely serious (dissemination of viruses or other
malware).
z
Assignment
What is Internet software engineering?
What is the ACM/IEEE Code of Ethics? (I want to see the rationale,
the, Ethical principles, Case study to buttress your point)