You are on page 1of 5

SPE 110642

What Software Do We Expect? An Engineering View vs. IT View


Sharon Wang, SPE, George Woo, SPE, and Zhongming Chen, SPE, BJ Services Company

Copyright 2007, Society of Petroleum Engineers

This paper was prepared for presentation at the 2007 SPE Annual Technical Conference and Introduction:
Exhibition held in Anaheim, California, U.S.A., 11–14 November 2007.

This paper was selected for presentation by an SPE Program Committee following review of
information contained in an abstract submitted by the author(s). Contents of the paper, as
The computer is an essential tool for an engineer handling
presented, have not been reviewed by the Society of Petroleum Engineers and are subject to complex engineering computations. Computer software carries
correction by the author(s). The material, as presented, does not necessarily reflect any
position of the Society of Petroleum Engineers, its officers, or members. Papers presented at out computing ideas/methodologies or business rules, and also
SPE meetings are subject to publication review by Editorial Committees of the Society of
Petroleum Engineers. Electronic reproduction, distribution, or storage of any part of this paper
instructs the computer to finish a specific job. The quality of
for commercial purposes without the written consent of the Society of Petroleum Engineers is the software along with the process of building a software as a
prohibited. Permission to reproduce in print is restricted to an abstract of not more than
300 words; illustrations may not be copied. The abstract must contain conspicuous whole needs to be reviewed to discover what has been missed
acknowledgment of where and by whom the paper was presented. Write Librarian, SPE, P.O.
Box 833836, Richardson, Texas 75083-3836 U.S.A., fax 01-972-952-9435.
on the software perspectives between IT’s professionals and
the engineers/engineering software users in oil/gas industry.
Abstract
Due to the computer’s important role in most engineering
In today’s modern computing era, computer applications have fields, engineers often use this valuable tool to do repetitive,
become indispensable for engineers to do their work. Some tedious numerical computations. When FORTRAN was first
software works well, meeting technical requirements and introduced in the 1950’s, it became a popular computing
expectations, while others are not very effective because of language for engineers to use in solving their sophisticated
their instability, unfriendly user interface, or difficulty to use. mathematics problems by expressing their thoughts directly in
Since computing is a typical skill of engineers and the commonly understood mathematical notation1. As the
engineers also know the solutions for the particular problems, computing power of personal computer increased, more and
it is common for them to write programs for their own needs. more engineers wrote programs to solve their particular
However, as a project and application grow bigger and more engineering problems. Some of those applications even
sophisticated, the problems related to application software became legacy codes because of the beautiful thoughts and
design and architecture, which impact software extensibility elegant mathematical solutions. The increased use of
without degrading the software performance, become computers in a wider range of engineering fields demands
apparent. When a program is written without concern for more new functions and features to be added, thus
overall design, the maintenance of the software becomes more transforming the original program from a simple tool to
costly and difficult. Alternatively, a program developed by an business application software or a part of the business process.
individual who lacks the necessary technical background, may The incremental functions and modifications make a software
not be intuitive to use or may not address all technical needs application larger and more complex; these changes also raise
of the engineer. A good program not only must meet the concerns about extensibility and maintainability of the
business requirements and specifications necessary to provide software. The more modifications made to the software, the
engineering solutions, but also must be user-friendly, and more difficult and expensive the software’s maintenance
intuitive for users to learn and use easily. Thus, the users can becomes. Software extensibility, which measures the
focus on their specific job instead of struggling with a capability of new functions and features to be added, and
confusing manual, or trying to avoid causing a software crash. modularity, which is defined in software structural design, are
Understanding the business domain and prospective user’s beyond simple programming, translating the thoughts or ideas
practice helps developers create more useful tools. into computer language.

This paper discusses the cause of the problems in software On other side, the rapidly growing demand for the
quality from the perspective of both the user and IT development of engineering application software brought
professional on complexity and facilitation, extensibility and more IT professionals into the oil/gas industry, helping the
adaptability of software. The paper also proposes some industry shift to a new stage by changing the way petroleum
suggestions for IT professionals to develop quality, favorable engineers do business. In fact, Information Technology and
application software for users. It also provides guidelines for digital computing have been transforming the way we do
engineer users and project managers to evaluate and purchase business in every domain. During the software development
software. process, the first step is the business requirement analysis. At
this stage the software developers try to list all the business
2 SPE 110642

