0% found this document useful (0 votes)
48 views42 pages

Software Engineering Chapter 1

This document provides an overview of software engineering. It defines software and discusses different types like custom, generic, and embedded software. It explains the importance of software due to its pervasive role in modern life and large economic impact. The "software crisis" of the 1970s caused by many project failures is introduced, highlighting the need for systematic software engineering practices. The characteristics of software like its intangible nature are also covered.

Uploaded by

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

Software Engineering Chapter 1

This document provides an overview of software engineering. It defines software and discusses different types like custom, generic, and embedded software. It explains the importance of software due to its pervasive role in modern life and large economic impact. The "software crisis" of the 1970s caused by many project failures is introduced, highlighting the need for systematic software engineering practices. The characteristics of software like its intangible nature are also covered.

Uploaded by

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

Course tittle: Software Engineering

By Daniel A.
CHAPTER ONE
HISTORY AND OVERVIEW

Software Engineering Fundamentals


What is software?
Types of software

Software Applications

Characteristics of software

What is Software Crisis?


What is Software Engineering?
Professional and Ethical Responsibility
Objectives of this Activity

The objective of this activity is to introduce you to the concept of


software engineering. From this activity u will:
 learn the importance of software engineering

Overview of Software Engineering


 develop a broad understanding of the software engineering domain
 set out the answers to key questions about software engineering
 understand ethical and professional issues

3
WHAT IS SOFTWARE?
 Software is collection of computer programs, procedures,
rules, and associated documentations and data .
 This definition clearly states that software is not just programs,
but includes all the associated documentation and data.

Overview of Software Engineering


 This implies that the discipline dealing with the development of
software should not deal only with developing programs, but
with developing all the things that constitute software.
 Software products may be developed for a particular customer or
may be developed for a general market

4
SOFTWARE TYPES
 There are different types of software. One of the most important
types are custom software, generic software and embedded
software.

Overview of Software Engineering


 Custom (Bespoke) : is developed to meet the specific needs of a
particular customer according to their specification
 Example: web sites, air traffic control systems, software for

managing the specialized finances of large organizations, etc


 Generic: is designed to be sold on the open market, to perform
functions that many people need, Often called COTS (Commercial
Off The Shelf) or Shrink-wrapped.
 Example: PC software such as word processors, excel,

compilers, etc
5
 Embedded: Built into hardware

 It runs specific hardware devices which are typically


sold on the open market
 Hard to change

Overview of Software Engineering


 Example: washing machines, DVD players, microwave

ovens and automobiles. Unlike generic software, users


cannot usually replace embedded software or upgrade it
without also replacing the hardware
 New software can be created by developing new programs,
configuring generic software systems or reusing existing
software.

6
 An important difference between these types of software is that, in
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.
software The
software developers must work to that specification.

Overview of Software Engineering


7
WHY SOFTWARE IS IMPORTANT?
 Because it affects nearly every aspect of our lives and has become
pervasive in our commerce, our culture, and our everyday
activities.

Overview of Software Engineering


 Software is both a product and a vehicle for delivering a product
 Software delivers the most important product of our time—
information.
 Software 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.,
Internet) and provides the means for acquiring information in all of
its forms.
8
 The economies of ALL developed nations are dependent on
software.
 More and more systems are software controlled ( transportation,
medical, telecommunications, military, industrial, entertainment,)

Overview of Software Engineering


 Expenditure on software represents a significant fraction of GNP
in all developed countries.
 GNP stands for Gross National Product. GNP per capita is the
dollar value of a country’s final output of goods and services
in a year, divided by its population. It reflects the average
income of a country’s citizens.

9
SOFTWARE COSTS

 Software costs often dominate computer system costs.


The costs of software on a PC are often greater than the

Overview of Software Engineering


hardware cost.

 Software costs more to maintain than it does to develop.


For systems with a long life, maintenance costs may be
several times development costs.

