Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
0% found this document useful (0 votes)
6 views27 pages

SE Chapter 1

Download as pptx, pdf, or txt
Download as pptx, pdf, or txt
Download as pptx, pdf, or txt
You are on page 1/ 27

Software Engineering

1
What is
Software?
The product that software professionals build and then support
over the long term.
Software encompasses: (1) instructions (computer programs)
that when executed provide desired features, function, and
performance; (2) data structures that enable the programs to
adequately store and manipulate information and (3)
documentation that describes the operation and use of the
programs.

2
Software products
• Generic products
– Stand-alone systems that are marketed and sold to any
customer who wishes to buy them.
– Examples – PC software such as editing, graphics programs,
project management tools; CAD(computer-aided
design(architecture design)) software; software for specific
markets such as appointments systems for dentists.
• Customized products
– Software that is commissioned(command or authorization) by
a specific customer to meet their own needs.
– Examples – embedded control systems, air traffic control
software, traffic monitoring systems.
3
Why Software is Important?
• The economies of ALL developed nations are dependent on
software.
• More and more systems are software controlled
• ( transportation, medical, telecommunications, military,
industrial, entertainment,)
• Software engineering is concerned with theories, methods
and tools for professional software development.
• Expenditure on software represents a
significant fraction of GNP(Gross national product) in all
developed countries.
Software costs
• Software costs often dominate computer
system costs. The costs of software on a PC
are often greater than the 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.
• Software engineering is concerned with cost-
effective software development.
Features of Software?
• Its characteristics that make it different from other things human being
build.
Features of such logical system:
• Software is developed or engineered, it is not manufactured in the
classical sense which has quality problem.
• Software doesn't "wear out.” but it deteriorates (due to change).
• Although the industry is moving toward component-based
construction (e.g. standard screws and off-the-shelf integrated
circuits), most software continues to be custom-built.( Software
construction, reuse, maintenance )

6
Wear vs.
Deterioration
increased failure
rate due to side effects
Failure
rate

change
actual curve

idealized curve

Time

7
Software Engineering Definition
definition:
a branch of computer science that deals with the design, implementation,
and maintenance of complex computer programs

The IEEE definition:


Software Engineering: (1) The application of a systematic, disciplined,
quantifiable approach to the development, operation, and maintenance of
software; that is, the application of engineering to software. (2) The study of
approaches as in (1).
Software Engineering

A Layered Technology
tools

methods

process model

a “quality” focus
 Any engineering approach must rest on organizational commitment to quality
which fosters a continuous process improvement culture.
 Process layer as the foundation defines a framework with activities for
effective delivery of software engineering technology. Establish the context
where products (model, data, report, and forms) are produced, milestone are
established, quality is ensured and change is managed.
 Method provides technical how-to’s for building software. It encompasses
many tasks including communication, requirement analysis, design modeling,
program construction, testing and support.
 Tools provide automated or semi-automated support for the process and 9
methods.
Challenge in large projects
• Developing large /complex software application
is very challenging
 Effort intensive
 High Cost
 Long development time
 Changing Needs for your
 High risk of failure, maintenance , Performance
FAQs about software engineering
• What is software?
• What is software engineering?
• What is the difference between software
engineering and computer science?
• What is the difference between software
engineering and system engineering?
• What is a software process?
• What is a software process model?
FAQs about software engineering
• What are the costs of software engineering?
• What are software engineering methods?
• What is CASE (Computer-Aided Software
Engineering)
• What are the attributes of good software?
• What are the key challenges facing software
engineering?
What is software?
• Computer programs and associated documentation such as
requirements, design models and user manuals.
• 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 e.g.
PC software such as Excel or Word.
– Bespoke (custom) - developed for a single customer according to their
specification.
• New software can be created by developing new programs,
configuring generic software systems or reusing existing
software.
What is software engineering?
• Software engineering is an engineering
discipline that is concerned with all aspects of
software production.
• Software engineers should adopt a systematic
and organised approach to their work and use
appropriate tools and techniques depending
on the problem to be solved, the development
constraints and the resources available.
What is the difference between software engineering and
computer science?

• Computer science is concerned with theory


and fundamentals; software engineering is
concerned with the practicalities of
developing and delivering useful software.
What is the 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 concerned with developing
the software infrastructure, control,
applications and databases in the system.
• System engineers are involved in system
specification, architectural design, integration
and deployment.
What is a software process?
• A set of activities whose goal is the
development or evolution of software.
• Generic activities in all software processes are:
– 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.
What is a software process model?
• A simplified representation of a software process, presented
from a specific perspective.
• 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.
What are the costs of software engineering?

• Roughly 60% of costs are development costs,


40% are testing costs. For custom software,
evolution costs often exceed development costs.
• Costs vary depending on the type of system
being developed and the requirements of
system attributes such as performance and
system reliability.
• Distribution of costs depends on the
development model that is used.
Activity cost distribution
Wat erfall model
0 25 50 75 100

Specification Design Development Integration and testing

Iterative development

0 25 50 75 1 00

Specification Iterative development System testing

Component-based software eng ineering

0 25 50 75 1 00

Specification Development Integration and testing

Development and evolution costs for long-lifetime syst ems


0 10 200 30 400

System development System evolution


Product development costs

0 25 50 75 100

Specification Development System testing


What are software engineering methods?

• Structured approaches to software development which


include system models, notations, rules, design advice and
process guidance.
• 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.
What is 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.
• 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.
What are the attributes of good software?

• The software should deliver the required functionality and


performance to the user and should be maintainable,
dependable and acceptable.
• Maintainability
– Software must evolve to meet changing needs;
• Dependability
– Software must be trustworthy;
• Efficiency
– Software should not make wasteful use of system resources;
• Acceptability
– Software must accepted by the users for which it was designed. This
means it must be understandable, usable and compatible with other
systems.
What are the key challenges facing software
engineering?
• Heterogeneity, delivery and trust.
• Heterogeneity(variety)
– Developing techniques for building software that can cope(deal) 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.
Software Myths
Erroneous beliefs about software and the process that is
used to build it.
•Affect managers, customers (and other non-technical
stakeholders) and practitioners
•Are believable because they often have elements of
truth,
but …
•Invariably lead to bad decisions,
therefore …
•Insist on reality as you navigate your way through
software engineering
26
Software Myths Examples
• Myth 1: Once we write the program and get it to work, our job is done.
• Reality: the sooner you begin writing code, the longer it will take you to get done. 60% to 80%
of all efforts are spent after software is delivered to the customer for the first time.

• Myth 2: Until I get the program running, I have no way of assessing its quality.
• Reality: technical review are a quality filter that can be used to find certain classes of software
defects from the inception of a project.

• Myth 3: software engineering will make us create voluminous(bulk) and unnecessary


documentation and will invariably slow us down.
• Reality: it is not about creating documents. It is about creating a quality product. Better quality
leads to a reduced rework. Reduced work results in faster delivery times.

• Many people recognize the fallacy of the myths. Regrettably, habitual attitudes and
methods foster poor management and technical practices, even when reality
dictates a better approach .

27

You might also like