CS 360 Lecture 20. The software industry needs to take more responsibility for its products ...

20
SOFTWARE ENGINEERING PROFESSIONALISM CS 360 Lecture 20

description

 Software Myths – Managers  We have standards and procedures for building software  So developers have everything they need  We have state-of-the-art software development tools  We buy the newest computers  If we’re behind schedule, we can add more programmers to catch up.  A good manager can manage any project. 3

Transcript of CS 360 Lecture 20. The software industry needs to take more responsibility for its products ...

Page 1: CS 360 Lecture 20.  The software industry needs to take more responsibility for its products  Products are sold or licensed with no guarantees about.

SOFTWARE ENGINEERING PROFESSIONALISM

CS 360Lecture 20

Page 2: CS 360 Lecture 20.  The software industry needs to take more responsibility for its products  Products are sold or licensed with no guarantees about.

THOUGHTS ABOUT SOFTWARE ENGINEERING

The software industry needs to take more responsibility for its products Products are sold or licensed with no guarantees about whether they work as advertised.

Time-to-market dominates much of software development.

We know how to develop much more reliable and secure software, but reliability and security often have low priority in business plans.

Compare: The car industry (safety and reliability) 2

Page 3: CS 360 Lecture 20.  The software industry needs to take more responsibility for its products  Products are sold or licensed with no guarantees about.

HOW SOFTWARE IS DESIGNED TODAYSoftware Myths – Managers

We have standards and procedures for building softwareSo developers have everything they need

We have state-of-the-art software development toolsWe buy the newest computers

If we’re behind schedule, we can add more programmers to catch up.

A good manager can manage any project.3

Page 4: CS 360 Lecture 20.  The software industry needs to take more responsibility for its products  Products are sold or licensed with no guarantees about.

HOW SOFTWARE IS DESIGNED TODAYSoftware Myths – ClientA general statement of requirements/objectives is sufficient to begin writing programs.Details can come later

Requirement changes are easy to accommodate because software is flexible.

4

Page 5: CS 360 Lecture 20.  The software industry needs to take more responsibility for its products  Products are sold or licensed with no guarantees about.

HOW SOFTWARE IS DESIGNED TODAYSoftware Myths – developer

If I miss something now, I can fix it later.Once the program is written and running, my job is finished.

Until a program is running, there is no way to assess quality.

The only deliverable for a software project is a working program.

5

Page 6: CS 360 Lecture 20.  The software industry needs to take more responsibility for its products  Products are sold or licensed with no guarantees about.

SOFTWARE FAILURES AND RISKSSoftware development projects can fail in many ways: The software engineering triangle

Late Over budget Lack of function, full of bugs, bad performance

Changing circumstances for the projectChanging markets Better alternatives Changes of management

The biggest single source of problems is poor understanding between the client and the development team. 6

Page 7: CS 360 Lecture 20.  The software industry needs to take more responsibility for its products  Products are sold or licensed with no guarantees about.

SENIOR MANAGEMENT DYNAMICSMajor computing projects are very complex.

Inevitably there are delays and failures. Few organizations know how to manage risk and uncertainty.

The best project managers: Manage to minimize risk Have the confidence of their staff who keep them truthfully informed

Have the self-confidence to keep their seniors truthfully informed

7

Page 8: CS 360 Lecture 20.  The software industry needs to take more responsibility for its products  Products are sold or licensed with no guarantees about.

MANAGING RISKManage projects to avoid risk Open and visible software process Avoid surprises

Continual review of requirements Willingness to modify or cancel projects Try for short phases each with deliverables

8

Page 9: CS 360 Lecture 20.  The software industry needs to take more responsibility for its products  Products are sold or licensed with no guarantees about.

MANAGING RISK: HOW TO CANCEL GRACEFULLY

Canceling a project It is harder to cancel a project than to start it. It is harder to withdraw a service than introduce it.

Considerations Management of expectations Users of the service need a migration strategy. Technical staff must have a graceful path forward.

If a project has to be cancelled, do it as early as possible.

9

Page 10: CS 360 Lecture 20.  The software industry needs to take more responsibility for its products  Products are sold or licensed with no guarantees about.

SOFTWARE DEVELOPMENT AS ENGINEERINGSoftware development demands a high degree of professionalism.

Question:Is software development a branch of engineering?

10

Page 11: CS 360 Lecture 20.  The software industry needs to take more responsibility for its products  Products are sold or licensed with no guarantees about.

WHAT IS ENGINEERING?A definition of engineering The profession of:creating cost-effective solutions, to practical problems, by applying scientific knowledge, and established practices, building things, and taking responsibility for them!

With this definition, software development is clearly engineering

11

Page 12: CS 360 Lecture 20.  The software industry needs to take more responsibility for its products  Products are sold or licensed with no guarantees about.

WHAT IS ENGINEERING?A second defini1on of engineering A professional who is licensed by a professional society, based on a set educational programs with a standard body of knowledge and specified experience, who is the only person permitted to oversee certain tasks.

This definition of engineering makes it is hard to see it applied to software development

12

