You are on page 1of 41

1

INTRODUCTION TO
SOFTWARE ENGINEERING
SOFTWARE SYSTEMS

• Abstract and Intangible


• Different Types of Software Systems
SOFTWARE FAILURES

Failure to use
Increasing System
Software Engineering
Complexity Methods
PROFESSIONAL SOFTWARE
DEVELOPMENT

• Software engineering is intended to support professional


software development, rather than individual programming.
What is software?
A PROFESSIONALLY DEVELOPED
SOFTWARE SYSTEM IS …

• Often more than a single program. Consist of


several separate programs and configuration
files that are used to set up these programs
• Includes all associated documentation, libraries,
support websites, and configuration data that
are needed to make these programs useful.
PROFESSIONAL VS AMATEUR

• Writing for others/yourself • Writing for yourself


• others/yourself will use it • No one else will use it
• others/yourself will modify it • No one else will modify it
• Need to worry about writing • Don’t have to worry about
program guides, writing program guides,
documenting the program documenting the program
design, etc. design, etc.

? ?
To whom we
make software?
KINDS OF SOFTWARE PRODUCTS

• For Generic Products, the


organization that develops the
software, controls the software
specification.
• For Custom Products, the
specification is usually developed
and controlled by the
organization that is buying the
software. The software
developers must work to that
specification.
GENERIC SOFTWARE PRODUCTS

• Sold on the open market to any customer who is able to


buy them.
• Examples
• apps for mobile devices,
• software for PCs such as databases, word processors,
drawing packages, and project management tools.
• “vertical” applications: designed for a specific market.
Examples
• library information systems, accounting systems, or
systems for maintaining dental records.
CUSTOMIZED SOFTWARE
PRODUCTS

• These are systems that are commissioned by


and developed for a particular customer.
• A software contractor designs and implements
the software especially for that customer.
• Examples
• control systems for electronic devices,
• systems written to support a particular
business process,
• air traffic control systems.
GENERIC + CUSTOM FEATURES

• Generic product as a base, which is then


adapted to suit the requirements of a
customer.
• Example
• Enterprise Resource Planning (ERP) systems,
from SAP and Oracle
DIFFERENT TYPES OF
APPLICATIONS

Interactive
Stand-alone Transaction- Embedded Batch Processing
Applications based Control Systems Systems
Applications

Systems for Data Collection


Entertainment Systems of
Modeling and and Analysis
Systems Systems
Simulation Systems

Etc…
TRUE OR FALSE ?

• If you develop a game for a phone, you have to take into


account the same constraints (power, hardware interaction) as
the developers of the phone software. [T/F]
• Batch processing systems cannot be used in conjunction with
web-based transaction systems. [T/F]
• For example, in a company, travel expense claims may be submitted
through a web application but processed in a batch application for
monthly payment.
What are the best software
engineering techniques
and methods?
EMBEDDED CONTROL SYSTEM:
AUTOBRAKE SYSTEM IN A CAR

• Safety-critical
• Needs extensive verification and validation
• Also with that the chances of having to recall cars after sale to fix software
problems are minimized.
• Burned into ROM (read-only memory) when installed in the vehicle.
• It is therefore very expensive to change.
• User interaction is minimal (or perhaps nonexistent),
• no need to use a development process that relies on user interface
prototyping.
INTERACTIVE WEB-BASED SYSTEM
OR APP:
ORDERING SYSTEM FOR A
RESTAURANT
• Iterative development and delivery is the best approach,
• System should composed of reusable components.
SYSTEM OF SYSTEMS:
BANKING SYSTEM

• Detailed specifications of the system interactions have to be


specified in advance.
• Each system can be separately developed
What are the attributes of
good software?
ESSENTIAL ATTRIBUTES OF GOOD
SOFTWARE

Ian Sommerville
Air Traffic Control
System
Reliable
Res
pon
sive
Interactive Game
afety
S

Telephone
Switching System
QUALITY OF PROFESSIONAL
SOFTWARE

