You are on page 1of 27

SOFTWARE ENGINEERING

PROF. DR. AMANY SARHAN

2022
۱
SOFTWARE INDUSTRY

• Revenue in the Software market is projected to reach


US$ 626,451 m in 2022.
• The market's largest segment is Enterprise Software
with a projected market volume of US$ 250,286 m in
2022.
• Revenue is expected to show an annual growth rate
(CAGR 2022-2026) of 7.12%, resulting in a market
volume of US$ 824,848m by 2026.
• In global comparison, most revenue will be generated
in the United States (US$313,740m in 2022).
۲
REGIONAL SOFTWARE INDUSTRY ANALYSIS
• The global software engineering market, based on region, has
been segmented into North America, Europe, Asia-Pacific, and rest
of the world.
• North America accounted for the largest market share of 40.3% in
2016. Increase by10.42% CAGR during the forecast period.
• Europe was the second-largest market in 2016 and growing with a
CAGR of 12.58%. The growth is driven by the early adoption of
cloud-based software engineering. Key players in the region such
as Autodesk Inc., Bentley Systems, Inc., and IBM Corporation by
developing various software such as CAD, CAM, and others.
• However, Asia-Pacific is expected to be the fastest-growing market
during the forecast period growing with 13.32% CAGR.
۳
٤
DIGITAL TRANSFORMATION EFFECT

• Companies’ digital transformation in general drives


investments in software segments.
• Especially software that focuses on digitization and
process automation as well as data analytics to gain
more business insights and efficiency is in demand.
• As a result of market speed and volatility, software
investments are increasingly shifted to the cloud, to be
more flexible and independent.
• The shift from software deployment on premises to
software-as-a-service is increasingly relevant and a
topic that a lot of companies will deal with in the
coming years.
٥
٦
۷
COURSE OVERALL AIMS

• We assume that you are technically proficient.


• You know a good deal about computing, can program
reasonably, can learn more on the job.
• But success or failure in software development depends on
many factors beyond writing good code. !!!!!!!!
• When you leave Tanta Univ., you are going to work on
production projects where success or failure may cost
millions of dollars.
• Soon you may be in charge. It may be your money.
• We want you to make your mistakes now and learn from
your mistakes.
۸
INTRODUCTION
What is software?

• A program is a number of programming language lines of code


that performs certain task(s). Only one programmer can design,
implement and test the program.

• A software is large complicated program with hundreds of lines of


code. It needs the cooperation of many individuals to create a SW:
Analysts, designers, programmers, testers, maintenance
engineers, and others. A SW engineer is required for organization.

• SW: Computer program and associated documentation


۹
WHAT IS SOFTWARE?

• Software products may be developed for a


particular customer or may be developed for a
general market

• Software products may be:


• Generic - developed to be sold to a range of different
customers

• Bespoke (custom) - developed for a single customer


according to their specification
۱۰
COURSE THEME: VARIETY

• Software products are very varied


• Applications: web, smartphone
• System software: operating systems, compilers
• Communications: routers, telephone switches
• Data processing: telephone billing, pensions
• Real time: air traffic control
• Embedded software: device drivers, controllers
• Mobile devices: digital camera, GPS, sensors
• Information systems: databases, digital libraries
• Offices: word processing, video conferences
• Scientific: simulations, weather forecasting
• Graphical: film making, design
• etc., etc., etc., ....
۱۱
DIFFERENCE BETWEEN SOFTWARE ENGINEERING
AND SYSTEM ENGINEERING

• System engineering is concerned with all aspects of


computer-based systems development including:
hardware, software and process engineering.
• Software engineering is part of this process.

• System engineers are involved in system specification,


architectural design, integration and deployment

۱۲
SW CRISIS

• After the appearance of the new generation of


computers (50’s) with higher speed.

• Program Scaling: adding new lines to the same


program to add new functions.

• Errors found, and program crash.

• Possible sources of error: reusing the names of


the variables and functions, hard to tract the
sequence of the data flow inside program,…

۱۳
SOFTWARE ENGINEERING

• Software engineering is an engineering discipline


which is concerned with all aspects of software
production.

• It is the science concerned with building large and


complicated SW systems in a cost effective way.

• It is the application of systematic, disciplined


approach for development, operation and
maintenance of SW.
۱٤
SOFTWARE ENGINEER

• Software Engineer (SWE) is the person responsible for