Page 13: CS 360 Lecture 20.  The software industry needs to take more responsibility for its products  Products are sold or licensed with no guarantees about.

FROM THE NATIONAL SOCIETY OF PROFESSIONAL ENGINEERS

Part craft -- part engineering Evolving body of expertise

ACM conclusion: Software Engineering is too much of a craft, too uncertain, and changing too much for the apparatus of a profession

Who has the expertise to define a formal Body of Knowledge?

What would be in an accreditation exam? 13

Page 14: CS 360 Lecture 20.  The software industry needs to take more responsibility for its products  Products are sold or licensed with no guarantees about.

SOFTWARE ENGINEERING CODE OF ETHICS AND PROFESSIONAL PRACTICE

Recommended and jointly approved by the ACM and IEEE-CS as the standard for teaching and practicing software engineering.

http://www.acm.org/about/se-code

14

Page 15: CS 360 Lecture 20.  The software industry needs to take more responsibility for its products  Products are sold or licensed with no guarantees about.

SOFTWARE ENGINEERING CODE OF ETHICS AND PROFESSIONAL PRACTICEThe Code contains eight Principles related to the behavior of and decisions made by professional software engineers, includingpractitioners educatorsManagers and supervisorsTrainees and students

The Code prescribes these as obligations of anyone claiming to be or aspiring to be a software engineer. 15

Page 16: CS 360 Lecture 20.  The software industry needs to take more responsibility for its products  Products are sold or licensed with no guarantees about.

SOFTWARE ENGINEERING CODE OF ETHICS AND PROFESSIONAL PRACTICE

Principle 1: Public SEs shall act consistently with the public interest.

Accept full responsibility for their own work Approve software only if they have a well-founded belief that it’s safe,

meets specifications, passes appropriate tests, and does not diminish quality of life, privacy, or environment

Be fair and avoid deception Encouraged to volunteer professional skills to good causes and contribute

to public education concerning software engineering Principle 2: Client and Employer

SEs shall act in a manner that is in the best interests of their client/employer Provide service in their areas of competence, being honest about their

limitations Never using software that is obtained illegally or unethically Keep private any confidential information gained by their work Never accepting outside work that would be detrimental to their primary

employer

16

Page 17: CS 360 Lecture 20.  The software industry needs to take more responsibility for its products  Products are sold or licensed with no guarantees about.

SOFTWARE ENGINEERING CODE OF ETHICS AND PROFESSIONAL PRACTICE

Principle 3: Product SEs shall ensure that their products meet the highest professional

standards as possible Strive for high quality, acceptable cost, and reasonable schedule while

developing Identify and address ethical, economic, cultural, legal, and environmental

issues Strive to follow professional standards, when available Treat all forms of software maintenance with the same professionalism as

new development Principle 4: Judgement

SEs shall maintain integrity and independence in their professional judgment Maintain professional objectivity with respect to any software they are

asked to evaluate Never engage in deceptive financial practices Disclose to all concerned parties those conflicts of interest that cant be

avoided Refuse to participate private, governmental, or professional organizations

where their employers or clients have undisclosed potential conflicts of interest.

17

Page 18: CS 360 Lecture 20.  The software industry needs to take more responsibility for its products  Products are sold or licensed with no guarantees about.

SOFTWARE ENGINEERING CODE OF ETHICS AND PROFESSIONAL PRACTICE

Principle 5: Management SE managers and leaders shall subscribe and promote and ethical approach

to the management of software development and maintenance Ensure good management for any project on which they work Ensure that developers are informed of standards being held to them Never punish anyone for expressing ethical concerns about a project

Principle 6: Profession SEs shall advance the integrity and reputation of the software profession Help develop an environment favorable to acting ethically Promote public knowledge of software engineering Take responsibility for detecting, correcting, and reporting errors in

software and documentation on which they work

18

Page 19: CS 360 Lecture 20.  The software industry needs to take more responsibility for its products  Products are sold or licensed with no guarantees about.

SOFTWARE ENGINEERING CODE OF ETHICS AND PROFESSIONAL PRACTICE

Principle 7: Colleagues SEs shall be fair to and supportive of their colleagues

Assist colleagues in professional development Review the work of others in an objective, properly-documented way Encourage colleagues to adhere to the SE code of ethics and professional

practice Principle 8: Self

SEs shall participate in lifelong learning regarding the practice of their profession and shall promote an ethical approach to the practice of the profession Further their knowledge of developments in the analysis, specification,

design, development, maintenance and testing of software and related documents

Improve their ability to create safe, reliable, and useful quality software at reasonable cost and time

Recognize that personal violations of this code are inconsistent with being a professional software engineer

19

Page 20: CS 360 Lecture 20.  The software industry needs to take more responsibility for its products  Products are sold or licensed with no guarantees about.

CONCLUSION: PROFESSIONAL RESPONSIBILITY

Organizations put trust in software developers Competence:

Software that does not work effectively can destroy an organization.

Confidentiality: Software developers and systems administrators may have access to highly confidential information.

Legal environment: Software exists in a complex legal environment.

Acceptable use and misuse: Computer abuse can paralyze an organization. 20