0% found this document useful (0 votes)
11 views

Software Engineering Week 1

The document discusses software engineering, describing its importance, key concepts like software processes and models, and factors in software failures. Software engineering is an engineering discipline that applies principles and methods for cost-effective software development and maintenance.

Uploaded by

Zulfiqar Ali
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
11 views

Software Engineering Week 1

The document discusses software engineering, describing its importance, key concepts like software processes and models, and factors in software failures. Software engineering is an engineering discipline that applies principles and methods for cost-effective software development and maintenance.

Uploaded by

Zulfiqar Ali
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 38

Software Engineering

Zulfiqar Ali
UIT University
Learning Outcomes
• CLO-1 Describe various software engineering processes and activates
• CLO-2 Apply the system modeling techniques to model a medium size
software systems
• CLO-3 Apply software quality assurance and testing principles to medium
size software systems
• CLO-4 Discuss key principles and common methods for software project
management such as scheduling, size estimation, cost estimation and risk
analysis
Course Contents
Nature of Software, Overview of Software Engineering, Professional
software development, Software engineering practice, Software
process structure, Software process models, Agile software
Development, Agile process models, Agile development techniques,
Requirements engineering process, Functional and non-functional
requirements, Context models, Interaction models, Structural models,
behavioral models, model driven engineering, Architectural design,
Design and implementation, UML diagrams, Design patterns, Software
testing and quality assurance, Software evolution, Project
management and project planning, configuration management,
Software Process improvement
Recommended & Reference Books
• Software Engineering, Sommerville I., 10th Edition,
Pearson Inc., 2014
• Software Engineering, A Practitioner’s Approach,
Pressman R. S.& Maxim B. R., 8th Edition, McGraw-
Hill, 2015.
Assessments & Evaluation
• Assignments
• Quizzes
• Case Studies
• Presentations
• Mid Exams
• Final Exams
Activity
Think about all the devices and systems that you encounter in
your everyday life which have software controlling them…

Write Down and Let me know…


Why is Software Engineering important?
• Complex systems need a disciplined approach for designing,
developing and managing them.
• Software engineering is essential for the
functioning of government, society, and
national and international businesses and
institutions. We can’t run the modern world
without software.
• There are many different types of software
system, ranging from simple embedded
systems to complex, worldwide information
systems.
• There are no universal notations, methods, or
techniques for software engineering because
different types of software require different
approaches.
• Developing an organizational information system is
completely different from developing a controller for
a scientific instrument. Neither of these systems has
much in common with a graphics-intensive computer
game.
• All of these applications need software engineering;
they do not all need the same software engineering
methods and techniques.
Factors of Software Failures
Software failures are a consequence of two factors.
• Increasing system complexity
• Failure to use software engineering methods
Increasing system complexity
• As new software engineering techniques help us to build
larger, more complex systems, the demands change.
• Systems have to be built and delivered more quickly; larger,
even more complex systems are required; and systems
have to have new capabilities that were previously thought
to be impossible.
• New software engineering techniques have to be
developed to meet new the challenges of delivering more
complex software.
Failure to use software engineering methods
• It is fairly easy to write computer programs without using software
engineering methods and techniques.
• Many companies have drifted into software development as their
products and services have evolved.
• They do not use software engineering methods in their every-
• day work. Consequently, their software is often more expensive and
less reliable than it should be.
• We need better software engineering education and training to
address this problem.
Software Development Crisis
Projects were:
• Late.
• Over budget.
• Unreliable.
• Difficult to maintain.
• Performed poorly
Software Crisis
Example 1: 2009,Computer glitch delays flights

• Saturday 3rd October 2009-London, England (CNN) Dozens of flights from


the UK were delayed Saturday after a glitch in an air traffic control system
in Scotland, but the problem was fixed a few hours later.
• The agency said it reverted to backup equipment as engineering worked
on the system.
• The problem did not create a safety issue but could cause delays in flights.

Read more at:


• http://edition.cnn.com/2009/WORLD/europe/10/03/uk.flights.delayed
Example 2: Ariane 5 Explosion