10
SOFTWARE APPLICATIONS

 Software may be applied in any situation for which a pre-specified


set of procedural steps has been defined.
 It is somewhat difficult to develop meaningful generic categories

Overview of Software Engineering


for software applications. As software complexity grows, neat
compartmentalization disappears.
 The following software areas indicate the breadth of potential
applications:
 System software-designed to run a computer's hardware and
application programs
 Microsoft windows Os, Ubuntu, etc

 Real-time software- Must react immediately


 Software that monitors/ analyzes/ controls real-world events as
11
they occur is called real time
 Business information software-Used to run businesses
 Accuracy and security of data are key concerns

 Functions: recording sales, managing accounts, printing bills

 Engineering & scientific software- Computer-aided design,


system simulation, and other interactive applications

Overview of Software Engineering


 Embedded software- control and manage hardware devices
 Personal application software
 Word processor, spreadsheets

 Communication software- provide remote access to systems and


exchange files and messages

12
SOFTWARE CHARACTERISTICS

 To gain an understanding of software, it is important to examine


the characteristics of software that make it different from other
things that human beings build.

Overview of Software Engineering


 Software is developed or engineered, it is not manufactured in
the classical sense.
 Software doesn’t wear out, but it does deteriorate.
 It deteriorates by having its design changed: changes often

tend to introduce new defects

13
SOFTWARE CRISIS

 During 1970s, large numbers of software projects failed


mostly due to human factors. This problem is referred to as
the “software crisis”.

Overview of Software Engineering


 After surveying 8,000 IT projects, Standish Group reported
about 30% of all projects were cancelled.
 Software engineering appears to be among the few options
available to tackle the present software crisis.
 The expenses that organizations all around the world are
incurring on software purchases compared to those on
hardware purchases have been showing a worrying trend
over the years 14
 Organizations are spending larger and larger portions of their
budget on software.
 The cost we are talking of here is not on account of increased
features, but due to ineffective development of the product

Overview of Software Engineering


characterized by inefficient resource usage, time and cost over-
runs.
 There are many factors that have contributed to the making of the
present software crisis.
 Factors are larger problem sizes, lack of adequate training in
software engineering, increasing skill shortage, and low
productivity improvements.
 This can be solved with proper use of software engineering
principles
15
 Software engineering
 Systematic approach to software development
 Application of software principles
 Provides sets of methods, tools, and procedures

Overview of Software Engineering


 Ensures consistent software quality

16
 Many more projects fail because they don’t use software engineering.
Failures occur because:
 of the size of the project relative to previous efforts
 key personnel have left
 of failure to understand requirements

Overview of Software Engineering


 the project delivers, but lacks the required quality
 of the introduction of new technology
 of many, many other reasons

 For this reasons, a software developer have to use a principle of


software engineering to deliver quality software products to his/her
customers with a consistent, well-managed and cost-effective process
17
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

Overview of Software Engineering


gone into use.
 Engineering discipline
 Using appropriate theories and methods to solve problems
bearing in mind organizational and financial constraints.
 All aspects of software production
 Not just technical process of development. Also project
management and the development of tools, methods etc. to
support software production.
18
 Software Engineering is about:
Quality improvement, Reliability, Maintainability
 Within the framework of:

Overview of Software Engineering


 Time , Money, Customer requirements

 Software engineering is concerned with cost-effective software


development and also concerned with theories, methods and tools
for professional software development

19
Software Engineering: A layered Technology

tools

methods

Overview of Software Engineering


process model

a “quality” focus

20
 Software Engineering is a layered technology (as shown in the
above slide) that relies on an organizational commitment to
quality.
 Any engineering approach must rest on organizational

Overview of Software Engineering


commitment to quality which fosters a continuous process
improvement culture.

21
 Method provides technical how-to’s for building
software. It encompasses many tasks including
communication, requirement analysis, design modeling,

Overview of Software Engineering


program construction, testing and support.
 Tools provide automated or semi-automated support for