organizing the work of the group of persons whom will
build the SW.

• Software engineers must have:


• Technical aspects: (programming, mathematics,
maintenance, test, analysis)
• Non technical aspects: (communication ability both
oral and written, management, personality, ….)

۱٥
THE CRAFT OF SOFTWARE DEVELOPMENT

• Software products are very varied


• Client requirements are very different
• There is no standard process for software engineering
• There is no best language, operating system, platform,
database system, development environment, etc.

• A skilled software developer knows about a wide


variety of approaches, methods, tools.
• The craft of software development is to select
appropriate methods for each project and apply them
effectively.
۱٦
COURSE THEME: CLIENTS, CUSTOMERS, AND
USERS

• Client
• The client is the person for whom the software
development team creates the software.
• The client provides resources and expects some
product in return.
• The client is often a member of the organization that is
providing the money.
• The client's job success may depend on the success
of the software project.
• Client satisfaction is a primary measurement of
success in a software project.
۱۷
WHO IS THE CLIENT?

• Categories of client and software product:


• For each category of product determine:
• Who is the client?
• Who is providing the money?
• What do they want?
• • Bespoke (e.g., IRS internal system)
• • Customized versions of generic packages (e.g.,
Tanta's payroll system)
• • Embedded (e.g., cell phone)
• • Research (e.g., Web Lab)
۱۸
CUSTOMERS AND USERS

• Customer
• The customer is the person who buys the software or selects it
for use by an organization.

• User
• A user is a person who actually uses the software.
• • With personal software, the user may be the same person as
the customer.
• • In organizations, the customers and the users are usually
different.
• The Tanta Finance Office uses Microsoft Excel. Who is the
customer? Who are the users?
۱۹
WHAT IS GOOD SOFTWARE?

• General characteristics
• Functionality
• Usability
• Maintainability
• Dependability
• Efficiency
• Good software products require good programming,
but ...
• Programming quality is the means to the end, not the
end itself.
۲۰
SOFTWARE IS EXPENSIVE

• The biggest cost is usually the salaries of the


development team
• Who is paying the money?
• What does that person or organization want?
• • What is success?
• • What is failure?
• Technical people may have very different criteria
of success from the people in charge of the
organization.
۲۱
THE THREE-WAY TRADE-OFF

• Competing goals
• Every software project has a trade-off between
functionality, cost, and time.
• Extra functionality adds extra costs for
development, testing, maintenance, etc.
• What is important to the person who is
paying?

۲۲
RISK

• Many (probably most) software development projects run into


difficulties
• Problems:
• Does not work as expected (FUNCTION)
• Over budget (COST)
• Late delivery (TIME)
• Much of software is wasted (perhaps 50% is never used)
• Never used because:
• Does the wrong thing
• Users dislike to use it
• There are no customers
• etc.
۲۳
RISK

• Many software projects fail because the software


developers build the wrong software.
• The software development team must:
• • Understand what the client expects of the software
• • Understand what the client's organization expects of
the client
• The software development team will often:
• • Add technical insights and suggestions, but
remember:
• Client satisfaction is a primary measurement of
success in a software project.
۲٤
CHALLENGES FACING SOFTWARE ENGINEERING

1- Heterogeneity:
• Some of the software systems are allocated on
networks as distributed system which will be used
by different types of users working on different
types of computers and operating systems.
• This is called heterogeneity of users. This kind of
problem must be solved by developing new
techniques for building software that can deal with
this heterogeneity without causing problems.

۲٥
CHALLENGES FACING SOFTWARE ENGINEERING

2- Delivery:
• As you will see, the development of software system
contains many steps that consume time.
• Due to the rapid change of business and users
needs from the software, the steps of developing the
software must be shorten to cope with this change.
• This should not be done on the account of the
software quality.

۲٦
CHALLENGES FACING SOFTWARE ENGINEERING

3- Trust:
• Software application are penetrating in all our daily live
starting from the bank software, the mall software, the
university software and even the e-mail software.
• If the user does not trust these softwares to do their work
efficiently, then they will be of no use to him.
• Thus, we need to develop techniques to ensure the
correctness, integrity, completeness, confidentially ….
etc. of these softwares in order to fulfill the user’s trust.
• Software developers and systems administrators may
have access to highly confidential information (e.g.,
trade secrets, personal data).
۲۷

You might also like