SlideShare a Scribd company logo
Uzair Ishtiaq
Course – Professional Practices (IT)Course – Professional Practices (IT)
Class : BSCS (Semester 07)
BSSE (Semester 04)
Class : BSCS (Semester 07)
BSSE (Semester 04)
The Professional
Responsibilities
of Software Engineers
PRoSE
P - Professional
R - Responsibilities
o - of
S - Software
E - Engineers
A correctly designed system is an
electronic poetry in motion
Main Responsibilities
1. Personal
2. Social
3. Professional
Main Responsibilities
1. Personal
Personal Responsibilities are general obligations
towards other individuals; most are shared by all
persons (e.g. honesty, concern for others).
1. Social
2. Professional
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
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.
Conflict of Responsibilities
• Is there a difference?
• Can they conflict?
Professional responsibilities include, but are not limited to,
contractual obligations to an employer. These obligations may
appear at times to conflict with Personal and Social responsibility.
The primary responsibility of an engineer is always to the
safety and well-being of the public.
Conflict of Responsibilities
An Illustration - SDI (Star Wars):
Service on the “Committee on Computing in Support of
Battle Management”.
Some questions that arose:
a) Was it honest? (personal responsibility)
b) Had I made a professional commitment? Was our activity designing a
system that would meet the needs of the customer as required by
professional codes? What should a professional do if the answers were
“yes” and “no”?
c) Was this project good for society? Should I explain my views to the
public?
Some regarded a “Yes” to (c) as unprofessional. The conflict in (b) was
resolved by a detailed explanation.
The Social Responsibility of Scientists And Engineers
“In the land of the blind,
the one eyed man is king”.
In a world increasingly dependent on science and
technology, Scientists and Engineers are the one-
eyed people.
The majority of our decision-makers are blind.
The Social Responsibility of Scientists And Engineers
Consider the following public issues:
• Can we reduce our energy expenditures without great disruption in
people's lives?
• How urgent is the need to reduce the level of greenhouse gasses?
• Should we build more nuclear power generating stations?
• Is it safe to allow nuclear power generating stations to be controlled by
computers?
• Can technology help us to reduce the amount of the paper that we use?
Should we do that?
• Is it safe to allow computers to control cars and trucks?
Decisions will be taken by non-specialists, but the input will come from
people like us. We must give them complete and accurate information.
The Social Responsibility of Scientists And Engineers
Science and technology are the “black magic” of our age. We use arcane rituals and
obscure terminology.
The public thinks that science can solve any problem if given enough funds. Public
officials
share this attitude. They fall for scientific fads.
Buzzwords and big promises, favored over solid scientific work.
The rewards often go to the illusionists. The successful do not speak out. The others are
ignored (“sour grapes”).
Most of us “go along” to get funds.
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.
The Professional Responsibilities of Engineers
Unfortunately, Software Engineers are not always Engineers.
“Software Engineering” is a shallow course on programming, taught in a
science department, not a professional program in Engineering. Many
“software engineers” have no technical education.
Many could not be Professional Engineers.
Many confuse software engineering with configuration management.
An Engineer is someone who uses advanced knowledge of science,
mathematics, and technology to build objects for use by others.
Most programmers or software engineers, are Engineers, under qualified,
unlicensed, and often unprofessional. They are unaware of their professional
responsibilities.
Programmers need to learn about the professional responsibility of engineers.
Why do we have licensed Professional Engineers?
An old system introduced because:
• Some products potentially dangerous. Incompetent designs a danger to
public.
• Purchasers and some employers are often unable to judge the
competence of designers.
• Competent, conscientious, disciplined professionals want public to
distinguish between themselves and others. Bad work by a few damages
the reputations and business prospects of all.
• Financial pressures may tempt employers to “cut corners”. We are
protected better when professional obligations go beyond loyalty or
obedience to an employer. Professionals do say “No”.
Don’t all of these reasons apply to software construction?
What is the Professional Engineering Societies ?
1. Professional Engineering Societies were established by
legislation to assure competence and awareness of
professional responsibilities.
2. Regulations require that certain products be produced or
approved by a recognized Professional Engineer.
3. There is a separate committee to accredit programs.
Accreditation is a very serious process. Graduates of
accredited programs have an easier path to recognition as a
Professional Engineer. [5]
An exam on responsibilities is required in any case. [6]
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.
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
What Are The Obligations Of The Engineer?
1. Accept individual responsibility.
– Following orders does not justify approving bad designs.
– One cannot always be a “team player”.
– Professional standards have priority over other
pressures
1. Solve the real problem
– Look beyond the customer’s opinions
– Have a precise description of a problem.
– Get that description reviewed before building.
What Are The Obligations Of The Engineer?
3. Be honest about capabilities
– Don’t offer technical solutions where there are none.
– Don’t do studies when you already know the answer.
4. Produce reviewable designs
– No individual is infallible.
– Document to make reviewing easy.
5. Maintainability
– Produce a product that can be maintained without you. - It’s not your
personal product.
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!”
My personal favorites came from the IT manager of J&J and MedAmerica:
• “It is what it is. Take initiative, make it happened”
• “We pay you big box because you are good, so We don’t need to allocate resources for QA”
These remarks showed that the speakers were unaware of the professional
responsibilities of engineers.
Some had not heard of those responsibilities.
Some had no such excuse!
A Simple Example: Pacemakers
Their importance to the user is obvious!
They are also important to those nearby.
They are controlled by software.
– Many modes of operation
– Computer controlled telemetry system
– Data collection
– “Programmable” by remove control
– “When needed” intervention.
– Rate responds to body activity.
– Packaged in a small sealed unit
– Must survive in a “hostile environment”
Clearly the type of device that should be built by engineers.
The program is critical and should be well documented and
reviewable.
What Should be Done for Pacemaker Software?
1. Programmer should have a precise description of the environment and
requirements [7]
2. Black box description should have been produced for review.
3. Document should have been reviewable and reviewed by Cardiologists.
4. The code should have been documented in a way that permitted
systematic review and revision.[8]
5. Code should have been subject to systematic inspection.
6. Doctor should have been provide with well-organized precise
documentation that explained the behavior of the device to him.
All of these things would be expected of a professional engineer.
Pacemaker Software Anecdote
Pacemaker “refused” the surgeon’s command; neither surgeon nor technician
understood why.
The explanation was found in a footnote after several hours of reading. It took 30
minutes to find it the second time. Engineer responsible could explain the
hardware aspects in great detail. He referred to a programmer, who could not
be found, to explain the code.
Programming had been viewed as a trivial task; Responsible engineer did not
review it.
As a result of inadequate review, there are fundamental weaknesses
• Motion sensor does not measure physical activity
• Expected rate adjustment is inflexible.
The problem solved was not the real problem.
This was a typical software product.
The software was written as it would have been written 25 years ago.
More examples
• Med America PDA
• Firewalls (Software vs. hardware)
• Heart Surgeries and what doctors don’t want to tell
Software engineers
Software used by Professional Engineers and other concerns
Professional Engineers take responsibility for their products,
but, ...
• To design those products they use software that comes with
a disclaimer instead of a warranty,
• Professional Engineers belong to a society that enforces
codes of professional behavior, but
• they must use tools produced by people who do not belong
to such a society.
This cannot be a stable situation!
OS’s as bridges (Tacoma Narrows Bridge November 7, 1940 )
TacomaNarrowsBridge.mpeg
The “Know How” isn’t There!
If we look at other areas of engineering, we know what software
engineers should do. If we look at current practice, those things are not
done.
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.
They do not know how to:
• document requirements in a way that can be reviewed by subject matter
experts,
• document code precisely and completely,
• inspect code systematically.
SDF - Trying to give that “know how”.
The “Know How” isn’t There!
Is there a Solution to this
problem?
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.
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”
• We should take the advantage of the experience that this
groups have in setting professional standards
• We should use existing legislations to enforce those
standards.
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.
The aim [of education] must be the training of independently
acting and thinking individuals who, however, see in the
service to the community their highest life achievement.
– Albert Einstein
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.
Recap the PRoSE
PRoSE - is a poetry in motion.
It’s time to quit “firefighting” ways of the software
development and start utilizing engineering principals.
Responsibility of Software Engineers:
1. Personal
2. Social
3. Professional
Agenda
• About the speaker
• How is software designed today
• Hall of Shame
• The PRoSE by D. L. Parnas
• ACM on PRoSE
• Practical Examples from Experience
• QA or Q&A
Software Engineering Code of Ethics and
Professional Practice
Recommended and jointly approved by the ACM and
the IEEE-CS as the standard for teaching and
practicing software engineering.
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.
These obligations are founded in the software engineer's humanity, in
special care owed to people affected by the work of software engineers,
and in the unique elements of the practice of software engineering.
The Code prescribes these as obligations of anyone claiming to be or
aspiring to be a software engineer.
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
Principle 1 PUBLIC
Software engineers shall act consistently with the public interest. In particular, software
engineers shall, as appropriate:
1.01. Accept full responsibility for their own work.
1.02. Moderate the interests of the software engineer, the employer, the client and the users with the public good.
1.03. Approve software only if they have a well-founded belief that it is safe, meets specifications, passes
appropriate tests, and does not diminish quality of life, diminish privacy or harm the environment. The ultimate
effect of the work should be to the public good.
1.04. Disclose to appropriate persons or authorities any actual or potential danger to the user, the public, or the
environment, that they reasonably believe to be associated with software or related documents.
1.05. Cooperate in efforts to address matters of grave public concern caused by software, its installation,
maintenance, support or documentation.
1.06. Be fair and avoid deception in all statements, particularly public ones, concerning software or related
documents, methods and tools.
1.07. Consider issues of physical disabilities, allocation of resources, economic disadvantage and other factors that
can diminish access to the benefits of software.
1.08. Be encouraged to volunteer professional skills to good causes and contribute to public education concerning
the discipline.
Principle 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. In particular, software engineers shall,
as appropriate:
2.01. Provide service in their areas of competence, being honest and forthright about any limitations of their
experience and education.
2.02. Not knowingly use software that is obtained or retained either illegally or unethically.
2.03. Use the property of a client or employer only in ways properly authorized, and with the client's or employer's
knowledge and consent.
2.04. Ensure that any document upon which they rely has been approved, when required, by someone authorized
to approve it.
2.05. Keep private any confidential information gained in their professional work, where such confidentiality is
consistent with the public interest and consistent with the law.
2.06. Identify, document, collect evidence and report to the client or the employer promptly if, in their opinion, a
project is likely to fail, to prove too expensive, to violate intellectual property law, or otherwise to be
problematic.
2.07. Identify, document, and report significant issues of social concern, of which they are aware, in software or
related documents, to the employer or the client.
2.08. Accept no outside work detrimental to the work they perform for their primary employer.
2.09. Promote no interest adverse to their employer or client, unless a higher ethical concern is being
compromised; in that case, inform the employer or another appropriate authority of the ethical concern.
Principle 3 PRODUCT
Software engineers shall ensure that their products and related modifications
meet the highest professional standards possible. In particular, software
engineers shall, as appropriate:
3.01. Strive for high quality, acceptable cost and a reasonable schedule, ensuring significant tradeoffs are clear to and
accepted by the employer and the client, and are available for consideration by the user and the public.
3.02. Ensure proper and achievable goals and objectives for any project on which they work or propose.
3.03. Identify, define and address ethical, economic, cultural, legal and environmental issues related to work projects.
3.04. Ensure that they are qualified for any project on which they work or propose to work by an appropriate combination of
education and training, and experience.
3.05. Ensure an appropriate method is used for any project on which they work or propose to work.
3.06. Work to follow professional standards, when available, that are most appropriate for the task at hand, departing from
these only when ethically or technically justified.
3.07. Strive to fully understand the specifications for software on which they work.
3.08. Ensure that specifications for software on which they work have been well documented, satisfy the users’ requirements
and have the appropriate approvals.
3.09. Ensure realistic quantitative estimates of cost, scheduling, personnel, quality and outcomes on any project on which they
work or propose to work and provide an uncertainty assessment of these estimates.
3.10. Ensure adequate testing, debugging, and review of software and related documents on which they work.
3.11. Ensure adequate documentation, including significant problems discovered and solutions adopted, for any project on
which they work.
3.12. Work to develop software and related documents that respect the privacy of those who will be affected by that
software.
3.13. Be careful to use only accurate data derived by ethical and lawful means, and use it only in ways properly authorized.
3.14. Maintain the integrity of data, being sensitive to outdated or flawed occurrences.
3.15 Treat all forms of software maintenance with the same professionalism as new development.
Principle 4 JUDGMENT
Software engineers shall maintain integrity and independence in their professional
judgment. In particular, software engineers shall, as appropriate:
4.01. Temper all technical judgments by the need to support and maintain human values.
4.02 Only endorse documents either prepared under their supervision or within their areas of competence and
with which they are in agreement.
4.03. Maintain professional objectivity with respect to any software or related documents they are asked to
evaluate.
4.04. Not engage in deceptive financial practices such as bribery, double billing, or other improper financial
practices.
4.05. Disclose to all concerned parties those conflicts of interest that cannot reasonably be avoided or escaped.
4.06. Refuse to participate, as members or advisors, in a private, governmental or professional body concerned
with software related issues, in which they, their employers or their clients have undisclosed potential
conflicts of interest.
Principle 5 MANAGEMENT
Software engineering managers and leaders shall subscribe to and promote an ethical
approach to the management of software development and maintenance . In
particular, those managing or leading software engineers shall, as appropriate:
5.01 Ensure good management for any project on which they work, including effective procedures for promotion of quality and
reduction of risk.
5.02. Ensure that software engineers are informed of standards before being held to them.
5.03. Ensure that software engineers know the employer's policies and procedures for protecting passwords, files and information that
is confidential to the employer or confidential to others.
5.04. Assign work only after taking into account appropriate contributions of education and experience tempered with a desire to
further that education and experience.
5.05. Ensure realistic quantitative estimates of cost, scheduling, personnel, quality and outcomes on any project on which they work or
propose to work, and provide an uncertainty assessment of these estimates.
5.06. Attract potential software engineers only by full and accurate description of the conditions of employment.
5.07. Offer fair and just remuneration.
5.08. Not unjustly prevent someone from taking a position for which that person is suitably qualified.
5.09. Ensure that there is a fair agreement concerning ownership of any software, processes, research, writing, or other intellectual
property to which a software engineer has contributed.
5.10. Provide for due process in hearing charges of violation of an employer's policy or of this Code.
5.11. Not ask a software engineer to do anything inconsistent with this Code.
5.12. Not punish anyone for expressing ethical concerns about a project.
Principle 6 PROFESSION
Software engineers shall advance the integrity and reputation of the profession
consistent with the public interest. In particular, software engineers shall, as
appropriate:
6.01. Help develop an organizational environment favorable to acting ethically.
6.02. Promote public knowledge of software engineering.
6.03. Extend software engineering knowledge by appropriate participation in professional organizations, meetings and publications.
6.04. Support, as members of a profession, other software engineers striving to follow this Code.
6.05. Not promote their own interest at the expense of the profession, client or employer.
6.06. Obey all laws governing their work, unless, in exceptional circumstances, such compliance is inconsistent with the public interest.
6.07. Be accurate in stating the characteristics of software on which they work, avoiding not only false claims but also claims that might
reasonably be supposed to be speculative, vacuous, deceptive, misleading, or doubtful.
6.08. Take responsibility for detecting, correcting, and reporting errors in software and associated documents on which they work.
6.09. Ensure that clients, employers, and supervisors know of the software engineer's commitment to this Code of ethics, and the
subsequent ramifications of such commitment.
6.10. Avoid associations with businesses and organizations which are in conflict with this code.
6.11. Recognize that violations of this Code are inconsistent with being a professional software engineer.
6.12. Express concerns to the people involved when significant violations of this Code are detected unless this is impossible, counter-
productive, or dangerous.
6.13. Report significant violations of this Code to appropriate authorities when it is clear that consultation with people involved in these
significant violations is impossible, counter-productive or dangerous.
Principle 7 COLLEAGUES
Software engineers shall be fair to and supportive of their colleagues. In
particular, software engineers shall, as appropriate:
7.01. Encourage colleagues to adhere to this Code.
7.02. Assist colleagues in professional development.
7.03. Credit fully the work of others and refrain from taking undue credit.
7.04. Review the work of others in an objective, candid, and properly-documented way.
7.05. Give a fair hearing to the opinions, concerns, or complaints of a colleague.
7.06. Assist colleagues in being fully aware of current standard work practices including policies and
procedures for protecting passwords, files and other confidential information, and security
measures in general.
7.07. Not unfairly intervene in the career of any colleague; however, concern for the employer, the client
or public interest may compel software engineers, in good faith, to question the competence of a
colleague.
7.08. In situations outside of their own areas of competence, call upon the opinions of other
professionals who have competence in that area.
Principle 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. In particular, software
engineers shall continually endeavor to:7.01. Encourage colleagues to adhere to this Code.
8.01. Further their knowledge of developments in the analysis, specification, design, development,
maintenance and testing of software and related documents, together with the management of
the development process.
8.02. Improve their ability to create safe, reliable, and useful quality software at reasonable cost and
within a reasonable time.
8.03. Improve their ability to produce accurate, informative, and well-written documentation.
8.04. Improve their understanding of the software and related documents on which they work and of
the environment in which they will be used.
8.05. Improve their knowledge of relevant standards and the law governing the software and related
documents on which they work.
8.06 Improve their knowledge of this Code, its interpretation, and its application to their work.
8.07 Not give unfair treatment to anyone because of any irrelevant prejudices.
8.08. Not influence others to undertake any action that involves a breach of this Code.
8.09. Recognize that personal violations of this Code are inconsistent with being a professional
software engineer.
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