requirements and specifications, but this is not easy. Often all software
the specifications and requirements of the software application - Interoperability: the ability of the software to co-exist
can not be defined and given completely to the software and co-operate with other systems and components.
developers at the beginning of the project. However, the - Portability: measuring how easily the software runs
software project success depends on an effective analysis and in different environments - different hardware,
management of requirements. Most serious problems operating system or other software in which the
associated with software development are related to system is expected to interact.
incomplete or inadequate requirement analysis and - Verifiability: Measuring how easy the software can
management. Based on the Standish Group Study in 19942, be verified.
user involvement and clear statements of requirement are the
primary factors for a successful project. No matter which From the software user’s perspective, quality software should
software process model is selected to develop the application be reliable, stable, recoverable, extensible and easy to learn
software, (Waterfall Model, Spiral Model or Iterative Model), and use.
requirement errors are likely to be the most expensive errors to
fix later. Software developers must be sure to understand the When a program’s role changes from a tool performing one
problems and users’ needs before beginning to envision or simple function to a complicated application that carries out a
define the solutions. However, communication gaps or series of functions, the process of building the program is no
misunderstanding exist between software users and developers longer a simple programming process. It becomes a software
when the developers lack the background and knowledge in engineering process in which the software product is
that particular area. It is also very hard for users to precisely developed. The process can no longer be done by a single
express their needs in a way that developers can understand. programmer; instead, it requires a team. Those who are
For a large application software development, it is common involved in the team know how difficult it is to maintain
that each group generally lacks expertise in the domain of large/complex code if the software is not well-designed and
others. The users and developers have different perspectives properly documented.
on the problem and may make different assumptions regarding
the nature of the solution. In such a case, misunderstandings Why is software development not easy?
about project objectives, or communication gaps between the
two groups may result in software failing to meet the The common perceptions of software are:
customer’s needs, or the software not being a favorable tool to • Software is soft; it is intangible and malleable.
users because of difficulty of learning and using it. • Software construction is a human-intensive activity.
• Software problems are unprecedentedly complex.
What software do we expect? What software attributes should • Software solutions require unusual rigor.
we consider? These questions really refer to the software • Software has a discontinuous operational nature.
quality issue. Software quality is controlled by software design • Scaling up a system causes a nonlinear increase in
and the process of building the software from software complexity.
engineering perspective. To software users, the software
usability, a measure of how easy the software is to use, is what Enterprise software is a part of the business process, and
they really care about, and this is based on how well a building such software is a form of product development.
developer understands the business process and the potential Software products are subject to frequent change either to
user’s practice. support new requirements and specifications or to repair
defects. Therefore, the software system must be designed in
This paper addresses some of challenges of software such way that facilitates changes without degrading other
development and along with some of questions asked by the desirable properties of software. This is a great challenge that
engineers, project managers, application users and developers. the software designers and developers face. Software
It proposes some solutions for those challenges. designers are required certain domain knowledge of the
related problem/project and solutions to make a good design
Challenges decision. The software designer and developer must also
consider the user’s practice, instead of changing the user’s
Defining and measuring software quality is subject to different natural way of doing a job, so that the user is receptive to the
views of the software users and the software developers. software.
From software developer’s standpoint, software quality is The following questions are asked frequently by project
measured by its reliability, performance, usability, managers, software users, engineers, and software developers,
interoperability, portability and verifiability3. based on their perspectives and backgrounds:
- Reliability: measuring how gracefully the software ƒ What factors affect software quality? How do we
can recover from crash. define good software?
- Performance: measuring some required behavior ƒ Is it more efficient to keep legacy code and modify it,
relevant to some relative time constraint. or just build another one from scratch?
- Usability: measuring how easy people can utilize the
SPE 110642 3

ƒ How do we make a software application easy to adapt • Performance and scalability,


to new or changing business functions? • Security and volatility,
ƒ Why does some software appear simple and intuitive • Compliance and standard,
to use, while other software confuses the users? • Testability and maintainability.
ƒ What should we know about software engineering? Is
the software engineering the same as the Flexibility, adaptability and extensibility refer to the capability
programming? of changes in the software. It tells whether software can be
ƒ How do we evaluate and choose a software modified from existing legacy code to add new functions.
application?
ƒ How can we anticipate and meet customers’ needs? In a well-structured software system, one module/component
interacts with another module/component through a stable
The questions listed above indicate different thoughts and interface and does not need to be concerned with other
concerns about software from both the IT side and the user’s module’s implementation, this makes software adapt to new or
side. By clarifying the misunderstanding and confusion changing functions easily because a change in one module
between programming and software engineering, and by does not require a change in other modules.
closing the gaps of understanding and perspectives about
software from both the developers and users, we can improve Good software design minimizes the time required to create,
the software product’s quality and the software project’s modify and maintain the software while achieving acceptable
management. run-time performance7.

