You are on page 1of 19

Chapter 1

Software Engineering: A Practitioners Approach


Roger Pressman & Bruce Maxim

Sources:
Prescribed textbook by Pressman & Maxim
Wikipedia
Slides by Ankit Tanna (Google Drive)
Slides by Roger Pressman
What is Software?
Software is a product
Transforms information - produces, manages,
acquires, modifies, displays, or transmits information
Delivers computing potential of hardware and
networks
Software is a vehicle for delivering a product
Controls other programs (operating system)
Effects communications (networking software)
Helps build other software (software tools &
environments)

These slides are designed to accompany Software Engineering: A Practitioners Approach, 8/e (McGraw-Hill 2014). Slides copyright
2014 by Roger Pressman.
What is Software?
Software is:
(1) instructions (computer programs) that
when executed provide desired features,
function, and performance;
(2) data structures that enable the programs
to adequately manipulate information and
(3) documentation that describes the
operation and use of the programs.

These slides are designed to accompany Software Engineering: A Practitioners Approach, 8/e (McGraw-Hill 2014). Slides copyright
6
2014 by Roger Pressman.
Characteristics of Software
Software is developed or engineered, it is not
manufactured in the classical sense.
Software doesn't "wear out."
Although the industry is moving toward
component-based construction, most
software continues to be custom-built.

These slides are designed to accompany Software Engineering: A Practitioners Approach, 8/e (McGraw-Hill 2014). Slides copyright
7
2014 by Roger Pressman.
Manufacturing vs. Development
Once a hardware product has been manufactured, it is
difficult or impossible to modify. In contrast, software
products are routinely modified and upgraded.
In hardware, hiring more people allows you to
accomplish more work, but the same does not
necessarily hold true in software engineering.
Unlike hardware, software costs are concentrated in
design rather than production.

What impact does the latter have on the project


management of software?
Failure curve for Hardware

These slides are designed to accompany Software Engineering: A Practitioners Approach, 8/e (McGraw-Hill 2014). Slides copyright
2014 by Roger Pressman.
Failure curve for Software

These slides are designed to accompany Software Engineering: A Practitioners Approach, 8/e (McGraw-Hill 2014). Slides copyright
10
2014 by Roger Pressman.
Wear vs. Deterioration

When a hardware component wears out,


it is replaced by a spare part.

There are no software spare parts. Every


software failure indicates an error in design
or in the process through which design was
translated into machine executable code.
Therefore, software maintenance is more
complexity
Component Based vs. Custom Built
Hardware products typically employ many
standardized design components.
Most software continues to be custom built.
The software industry does seem to be
moving (slowly) toward component-based
construction.
Software Applications
System software
Application software
Engineering/scientific software
Embedded software
Product-line software
Web applications
Mobile applications
AI software
These slides are designed to accompany Software Engineering: A Practitioners Approach, 8/e (McGraw-Hill 2014). Slides copyright
2014 by Roger Pressman.
System Software:
System software is a collection of programs written to service other
programs.
It is characterized by heavy interaction with computer hardware; heavy usage
by multiple users; concurrent operation that requires scheduling, resource
sharing, and sophisticated process management; complex data structures;
and multiple external interfaces.
Eg. Compilers, operating system, drivers etc.
Application Software :
Application software consists of standalone programs that solve a specific
business need.
Application software is used to control the business function in real-time.
Engineering /Scientific software:
Characterized by "number crunching" algorithms.
Applications range from astronomy to volcano logy, from automotive stress
analysis to space shuttle orbital dynamics, and from molecular biology to
automated manufacturing.
Eg. Computer Aided Design (CAD), system stimulation etc.
Embedded Software:
It resides in read-only memory and is used to control products and systems
Embedded software can perform limited and esoteric functions.
Eg. keypad control for a microwave oven.
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.
Eg. Word processing, spreadsheet, CG, multimedia, etc.
Web Applications:
Web apps can be little more than a set of linked hypertext files.
It evolving into sophisticated computing environments that not only provide
standalone features, functions but also integrated with corporate database
and business applications.
Artificial Intelligence software
AI software makes use of non-numerical algorithms to solve complex
problems that are not amenable to computation or straightforward analysis
Eg. Robotics, expert system, game playing, etc.
Legacy Software
Why must it change?
software must be adapted to meet the needs of
new computing environments or technology.
software must be enhanced to implement new
business requirements.
software must be extended to make it
interoperable with other more modern systems
or databases.
software must be re-architected to make it
viable within a network environment.
These slides are designed to accompany Software Engineering: A Practitioners Approach, 8/e (McGraw-Hill 2014). Slides copyright
2014 by Roger Pressman.
Changing nature of Software
WebApps
From information presentation to application
Mobile Apps
What does not happen on a mobile device?
Cloud computing
Product line software
Open sourcefree source code open to the
computing community.

17
WebApps
Modern WebApps are much more than hypertext files
with a few pictures
WebApps are augmented with tools like XML and Java
to allow Web engineers including interactive computing
capability
WebApps may standalone capability to end users or may
be integrated with corporate databases and business
applications
Semantic web technologies (Web 3.0) have evolved into
sophisticated corporate and consumer applications that
encompass semantic databases that require web linking,
flexible data representation, and application programmer
interfaces (APIs) for access
The aesthetic nature of the content remains an important
determinant of the quality of a WebApp.
These slides are designed to accompany Software Engineering: A Practitioners Approach, 8/e (McGraw-Hill 2014). Slides copyright
18
2014 by Roger Pressman.
Mobile Apps
Reside on mobile platforms such as cell phones or tablets
Contain user interfaces that take both device characteristics
and location attributes
Often provide access to a combination of web-based resources
and local device processing and storage capabilities
Provide persistent storage capabilities within the platform
A mobile web application allows a mobile device to access to
web-based content using a browser designed to accommodate
the strengths and weaknesses of the mobile platform
A mobile app can gain direct access to the hardware found on
the device to provide local processing and storage capabilities
As time passes these differences will become blurred

These slides are designed to accompany Software Engineering: A Practitioners Approach, 8/e (McGraw-Hill 2014). Slides copyright
2014 by Roger Pressman. 19
Cloud Computing
Cloud computing provides distributed data storage and
processing resources to networked computing devices
Computing resources reside outside the cloud and have access
to a variety of resources inside the cloud
Cloud computing requires developing an architecture
containing both frontend and backend services
Frontend services include the client devices and application
software to allow access
Backend services include servers, data storage, and server-
resident applications
Cloud architectures can be segmented to restrict access to
private data

These slides are designed to accompany Software Engineering: A Practitioners Approach, 8/e (McGraw-Hill 2014). Slides copyright
20
2014 by Roger Pressman.
These slides are designed to accompany Software Engineering: A Practitioners Approach, 8/e (McGraw-Hill 2014). Slides copyright
21
2014 by Roger Pressman.
Product Line Software
Product line software is a set of software-intensive systems
that share a common set of features and satisfy the needs of a
particular market
These software products are developed using the same
application and data architectures using a common core of
reusable software components
A software product line shares a set of assets that include
requirements, architecture, design patterns, reusable
components, test cases, and other work products
A software product line allow in the development of many
products that are engineered by capitalizing on the
commonality among all products with in the product line

These slides are designed to accompany Software Engineering: A Practitioners Approach, 8/e (McGraw-Hill 2014). Slides copyright
22
2014 by Roger Pressman.

You might also like