More Related Content

What's hot

Notes Unit2.pptx
Notes Unit2.pptxNotes Unit2.pptx
Notes Unit2.pptx
MIT Autonomous Aurangabad
 
Cloud Computing- components, working, pros and cons
Cloud Computing- components, working, pros and consCloud Computing- components, working, pros and cons
Cloud Computing- components, working, pros and cons
Amritpal Singh Bedi
 
Introduction to GCP presentation
Introduction to GCP presentationIntroduction to GCP presentation
Introduction to GCP presentation
Mohit Kachhwani
 
Software project management
Software project managementSoftware project management
Software project managementR A Akerkar
 
Predicate logic
 Predicate logic Predicate logic
Predicate logic
Harini Balamurugan
 
Google App Engine ppt
Google App Engine  pptGoogle App Engine  ppt
Requirements analysis and modeling
Requirements analysis and modelingRequirements analysis and modeling
Requirements analysis and modeling
Syed Zaid Irshad
 
Requirements analysis
Requirements analysisRequirements analysis
Requirements analysis
asimnawaz54
 
Functional vs Non-functional Requirements - Which comes first?
Functional vs Non-functional Requirements - Which comes first?Functional vs Non-functional Requirements - Which comes first?
Functional vs Non-functional Requirements - Which comes first?
Evgeniy Labunskiy
 
