CS 501: Software Engineering People 2 CS 501 Spring 2005 Lecture 24

advertisement
CS 501: Software Engineering
Lecture 24
People 2
1
CS 501 Spring 2005
Course Administration
2
CS 501 Spring 2005
From Lecture 1:
Overall Aim of the Course
We assume that you are technically proficient. You know
a good deal about computing, can program reasonably,
can learn more on the job.
When you leave Cornell, you are going to work on
production projects where success or failure costs millions
of dollars.
Soon you will be in charge! It may be your money!
We want you to make your mistakes now and learn from
your mistakes.
3
CS 501 Spring 2005
From Lecture 1:
Future Experience
What will you be doing one year from now?
Ten years from now?
4
CS 501 Spring 2005
Future Experience
What will you be doing one year from now?
Ten years from now?
1. Careers outside computing
2. Careers in which you personally continue to do technical
work
3. Careers in which you are responsible for the technical
work of others
5
CS 501 Spring 2005
Careers outside Computing
A computing background can be valuable in any career:
management, government, law, medicine, philanthropy, etc.
Education in computing is an asset:
• Computing is a vital part of almost every organization
• Education in logical thinking, tackling large tasks
systematically
Education in computing is a potential weakness:
• Not every problem can be solved by rational thinking
• Importance of skills with people, judgment, etc.
6
CS 501 Spring 2005
Technical Careers
Super-technical positions
A very few senior positions which are almost entirely technical:
e.g., industrial research, universities
Even these have substantial organizational aspects
Mid-level technical positions
Numerous mid-level professional positions
Can be state-of-the-art or dead-end
Computer professional report satisfaction with their choice of
careers
7
CS 501 Spring 2005
The Connection to the Client:
CS 501 Model
Course
team
Client
Software
development
team
8
CS 501 Spring 2005
The Connection to the Client:
Typical Organization
Marketing
Product
management
Customers
Software
development
9
Quality
assurance
CS 501 Spring 2005
Validation and Verification
Product Manager
Validation: Are we building the right product?
Quality Assurance
Verification: Are we building the product right?
10
CS 501 Spring 2005
Quality Assurance
The task of Quality Assurance is to ensure that software
products are built correctly.
At Microsoft, the Quality Assurance staff is as large as the
Software Development staff.
• Develop tools and methodology for creating software that is:
testable
maintainable
free of bugs
• Validate software by reviews, inspections, testing, etc.
11
CS 501 Spring 2005
Product Manager
The task of the Product Manager is to ensure that the right
product is built and that the right trade-offs are made between
timeliness, functionality and costs.
This requires an understanding of:
• Marketing and business considerations
• Technical options and design criteria
• Communication among groups with different expertise
and priorities
An good Product Manager has strong technical and
management skills (e.g., a computer scientist with an MBA)
12
CS 501 Spring 2005
Careers that take responsibility for the
Technical Work of Others
A common career progression is from being a technical expert to
leading others who do technical work
Senior personnel must be familiar with both the strategic
organizational aspects and the computing aspects of the work, e.g.,
Entrepreneur
Chief Information Officer
Senior consultant
• Requires good technical insight, but not detailed technical expertise
• Requires organizational, marketing, personnel, financial expertise
Product management is a good background for such positions
13
CS 501 Spring 2005
Career Flexibility
Nobody knows where computing will go in the future,
but …
If you do not learn continuously, you are going out of
date fast!
• Go to seminars, conferences, training courses
14
• Be inquisitive – discover things for yourself
Technical expertise is most valuable when combined with
other skills
• Understand the organization that you are part of, e.g.,
budgets, marketing.
• Develop organizational skills, e.g., presentations,
writing, leadership
CS 501 Spring 2005
Software Development as a Profession
Software development
demands a high degree of
professionalism.
Question: Is software development a branch of engineering?
Answer: It depends on how you define engineering.
15
CS 501 Spring 2005
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
16
CS 501 Spring 2005
From Lecture 1:
Professional Responsibility
Organizations put trust in software developers:
17
•
Competence: Software that does not work effectively can
destroy an organization.
•
Confidentiality: Software developers and systems
administrators may have access to highly confidential
information (e.g., trade secrets, personal data).
•
Legal environment: Software exists in a complex legal
environment (e.g., intellectual property, obscenity).
•
Acceptable use and misuse: Computer abuse can paralyze an
organization (e.g., the Internet worm).
CS 501 Spring 2005
An Old Question:
Safety Critical Software
A software system fails and several lives are lost. An inquiry
discovers that the test plan did not consider the case that caused the
failure. Who is responsible:
(a) The testers for not noticing the missing cases?
(b) The test planners for not writing the complete test plan?
(c) The managers for not having checked the test plan?
(d) The customer for not having done a thorough acceptance test?
18
CS 501 Spring 2005
Client Responsibility
• Organization culture that expects quality
• Appointment of suitably qualified people to vital tasks
(e.g., technical team that will build a critical system)
• Reviewing requirements and design carefully
• Establishing and overseeing the acceptance process
• Providing time and incentives that encourage quality
work
• Working closely with the software team
Accepting responsibility for the resulting product
19
CS 501 Spring 2005
Computing Management
Responsibility
• Organization culture that expects quality
• Appointment of suitably qualified people to vital tasks
(e.g., testing safety-critical software)
• Establishing and overseeing the software development
process
• Providing time and incentives that encourage quality
work
• Working closely with the client
Accepting responsibility for work of team
20
CS 501 Spring 2005
Software Developers and Testers:
Responsibilities
• Carrying out assigned tasks thoroughly and in a professional
manner
• Being committed to the entire project -- not just tasks that have
been assigned
• Resisting pressures to cut corners on vital tasks
• Alerting colleagues and management to potential problems
early
21
CS 501 Spring 2005
What is Engineering?
A second definition of engineering
A professional who
… is licensed by a professional society
… based on a set educational program with a standard body
of knowledge and specified experience
… who is the only person permitted to oversee certain tasks
If this is your definition of engineering it is hard to see it
applied to software development
22
CS 501 Spring 2005
From Lecture 1:
The Craft of Software Development
Software products are very varied
--> Client requirements are very different
--> There is no standard process for software engineering
--> There is no best language, operating system, platform,
database system, development environment, etc.
A skilled software developer knows about a wide variety of
approaches, methods, tools. The craft of software engineering
is to select appropriate methods for each project and apply them
effectively.
23
CS 501 Spring 2005
Crafts, Science, Engineering
Science
Production
Commercial
Professional
Engineering
Craft
24
From: Shaw and Garlan
CS 501 Spring 2005
Crafts, Science, Engineering
algorithms
data structures
Science
Production
software development
methodologies
Commercial
compiler
construction
Professional
Engineering
Craft
25
From: Shaw and Garlan
CS 501 Spring 2005
Professionalism: Software Process
Fundamental Assumption:
Good processes lead to good software
Good processes reduce risk
Good processes enhance visibility
26
CS 501 Spring 2005
Software Engineering Institute
Capability Maturity Model
1. Initial -- no effective management processes
2. Repeatable -- requirements management, project planning,
scheduling and tracking, quality assurance, configuration
control
3. Defined -- conformity to defined processes, design and code
reviews, communication procedures, personnel development
4. Managed -- software quality management, quantitative process
management
5. Optimizing -- continuous improvement of processes
Question: What is the evidence that the Capability Maturity
Model reflects effective Software Development?
27
CS 501 Spring 2005
Engineers, Texas and the ACM
• Proposal in the Texas legislature to license
professional engineers in Software Engineering
• What role should the ACM play?
28
CS 501 Spring 2005
From the National Society of
Professional Engineers
• Only a licensed engineer may prepare, sign and seal, and
submit engineering plans ... for public and private clients.
• Licensure for individuals ... is a legal requirement for those
who are in responsible charge of work, ...
• Federal, state, and municipal agencies require that certain
[positions] ... be filled only by licensed professional engineers.
• Many states have been increasingly requiring that those
individuals teaching engineering must be licensed.
• State engineering boards are increasingly ... obtaining the
authority to impose civil penalties against unlicensed
individuals.
29
CS 501 Spring 2005
Software Engineering as Engineering?
• Part craft -- part engineering
•
Embryonic scientific basis
•
Evolving body of expertise
ACM conclusion: Software Engineering is in 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?
30
CS 501 Spring 2005
Download