• European Space Agency spent 10 years and $7 billion to produce


Ariane 5.
• Crash after 36.7 seconds.
• Caused by an overflow error. Trying to store a 64-bit number into a
16-bit space.

Watch the video: http://www.youtube.com/watch?v=z-r9cYp3tTE


Example 3: 1992, London Ambulance Service

• Considered the largest ambulance service in the world.


• Overloaded problem.
• It was unable to keep track of the ambulances and their
statuses. Sending multiple units to some locations and no
units to other locations.
• Generates many exceptions messages.
• 46 deaths.
Therefore…
A well-disciplined approach to software
development and management is necessary.
This is called engineering.
What is Software Engineering?
• Software engineering is an engineering discipline
that is concerned with all aspects of software
production from initial conception to operation
and maintenance.
• In this definition, there are two key phrases:
Engineering discipline
All aspects of software production
Engineering discipline
• Engineers make things work. They apply theories,
methods, and tools where these are appropriate.
However, they use them selectively and always try to
discover solutions to problems even when there are
no applicable theories and methods. Engineers also
recognize that they must work within organizational
and financial constraints, and they must look for
solutions within these constraints.
All aspects of software production
• Software engineering is not just concerned with the
technical processes of software development. It also
includes activities such as software project
management and the development of tools,
methods, and theories to support software
development.
Essential Attributes of a Good Software
Software Engineering is important for Two Reasons

• More and more, individuals and society rely on advanced


software systems. We need to be able to produce reliable
and trustworthy systems economically and quickly.
• It is usually cheaper, in the long run, to use software
engineering methods and techniques for professional
software systems rather than just write programs as a
personal programming project. Failure to use software
engineering method leads to higher costs for testing,
quality assurance, and long-term maintenance
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 is Software?
Kinds of Softwares
There are two kinds of software product:
• Generic products
• Customized (or bespoke) software
Generic products
• These are stand-alone systems that are produced by a development
organization and 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.
• This kind of software also includes “vertical” applications designed
for a specific market such as library information systems,
accounting systems, or systems for maintaining dental records.
Customized (or bespoke) software
• 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 of this type of software include control systems for
electronic devices, systems written to support a particular
business process, and air traffic control systems.
Software Engineering vs. Systems Engineering
System Engineering Software Engineering
All aspects of computer-based systems Deals with the design, development and
development: delivery of SW.
HW + SW + Process. Is part of Systems Engineering.
Older than SWE
What is a Software Process Models?
• Activities and results that produce a software product:
SW Process Activity What is going on there?

What does the customer need?


Specification
What are the constraints?

Development Design & programming.

Validation Checking whether it meets requirements.

Evolution Modifications (e.g. customer/market).


What is software process Model?
• Description of the software process that represents one view,
such as the activities, data or roles of people involved.
Examples of views Focus on…

Activities = human actions.


Workflow
What is input, output, and dependencies.

Activities = transformations of information.


Dataflow
How the input is transformed into output.
What is the role of people involved in each step of the
Role/Action
process?
Examples of Software Process Models
Component-Based
Waterfall approach Iterative development
Software Engineering CBSE

assembled form existing


components
Cost of Software Engineering
• Depends on: The process used, and
• The type of software being developed.

• Each generic approach has a different profile of cost distribution.

• Roughly 60% of costs are development costs, 40% are testing costs.

• For custom software, evolution costs often exceed development


costs.
Four Issues that may affect different types of software

• Heterogeneity : Different kinds of systems and devices


• Business and social change: Software's may need to
rapidly change as Business or social change
• Security and trust: Software must secure because it
handles personal/confidential data so peoples will trust
• Scale Software: software may need to scale for
embedded systems, wearable devices, Internet and
cloud etc.
Activity
Cardiac monitor in an ICU
Interactive game Banking system
unit
Players, score, scenes, Client accounts, stocks heart rate, temperature,
theme. bonds, money transfers. blood pressure.
Weekly Task
• Briefly discuss why it is usually cheaper in the
long run to use software engineering methods
and techniques for software systems
References
• Software engineering : Ian Sommerville 10th edition

You might also like