the process and methods.

22
FAQS ABOUT SOFTWARE ENGINEERING
Question Answer
What is software? Computer programs and associated documentation.
Software products may be developed for a particular
customer or may be developed for a general market.

What are the attributes of good software? Good software should deliver the required functionality and

Overview of Software Engineering


performance to the user and should be maintainable,
dependable and usable.

What is software engineering? Software engineering is an engineering discipline that is


concerned with all aspects of software production.

What are the fundamental software engineering activities? Software specification, software development, software
validation and software evolution.
What is the difference between software engineering and Computer science focuses on theory and fundamentals;
computer science? software engineering is concerned with the practicalities of
developing and delivering useful software.

What is the difference between software engineering and System engineering is concerned with all aspects of
system engineering? computer-based systems development including hardware,
software and process engineering. Software engineering is
part of this more general process.
23
Question Answer

What are the key challenges facing Coping with increasing diversity, demands for reduced delivery
software engineering? times and developing trustworthy software.

What are the costs of software Roughly 60% of software costs are development costs, 40% are
engineering? testing costs. For custom software, evolution costs often exceed
development costs.

Overview of Software Engineering


What are the best software engineering While all software projects have to be professionally managed
techniques and methods? and developed, different techniques are appropriate for different
types of system. For example, games should always be
developed using a series of prototypes whereas safety critical
control systems require a complete and analyzable specification
to be developed. You can’t, therefore, say that one method is
better than another.

What differences has the web made to The web has led to the availability of software services and the
software engineering? possibility of developing highly distributed service-based
systems. Web-based systems development has led to important
advances in programming languages and software reuse.

24
ESSENTIAL ATTRIBUTES OF GOOD SOFTWARE
Product characteristic Description
Maintainability Software should be written in such a way so that it can evolve to
meet the changing needs of customers. This is a critical attribute
because software change is an inevitable requirement of a
changing business environment.

Overview of Software Engineering


Dependability and security Software dependability includes a range of characteristics
including reliability, security and safety. Dependable software
should not cause physical or economic damage in the event of
system failure. Malicious users should not be able to access or
damage the system.

Efficiency Software should not make wasteful use of system resources such
as memory and processor cycles. Efficiency therefore includes
responsiveness, processing time, memory utilisation, etc.

Acceptability Software must be acceptable to the type of users for which it is


designed. This means that it must be understandable, usable and 25
compatible with other systems that they use.
SOFTWARE PROCESS
 A set of activities whose goal is the development or evolution of
software.
 Generic activities in all software processes are:

Overview of Software Engineering


 Specification - what the system should do and its
development constraints
 Development - production of the software system
 Validation - checking that the software is what the customer
wants
 Evolution - changing the software in response to changing
demands.

26
SOFTWARE PROCESS MODEL
 A simplified representation of a software process, presented
from a specific perspective.

Overview of Software Engineering


 Examples of process perspectives are
 Workflow perspective - sequence of activities;
 Data-flow perspective - information flow;
 Role/action perspective - who does what.

 Generic process models


 Waterfall;
 Iterative
development;
 Component-based software engineering.
27
COSTS OF SOFTWARE ENGINEERING
 Roughly 60% of costs are development costs, 40% are
testing costs.
costs For custom software,
software evolution costs often
exceed development costs.

Overview of Software Engineering


 Costs vary depending on the type of system being developed
and the requirements of system attributes such as
performance and system reliability.
reliability
 Distribution of costs depends on the development model that
is used.

28
SOFTWARE ENGINEERING METHODS
 Structured approaches to software development which include
system models, notations, rules, design advice and process
guidance.

Overview of Software Engineering


 Model descriptions
 Descriptions of graphical models which should be produced;
 Rules
 Constraints applied to system models;
 Recommendations
 Advice on good design practice;
 Process guidance
 What activities to follow.
29
CASE (COMPUTER-AIDED SOFTWARE
ENGINEERING)
 Software systems that are intended to provide automated
