Title: CS 501: Software Engineering
1CS 501 Software Engineering
Lecture 27 Software Engineering as Engineering
2Administration
Course evaluations at end of class No class
on Thursday Final presentations on Wednesday,
Thursday and Friday
3Quiz4 Question 2(c)
You have hired two new members of staff.
(i) The first has just graduated from the Cornell
M.Eng. program in computer science, with no work
experience. (ii) The second has five years'
experience in developing advanced Web
applications, but has never worked on hand-held
computers. Some of the development tasks are
more interesting than others. Some tasks are
harder than others. Some are more time critical
than others. What approach would you use in
allocating the tasks to these two new
members?
4Bad Answers
The Cornell graduate has more expertise to tackle
the harder tasks. What makes you so
superior? The Cornell graduate is used to
time-critical tasks (course assignments). Sorry,
that's not for real. The Cornell graduate should
be given interesting work to make him/her keen to
continue with the company. But who cares if you
leave? A raw graduate is still a trainee -- the
most junior person -- much to learn -- no
experience of production quality
development. But, hopefully, with great potential!
5Good Answers
- Both should be "high-quality, highly motivated"
with potential to "produce excellent software
under tight time constraints." - Both new employees need to learn the technical
environment. Expect them both to work slowly
until they learn the environment. - The junior (raw graduate) need mentoring. The
senior (experienced developer) may work
independently or lead a team. - The junior should not be put on time-critical
tasks. The experienced developer can be. - Both people should be given a mixture of more and
less interesting tasks. Discuss the allocation
with them.
6The Need for Software Engineering
Software as a product gt Awkward to use gt
Full of errors gt No chance to try it out gt No
guarantees Not much of a product
7Engineers, Texas and the ACM
- Proposal in the Texas legislature to license
professional engineers in Software Engineering - What role should the ACM play?
8From 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.
9What is 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!
10Crafts, Science, Engineering
Science
Production
Professional Engineering
Commercial
Craft
From Shaw and Garlan
11Crafts, Science, Engineering
algorithms data structures
compiler construction
software development methodologies
From Shaw and Garlan
12Software 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?
13Discussion of Pfleeger, Chapter 13
Format State a question. Ask a member of the
class to answer. (Sorry if I pronounce your
name wrongly.) Provide opportunity for others to
comment. When answering Stand up. Give your
name or NetID. Make sure the TA hears it. Speak
clearly so that all the class can hear.
14Q1 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 Engineering?
15Q2 Team Productivity
Microsoft is the world's greatest software
company, but Windows 2000 was two years behind
schedule. Question What impact does each of the
following have on productivity? Staff
ability and expertise Domain expertise
Process quality Project size / team size
Technology support Working environment
16Q3 Productivity
The usual definition of productivity
is Productivity (units of output)
(resources input) Question What
is the unit of output in software engineering?
17Q4 Process Improvement
A software development group has many processes
project management, scheduling, communications,
documentation, testing, reporting, recruiting,
training, etc. Level 5 of the Capability Maturity
Model is continuous improvement of
processes Question Is it possible to carry out
continuous process improvement in a quantifiable
manner?
18Q5 Cost Estimation Techniques
The following techniques of cost estimation have
been suggested. Algorithmic cost
modeling Expert judgment Estimation
by analog Pricing to win Question When
would you use each of these techniques? What
confidence would you have in the estimates?
19The End
Good process help the development of good
software the limits of heroic efforts
Software engineering is a craft, not a fixed
procedure Minimize risk visible
process function v. time v. cost The
importance of people If the requirements are not
well understood, the system will fail!