Lecture No. 2
Lecture No. 2
Today’s Overview
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 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
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