support for software process activities.
 CASE systems are often used for method support.

Overview of Software Engineering


 Upper-CASE
 Tools to support the early process activities of requirements and
design;
 Lower-CASE
 Tools to support later activities such as programming, debugging
and testing.

30
CHALLENGES FACING SOFTWARE
ENGINEERING
 Heterogeneity, delivery and trust.
 Heterogeneity

Overview of Software Engineering


 Developing techniques for building software that can cope with
heterogeneous platforms and execution environments;
 Delivery
 Developing techniques that lead to faster delivery of software;
 Trust
 Developing techniques that demonstrate that software can be
trusted by its users.

31
SOFTWARE QUALITY AND THE STAKEHOLDERS

Overview of Software Engineering


32
1. Users
 Those who use the software
2. Customers
 Those who pay for the software
3. Software developers

Overview of Software Engineering


4. Development Managers

 All four roles can be fulfilled by the same person

33
Example - ATM stakeholders

 Bank customers
 Representatives of other banks

Overview of Software Engineering


 Bank managers
 Counter staff
 Database administrators
 Security managers
 Marketing department
 Hardware and software maintenance engineers
 Banking regulators

34
SOFTWARE QUALITY: CONFLICTS AND OBJECTIVES

 The different qualities can conflict


 Increasing efficiency can reduce maintainability or

Overview of Software Engineering


reusability
 Increasing usability can reduce efficiency

 Setting objectives for quality is a key engineering


activity
 You then design to meet the objectives
 Avoids ‘over-engineering’ which wastes money

 Optimizing is also sometimes necessary


 E.g.obtain the highest possible reliability using a fixed 35
budget
INTERNAL QUALITY CRITERIA

 Internalquality refers to Characterize aspects of the


design and source code of the software

Overview of Software Engineering


 Have an effect on the external quality attributes
 E.g.
 The amount of commenting of the code
 The complexity of the code

36
SHORT TERM VS. LONG TERM QUALITY

 Short term:
 Does the software meet the customer’s immediate needs?

Overview of Software Engineering


 Is it sufficiently efficient for the volume of data we have today?

 Long term:
 Maintainability
 Customer’s future needs
 Scalability: Can the software handle larger volumes of data?

37
PROFESSIONAL & ETHICAL RESPONSIBILITY

 Software engineers must accept that their job involves


wider responsibilities than simply the application of
technical skills.

Overview of Software Engineering


 Their work is carried out with in legal and social frame
work.
 They do not use their skills and abilities to be have in a
dishonest way or in a way that will bring disrepute to the
software engineering profession.

38
 Some issues of professional responsibilities are:
 Confidentiality – respect the confidentiality of their
employers
 Competence – not knowingly accept work which is out

Overview of Software Engineering


with their competence
 Intellectual property rights – be careful to ensure that the
intellectual property of employers and clients is protected
 Computer misuse – should not use their technical skills to
misuse other people’s computers.

39
 Software engineers shall adhere to the following code of ethics
and professional principles
 Act consistently with public interest
 Act in the best interests of their clients
 Ensure their products meet the highest professional standards

Overview of Software Engineering BY


 Maintain integrity and independence in their professional judgment
 Promote an ethical approach to the management of s/w development
& maintenance
 Advance the integrity and reputation of the profession consistent with
the public interest
 Be fair and supportive to colleagues
 Participate in lifelong learning

40
SUMMARY
 Software engineering is an engineering discipline which is
concerned with all aspects of software production.
 Software products consist of developed programs and associated

Overview of Software Engineering


documentation.
 Software process consists of activities which are involved in
developing software product
 Methods are organized ways of producing software

 CASE tools are software systems which are designed to support


routine activities in the software process
 Software engineers have responsibilities to the engineering
profession and society. They should not simply be concerned with
technical issues. 41
Desalegn A. Overview of Software Engineering
42
you for your Attention
Thank

You might also like