0% found this document useful (0 votes)
22 views5 pages

SE&PM - Module 1 - Amos R

Uploaded by

Amos
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
22 views5 pages

SE&PM - Module 1 - Amos R

Uploaded by

Amos
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 5

Module 1

Software and Software Engineering

Topics Covered:

 The nature of Software


 The unique nature of WebApps
 Software Engineering
 The software Process
 The software Engineering practice
 The software myths
 How it all starts?

1. The nature of Software:


Software acts as the basis for the control of the computer (operating systems), the
communication of information (networks), and the creation and control of other programs
(software tools and environments).
Software delivers the most important product of our time—information. It
transforms personal data (e.g., an individual’s financial transactions) so that the data can
be more useful in a local context; it manages business information to enhance
competitiveness; it provides a gateway to worldwide information networks (e.g., the
Internet), and provides the means for acquiring information in all of its forms.
Today, a huge software industry has become a dominant factor in the economies
of the industrialized world. Teams of software specialists, each focusing on one part of
the technology required to deliver a complex application, have replaced the lone
programmer of an earlier era. And yet, the questions that were asked of the lone
programmer are the same questions that are asked when modern computer-based systems
are built:
 Why does it take so long to get software finished?
 Why are development costs so high?
 Why can’t we find all errors before we give the software to our customers?
 Why do we spend so much time and effort maintaining existing programs?
 Why do we continue to have difficulty in measuring progress as software is being
developed and maintained?
1.1 Defining Software:
Software is:

a) Instructions (computer programs) that when executed provide desired features,


function, and performance;
b) Data structures that enable the programs to adequately manipulate information, and
c) Descriptive information in both hard copy and virtual forms that describes the
operation and use of the programs.

Software is a logical rather than a physical system element. Therefore, software has
characteristics that are considerably different than those of hardware:

 Software is developed or engineered; it is not manufactured in the classical


sense:
Although some similarities exist between software development and hardware
manufacturing, the two activities are fundamentally different. In both activities, high
quality is achieved through good design, but the manufacturing phase for hardware
can introduce quality problems that are nonexistent (or easily corrected) for software.
Both activities are dependent on people, but the relationship between people applied
and work accomplished is entirely different (see Chapter 24). Both activities require
the construction of a “product,” but the approaches are different. Software costs are
concentrated in engineering. This means that software projects cannot be managed as
if they were manufacturing projects.

 Software doesn’t “wear out.”

The relationship, often called the “bathtub curve,” indicates that hardware exhibits
relatively high failure rates early in its life (these failures are often attributable to
design or manufacturing defects); defects are corrected and the failure rate drops to a
steady-state level (hopefully, quite low) for some period of time.
Software is not susceptible to the environmental maladies that cause hardware to
wear out. In theory, therefore, the failure rate curve for software should take the form
of the “idealized curve” shown in figure below.

 Although the industry is moving toward component-based construction, most


software continues to be custom built:

As an engineering discipline evolves, a collection of standard design components


is created. Standard screws and off-the-shelf integrated circuits are only two of
thousands of standard components that are used by mechanical and electrical
engineers as they design new systems. The reusable components have been created
so that the engineer can concentrate on the truly innovative elements of a design, that
is, the parts of the design that represent something new. In the hardware world,
component reuse is a natural part of the engineering process. In the software world, it
is something that has only begun to be achieved on a broad scale.

A software component should be designed and implemented so that it can be


reused in many different programs. Modern reusable components encapsulate both
data and the processing that is applied to the data, enabling the software engineer to
create new applications from reusable parts.
1.2 Software Application Domains:
Today, seven broad categories of computer software present continuing challenges for
software engineers:

a) System software: A collection of programs written to service other programs.


Some system software (e.g., compilers, editors, and file management utilities)
processes complex, but determinate, information structures.

b) Application software: Stand-alone programs that solve a specific business need.


Applications in this area process business or technical data in a way that
facilitates business operations or management/technical decision making. In
addition to conventional data processing applications, application software is used
to control business functions in real time (e.g., point-of-sale transaction
processing, real-time manufacturing process control).

c) Engineering/scientific software - has been characterized by “number crunching”


algorithms. Applications range from astronomy to volcanology, from automotive
stress analysis to space shuttle orbital dynamics, and from molecular biology to
automated manufacturing.

d) Embedded software—resides within a product or system and is used to


implement and control features and functions for the end user and for the system
itself. Embedded software can perform limited and esoteric functions (e.g., key
pad control for a microwave oven) or provide significant function and control
capability (e.g., digital functions in an automobile such as fuel control, dashboard
displays, and braking systems).

e) Product-line software—designed to provide a specific capability for use by


many different customers. Product-line software can focus on a limited and
esoteric marketplace (e.g., inventory control products) or address mass consumer
markets (e.g., word processing, spreadsheets, computer graphics, multimedia,
entertainment, database management, and personal and business financial
applications).
f) Web applications — called “WebApps,” this network-centric software category
spans a wide array of applications. In their simplest form, WebApps can be little
more than a set of linked hypertext files that present information using text and
limited graphics. However, as Web 2.0 emerges, WebApps are evolving into
sophisticated computing environments that not only provide stand-alone features,
computing functions, and content to the end user, but also are integrated with
corporate databases and business applications.
g) Artificial intelligence software—makes use of non-numerical algorithms to
solve complex problems that are not amenable to computation or straightforward
analysis. Applications within this area include robotics, expert systems, pattern
recognition (image and voice), artificial neural networks, theorem proving, and
game playing.

1.3 asdf
2. The unique nature of WebApps:
3. Software Engineering:
4. The software Process:
5. The software Engineering practice:
6. The software myths:
7. How it all starts?

You might also like