Lecture 3
Lecture 3
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.
Stand-alone applications
These are application systems that run on a local computer, such as a PC. They include
all necessary functionality and do not need to be connected to a network.
Interactive transaction-based applications
Applications that execute on a remote computer and are accessed by users from their
own PCs or terminals. These include web applications such as e-commerce applications.
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.
The Web is now a platform for running applications and organizations are
increasingly developing web-based systems rather than local systems.
Web services (discussed in Chapter 19) allow application functionality to be
accessed over the web.
Cloud computing is an approach to the provision of computer services
where applications run remotely on the ‘cloud’.
Users do not buy the software but pay according to use.
Software reuse
Software reuse is the dominant approach for constructing web-
based systems. When building these systems, you think
about how you can assemble them from pre-existing software
components and systems.
Incremental and agile development
Web-based systems should be developed and delivered
incrementally. It is now generally recognized that it is impractical to
specify all the requirements for such systems in advance.
Service-oriented systems
Software may be implemented using service-oriented software engineering, where the
software components are stand-alone web services.
For example, we may design a real-world parking application with all components from
the scratch like one for login or signup another containing the map, and many more.
Rather than that I may use google maps for parking availability, pay using payPal or login
using Facebook. These all are independent web service.
Rich interfaces
Interface development technologies such as AJAX and HTML5 have emerged that
support the creation of rich interfaces within a web browser.
Confidentiality
Engineers should normally respect the confidentiality of their employers or clients
irrespective of whether or not a formal confidentiality agreement has been signed.
Competence
Engineers should not misrepresent their level of competence. They should not
knowingly accept work that is out of their competence.
ACM/IEEE-CS Joint Task Force on Software Engineering Ethics and Professional Practices
PREAMBLE
The short version of the code summarizes aspirations at a high level of the abstraction; the
clauses that are included in the full version give examples and details of how these
aspirations change the way we act as software engineering professionals. Without the
aspirations, the details can become legalistic and tedious; without the details, the
aspirations can become high sounding but empty; together, the aspirations and the details
form a cohesive code.
Software engineers shall commit themselves to making the analysis, specification, design,
development, testing and maintenance of software a beneficial and respected profession. In
accordance with their commitment to the health, safety and welfare of the public, software
engineers shall adhere to the following Eight Principles:
1. PUBLIC - Software engineers shall act consistently with the public interest.
2. CLIENT AND EMPLOYER - Software engineers shall act in a manner that is in the best
interests of their client and employer consistent with the public interest.
3. PRODUCT - Software engineers shall ensure that their products and related
modifications meet the highest professional standards possible.
4. JUDGMENT - Software engineers shall maintain integrity and independence in their
professional judgment.
5. MANAGEMENT - Software engineering managers and leaders shall subscribe to and
promote an ethical approach to the management of software development and
maintenance.
6. PROFESSION - Software engineers shall advance the integrity and reputation of the
profession consistent with the public interest.
7. COLLEAGUES - Software engineers shall be fair to and supportive of their colleagues.
8. SELF - Software engineers shall participate in lifelong learning regarding the practice of
their profession and shall promote an ethical approach to the practice of the profession.
Collects data from a blood sugar sensor and calculates the amount of insulin
required to be injected.
Calculation based on the rate of change of blood sugar levels.
Sends signals to a micro-pump to deliver the correct dose of insulin.
Safety-critical system as low blood sugars can lead to brain malfunctioning,
coma and death; high-blood sugar levels have long-term consequences such
as eye and kidney damage.
Privacy
It is essential that patient information is confidential and is never disclosed to anyone
apart from authorised medical staff and the patient themselves.
Safety
Some mental illnesses cause patients to become suicidal or a danger to other
people. Wherever possible, the system should warn medical staff about potentially
suicidal or dangerous patients.
The system must be available when needed otherwise safety may be compromised and
it may be impossible to prescribe the correct medication to patients (depending upon
history log).
There are many different types of system, and each requires appropriate
software engineering tools and techniques for their development.
The fundamental ideas of software engineering are applicable to all types of
software system.
Software engineers have responsibilities to the engineering profession and
society. They should not simply be concerned with technical issues.
Professional societies publish codes of conduct which set out the standards
of behaviour expected of their members.