There is little doubt that software engineering, like all other
engineering fields, has helped to make life what it is today. With
software controlling more equipment and becoming an integral part
of more of our lives, the field of software engineering is quickly
becoming more and more important. Unlike many other engineering
fields, however, the products produced through software engineering
are largely intangible. Also, unlike the products of other engineering
fields, software products are unlikely to remain stable over a long
period of time.
In hardware areas, the failure rates of products often start high,
then drop low, and then go high again. Early in a hardware product's
lifecycle, there are some problems with the system. As these problems
are fixed, the failure rate of the hardware products drops. However,
as hardware gets old, physical deterioration causes the hardware
to fail. In other words, the hardware wears out and the failure
rate rises again.
Software, on the other hand, is not subject to the same wear and
tear that hardware is. There are no environmental factors that cause
software to break. Software is a set of instructions, or a recipe,
for a piece of hardware to follow. There are no moving parts in
software. There is nothing that can physically deteriorate. Software
should not wear out. Unfortunately, it does. Countless authors in
the field of software engineering have identified this problem.
However, the software engineering techniques outlined by many software-engineering
authors have not achieved a good amount of stability in software
This problem is more than just an inconvenience for software engineers
and software users. The reengineering that is required for these
software products do not come without a price. It is not uncommon
to hear of these reengineering projects costing hundreds of thousands
to millions of dollars. This does not take into account the time
that is wasted by this continual reengineering process.
Software defects and "deterioration" are caused by changes
in software. Many of these changes cannot be avoided. These changes
can be minimized, however. Currently, when a change must be made
to a software program, most of the time the entire program is reengineered.
It does not matter if the change required is due to new technology
or a change in clientele. This reengineering process is ridiculous.
The core purpose of the software product has not changed. Why, then,
must the entire project be reengineered to incorporate a change?
This tutorial will examine software stability with respect to three
central themes: "How can we engineer software systems that
are stable overtime?," "What are the approaches of making
software systems stable over time?" and "What is the role
of object-oriented technology in the issue of software stability
The tutorial will answer the following questions:
1. How can we achieve software stability over time and extend
the life span of software products?
2. What are the relationships between software architecture and
software that has been stable over time?
3. What are the relationships between software that has been stable
over time and workflow management?
4. What are the relationships between software that has been stable
over time and business objects?
5. What is the role of object-oriented techniques and technologies
in making software stable over time?
6. What are the approaches to making software stable over time?
MOHAMED FAYAD is a J.D. Edwards Professor, Computer Science
& Engineering, at the University of Nebraska, Lincoln. He was
an associate professor at the computer science and computer engineering
faculty at the University of Nevada, from 1995 - 1999. He has 15+
years of industrial experience. He has been actively involved in
over 60 Object-Oriented projects in several companies using Shlaer-Mellor,
Colbert, OMT, Use Case Approach, UML, Design Patterns, Frameworks,
Software Process Improvement, Systems & Software Engineering,
Internet and Web Applications using Java, OO Distributed Computing
using CORBA, and others.
Dr. Fayad is a Senior Member of the IEEE, a Senior Member of the
IEEE Computer Society, a Member of the ACM, an IEEE Distinguished
Speaker, an Associate Editor, Editorial Advisor, and a Columnist
for The Communications of the ACM, and a columnist for Al-Ahram
Egyptians Newspaper (2 million subscribers), an Editor-In-Chief
for IEEE Computer Society Press - Computer Science and Engineering
Practice Press (1995-1997), IASTED Technical Committee member on
Software Engineering (2001-2004), and a general chair of IEEE/Arab
Computer Society International Conference on Computer Systems and
Applications (AICCSA 2001), Beirut, Lebanon, June 26-29, 2001
Dr. Fayad was a guest editor on seven theme issues: CACM's OO Experiences,
Oct. 1995, IEEE Computer's Managing OO Software Development Projects,
Sept. 1996, CACM's Software Patterns, Oct. 1996, CACM's OO Application
Frameworks, Oct. 1997, ACM Computing Surveys - OO Application Frameworks,
March 2000, IEEE Software - Software Engineering in-the-small, Sept./Oct.
2000, and International Journal on Software Practice and Experiences,
June 2001 and is currently working on two more: IEEE Transaction
on Robotics and Automation -- Object-Oriented Methods for Distributed
Control Architecture, March 2002, and Annals of Software Engineering
Journal - OO Web-Based Software Engineering, April 2002. He has
published articles in many journals and magazines, such as IEEE
Software, IEEE Computer, JOOP, ACM Computing Surveys and CACM on
OO software engineering methods, experiences, aspect-oriented programming,
internet & web applications, enterprise and application frameworks,
design patterns, and management. He has given tutorials and seminars
on OO Technologies and Experiences at many conferences and he has
presented various seminars in several countries: Hong Kong (April
96), Canada (10 times), Bahrain, Saudi Arabia, Egypt (12 times),
Portugal (Oct. 96, July 99), Finland (July 99), Mexico (Oct. 98),
Argentina (3 times), Chile (00), Peru (02).
Dr. Fayad received an MS and a Ph.D. in computer science, from
the University of Minnesota at Minneapolis. His research topic was
OO Software Engineering: Problems & Perspectives. He is the
lead author of several Wiley books: Transition to OO Software Development,
August 1998, Building Application Frameworks, Sept., 1999, Implementing
Application Frameworks, Sept., 1999, Domain-Specific Application
Frameworks, Oct., 1999, and 3-vol. Book on Software Architectures,
PLAs, Component-Based Software Developments, and Enterprise Frameworks,
in progress. 3-vol. e-books on OO Enterprise Frameworks, Oct. 2002,
and 5-vol. e-books on Software Stability, Oct. 2002, published by
Mightywords, Inc., in progress.