The objective of the software architecture is to keep


Software design and architecture influence software’s irreversible decisions to a minimum, and provides a
performance, interoperability and extensibility, but this framework that supports interactive development8. It can be
concept is beyond the petroleum engineering discipline, and achieved through Object Oriented methodology/technique,
may not be seriously considered by a programmer whose which includes Object-Oriented-Analysis, Object-Oriented-
specialty domain area is not IT specialty. It is necessary for Design and Object-Oriented-Programming.
non-IT people who are writing a program to understand what
the software architecture is. Additionally, the keys to good As it becomes apparent that tolerance to changes is vital to a
software are not found only in process quality, but rather in a software system, the software architecture must be able to
closer link between process and product quality and in the support incremental changes. That is why the service-oriented
active commitment to that goal. The human activities of the architecture and components based architecture are rapidly
development process determine what software will emerge. replacing monolithic architecture.

Application Software Design and Architecture The flowing process of the software architecture is illustrated
in Fig. 1.
Every large software system is made up of pieces that are
linked together, and interact with each other. The architecture After examining the structure of a software application, one
facilitates those links. Like other system architecture, software can determine whether the current software application can be
architecture is a high-level design representation, which modified from legacy code, or a new program must be built. If
focuses on the composition of software components and how the components in the original program were designed in low-
those components interact. Generally the building components coupling structure, in which every component in the system
are user interface, functions and modules, and database does not couple very tightly, it is possible to reuse the
connection components. The relation between those components and turn the legacy code to new use by modifying
components is illustrated in following diagram. it. Otherwise try to understand functions of the procedures,
dependence between the components and modules, and
variables and constants, and build a new program with open
structure, such as object-oriented or services-oriented
Functions and Modules framework. Analyzing the legacy code could be a time-
consuming task. By using an automated code analyzer9, lots of
information can be extracted from legacy code, and the
information can help determine the possibility of reuse
possibilities.
DataBase
Software Engineering vs. Programming

Similar to other engineering practices, large software systems


The attributes describing the architecture are 4-6 must be developed by a team in a group activity, which is the
software engineering process. What should we know about
• Complexity and flexibility, software engineering?
• Adaptability and extensibility,
4 SPE 110642

Software engineering is a profession, an engineering 2. Adhering to users’ working practice in user-interface


