Professional Documents
Culture Documents
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
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
Acceptable
2. Identify Scenarios
Not acceptable
3. Identify Relevant Architectural System