Software quality assurance
Software quality assuranceSoftware quality assurance
Software quality assurance
Aman Adhikari
 
System testing
System testingSystem testing
System testing
Sifat Hossain
 
HCI - Chapter 6
HCI - Chapter 6HCI - Chapter 6
HCI - Chapter 6
Alan Dix
 
Object oriented software engineering concepts
Object oriented software engineering conceptsObject oriented software engineering concepts
Object oriented software engineering conceptsKomal Singh
 
Software Configuration Management (SCM)
Software Configuration Management (SCM)Software Configuration Management (SCM)
Software Configuration Management (SCM)
Er. Shiva K. Shrestha
 
Introduction to Software Engineering
Introduction to Software EngineeringIntroduction to Software Engineering
Introduction to Software Engineering
Saqib Raza
 
SYSTEM ANALYSIS AND DESIGN Assignment help
SYSTEM ANALYSIS AND DESIGN Assignment helpSYSTEM ANALYSIS AND DESIGN Assignment help
SYSTEM ANALYSIS AND DESIGN Assignment help
john mayer
 
Use Case Diagram
Use Case DiagramUse Case Diagram
Use Case Diagram
Kumar
 
software engineering
software engineeringsoftware engineering
software engineering
Azad public school
 
Knowledge Representation in Artificial intelligence
Knowledge Representation in Artificial intelligence Knowledge Representation in Artificial intelligence
Knowledge Representation in Artificial intelligence
Yasir Khan
 

What's hot (20)

Notes Unit2.pptx
Notes Unit2.pptxNotes Unit2.pptx
Notes Unit2.pptx
 
Cloud Computing- components, working, pros and cons
Cloud Computing- components, working, pros and consCloud Computing- components, working, pros and cons
Cloud Computing- components, working, pros and cons
 
Introduction to GCP presentation
Introduction to GCP presentationIntroduction to GCP presentation
Introduction to GCP presentation
 
Software project management
Software project managementSoftware project management
Software project management
 
Predicate logic
 Predicate logic Predicate logic
Predicate logic
 
Google App Engine ppt
Google App Engine  pptGoogle App Engine  ppt
Google App Engine ppt
 
Requirements analysis and modeling
Requirements analysis and modelingRequirements analysis and modeling
Requirements analysis and modeling
 
Requirements analysis
Requirements analysisRequirements analysis
Requirements analysis
 
Functional vs Non-functional Requirements - Which comes first?
Functional vs Non-functional Requirements - Which comes first?Functional vs Non-functional Requirements - Which comes first?
Functional vs Non-functional Requirements - Which comes first?
 
Software quality assurance
Software quality assuranceSoftware quality assurance
Software quality assurance
 
System testing
System testingSystem testing
System testing
 
HCI - Chapter 6
HCI - Chapter 6HCI - Chapter 6
HCI - Chapter 6
 
Object oriented software engineering concepts
Object oriented software engineering conceptsObject oriented software engineering concepts
Object oriented software engineering concepts
 
Software Configuration Management (SCM)
Software Configuration Management (SCM)Software Configuration Management (SCM)
Software Configuration Management (SCM)
 