discipline, an application of engineering, scientific and design, not intending to change the traditional way of the
mathematical principles and methods. prospective user’s doing a task
Software engineering is the field of computer science that
deals with the building large and complex software systems. The software is designed to facilitate the engineers doing their
job well, rather than prevent them from doing it. Consistent
Programming is primarily a personal activity; it is a single methodology with current work practice of users makes
aspect of software development. learning to use the software easier, more familiar and
comfortable. For an engineer user, an intuitive tool should be
A programmer spends the majority of his or her time designed in such way that conforms to the way an engineer
generating code. used to work, rather than totally changes to different working
procedure especially for a traditional engineering process.
A software engineer, on the other hand, writes a software
component that will be combined with components written by A comprehensible, easy-to-use interactive product is the result
other software engineers to build a system. of thorough group assessments in which the context and
purpose of use are carefully considered. To make computers
Now we know the software development process involves not more usable and receptive to the users, the software designer
only generating code to instruct the computer, but also must carefully analyze the interaction between human and
including the software architecture design that determines the computer during user interface design.
connection and interaction between components in the For given constraints, optimizing interface design makes
software system. The process of building the software is software easy to learn and intuitive to use. Human-computer
heavily impacted by the activity of people involved – Software interaction is an interdisciplinary area combining several
engineers/developers and programmers. aspects from different field including11:
- Computer Science – concerning how to design algorithms
To build a quality and favorable software, software developers - Psychology and related fields – concerning the
need to pre-view the software from a user’s perceptive to capabilities of human memory and perception
improve the software usability. Following are suggestions for - Artificial Intelligence and related field - concerning how
software developers. to automate work, or make computers behave like
intelligent assistants
Suggestions for Better Software Development - Computer Graphics Design – concerning how to output
information visually
Because the poorly defined requirements and specifications
are the most common cause of poor quality software, the Software Evaluation:
following concerns must be considered at the beginning of
software development: Those planning to purchase a software application need do
some homework before purchasing to avoid or reduce the risk
1. Gathering and verifying the description of software of wasting money. The following is a check list for evaluating
behavior the software.
Software is built to meet the needs of someone other than the
developers. Software behavior must be planned carefully Guidelines for Evaluating Software
before the software is built. The process is finished by - Develop a clear statement of the business requirements
requirement engineering. Software requirements engineering and specifications; ensure that the software meets all
is the art and science of developing an accurate and complete important business requirements and specifications;
definition of the software behavior that can serves as the basis - Define and prioritize the software product quality
for development10. Following are several aspects to be requirements, such as reliability, performance,
considered: adaptability and so forth.
- Characterize most professionals’ views of the process by - Review the software specifications to see if they satisfy
interviewing users, observing user’s work and discussing the quality requirements.
with users - Examine the features and functions of the software;
- Understand the business rules and domain knowledge determine which functions and specifications are essential
required of the process. A walking-through example in a and which are unnecessary, compare the essential
tutorial is very helpful to a user, and it requires a good functions among different vendors.
understanding of the domain knowledge and the business - Make sure that the software structure design is easy to
process. Understanding the domain knowledge in that extend components/modules if needed in the future.
particular field and the business process help the - Ensure the software has an easy-to-follow users’ guide or
developers anticipate the users’ future needs in the online tutorial for learning. An interface design that is
software. similar to existing software is familiar to users, and it will
reduce the time of learning the software.
- Obtain a trial version of the software since most software
vendors provide the services to prospective customers;
SPE 110642 5

make sure adequate tests are done for a wider-range of References


data import to see if the software supports your usual use
data type/format. 1. Wheeler, D. A.: “The Most Important Software
- Check the technical supports including business Innovations”,
technology and IT support, and make sure that are http://www.dwheeler.com/innovation/innovation.html
available and easy to access without too much hassle. 2. Leffingwoll, D., Widering, D.: Managing Software
Requirements, second edition, Addison Wesley
Conclusion: 3. Laplante, P. A.: What Every Engineer should know About
Software Engineering, CRC Press
1. Software quality depends on the software architecture 4. Architecture Software Quality Attributes,
design and the process of building the software. http://www.gepdevalk.nl/software-
2. The structure of the software application determines development/architecture.html Software
whether the legacy code in an existing program can be 5. Implementing System-Quality Attributes,
reserved for expanding the functions of the future http://msdn2.microsoft.com/EN-
application. US/library/bb402962.aspx
3. Software usability is affected by the software developer’s 6. Exploring Attributes for Systems Architecture Evaluation,
knowledge of the particular domain area, and by http://www.stevens.edu/ses/seem/fileadmin/seem/Proceed
understanding the prospective user’s work practice and ings_PDF/25.pdf
business process. 7. Shore, J.: “Quality with a Name,”
4. Evaluating software before purchasing reduces the risk of www.jamesshore.com/Articles/Quality-with-a-Name.html
making a costly decision. Given the guidelines in the 8. Poppendieck, M., Poppendieck, T.: Implementing Lean
paper assist the project manager to make a check list to Software Development, Addison-Wesley
determine if the software fit their needs. 9. Legacy Code Analysis,
www.aivosto.com/vbtips/legacycode.html
Acknowledgements 10. Stellman, A., Greene, J.: Applied Software Project
Management, O’REILLY
The authors would like to thank the management of BJ 11. Human-Computer Interaction,
Services Company for their permissions to prepare and present http://en.wikipedia.org/wiki/Human-computer_interaction
this paper. 12. Rozanski, N., Woods, E.: Software System Architectue,
Addison Wesley

Fig. 1 Software System Architecture Definition 12

6. Evaluate Architecture with Others


1. Consolidate Inputs

Acceptable
2. Identify Scenarios

Not acceptable
3. Identify Relevant Architectural System

4. Produce Candidate Architecture 7A. Rework Architecture 7B. Review Requirements

5. Explore Architectural Option

You might also like