Lecture 2 - Professional SW Dev and Ethics
Lecture 2 - Professional SW Dev and Ethics
Lecture 2 - Professional SW Dev and Ethics
1
Referred Book
2
Chapter Outcomes
3
Software Engineering
Modern world is solely computer oriented
4
Software Project Failure
Software Failures are a consequence of two factors:
Increasing system complexity
As new software engineering techniques help us to build larger, more
complex systems, the demands change.
Existing software engineering methods cannot cope and new
techniques have to be developed to meet new demands.
Failure to use software engineering methods
Many companies do not use software engineering methods in their
everyday work.
Consequently, their software is often more expensive and less reliable
than it should be.
5
Professional Software Development
6
Professional Software Development
A professionally developed software system is often more than a
single program
7
Frequently asked questions about software engineering
Question Answer
8
FAQs about software engineering
Question Answer
What are the key challenges facing software Coping with increasing diversity, demands for reduced delivery
engineering? times and developing trustworthy software.
What are the costs of software engineering? Roughly 60% of software costs are development costs, 40% are
testing costs. For custom software, evolution costs often exceed
development costs.
What are the best software engineering While all software projects have to be professionally managed
techniques and methods? and developed, different techniques are appropriate for different
types of system. For example, games should always be
developed using a series of prototypes whereas safety critical
control systems require a complete and analyzable specification
to be developed. You can’t, therefore, say that one method is
better than another.
What differences has the web made to The web has led to the availability of software services and the
software engineering? possibility of developing highly distributed service-based
systems. Web-based systems development has led to important
advances in programming languages and software reuse.
9
Types of Software products
There are two kinds of software products:
Generic products
Stand-alone systems that are sold on the open market.
Examples – software for PCs (databases, graphics programs, project
management tools); software for specific purpose (library information
systems, dentists appointment)
Customized products
Software that are developed for a specific customer
Examples – control systems for electronic devices, air traffic control
software, traffic monitoring systems.
10
Difference between Generic and Customized products
11
Qualities of Professional software
• Quality is not just concerned with what the software does
• Rather, it depends on
1. Software’s behavior while it is executing - software’s response time to
a user query
2. The structure and organization of the system programs and associated
documentation - understandability of the program code
12
Essential attributes of good software
Product characteristic Description
13
Software Engineering
Software engineering is an engineering discipline that is concerned
with all aspects of software production from the early stages of system
specification through to maintaining the system after it has gone into
use.
Engineering discipline
Using appropriate theories and methods to solve problems bearing in
mind organizational and financial constraints.
All aspects of software production
Not just technical process of development. Also project management
and the development of tools, methods etc. to support software
production.
14
Fundamental Activities of Software Processes
A software process is a sequence of activities that leads to the
production of a software product
15
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.
The challenge here is to develop techniques for building dependable
software that is flexible enough to cope with this heterogeneity
Business and social change
Business and society 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.
16
General issues that affect software
Security and trust
As software is intertwined with all aspects of our lives, it is essential
that we can trust that software. We have to make sure that malicious
users cannot attack our software and that information security is
maintained
17
Software engineering diversity
The software engineering approach is implemented depending on
the organization developing the software, the type of software, and
the people involved in the development process.
18
Application Types
Stand-alone applications
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. Examples: CAD programs, photo manipulation software, etc.
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. E.g., SW in a microwave oven to control the
cooking process.
19
Application Types
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: periodic billing systems, such as
phone billing systems, and salary payment systems.
Entertainment systems
These are systems that are primarily built for personal use and are
intended to entertain the user. Examples: computer games.
Systems for modelling and simulation
These are systems that are developed by scientists and engineers to
model physical processes or situations, which include many, separate,
interacting objects.
20
Application Types
Data collection systems
These are systems that collect data from their environment using a set
of sensors and send that data to other systems for processing. Often
installed in a hostile environment such as inside an engine or in a
remote location.
Systems of systems
These are systems that are composed of a number of other software
systems. Some of these may be generic software products, such as a
spreadsheet program. Other systems in the assembly may be specially
written for that environment
21
Software Engineering and The Web
• The Web was primarily a universally accessible information store
• Software are deployed on a web server instead of users’ PC, making
it much cheaper to change and upgrade the software. Reduces cost,
correspondingly.
• Web services are software components that deliver specific, useful
functionality and which are accessed over the Web. They can be
integrated and their linking can be dynamic.
22
Web-based software engineering
• Web-based systems are complex distributed systems but the
fundamental principles of software engineering discussed
previously are as applicable to them as they are to any other
types of system.
• The fundamental ideas of software engineering apply to web-
based software in the same way that they apply to other types
of software system.
23
Software Engineering Fundamentals
Some fundamental principles apply to all types of software
system, irrespective of the development techniques used:
24
Web Software Engineering
Features that mostly apply in web software engineering:
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.
25
Web Software Engineering
Service-oriented systems
Software may be implemented using service-oriented software
engineering, where the software components are stand-alone web
services.
Rich interfaces
Interface development technologies such as AJAX and HTML5 have
emerged that support the creation of rich interfaces within a web
browser.
26
Software Engineering Ethics
27
Software Engineering Ethics
Software engineering involves wider responsibilities than
simply the application of technical skills.
Software engineers must behave in an honest and ethically
responsible way if they are to be respected as professionals.
Ethical behaviour is more than simply upholding the law but
involves following a set of principles that are morally correct.
28
Software Engineering Ethics
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 which is outside their
competence.
29
Software Engineering Ethics
Intellectual property rights
Engineers should be aware of local laws governing the use of
intellectual property such as patents, copyright, etc. They should
be careful to ensure that the intellectual property of employers
and clients is protected.
Computer misuse
Software engineers should not use their technical skills to misuse
other people’s computers. Computer misuse ranges from
relatively trivial (game playing on an employer’s machine, say)
to extremely serious (dissemination of viruses).
30
ACM/IEEE Code of Ethics
The professional societies in the US have cooperated to
produce a code of ethical practice.
Members of these organisations sign up to the code of practice
when they join.
The Code contains eight Principles related to the behaviour of
and decisions made by professional software engineers,
including practitioners, educators, managers, supervisors and
policy makers, as well as trainees and students of the
profession.
31
Rationale for the code of ethics
Computers have a central and growing role in commerce,
industry, government, medicine, education, entertainment and
society at large. Software engineers are those who contribute by
direct participation or by teaching, to the analysis, specification,
design, development, certification, maintenance and testing of
software systems.
Because of their roles in developing software systems, software
engineers have significant opportunities to do good or cause
harm, to enable others to do good or cause harm, or to influence
others to do good or cause harm. To ensure, as much as
possible, that their efforts will be used for good, software
engineers must commit themselves to making software
engineering a beneficial and respected profession.
32
The ACM/IEEE Code of Ethics
Software Engineering Code of Ethics and Professional Practice
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:
33
Ethical 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.
34