Introduction to Software Engineering
Introduction to Software EngineeringIntroduction to Software Engineering
Introduction to Software Engineering
 
SYSTEM ANALYSIS AND DESIGN Assignment help
SYSTEM ANALYSIS AND DESIGN Assignment helpSYSTEM ANALYSIS AND DESIGN Assignment help
SYSTEM ANALYSIS AND DESIGN Assignment help
 
Use Case Diagram
Use Case DiagramUse Case Diagram
Use Case Diagram
 
Software Metrics
Software MetricsSoftware Metrics
Software Metrics
 
software engineering
software engineeringsoftware engineering
software engineering
 
Knowledge Representation in Artificial intelligence
Knowledge Representation in Artificial intelligence Knowledge Representation in Artificial intelligence
Knowledge Representation in Artificial intelligence
 

Similar to Professional responsibilities of software engineering

Top Ten Benefits of an Engineering Career
Top Ten Benefits of an Engineering CareerTop Ten Benefits of an Engineering Career
Top Ten Benefits of an Engineering Career
M.T.H Group
 
Lecture4EngSocExp.ppt (1).pdf
Lecture4EngSocExp.ppt (1).pdfLecture4EngSocExp.ppt (1).pdf
Lecture4EngSocExp.ppt (1).pdf
MCarmelSobia
 
02 Why Software Engineering?
02 Why Software Engineering?02 Why Software Engineering?
02 Why Software Engineering?
Laguna State Polytechnic University
 
unit 1 ppt.pptx
unit 1 ppt.pptxunit 1 ppt.pptx
unit 1 ppt.pptx
SadikshyaTimilsina1
 
Creating An Incremental Architecture For Your System
Creating An Incremental Architecture For Your SystemCreating An Incremental Architecture For Your System
Creating An Incremental Architecture For Your System
Giovanni Asproni
 
Oose unit 1 ppt
Oose unit 1 pptOose unit 1 ppt
Oose unit 1 ppt
Dr VISU P
 
Topic 6 professional ethics
Topic 6 professional ethicsTopic 6 professional ethics
Topic 6 professional ethicsHamid Zainudin
 
Introduction to Engineering and Profession Ethics Lecture7-Engineering Ethics...
Introduction to Engineering and Profession Ethics Lecture7-Engineering Ethics...Introduction to Engineering and Profession Ethics Lecture7-Engineering Ethics...
Introduction to Engineering and Profession Ethics Lecture7-Engineering Ethics...
Dr. Khaled Bakro
 
OOSE Unit 1 PPT.ppt
OOSE Unit 1 PPT.pptOOSE Unit 1 PPT.ppt
OOSE Unit 1 PPT.ppt
itadmin33
 
Application Of Software Engineering Field
Application Of Software Engineering FieldApplication Of Software Engineering Field
Application Of Software Engineering Field
Michelle Singh
 
Application Of Software Engineering Field
Application Of Software Engineering FieldApplication Of Software Engineering Field
Application Of Software Engineering Field
Jessica Howard
 
Software Engineering Code of Ethics
Software Engineering Code of EthicsSoftware Engineering Code of Ethics
Software Engineering Code of Ethics
Abdel Salam Sayyad
 
Unit 2 SEPM_ Requirement Engineering
Unit 2 SEPM_ Requirement EngineeringUnit 2 SEPM_ Requirement Engineering
Unit 2 SEPM_ Requirement Engineering
KanchanPatil34
 
2012 ieee pes lunch ethics 020112
2012 ieee pes lunch ethics 0201122012 ieee pes lunch ethics 020112
2012 ieee pes lunch ethics 020112
Vincent Wedelich, PE MBA
 
1. Emergence of Software EngineeringIn the software industry, we.docx
1. Emergence of Software EngineeringIn the software industry, we.docx1. Emergence of Software EngineeringIn the software industry, we.docx
1. Emergence of Software EngineeringIn the software industry, we.docx
jackiewalcutt
 
Software Engineering Methodologies
Software Engineering MethodologiesSoftware Engineering Methodologies
Software Engineering MethodologiesNesrine Shokry
 
