Chapter 1

advertisement
Chapter
1
The Product
CHAPTER OVERVIEW AND COMMENTS
The goal of this chapter is to introduce the notion of software as
a product designed and built by software engineers. Software is
important because it is used by a great many people in society.
Software engineers have a moral and ethical responsibility to
ensure that the software they design does no serious harm to
any people. Software engineers tend to be concerned with the
technical elegance of their software products. Customers tend to
be concerned only with whether or not a software product
meets their needs and is easy to use.
1.1
The Evolving Role of Software
The main point of this section is that the primary purpose of
software is that of information transformer. Software is used to
produce, manage, acquire, modify, display, and transmit
information anywhere in the world. The days of the lone
programmer are gone. Modern software is developed by teams
of software specialists. Yet, the software developer's concerns
have remained the same. Why does software take so long to
complete? Why does it cost so much to produce? Why can't all
errors be found and removed before software is delivered to the
customer?
1.2
Software
Software is not like the artifacts produced in most other
engineering disciplines. Software is developed it is not
manufactured in the classical sense. Building a software product
is more like constructing a design prototype. Opportunities for
replication without customization are not very common.
Software may become deteriorate, but it does not wear out. The
chief reason for software deterioration is that many changes are
made to a software product over its lifetime. As changes are
made, defects may be inadvertently introduced to other
portions of the software that interact with the portion that was
changed.
1.3
Software: A Crisis on the Horizon
Many people have written about the "software development
crisis". There seems to be an inordinate fascination with the
spectacular software failures and a tendency to ignore the large
number of successes achieved by the software industry.
Software developers are capable of producing software the
functions properly most of the time. The biggest problem facing
modern software engineers is trying to figure out how to
produce software fast enough to meet the growing demand for
more products, while also having to maintain a growing
volume of existing software.
1.4
Software Myths
The myths presented in this section provide a good source of
material for class discussion. Managers need to understand that
buying hardware and adding people does not spontaneously
solve all software development problems. Customers need to
understand that computer software does not make all their
other problems go away. If the customer can not define his or
her needs clearly, it is not possible to build a software product
to meet these needs. If a customer does not have defined
business processes without computer support, building
computer software will not create these processes automatically.
Software engineers must be committed to the concept of doing
things right the first time. Software quality does not happen on
its own after a product is finished. Quality must be built into
every portion of the software development process.
PROBLEMS AND POINTS TO PONDER
1.1. Classic examples include the use of "digital
automobile dashboards" to impart a high tech, high
quality images. Appliances that "think;" the broad
array of consumer electronics; personal computers
(today, differentiated more by their software
function than the hardware), industrial
instrumentation and machines. All e-commerce
applications are differentiated by software.
1.2. The apprentice/artist culture of the 1950s and
1960s worked fine for single person, well constrained
projects. Today, applications are more complex, teams
work on large projects, and software outlives
generations of developers. Yet, the culture
established in the early days dies hard, leading more
than a little resistance to more disciplined methods.
In addition (see Chapter 29), the new generation of
Web application developers is repeating many of the
same mistakes that programmer made during the circa
1965.
1.3. This is a good problem for classroom discussion
(time permitting). Rather than focusing on cliche'
ridden (albeit important) issues of privacy, quality
of life, etc., you might want to discuss
"technofright" and how software can help to
exacerbate or remedy it. Another interesting
possibility is to use Neumann's "Risks" column in SEN
to key discussion. You might also consider new
attempts at software-based ‘cash’ economies, new
modes of interactive entertainment, virtual reality,
e-commerce, etc.
1.5. There are literally dozens of real life
circumstances to choose from. For example, software
errors that have caused major telephone networks to
fail, failures in avionics that have contributed to
plane crashes, computer viruses (e.g., Michaelangelo)
that have caused significant economic losses. Attacks
on major e-commerce sites.
1.6. The two broadest categories encompass risks
associated with economic loss and risks to the wellbeing of people. You might suggest that each student
select five risks (culled from the sources noted) and
present them to the class. Encourage them to look for
humorous as well as serious risks.
1.7. To be honest, most professors do not assign
papers as part of software engineering courses that
use SEPA. Instead, a term project (or a number of
somewhat smaller projects) are assigned. However, you
might consider discussing software engineering issues
as they relate to the topics noted in this problem.
1.8
Another way to characterize this problem is to
suggest that each student describe a software myth
that he or she believed that has subsequently been
dispelled. From the student's point of view, myths
will likely be driven by programming projects that
they've attempted earlier in their career. To give
this problem a contemporary feel, you might consider
the myths that have evolved around the development of
Web-based applications.
Download