0% found this document useful (0 votes)
24 views44 pages

Lecture No. 2

Uploaded by

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

Lecture No. 2

Uploaded by

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

LECTURE 2

Today’s Overview

• Professional Software Development


1
• Attributes of Software
2
• Software Engineering Practices
3
PROFESSIONAL SOFTWARE
DEVELOPMENT
Professional Software Development
• Software engineering is intended to support
professional software development, rather than
individual programming
– Includes techniques that support
• Program Specification, Design, and Evolution
• A professionally developed software system is
often more than a single program
• Professional software development Vs amateur
software development
Questions Answers
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 Good software should deliver the required
software? functionality and 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 specification, software development,


software engineering activities? software validation, and software evolution.

What is the difference between Computer science focuses on theory and


software engineering and fundamentals; software engineering is concerned
computer science? with the practicalities of developing and
delivering useful software.
Questions Answers
What is the difference between System engineering is concerned with all aspects
software engineering and system of computer-based systems development
engineering? including hardware, software, and process
engineering. Software engineering is part of this
more general process.

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

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

What are the best software While all software projects have to be
engineering techniques and professionally managed and developed, different
methods? 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.
Questions Answers
What differences has the Web The Web has led to the availability of software
made to software engineering? services and the possibility of developing highly
distributed service-based systems. Web-based
systems development has led to important
advances in programming languages and
software reuse.
Attributes of Software
Product characteristics 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.
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 utilization, 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 compatible with other
systems that they use.
Software Engineering
“Software engineering is an engineering
discipline
that is concerned with all aspects of
software production”.
•Engineering discipline
– Using appropriate theories, methods and tools 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.
Software Engineering
• The application of a systematic, disciplined,
quantifiable approach to the development,
operation, and maintenance of software; that
is, the application of engineering to software.”
-IEEE
• The establishment and use of sound
engineering principles in order to obtain
economically software that is reliable and
works efficiently on real machines
Computer Science Vs. Software
Engineering

“Software Engineering is the process of utilizing


our knowledge of computer science in effective
production of software systems.”
Computer Science & Software Engineering
Computer Science Software Engineering
Computer science is concerned with the Software engineering is concerned with
theories and methods that underlie the practical problems of producing
computers and software system. software.
System Engineering & Software Engineering

System Engineering Software Engineering


System engineering is concerned with all Software engineering is concerned with
aspects of the development and the practical problems of producing
evolution of complex systems where software.
software plays a major role.
System engineering is therefore
concerned with hardware development,
policy and process design and system
deployment, as well as software
engineering.
System engineers are involved in
specifying the system, defining its overall
architecture, and then integrating the
different parts to create the finished
system.
Software Engineering
• Engineering is about getting results of the
required quality within the schedule and budget
• Software engineers adopt a systematic and
organized approach to their work, to produce
high-quality software
– However less formal approach to development may
be effective in some circumstances
• For Example in Web Based System which is blend of
software and graphical design
Importance of Software Engineering
• 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
software systems rather than just write the
programs as if it was a personal programming
project. For most types of systems, the majority of
costs are the costs of changing the software after
it has gone into use.
Importance of Software Engineering
Software Development Activities
• Project Management
• Requirement Engineering
• Design
• Coding
• Testing
• Software Quality Assurance
• Software Configuration Management
• Software Integration
• Rest of the activities
Software Development Loop

Problem
Definition

Technical
Status Quo
Development

Solution
Integration

18
• Project planning and
Management
Management • Configuration
Management
• Quality Assurance
• Installation and
Construction Training etc.

• Requirements
• Design
• Coding
• Testing
• Maintenance etc.
19
A Software Engineering Framework

Method
T
O
Task Set Process O
L
S
Quality Focus

20
A Software Engineering Framework
• A quality focus
– Any engineering approach must rest on organizational
commitment to quality which fosters a continuous process
improvement culture.
• Process layer
– The foundation for software engineering is the process layer
– Defines a framework that must be established for effective
delivery of software engineering technology
– Establish a context where
• Products (model, data, report, and forms) are produced
• Milestones are established
• Quality is ensured
• Change is managed
A Software Engineering Framework
• Methods
– Provide the technical how-to’s for building software
– Methods encompass a broad array of tasks
• Communication , requirements analysis, design modeling,
program construction, testing, and support
• Tools
– Provide automated or semi-automated support for the
process and the methods
– Integrated tools to support software development
– Called computer aided software engineering(CASE)
Software Process
“The systematic approach that is used in
software engineering is sometimes called a
software process.”
Software Process
• Software specification:
– Where customers and engineers define the software that
is to be produced and the constraints on its operation.
• Software development:
– Where the software is designed and programmed.
• Software validation:
– Where the software is checked to ensure that it is what
the customer requires.
• Software evolution:
– Where the software is modified to reflect changing
customer and market requirements.
The software process (Simplified)
Feasibility and
Planning Requirements

Design

Implementation Operation and