PROMISE 2011: Seven Habits of High Impactful Empirical Software Engineers (La...
PROMISE 2011: Seven Habits of High Impactful Empirical Software Engineers (La...PROMISE 2011: Seven Habits of High Impactful Empirical Software Engineers (La...
PROMISE 2011: Seven Habits of High Impactful Empirical Software Engineers (La...
CS, NcState
 
Chp 04 ethics and proffesions (shared) ----
Chp 04   ethics and proffesions (shared) ----Chp 04   ethics and proffesions (shared) ----
Chp 04 ethics and proffesions (shared) ----
YUSRA FERNANDO
 

Similar to Professional responsibilities of software engineering (20)

Ece481 lecture4engsocexp
Ece481 lecture4engsocexpEce481 lecture4engsocexp
Ece481 lecture4engsocexp
 
Top Ten Benefits of an Engineering Career
Top Ten Benefits of an Engineering CareerTop Ten Benefits of an Engineering Career
Top Ten Benefits of an Engineering Career
 
Lecture4EngSocExp.ppt (1).pdf
Lecture4EngSocExp.ppt (1).pdfLecture4EngSocExp.ppt (1).pdf
Lecture4EngSocExp.ppt (1).pdf
 
02 Why Software Engineering?
02 Why Software Engineering?02 Why Software Engineering?
02 Why Software Engineering?
 
unit 1 ppt.pptx
unit 1 ppt.pptxunit 1 ppt.pptx
unit 1 ppt.pptx
 
Chapter # 1
Chapter # 1 Chapter # 1
Chapter # 1
 
Creating An Incremental Architecture For Your System
Creating An Incremental Architecture For Your SystemCreating An Incremental Architecture For Your System
Creating An Incremental Architecture For Your System
 
Oose unit 1 ppt
Oose unit 1 pptOose unit 1 ppt
Oose unit 1 ppt
 
Topic 6 professional ethics
Topic 6 professional ethicsTopic 6 professional ethics
Topic 6 professional ethics
 
Introduction to Engineering and Profession Ethics Lecture7-Engineering Ethics...
Introduction to Engineering and Profession Ethics Lecture7-Engineering Ethics...Introduction to Engineering and Profession Ethics Lecture7-Engineering Ethics...
Introduction to Engineering and Profession Ethics Lecture7-Engineering Ethics...
 
OOSE Unit 1 PPT.ppt
OOSE Unit 1 PPT.pptOOSE Unit 1 PPT.ppt
OOSE Unit 1 PPT.ppt
 
Application Of Software Engineering Field
Application Of Software Engineering FieldApplication Of Software Engineering Field
Application Of Software Engineering Field
 
Application Of Software Engineering Field
Application Of Software Engineering FieldApplication Of Software Engineering Field
Application Of Software Engineering Field
 
Software Engineering Code of Ethics
Software Engineering Code of EthicsSoftware Engineering Code of Ethics
Software Engineering Code of Ethics
 
Unit 2 SEPM_ Requirement Engineering
Unit 2 SEPM_ Requirement EngineeringUnit 2 SEPM_ Requirement Engineering
Unit 2 SEPM_ Requirement Engineering
 
2012 ieee pes lunch ethics 020112
2012 ieee pes lunch ethics 0201122012 ieee pes lunch ethics 020112
2012 ieee pes lunch ethics 020112
 
1. Emergence of Software EngineeringIn the software industry, we.docx
1. Emergence of Software EngineeringIn the software industry, we.docx1. Emergence of Software EngineeringIn the software industry, we.docx
1. Emergence of Software EngineeringIn the software industry, we.docx
 
Software Engineering Methodologies
Software Engineering MethodologiesSoftware Engineering Methodologies
Software Engineering Methodologies
 
PROMISE 2011: Seven Habits of High Impactful Empirical Software Engineers (La...
PROMISE 2011: Seven Habits of High Impactful Empirical Software Engineers (La...PROMISE 2011: Seven Habits of High Impactful Empirical Software Engineers (La...
PROMISE 2011: Seven Habits of High Impactful Empirical Software Engineers (La...
 
Chp 04 ethics and proffesions (shared) ----
Chp 04   ethics and proffesions (shared) ----Chp 04   ethics and proffesions (shared) ----
Chp 04 ethics and proffesions (shared) ----
 

Recently uploaded

Hierarchical Digital Twin of a Naval Power System
Hierarchical Digital Twin of a Naval Power SystemHierarchical Digital Twin of a Naval Power System
Hierarchical Digital Twin of a Naval Power System
Kerry Sado
 
Design and Analysis of Algorithms-DP,Backtracking,Graphs,B&B
Design and Analysis of Algorithms-DP,Backtracking,Graphs,B&BDesign and Analysis of Algorithms-DP,Backtracking,Graphs,B&B
Design and Analysis of Algorithms-DP,Backtracking,Graphs,B&B
Sreedhar Chowdam
 
Planning Of Procurement o different goods and services
Planning Of Procurement o different goods and servicesPlanning Of Procurement o different goods and services
Planning Of Procurement o different goods and services
JoytuBarua2
 
ML for identifying fraud using open blockchain data.pptx
ML for identifying fraud using open blockchain data.pptxML for identifying fraud using open blockchain data.pptx
ML for identifying fraud using open blockchain data.pptx
Vijay Dialani, PhD
 
ethical hacking-mobile hacking methods.ppt
ethical hacking-mobile hacking methods.pptethical hacking-mobile hacking methods.ppt
ethical hacking-mobile hacking methods.ppt
Jayaprasanna4
 
AP LAB PPT.pdf ap lab ppt no title specific
AP LAB PPT.pdf ap lab ppt no title specificAP LAB PPT.pdf ap lab ppt no title specific
AP LAB PPT.pdf ap lab ppt no title specific
BrazilAccount1
 
MCQ Soil mechanics questions (Soil shear strength).pdf
MCQ Soil mechanics questions (Soil shear strength).pdfMCQ Soil mechanics questions (Soil shear strength).pdf
MCQ Soil mechanics questions (Soil shear strength).pdf
Osamah Alsalih
 
RAT: Retrieval Augmented Thoughts Elicit Context-Aware Reasoning in Long-Hori...
RAT: Retrieval Augmented Thoughts Elicit Context-Aware Reasoning in Long-Hori...RAT: Retrieval Augmented Thoughts Elicit Context-Aware Reasoning in Long-Hori...
RAT: Retrieval Augmented Thoughts Elicit Context-Aware Reasoning in Long-Hori...
thanhdowork
 
English lab ppt no titlespecENG PPTt.pdf
English lab ppt no titlespecENG PPTt.pdfEnglish lab ppt no titlespecENG PPTt.pdf
English lab ppt no titlespecENG PPTt.pdf
BrazilAccount1
 
Water Industry Process Automation and Control Monthly - May 2024.pdf
Water Industry Process Automation and Control Monthly - May 2024.pdfWater Industry Process Automation and Control Monthly - May 2024.pdf
Water Industry Process Automation and Control Monthly - May 2024.pdf
Water Industry Process Automation & Control
 
Hybrid optimization of pumped hydro system and solar- Engr. Abdul-Azeez.pdf
Hybrid optimization of pumped hydro system and solar- Engr. Abdul-Azeez.pdfHybrid optimization of pumped hydro system and solar- Engr. Abdul-Azeez.pdf
Hybrid optimization of pumped hydro system and solar- Engr. Abdul-Azeez.pdf
fxintegritypublishin
 
WATER CRISIS and its solutions-pptx 1234
WATER CRISIS and its solutions-pptx 1234WATER CRISIS and its solutions-pptx 1234
WATER CRISIS and its solutions-pptx 1234
AafreenAbuthahir2
 
Pile Foundation by Venkatesh Taduvai (Sub Geotechnical Engineering II)-conver...
Pile Foundation by Venkatesh Taduvai (Sub Geotechnical Engineering II)-conver...Pile Foundation by Venkatesh Taduvai (Sub Geotechnical Engineering II)-conver...
Pile Foundation by Venkatesh Taduvai (Sub Geotechnical Engineering II)-conver...
AJAYKUMARPUND1
 
weather web application report.pdf
weather web application report.pdfweather web application report.pdf
weather web application report.pdf
Pratik Pawar
 
Gen AI Study Jams _ For the GDSC Leads in India.pdf
Gen AI Study Jams _ For the GDSC Leads in India.pdfGen AI Study Jams _ For the GDSC Leads in India.pdf
Gen AI Study Jams _ For the GDSC Leads in India.pdf
gdsczhcet
 
Railway Signalling Principles Edition 3.pdf
Railway Signalling Principles Edition 3.pdfRailway Signalling Principles Edition 3.pdf
Railway Signalling Principles Edition 3.pdf
TeeVichai
 
Architectural Portfolio Sean Lockwood
Architectural Portfolio Sean LockwoodArchitectural Portfolio Sean Lockwood
Architectural Portfolio Sean Lockwood
seandesed
 
The Benefits and Techniques of Trenchless Pipe Repair.pdf
The Benefits and Techniques of Trenchless Pipe Repair.pdfThe Benefits and Techniques of Trenchless Pipe Repair.pdf
The Benefits and Techniques of Trenchless Pipe Repair.pdf
Pipe Restoration Solutions
 
Sachpazis:Terzaghi Bearing Capacity Estimation in simple terms with Calculati...
Sachpazis:Terzaghi Bearing Capacity Estimation in simple terms with Calculati...Sachpazis:Terzaghi Bearing Capacity Estimation in simple terms with Calculati...
Sachpazis:Terzaghi Bearing Capacity Estimation in simple terms with Calculati...
Dr.Costas Sachpazis
 
一比一原版(SFU毕业证)西蒙菲莎大学毕业证成绩单如何办理
一比一原版(SFU毕业证)西蒙菲莎大学毕业证成绩单如何办理一比一原版(SFU毕业证)西蒙菲莎大学毕业证成绩单如何办理
一比一原版(SFU毕业证)西蒙菲莎大学毕业证成绩单如何办理
bakpo1
 

Recently uploaded (20)

Hierarchical Digital Twin of a Naval Power System
Hierarchical Digital Twin of a Naval Power SystemHierarchical Digital Twin of a Naval Power System
Hierarchical Digital Twin of a Naval Power System
 
Design and Analysis of Algorithms-DP,Backtracking,Graphs,B&B
Design and Analysis of Algorithms-DP,Backtracking,Graphs,B&BDesign and Analysis of Algorithms-DP,Backtracking,Graphs,B&B
Design and Analysis of Algorithms-DP,Backtracking,Graphs,B&B
 
Planning Of Procurement o different goods and services
Planning Of Procurement o different goods and servicesPlanning Of Procurement o different goods and services
Planning Of Procurement o different goods and services
 
ML for identifying fraud using open blockchain data.pptx
ML for identifying fraud using open blockchain data.pptxML for identifying fraud using open blockchain data.pptx
ML for identifying fraud using open blockchain data.pptx
 
ethical hacking-mobile hacking methods.ppt
ethical hacking-mobile hacking methods.pptethical hacking-mobile hacking methods.ppt
ethical hacking-mobile hacking methods.ppt
 
AP LAB PPT.pdf ap lab ppt no title specific
AP LAB PPT.pdf ap lab ppt no title specificAP LAB PPT.pdf ap lab ppt no title specific
AP LAB PPT.pdf ap lab ppt no title specific
 
MCQ Soil mechanics questions (Soil shear strength).pdf
MCQ Soil mechanics questions (Soil shear strength).pdfMCQ Soil mechanics questions (Soil shear strength).pdf
MCQ Soil mechanics questions (Soil shear strength).pdf
 
RAT: Retrieval Augmented Thoughts Elicit Context-Aware Reasoning in Long-Hori...
RAT: Retrieval Augmented Thoughts Elicit Context-Aware Reasoning in Long-Hori...RAT: Retrieval Augmented Thoughts Elicit Context-Aware Reasoning in Long-Hori...
RAT: Retrieval Augmented Thoughts Elicit Context-Aware Reasoning in Long-Hori...
 
English lab ppt no titlespecENG PPTt.pdf
English lab ppt no titlespecENG PPTt.pdfEnglish lab ppt no titlespecENG PPTt.pdf
English lab ppt no titlespecENG PPTt.pdf
 
Water Industry Process Automation and Control Monthly - May 2024.pdf
Water Industry Process Automation and Control Monthly - May 2024.pdfWater Industry Process Automation and Control Monthly - May 2024.pdf
Water Industry Process Automation and Control Monthly - May 2024.pdf
 
Hybrid optimization of pumped hydro system and solar- Engr. Abdul-Azeez.pdf
Hybrid optimization of pumped hydro system and solar- Engr. Abdul-Azeez.pdfHybrid optimization of pumped hydro system and solar- Engr. Abdul-Azeez.pdf
Hybrid optimization of pumped hydro system and solar- Engr. Abdul-Azeez.pdf
 
WATER CRISIS and its solutions-pptx 1234
WATER CRISIS and its solutions-pptx 1234WATER CRISIS and its solutions-pptx 1234
WATER CRISIS and its solutions-pptx 1234
 
Pile Foundation by Venkatesh Taduvai (Sub Geotechnical Engineering II)-conver...
Pile Foundation by Venkatesh Taduvai (Sub Geotechnical Engineering II)-conver...Pile Foundation by Venkatesh Taduvai (Sub Geotechnical Engineering II)-conver...
Pile Foundation by Venkatesh Taduvai (Sub Geotechnical Engineering II)-conver...
 
weather web application report.pdf
weather web application report.pdfweather web application report.pdf
weather web application report.pdf
 
Gen AI Study Jams _ For the GDSC Leads in India.pdf
Gen AI Study Jams _ For the GDSC Leads in India.pdfGen AI Study Jams _ For the GDSC Leads in India.pdf
Gen AI Study Jams _ For the GDSC Leads in India.pdf
 
Railway Signalling Principles Edition 3.pdf
Railway Signalling Principles Edition 3.pdfRailway Signalling Principles Edition 3.pdf
Railway Signalling Principles Edition 3.pdf
 
Architectural Portfolio Sean Lockwood
Architectural Portfolio Sean LockwoodArchitectural Portfolio Sean Lockwood
Architectural Portfolio Sean Lockwood
 
The Benefits and Techniques of Trenchless Pipe Repair.pdf
The Benefits and Techniques of Trenchless Pipe Repair.pdfThe Benefits and Techniques of Trenchless Pipe Repair.pdf
The Benefits and Techniques of Trenchless Pipe Repair.pdf
 
Sachpazis:Terzaghi Bearing Capacity Estimation in simple terms with Calculati...
Sachpazis:Terzaghi Bearing Capacity Estimation in simple terms with Calculati...Sachpazis:Terzaghi Bearing Capacity Estimation in simple terms with Calculati...
Sachpazis:Terzaghi Bearing Capacity Estimation in simple terms with Calculati...
 
一比一原版(SFU毕业证)西蒙菲莎大学毕业证成绩单如何办理
一比一原版(SFU毕业证)西蒙菲莎大学毕业证成绩单如何办理一比一原版(SFU毕业证)西蒙菲莎大学毕业证成绩单如何办理
一比一原版(SFU毕业证)西蒙菲莎大学毕业证成绩单如何办理
 

Professional responsibilities of software engineering

  • 1. Uzair Ishtiaq Course – Professional Practices (IT)Course – Professional Practices (IT) Class : BSCS (Semester 07) BSSE (Semester 04) Class : BSCS (Semester 07) BSSE (Semester 04) The Professional Responsibilities of Software Engineers
  • 2. PRoSE P - Professional R - Responsibilities o - of S - Software E - Engineers A correctly designed system is an electronic poetry in motion
  • 3. Main Responsibilities 1. Personal 2. Social 3. Professional
  • 4. Main Responsibilities 1. Personal Personal Responsibilities are general obligations towards other individuals; most are shared by all persons (e.g. honesty, concern for others). 1. Social 2. Professional
  • 5. 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
  • 6. 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.
  • 7. Conflict of Responsibilities • Is there a difference? • Can they conflict? Professional responsibilities include, but are not limited to, contractual obligations to an employer. These obligations may appear at times to conflict with Personal and Social responsibility. The primary responsibility of an engineer is always to the safety and well-being of the public.
  • 8. Conflict of Responsibilities An Illustration - SDI (Star Wars): Service on the “Committee on Computing in Support of Battle Management”. Some questions that arose: a) Was it honest? (personal responsibility) b) Had I made a professional commitment? Was our activity designing a system that would meet the needs of the customer as required by professional codes? What should a professional do if the answers were “yes” and “no”? c) Was this project good for society? Should I explain my views to the public? Some regarded a “Yes” to (c) as unprofessional. The conflict in (b) was resolved by a detailed explanation.
  • 9. The Social Responsibility of Scientists And Engineers “In the land of the blind, the one eyed man is king”. In a world increasingly dependent on science and technology, Scientists and Engineers are the one- eyed people. The majority of our decision-makers are blind.
  • 10. The Social Responsibility of Scientists And Engineers Consider the following public issues: • Can we reduce our energy expenditures without great disruption in people's lives? • How urgent is the need to reduce the level of greenhouse gasses? • Should we build more nuclear power generating stations? • Is it safe to allow nuclear power generating stations to be controlled by computers? • Can technology help us to reduce the amount of the paper that we use? Should we do that? • Is it safe to allow computers to control cars and trucks? Decisions will be taken by non-specialists, but the input will come from people like us. We must give them complete and accurate information.
  • 11. The Social Responsibility of Scientists And Engineers Science and technology are the “black magic” of our age. We use arcane rituals and obscure terminology. The public thinks that science can solve any problem if given enough funds. Public officials share this attitude. They fall for scientific fads. Buzzwords and big promises, favored over solid scientific work. The rewards often go to the illusionists. The successful do not speak out. The others are ignored (“sour grapes”). Most of us “go along” to get funds. 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.
  • 12. The Professional Responsibilities of Engineers Unfortunately, Software Engineers are not always Engineers. “Software Engineering” is a shallow course on programming, taught in a science department, not a professional program in Engineering. Many “software engineers” have no technical education. Many could not be Professional Engineers. Many confuse software engineering with configuration management. An Engineer is someone who uses advanced knowledge of science, mathematics, and technology to build objects for use by others. Most programmers or software engineers, are Engineers, under qualified, unlicensed, and often unprofessional. They are unaware of their professional responsibilities. Programmers need to learn about the professional responsibility of engineers.
  • 13. Why do we have licensed Professional Engineers? An old system introduced because: • Some products potentially dangerous. Incompetent designs a danger to public. • Purchasers and some employers are often unable to judge the competence of designers. • Competent, conscientious, disciplined professionals want public to distinguish between themselves and others. Bad work by a few damages the reputations and business prospects of all. • Financial pressures may tempt employers to “cut corners”. We are protected better when professional obligations go beyond loyalty or obedience to an employer. Professionals do say “No”. Don’t all of these reasons apply to software construction?
  • 14. What is the Professional Engineering Societies ? 1. Professional Engineering Societies were established by legislation to assure competence and awareness of professional responsibilities. 2. Regulations require that certain products be produced or approved by a recognized Professional Engineer. 3. There is a separate committee to accredit programs. Accreditation is a very serious process. Graduates of accredited programs have an easier path to recognition as a Professional Engineer. [5] An exam on responsibilities is required in any case. [6]
  • 15. 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.
  • 16. 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
  • 17. What Are The Obligations Of The Engineer? 1. Accept individual responsibility. – Following orders does not justify approving bad designs. – One cannot always be a “team player”. – Professional standards have priority over other pressures 1. Solve the real problem – Look beyond the customer’s opinions – Have a precise description of a problem. – Get that description reviewed before building.
  • 18. What Are The Obligations Of The Engineer? 3. Be honest about capabilities – Don’t offer technical solutions where there are none. – Don’t do studies when you already know the answer. 4. Produce reviewable designs – No individual is infallible. – Document to make reviewing easy. 5. Maintainability – Produce a product that can be maintained without you. - It’s not your personal product.
  • 19. 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!” My personal favorites came from the IT manager of J&J and MedAmerica: • “It is what it is. Take initiative, make it happened” • “We pay you big box because you are good, so We don’t need to allocate resources for QA” These remarks showed that the speakers were unaware of the professional responsibilities of engineers. Some had not heard of those responsibilities. Some had no such excuse!
  • 20. A Simple Example: Pacemakers Their importance to the user is obvious! They are also important to those nearby. They are controlled by software. – Many modes of operation – Computer controlled telemetry system – Data collection – “Programmable” by remove control – “When needed” intervention. – Rate responds to body activity. – Packaged in a small sealed unit – Must survive in a “hostile environment” Clearly the type of device that should be built by engineers. The program is critical and should be well documented and reviewable.
  • 21. What Should be Done for Pacemaker Software? 1. Programmer should have a precise description of the environment and requirements [7] 2. Black box description should have been produced for review. 3. Document should have been reviewable and reviewed by Cardiologists. 4. The code should have been documented in a way that permitted systematic review and revision.[8] 5. Code should have been subject to systematic inspection. 6. Doctor should have been provide with well-organized precise documentation that explained the behavior of the device to him. All of these things would be expected of a professional engineer.
  • 22. Pacemaker Software Anecdote Pacemaker “refused” the surgeon’s command; neither surgeon nor technician understood why. The explanation was found in a footnote after several hours of reading. It took 30 minutes to find it the second time. Engineer responsible could explain the hardware aspects in great detail. He referred to a programmer, who could not be found, to explain the code. Programming had been viewed as a trivial task; Responsible engineer did not review it. As a result of inadequate review, there are fundamental weaknesses • Motion sensor does not measure physical activity • Expected rate adjustment is inflexible. The problem solved was not the real problem. This was a typical software product. The software was written as it would have been written 25 years ago.
  • 23. More examples • Med America PDA • Firewalls (Software vs. hardware) • Heart Surgeries and what doctors don’t want to tell Software engineers
  • 24. Software used by Professional Engineers and other concerns Professional Engineers take responsibility for their products, but, ... • To design those products they use software that comes with a disclaimer instead of a warranty, • Professional Engineers belong to a society that enforces codes of professional behavior, but • they must use tools produced by people who do not belong to such a society. This cannot be a stable situation! OS’s as bridges (Tacoma Narrows Bridge November 7, 1940 ) TacomaNarrowsBridge.mpeg
  • 25. The “Know How” isn’t There! If we look at other areas of engineering, we know what software engineers should do. If we look at current practice, those things are not done. 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. They do not know how to: • document requirements in a way that can be reviewed by subject matter experts, • document code precisely and completely, • inspect code systematically. SDF - Trying to give that “know how”.
  • 26. The “Know How” isn’t There! Is there a Solution to this problem?
  • 27. 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.
  • 28. 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” • We should take the advantage of the experience that this groups have in setting professional standards • We should use existing legislations to enforce those standards.
  • 29. 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. The aim [of education] must be the training of independently acting and thinking individuals who, however, see in the service to the community their highest life achievement. – Albert Einstein
  • 30. 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.
  • 31. Recap the PRoSE PRoSE - is a poetry in motion. It’s time to quit “firefighting” ways of the software development and start utilizing engineering principals. Responsibility of Software Engineers: 1. Personal 2. Social 3. Professional
  • 32. Agenda • About the speaker • How is software designed today • Hall of Shame • The PRoSE by D. L. Parnas • ACM on PRoSE • Practical Examples from Experience • QA or Q&A
  • 33. Software Engineering Code of Ethics and Professional Practice Recommended and jointly approved by the ACM and the IEEE-CS as the standard for teaching and practicing software engineering.
  • 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. These obligations are founded in the software engineer's humanity, in special care owed to people affected by the work of software engineers, and in the unique elements of the practice of software engineering. The Code prescribes these as obligations of anyone claiming to be or aspiring to be a software engineer.
  • 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. Principle 1 PUBLIC Software engineers shall act consistently with the public interest. In particular, software engineers shall, as appropriate: 1.01. Accept full responsibility for their own work. 1.02. Moderate the interests of the software engineer, the employer, the client and the users with the public good. 1.03. Approve software only if they have a well-founded belief that it is safe, meets specifications, passes appropriate tests, and does not diminish quality of life, diminish privacy or harm the environment. The ultimate effect of the work should be to the public good. 1.04. Disclose to appropriate persons or authorities any actual or potential danger to the user, the public, or the environment, that they reasonably believe to be associated with software or related documents. 1.05. Cooperate in efforts to address matters of grave public concern caused by software, its installation, maintenance, support or documentation. 1.06. Be fair and avoid deception in all statements, particularly public ones, concerning software or related documents, methods and tools. 1.07. Consider issues of physical disabilities, allocation of resources, economic disadvantage and other factors that can diminish access to the benefits of software. 1.08. Be encouraged to volunteer professional skills to good causes and contribute to public education concerning the discipline.
  • 37. Principle 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. In particular, software engineers shall, as appropriate: 2.01. Provide service in their areas of competence, being honest and forthright about any limitations of their experience and education. 2.02. Not knowingly use software that is obtained or retained either illegally or unethically. 2.03. Use the property of a client or employer only in ways properly authorized, and with the client's or employer's knowledge and consent. 2.04. Ensure that any document upon which they rely has been approved, when required, by someone authorized to approve it. 2.05. Keep private any confidential information gained in their professional work, where such confidentiality is consistent with the public interest and consistent with the law. 2.06. Identify, document, collect evidence and report to the client or the employer promptly if, in their opinion, a project is likely to fail, to prove too expensive, to violate intellectual property law, or otherwise to be problematic. 2.07. Identify, document, and report significant issues of social concern, of which they are aware, in software or related documents, to the employer or the client. 2.08. Accept no outside work detrimental to the work they perform for their primary employer. 2.09. Promote no interest adverse to their employer or client, unless a higher ethical concern is being compromised; in that case, inform the employer or another appropriate authority of the ethical concern.
  • 38. Principle 3 PRODUCT Software engineers shall ensure that their products and related modifications meet the highest professional standards possible. In particular, software engineers shall, as appropriate: 3.01. Strive for high quality, acceptable cost and a reasonable schedule, ensuring significant tradeoffs are clear to and accepted by the employer and the client, and are available for consideration by the user and the public. 3.02. Ensure proper and achievable goals and objectives for any project on which they work or propose. 3.03. Identify, define and address ethical, economic, cultural, legal and environmental issues related to work projects. 3.04. Ensure that they are qualified for any project on which they work or propose to work by an appropriate combination of education and training, and experience. 3.05. Ensure an appropriate method is used for any project on which they work or propose to work. 3.06. Work to follow professional standards, when available, that are most appropriate for the task at hand, departing from these only when ethically or technically justified. 3.07. Strive to fully understand the specifications for software on which they work. 3.08. Ensure that specifications for software on which they work have been well documented, satisfy the users’ requirements and have the appropriate approvals. 3.09. Ensure realistic quantitative estimates of cost, scheduling, personnel, quality and outcomes on any project on which they work or propose to work and provide an uncertainty assessment of these estimates. 3.10. Ensure adequate testing, debugging, and review of software and related documents on which they work. 3.11. Ensure adequate documentation, including significant problems discovered and solutions adopted, for any project on which they work. 3.12. Work to develop software and related documents that respect the privacy of those who will be affected by that software. 3.13. Be careful to use only accurate data derived by ethical and lawful means, and use it only in ways properly authorized. 3.14. Maintain the integrity of data, being sensitive to outdated or flawed occurrences. 3.15 Treat all forms of software maintenance with the same professionalism as new development.
  • 39. Principle 4 JUDGMENT Software engineers shall maintain integrity and independence in their professional judgment. In particular, software engineers shall, as appropriate: 4.01. Temper all technical judgments by the need to support and maintain human values. 4.02 Only endorse documents either prepared under their supervision or within their areas of competence and with which they are in agreement. 4.03. Maintain professional objectivity with respect to any software or related documents they are asked to evaluate. 4.04. Not engage in deceptive financial practices such as bribery, double billing, or other improper financial practices. 4.05. Disclose to all concerned parties those conflicts of interest that cannot reasonably be avoided or escaped. 4.06. Refuse to participate, as members or advisors, in a private, governmental or professional body concerned with software related issues, in which they, their employers or their clients have undisclosed potential conflicts of interest.
  • 40. Principle 5 MANAGEMENT Software engineering managers and leaders shall subscribe to and promote an ethical approach to the management of software development and maintenance . In particular, those managing or leading software engineers shall, as appropriate: 5.01 Ensure good management for any project on which they work, including effective procedures for promotion of quality and reduction of risk. 5.02. Ensure that software engineers are informed of standards before being held to them. 5.03. Ensure that software engineers know the employer's policies and procedures for protecting passwords, files and information that is confidential to the employer or confidential to others. 5.04. Assign work only after taking into account appropriate contributions of education and experience tempered with a desire to further that education and experience. 5.05. Ensure realistic quantitative estimates of cost, scheduling, personnel, quality and outcomes on any project on which they work or propose to work, and provide an uncertainty assessment of these estimates. 5.06. Attract potential software engineers only by full and accurate description of the conditions of employment. 5.07. Offer fair and just remuneration. 5.08. Not unjustly prevent someone from taking a position for which that person is suitably qualified. 5.09. Ensure that there is a fair agreement concerning ownership of any software, processes, research, writing, or other intellectual property to which a software engineer has contributed. 5.10. Provide for due process in hearing charges of violation of an employer's policy or of this Code. 5.11. Not ask a software engineer to do anything inconsistent with this Code. 5.12. Not punish anyone for expressing ethical concerns about a project.
  • 41. Principle 6 PROFESSION Software engineers shall advance the integrity and reputation of the profession consistent with the public interest. In particular, software engineers shall, as appropriate: 6.01. Help develop an organizational environment favorable to acting ethically. 6.02. Promote public knowledge of software engineering. 6.03. Extend software engineering knowledge by appropriate participation in professional organizations, meetings and publications. 6.04. Support, as members of a profession, other software engineers striving to follow this Code. 6.05. Not promote their own interest at the expense of the profession, client or employer. 6.06. Obey all laws governing their work, unless, in exceptional circumstances, such compliance is inconsistent with the public interest. 6.07. Be accurate in stating the characteristics of software on which they work, avoiding not only false claims but also claims that might reasonably be supposed to be speculative, vacuous, deceptive, misleading, or doubtful. 6.08. Take responsibility for detecting, correcting, and reporting errors in software and associated documents on which they work. 6.09. Ensure that clients, employers, and supervisors know of the software engineer's commitment to this Code of ethics, and the subsequent ramifications of such commitment. 6.10. Avoid associations with businesses and organizations which are in conflict with this code. 6.11. Recognize that violations of this Code are inconsistent with being a professional software engineer. 6.12. Express concerns to the people involved when significant violations of this Code are detected unless this is impossible, counter- productive, or dangerous. 6.13. Report significant violations of this Code to appropriate authorities when it is clear that consultation with people involved in these significant violations is impossible, counter-productive or dangerous.
  • 42. Principle 7 COLLEAGUES Software engineers shall be fair to and supportive of their colleagues. In particular, software engineers shall, as appropriate: 7.01. Encourage colleagues to adhere to this Code. 7.02. Assist colleagues in professional development. 7.03. Credit fully the work of others and refrain from taking undue credit. 7.04. Review the work of others in an objective, candid, and properly-documented way. 7.05. Give a fair hearing to the opinions, concerns, or complaints of a colleague. 7.06. Assist colleagues in being fully aware of current standard work practices including policies and procedures for protecting passwords, files and other confidential information, and security measures in general. 7.07. Not unfairly intervene in the career of any colleague; however, concern for the employer, the client or public interest may compel software engineers, in good faith, to question the competence of a colleague. 7.08. In situations outside of their own areas of competence, call upon the opinions of other professionals who have competence in that area.
  • 43. Principle 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. In particular, software engineers shall continually endeavor to:7.01. Encourage colleagues to adhere to this Code. 8.01. Further their knowledge of developments in the analysis, specification, design, development, maintenance and testing of software and related documents, together with the management of the development process. 8.02. Improve their ability to create safe, reliable, and useful quality software at reasonable cost and within a reasonable time. 8.03. Improve their ability to produce accurate, informative, and well-written documentation. 8.04. Improve their understanding of the software and related documents on which they work and of the environment in which they will be used. 8.05. Improve their knowledge of relevant standards and the law governing the software and related documents on which they work. 8.06 Improve their knowledge of this Code, its interpretation, and its application to their work. 8.07 Not give unfair treatment to anyone because of any irrelevant prejudices. 8.08. Not influence others to undertake any action that involves a breach of this Code. 8.09. Recognize that personal violations of this Code are inconsistent with being a professional software engineer.
  • 44. 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