The Professional Responsibilities of Software Engineers
The Professional Responsibilities of Software Engineers
The Professional Responsibilities of Software Engineers
of Software Engineers
PRoSE
A correctly designed system is an
electronic poetry in motion
P - Professional
R - Responsibilities
o - of
S - Software
E - Engineers
2
How is software designed
today
• Fools Rush In... (Ignorance is bliss)
• Software Myths -Managers
3
How is software designed
today?
•Software Myths – Client
• A general statement of objectives is sufficient to begin
writing programs - we can fill in the details later.
4
How is software designed
today?
•Software Traditions - Practitioner
• If I miss something now, I can fix it later.
6
How is software designed
today?
The Standish Group, an IT-research firm
in West Yarmouth, Mass., has been
keeping track of this phenomenon since
1994, and the good news is that we are
doing much better at completing projects
than we used to. The bad news is that in
2000 only 28% of software projects could
be classed as complete successes
(meaning they were executed on time
and on budget) while 23% failed outright
(meaning that they were abandoned).
Those numbers are improvements over a
16% success rate and a 31% failure rate
rate when the first study was done, in
1994
7
The PRoSE by D. L. Parnas
Abstract
1. Personal
2. Social
3. Professional
9
Main Responsibilities
1. Personal:
Personal Responsibilities are general obligations towards
other individuals; most are shared by all persons (e.g.
honesty, concern for others).
2. Social
3. Professional
10
Main Responsibilities
1. Personal
2. Social
Social Responsibilities are responsibilities towards society
as a whole. We have a debt to repay because society has
supported us when we needed it. (e.g. environmental
activism, peace activism, national defence)
3. Professional
11
Main Responsibilities
1. Personal
2. Social
3. Professional
Professional Responsibilities are additional
responsibilities shared by members of a particular
profession (e.g medicine, journalism, or
engineering) Usually a code of responsibilities
exists.
12
Conflict of Responsibilities
• Is there a difference?
• Can they conflict?
13
Conflict of Responsibilities
An Illustration – Strategic Defense Initiative (Star Wars):
Service on the “Committee on Computing in Support of
Battle Management”.
15
The Social Responsibility of
Scientists And Engineers
Consider the following public issues:
The public thinks that science can solve any problem if given enough funds. Public officials
share this attitude. They fall for scientific fads.
The rewards often go to the illusionists. The successful do not speak out. The others are
ignored (“sour grapes”).
Don’t we have a responsibility to see that society’s funds are well used?
In your career you will often have to decide whether or not to participate in a project and, if you
decide not to participate, whether you should make your decision public.
17
The Professional Responsibilities
of Engineers
Unfortunately, Software Engineers are not always Engineers.
18
Programmers need to learn about the professional responsibility of engineers.
Why do we have licensed Professional
Engineers?
20
Why are “Software Engineers”
different?
• The result of a “software crisis” (optimism).
• Originally dealt with as a scientific problem. The basis of software engineering
was not well understood.
• First meetings attended by many mathematicians and scientists, few engineers.
• Many engineers were still blissfully unaware of the importance of computers in
their profession.
• The word is “Engineering” used to indicate practical concerns, not a profession.
• Professional societies did not take it seriously. Software Engineering has
developed outside of the Engineering Community.
• It has been left to Computer Science departments, taught by people who are not
Engineers.
• Because badly designed computer programs are hard to manage, emphasis has
been on project management, project scheduling, version control, etc.
Today, the engineering societies are beginning to do what they were always
required to do.
21
What are the obligations of the
engineer?
1. Accept individual responsibility.
2. Solve the real problem
3. Be honest about capabilities
4. Produce reviewable designs
5. Maintainability
22
What are the obligations of the
engineer?
23
What are the obligations of the
engineer?
5. Maintainability
• Produce a product that can be maintained without you. -
It’s not your personal product.
24
Professional Practice in Software
Development
Some responses to a critical consultant:
• “Of course it’s wrong, but that is what my boss told me to do.”
• “We already know the answer, but they will pay us $1,000,000 for the study.
• “It’s not the right way, but it’s the customer’s suggestion.”
• “At XYZ corporation, we don’t tell our customers that they are wrong, we take their contracts.”
• “That’s not the real problem, but they asked us to do it.”
• “We can’t give them what they need, but we’ll do the best we can.”
• “We’ve got a deadline; we’ll worry about maintainability when we get the maintenance contract.
• “We don’t like people criticizing our designs!”
These remarks showed that the speakers were unaware of the professional responsibilities of
engineers.
It’s not just a matter of lack of will. It’s not just a matter of lack of
awareness. Most programmers do not know how to do the things that
they should do.
28
Improving Professionalism in
Software Development
Three steps:
1. Work with Professional Engineering societies.
2. Develop better educational programs.
3. Develop accreditation procedures for Software
Engineering programs.
29
Work with Professional
Engineering societies
• We should stop fighting and work with the Engineering groups
on the establishing standards for a new “flavor” of Engineer,
either “Software Engineer” or “Computer Engineer”
30
Develop accreditation
procedures for Software
Engineering programs
It is time to develop standards for the educational programs
that will be uniquely designed and target needs of Software
Engineering as a discipline not as a subprogram of Electrical
Engineering or Computer Science.
31
Develop better educational
programs
We are not ready to work with the accreditation
committees even if they are:
• Little agreement on the essential knowledge
required of those practicing Software Engineering
• We need to remember that Engineering is not
Management our current programs and literature
confuse them.
32
Recap the PRoSE
33
Software Engineering Code of
Ethics and Professional Practice
34
Software Engineering Code of
Ethics and Professional Practice
The Code contains eight Principles related to the behavior 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.
35
Principles of Software
Engineering Code of Ethics
1. PUBLIC
2. CLIENT AND EMPLOYER
3. PRODUCT
4. JUDGMENT
5. MANAGEMENT
6. PROFESSION
7. COLLEAGUES
8. SELF
36
37