• Quality is not just concerned with what the software does.


• It also concerned the structure and organization of the system
programs as well as associated documentation.
• Furthermore it concerned the processes used in preparing
those artifacts.
What is software
engineering?
SOFTWARE ENGINEERING

Software engineering is an engineering discipline


that is concerned with
all aspects of software production
from the early stages of
system specification through to
maintaining the system after it has gone into use.
SOFTWARE ENGINEERING IS
ENGINEERING

• Software engineers adopt a systematic


and organized approach to their work.
• People writing programs for
themselves can spend as much time as
Scope
they wish on the program
development, but in professional
software development you cannot. Quality
• Engineering is all about selecting the
most appropriate approach for a set of
Cost Time
circumstances.
WHY SOFTWARE ENGINEERING IS
IMPORTANT?

1. We need to be able to produce reliable and trustworthy


systems economically and quickly.
2. The majority of costs are the costs of changing the software
after it has gone into use.
What are the fundamental software
engineering activities?
SOFTWARE PROCESS

• The systematic approach that is used in software engineering.

Software Software
Specification Validation

Software Software
Development Evolution
What is the difference between
software engineering and
computer science?

What is the difference between


software engineering and
system engineering?
SOFTWARE ENGINEERING VS
COMPUTER SCIENCE VS SYSTEMS
ENGINEERING
• Concerned with all
aspects of the
development and
evolution of complex • Concerned with the
• Concerned with the practical problems
theories and systems where software
plays a major role. of producing
methods that software
underlie computers • Concerned with
and software hardware development,
systems policy and process ?
design, and system
deployment, as well as Some knowledge of
? software engineering. computer science is
essential for software
? engineers.
What are the key challenges facing
software engineering?
GENERAL ISSUES (CHALLENGES)
RELATED TO ALL TYPES OF
SOFTWARE

Heterogeneity

Business and Social Change

Security and Trust

Scale
What differences has the Web
made to software engineering?
IMPACT OF THE WEB AND WEB
BROWSERS

• Initially, the web was primarily a universally accessible


information store, and it had little effect on software systems.
(WEB 1.0)
• Around 2000, the web started to evolve, and more and more
functionality was added to browsers. (WEB 2.0)
• Development of web browsers that could run small programs,
do some local processing, interact with users, led to an
evolution in business and organizational software.
WEB BASED SYSTEMS

• Web-based systems could be accessed using a web browser


instead of a special-purpose user interface.
• Instead of writing software and deploying it on users’ PCs, the
software is deployed on a web server.
• cheaper to change and upgrade the software, as there was no need
to install the software on every PC.
SOFTWARE AS A SERVICE

• Proposed early in the 21st century and now become the


standard approach to the delivery of web-based system
products such as Google Apps, Microsoft Office 365, and
Adobe Creative Suite.
• Users do not buy software but pay according to how much the
software is used (subscription fee) or are given free access in
return for watching adverts that are displayed on their screen.
CLOUD COMPUTING: SaaS

• Software runs on remote “clouds” instead of local servers and


is accessed over the Internet.
• If you use services such as web based mail, storage, or video,
you are using a cloud-based system.
BUSINESS APPLICATIONS:

THEN (BEFORE WEB) NOW


• Monolithic (self-contained, • Highly distributed, sometimes
designed without modularity, across the world.
single-tiered in which the user • Not programmed from scratch
interface and data access code
but involve extensive reuse of
are combined into a single
components and programs.
program.)
• Single programs running on single
computers or computer clusters.
• Communications were local,
within an organization
GOOD SOFTWARE DEVELOPMENT
PRACTICES
FOR WEB-BASED SYSTEMS
• Software reuse
• Develop and delivered incrementally
• RIA (Rich Internet Applications) supported technology usage
(HTML5)
SOFTWARE ENGINEERING
FUNDAMENTALS

Process Dependability

Requirements Management
Thank You!

Reference:
Ian Sommerville, Software Engineering,
10th Edition, Addison-Wesley Publishing,
Pearson Education

You might also like