Professional Documents
Culture Documents
When dependency on software and computers became more important, software grew in size and
became a necessity for businesses and users all over the world. In the last 30 years, we have seen
an unparalleled explosion in the amount of software produced and used by our modern society.
There is now a need to set concrete objectives (or functional requirements), predict necessary
resources (like cost estimates) to attain those objectives, and manage customers' expectations.
As you review the material in this unit, compare and contrast software engineering with
computer science. These two disciplines are closely related, but they have some differences. As
you work through this unit, spend some time reviewing the three commonly used methodologies
in software engineering: data-oriented, process-oriented, and object-oriented. You will the
central theme of these three methodologies repeated in software requirements and analysis as
well as software design.
Discussion
as the informal contemporary term for the broad range of activities that were formerly
called computer programming and systems analysis;
as the broad term for all aspects of the practice of computer programming, as opposed to
the theory of computer programming, which is formally studied as a sub-discipline
of computer science;
as the term embodying the advocacy of a specific approach to computer programming,
one that urges that it be treated as an engineering discipline rather than an art or a craft, and
advocates the codification of recommended practices.
Software engineering applies the standards and principles of engineering to design, develop,
maintain, test and evaluate computer software. A software engineer may also be referred to as a
computer programmer, software designer or software developer as the nature of software
engineering can require knowledge of programming languages, principles of software design and
building.
Computer science encompasses the study of computers and computational systems. Computer
scientists may generally theorize and calculate aspects of software and software systems in the
design and development phases.
Additionally, computer scientists may study and work in areas of the field that focus on artificial
and machine intelligence, computer networks, security networks and monitoring systems,
database systems, user interaction, mathematical analysis, programming languages and theories
regarding computing and processes. While computer scientists may also study principles of
software engineering, this field of study is typically the only shared characteristic between
computer science and software engineering.
Key differences between computer science and software engineering
Even though there may be some shared qualities between computer science and software
engineering, there are a variety of key differences that make these two career fields separate from
one another. One of the biggest differences lies in the roles of these two positions. While
software engineers might develop, build, test and evaluate software and its applications,
computer scientists use computer languages, statistics and other mathematics to theorize on the
most effective ways to develop, program and apply software. The following aspects are other
ways that these two professions differ:
APPLICATIONS
Software engineering is the building of applications. An application is the set of programs2 that
automate some business task. Businesses are made up of functions such as marketing,
accounting, manufacturing, and personnel. Each function can be divided into work processes for
which it is responsible. For instance, marketing is responsible for sales, advertising, and new
product development. Each process can be separated into its specific tasks. Sales, for instance,
requires maintaining customer relations, order processing, and customer service. Applications
could support each task individually. Conversely, one marketing application could perform all
tasks, integrating the information they have in common. All applications have some common and
some unique features. One problem is that there is no agreed upon way to discuss these
similarities and differences. In this book, we present three dimensions of applications to simplify
and clarify this discussion. The dimensions of applications are characteristics, responsiveness,
and type. Characteristics are common to all applications and include data, processes, constraints,
and interfaces. The section on application characteristics is first and should be a review.
Responsiveness defines the underlying time orientation of the application as batch, on-line, or
real-time. By knowing the time orientation of an application, we can define minimal technology
required to support the application. Type defines the business orientation of the application as
transactional, query, decision, or intelligent.
Application Characteristics
This section is about shared characteristics of applications: data, processes, constraints, and
interfaces).
All applications:
(1) act on data and require data input, output, storage and retrieval;
(2) imbed commands that transform data from one state to another state based on and constrained
by 2 A program is composed of instructions that perform some well-defined task. Sometimes
there are many tasks, composed of millions of instructions in an application. When there are
many tasks, they are split into programs. This decomposition into subtasks which relate to
programs is one topic in the chapters on application design. Applications 5 business rules; and
(3) have some human interfaces and may have one or more computer interfaces. Application
types vary in the extent to which these characteristics are known, defined, and understood. Each
of the characteristics is discussed below. Since this is review, if you can define the terms in bold
print, you might skip to the next section: Application Responsiveness.
Application Responsiveness
Application responsiveness is how long it takes the system to act on and respond to user actions.
Responsiveness of an application reflects the fundamental design approach as batch-oriented, on-
line, or real-time. Each of these approaches is defined in this section. Of course, in the real
world, any combination or permutation of these approaches are used in building applications.
Most applications designed in the 1990s are on-line with some batch processing. In the 21st
century, on-line applications will give way to more real-time applications.
Types of Applications
There are four types of business applications: transaction, data analysis, decision support, and
expert applications. Today, all four types are usually online although the application may use any
(or all) of the responsiveness types, even on a single application. In addition, a fifth type of
application: embedded, is defined briefly to distinguish computer science-software engineering
from IS-software engineering.
1. Transaction-oriented applications, also known as transaction processing systems
(TPS), support the day-to-day operation of a business and include order processing,
inventory management, budgeting, purchasing, payables, accounting, receivables,
payroll, and personnel. They are characterized as applications for which the requirements,
the data, and the processing are generally known and wellstructured.6 By known, we
mean that the function is repetitious, familiar and unambiguous. By well structured, we
mean that the problem is able to be defined completely and without ambiguity. The
requirements are identifiable by a development team.
2. Data analysis applications support problem solving using data that are accessible only
in read-only mode. Data analysis applications are also known as query applications. A
query is some question asked of the data. SQL, the standard query language for database
access, poses questions in such a way that the user asks what is desired but need not
know how to get it. The computer software figures out the optimal access and processing
methods, and performs the operations it selects.
3. Decision support applications (DSS) seek to identify and solve problems. The
difference between decision support and query applications is that query applications are
used by professionals and managers to select and summarize historical data like the
example above, while DSSs are used by professionals and managers to perform what-if
analysis, identify trends, or perform mathematical/statistical analysis of data to solve
unstructured problems. Data for DSSs usually are generated by transaction applications.
Unstructured problems are ones for which not all information is known,
and if it is known, the users may not know all of the relationships between
data. An example of a structured problem is to answer the question: "What
is the cost of a 5% salary increase?"
Executive information systems (EIS) are a spinoff from DSS. EIS
applications support executive decision making and provide automated
environmental scanning capabilities.
Group decision support systems (GDSS) are a special type of DSS
applications. GDSS provide an historical memory of the decision process
in support of groups of decision makers who might be geographically
dispersed.
4. Expert systems applications (ES) are computer applications that automate the
knowledge and reasoning capabilities of one or more experts in a specific domain. ESs
analyze characteristics of a situation to give advice, recommend actions, or draw
conclusions by following automated reasoning processes. The four major components of
an ES are knowledge acquisition subsystem, the knowledge base, the inference engine (or
rule base as it is sometimes called), and explanation subsystem. Each of these
components are briefly explained here.
Software Quality
Quality models According to Wallmüller (1994) "one of the oldest and most frequently applied
[software quality] models is that of McCall et al. (1979). Other models such as that of Murine &
Carpenter (1984) or that of NEC (Azuma 1987) are derived from it. McCall's model is used in
the United States for very large projects in the military, space and public domain. It was
developed in 1976-7 by the US Airforce Electronic System Division (ESD), the Rome Air
Development Centre (RADC) and General Electric (GE) with the aim of improving the quality
of software products. One explicit aim was to make quality measurable. McCall started with a
volume of 55 quality characteristics which have an important influence on quality, and called
them "factors". For reasons of simplicity, McCall then reduced the number of characteristics to
the following eleven:
efficiency
integrity
reliability
usability
accuracy
maintainability
testability
flexibility
interface
facility
re-usability
transferability
". A second set of quality factors was defined by Boëhm (1978). Authors, too, have added to
McCall's original list to reflect recent thinking. Ghezzi et al. (1991) list sixteen factors. A full list
of both models is set out in table 2.1 Much has happened on the technology front since 1977 and
many authors have redefined some of the eleven factors while others have added even more to
better reflect recent advances in the technology. One commercial model taking this approach is
the SPARDAT quality model from Germany which classifies three significant characteristics -
applicability, maintainability and 8 adaptability. These characteristics are further sub-divided
giving twenty quality factors in all. This model was created for software development in the
banking environment.
By chance I have read this nice classical document any honest engineer must keep in mind. It
was written by the ACM (Association for Computing Machinery) on software engineering ethics
but I am afraid it can be extended to many other professional practices.
1. PUBLIC - Software engineers shall act consistently with the public interest.
2. CLIENT AND EMPLOYER - Software engineers shall act in a manner that is in the best
interests of their client and employer consistent with the public interest.
3. PRODUCT - Software engineers shall ensure that their products and related modifications
meet the highest professional standards possible.
4. JUDGMENT - Software engineers shall maintain integrity and independence in their
professional judgment.
5. MANAGEMENT - Software engineering managers and leaders shall subscribe to and
promote an ethical approach to the management of software development and maintenance.
6. PROFESSION - Software engineers shall advance the integrity and reputation of the
profession consistent with the public interest.
7. COLLEAGUES - Software engineers shall be fair to and supportive of their colleagues.
8. SELF - Software engineers shall participate in lifelong learning regarding the practice of their
profession and shall promote an ethical approach to the practice of the profession.
Activity
1. Define the following terms:
application characteristics
batch application
constraint
data methodology
meta-data object
on-line application
project life cycle
proto typing
real-time application
semantic methodology
time constraint
unstructured problem validation
2. Define how each methodology’s history is affected by technology.
3. What are the four application types and how do they differ?
4. What are the subtypes of decision support systems? How do they differ?
5. What is computer-aided software engineering?
6. What is an application?
7. How do real-time and on-line applications differ?
8. What is the range of artificial intelligence applications? What area do most expert systems
cover today?
9. What is the starting point for analysis in a process methodology? for a data methodology?
10. Why is it important to know the orientation of a methodology?
11. If most companies do not use methodologies, why should you learn how to use them?
12. Is some methodology better than none? Is some life cycle better than none? Discuss the
pros and cons of using and not using methodologies and life cycles.
13. What are the components of a feasibility study? What type of analysis is performed for
each?
14. What are the phases of a sequential development life cycle? How do they vary when you
use prototyping?
15. What are the five types of constraints? Give an example of each.
Exercises
1. Develop a table of application characteristics down the rows in the first column, and the
application responsiveness levels across the columns. How does each application
characteristic differ for each level of responsiveness?
2. Develop a table of application characteristics down the rows in the first column, and the
methodology classes across the columns. Begin to develop a comparative table of the way
each methodology prescribes documenting the requirements for each application
characteristic. You will not be able to complete the table at this point.
Suggested Readings
The Scientific World Journal: Isabel M. del Águila et al.'s "Milestones in Software
Engineering and Knowledge Engineering History"URL