Maintenance
Software Process Issues
• Heterogeneity Increasingly Systems:
– Systems are required to operate as distributed
systems across networks that include different types
of computer and mobile devices. As well as running
on general-purpose computers, software may also
have to execute on mobile phones.
– You often have to integrate new software with older
legacy systems written in different programming
languages.
– The challenge here is to develop techniques for
building dependable software that is flexible enough
to cope with this heterogeneity.
Software Process Issues (Cont..)
• Business and social change:
– Business and society are changing incredibly quickly
as emerging economies develop and new
technologies become available.
– They need to be able to change their existing
software and to rapidly develop new software.
– Many traditional software engineering techniques
are time consuming and delivery of new systems
often takes longer than planned.
– They need to evolve so that the time required for
software to deliver value to its customers is reduced.
Software Process Issues (Cont…)
• Security and trust:
– As software is intertwined with all aspects of our
lives, it is essential that we can trust that
software.
– This is especially true for remote software
systems accessed through a web page or web
service interface.
– We have to make sure that malicious users
cannot attack our software and that information
security is maintained.
Software engineering diversity
• Stand-alone applications
– These are application systems that run on a local
computer, such as a PC. They include all
necessary functionality and do not need to be
connected to a network.
– Examples of such applications are office
applications on a PC, CAD programs, photo
manipulation software, etc.
Software engineering diversity
• Interactive transaction-based applications
– These are applications that execute on a remote computer
and that are accessed by users from their own PCs or
terminals.
• Embedded control systems
– These are software control systems that control and
manage hardware devices. Numerically, there are probably
more embedded systems than any other type of system.
– Examples of embedded systems include the software in a
mobile (cell) phone, software that controls anti-lock
braking in a car, and software in a microwave oven to
control the cooking process.
Software engineering diversity
• Batch processing systems
– These are business systems that are designed to
process data in large batches. They process large
numbers of individual inputs to create
corresponding outputs.
– Examples of batch systems include periodic
billing systems, such as phone billing systems,
and salary payment systems.
Software engineering diversity
• Entertainment systems
– These are systems that are primarily for personal
use and which are intended to entertain the user.
– Most of these systems are games of one kind or
another. The quality of the user interaction
offered is the most important distinguishing
characteristic of entertainment systems.
Software engineering diversity
• Systems for modeling and simulation
– These are systems that are developed by
scientists and engineers to model physical
processes or situations, which include many,
separate, interacting objects.
– These are often computationally intensive and
require high-performance parallel systems for
execution.
Software engineering diversity
• Data collection systems
– These are systems that collect data from their
environment using a set of sensors and send that
data to other systems for processing.
– The software has to interact with sensors and
often is installed in a hostile environment such as
inside an engine or in a remote location.
Software engineering diversity
• Systems of systems
– These are systems that are composed of a
number of other software systems.
– Some of these may be generic software products,
such as a spreadsheet program.
Software engineering diversity
• You use different software engineering
techniques for each type of system because
of different characteristics
– An embedded control system in an automobile is
safety-critical needs verification and validation
– For web based system, an approach based on
iterative development and delivery may be
appropriate
• However there are software engineering
fundamentals that apply to all types of
software system
Software Engineering Fundamentals
• Managed and understood development process
– Plan the development process and have clear ideas of what will be
produced
• Dependability and performance
– Should behave as expected without failures
– Should be available when required for use
– Safe in operation and secure from outside attack
– Should perform efficiently without wasting resources
• Understanding and management of the software specification
and requirements
– Aligned with expectations of users and customers of software
– Deliver within budget and schedule
• Effective with respect to resources
– Should reuse software rather than write new software
Software Engineering Practices
• Understand the problem (communication and
analysis).
• Plan a solution(modeling and software design).

• Carry out the plan (code generation).


• Examine the result for accuracy (testing and
quality assurance).
Software Engineering Practices
• Understand the problem
– Who has a stake in the solution to the problem?
• That is, who are the stakeholders?
– What are the unknowns?
• What data, functions, and features are required to properly
solve the problem?
– Can the problem be compartmentalized?
• Is it possible to represent smaller problems that may be
easier to understand?
– Can the problem be represented graphically?
• Can an analysis model be created?
Software Engineering Practices
• Plan a solution
– Have you seen similar problems before?
• Are there patterns that are recognizable in a potential solution? Is
there existing software that implements the data, functions, and
features that are required?
– Has a similar problem been solved?
• If so, are elements of the solution reusable?
– Can sub-problems be defined?
• If so, are solutions readily apparent for the sub-problems?
– Can you represent a solution in a manner that leads to
effective implementation?
• Can a design model be created?
Software Engineering Practices
• Carry out the plan
– Does the solution conform to the plan?
• Is source code traceable to the design model?
– Is each component part of the solution provably
correct?
• Has the design and code been reviewed, or better,
have correctness proofs been applied to the
algorithm?
Software Engineering Practices
• Examine the result
– Is it possible to test each component part of the
solution?
• Has a reasonable testing strategy been implemented?
– Does the solution produce results that conform
to the data, functions, and features that are
required?
• Has the software been validated against all
stakeholder requirements?
Stakeholders in software engineering

• A stakeholder is anyone who has a stake in


the successful outcome of the project
– Users
– Customers
– Software developers
– Development managers
THANK YOU

You might also like