0% found this document useful (0 votes)
76 views41 pages

Introduction to Software Engineering Concepts

SOFTWARE ENGINEERING-UNIT 1

Uploaded by

reshma.r
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)
76 views41 pages

Introduction to Software Engineering Concepts

SOFTWARE ENGINEERING-UNIT 1

Uploaded by

reshma.r
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

Introduction to

Software Engineering
Lecture 1
More info on Jalote

Ph.D. from the Univ. of Illinois at Urbana Champaign

Has worked as a faculty member at both university of


Maryland, College Park and the Indian Institute of
Technology at Kanpur

IEEE Fellow

Has also served as the Vice President (quality) at


Infosys Technologies Ltd and as a Visiting Researcher
at Microsoft Corporation
Comparison to other CS Disciplines

 Software Engineering is unlike other Computer Science


topics in that it focuses on the development of software
generically. (not focus on particular software products)

 a strong focus on process and is an attempt to turn


software development into an engineering discipline

 Basic Question of Software Engineering: How do we


develop industrial-strength software?
One Thought Experiment !

 Say you are given a description of a software system and


you estimate, based on prior experience, that such a
system would be approximately 10,000 lines of Java code.

 Assuming that the problem domain does not require


specialized expertise, how long would it take you to build a
10,000 line program?
Discussion
 Jalote claims that most students would answer 1 to 3
months.
 Assume a student finishes the project in 2 months, that
would result in a productivity of 5,000 lines of code (LOC)
per month.
 Jalote then points out that across industries, professional
software development teams average somewhere on the
order of 100 LOC per month to 1000 LOC per month
 Assuming the latter rate, a professional software
development team would require 10 months to build a
system that meets the same requirements that our
hypothetical student did in two months
What gives rise to this disparity?
Answer
Quality !
Historical Background
 First Software Engineering Conference (NATO-
sponsored conference in 1968)

 Software Crisis

#Systems were designed by


identifying the hardware first #Software was allocated
about 1-2% of the budget #However, software was
causing all the problems (!) and thus needed more attention
Progression of SE
Early stages of computing
User/Developer were the same person
Problems were well-understood
High level languages began to appear in the 1950s
Along with the profession of “programmer”
Large Software Systems for Commercial Ventures in the 1960s
Teams of Programmers
Separate end-users
Complex Problems
“Software Crisis” coined, as problems
became apparent. The problem?

 over budget
 late
 faulty
 costly to maintain
 difficult to evolve
 …
 Software Engineering formed as a
discipline in 1968

 Many “solutions” put forward


 New approaches to Project
Management
 New Team Organizations
 Better Languages and Tools
 Organizational Standards

And here we are 40 years later! ☺


What is software?

 A mere collection of programs?

@ generally used by the author


@ little documentation to help other people to use it
@ presence of “bugs” is not a major concern
@ not meeting the issues as portability, reliability and
usability
Quality Software / Programming
System Product
 Used largely by the people other than the
developers
 Users from different backgrounds (proper
interface)
 Sufficient documentation
 Properly tested
 Portable, reliable
IEEE defines…

…software as the collection of computer


programs, procedures, rules and
associated documentation and data
[IEEE87]
Software Problems??
Software is Expensive!

 Labour-intensive
 Size measured DLOC (Delivered Lines of Code)

 Cost measurements in PMs (Effort)

 Productivity measured in DLOC/PM


One Example
 In contract development, development organizations
will charge clients roughly $100K a person-year or
$8.3K a person month
 Average productivity for a person month ranges from
300 LOC to 1000 LOC so the lower and upper limits
for the cost of a line of code is $8 to $28
 Lets say you have a project that ends with 50,000
lines of code produced. How much would it cost?
 Given a production rate of 1000 LOC per month, it
would take 50 months to produce the system, and if
you charge $8.3K per month, the total is
approximately $417K!
 The same project with a production rate of 300 LOC
per month would take 166 months and cost $1.4M!
Late and Unreliable!
 One study in the late 80s found that in a survey of 600 firms,
more than 35% reported having a runaway development
project ( budget and schedule are completely out of control).

 Success rates (projects completed on-time, within budget) in


2004 was 34%, up from 16.2% in 1994

 Failure rates (projects cancelled before completion) in 2004


was 15%, down from 31% in 1994.

Still problem exists!!


Unreliable Software!
 Software failures are different from failures found in other
engineering disciplines.

 In other disciplines, failures tend to come from a change in


the physical or electrical properties of the system caused by
aging.

 Software components do not age... failures come from


mistakes made during the design and development process
or due to changes in the external environment.

 Since extensive testing is done on software systems,


failures tend to come when code that is rarely executed is
activated due to a unique set of circumstances in its
operating environment.
Problem of Change and Rework!

Corrective
To fix bugs
maintenance

Adaptive To respond to changes in the system's


maintenance environment

Perfective
To add new features
maintenance

Preventive
To make a system more maintainable
maintenance
Maintenance

 Understanding the existing software (code & documents)


 Understanding the effect of change
 Making the changes
 Testing the new parts (changes)
 Retesting the old parts (not changed)

Major Problem!!

Changing requirements and associated reworks (rework


effort- 30 to 40% of the total development effort)
SE Challenges
IEEE87 defines…

…software engineering is the systematic approach to the


development, operation, maintenance, and retirement of
software.

Boem87 defines…
…software engineering is the application of science and
mathematics by which the capabilities of computer equipment
are made useful to man via computer programs, procedures,
and associated documentation.
Several Challenges

 Scale
 Cost, schedule, and Quality

 Consistency

 Change
SE Challenges: Scale

Acco. to COCOMO,

Small: 2KDLOC
Intermediate: 8KDLOC
Medium: 32KDLOC
Large: 128KDLOC
SE Challenges: Cost, Schedule, and
Quality

 Cost: cost of resources (S/W, manpower,


H/W)
 Time to market should be reduced (RAD)

 Main “Mantra”: Quality


3 Dimensions of Quality
 Product Operation
Correctness: extend to which a program satisfies its
specification

Reliability: defines how well the software meets its requirements

Efficiency: relating to the execution of software (response time,


memory requirements)

Integrity: uprightness

Usability: Effort required to learn and operate the software


Contd…
 Product Transition
Portability: effort required to transfer the software from one
hardware configuration to another
Reusability: extent to which parts of the software can be reused
Interoperability: effort required to couple the system with other
systems

 Product Revision
Maintainability: effort required to locate and fix errors in
operating programs
Flexibility: effort required to modify an operational program
Testability: effort required to test
SE Challenges: Consistency

 An organization involved in software development not


only wants high quality and productivity, it also wants
these things consistently

 Consistency of performance is an important factor for


any organization; it allows an organization to make
predictions and estimates for future projects

 The SE community has looked at these issues and


developed standards for organizations to follow to help
them achieve consistency
 ISO 9001
 Capability Maturity Model
SE Challenges: Change
 A big problem in software development is that
"things change" all the time: requirements change
or new requirements are added
 And, these changes occur rapidly, challenging our
ability to deal with the changes
SE approach
 basic objective in software development is to
achieve high quality and productivity
doing this is via people, processes, and technology,
sometimes called the Iron Triangle
 Software Engineering tends to put a lot of
focus on process (separate the process
from the product it produces )

 An argument is made that a high quality


process will help to produce a high quality
product

 Phased development (better management


and consistency)
Phased Development Process
 Each phase has a clear task and typically works to produce
some sort of artifact (documents and/or code)

 The standard phases are:


 Requirements Analysis: Understanding the Problem
• Identifying WHAT is needed from the system, not HOW it will achieve its goals
 Software Design: Finding a Solution to the Problem
 Coding: Implementing the Solution to the Problem
• The biggest challenge is fighting the mismatch between design and implementation
 Testing: Testing the Solution to the Problem
• Thinking of testing as being confined to one phase is now antiquated
• Modern life cycles encourage the use of testing throughout the process
 Deployment: Delivering the Solution to the Customer
 Maintenance: Dealing with the Operation and Evolution of the Software
System
Requirements Analysis

 What is needed from the system


 Communication between client and developer
 Software requirement specification
 Done by analyst
 Two activities
Problem understanding or analysis
Requirement specification – Specify
Functional and Performance requirements (formats
of inputs and outputs, design constraints)
Software Design

 Problem domain to solution domain


 Most critical factor which affects ‘Quality’
 “how” to satisfy the needs
 Output: design document
 System Design: identifying the modules, interaction
between modules
 Detailed Design: Design logic for each modules,
how components can be implemented
Coding

 Translate the design of the system in to


code in a given programming language

 Structured programming
Testing
 Goal is to uncover requirement, design, and coding
errors

LEVELS

 Unit Testing
 Integration Testing
 System Testing
 Acceptance Testing

 Test plan: identifies all testing related activities


 Test case specification documents
 Output: Test report and error report
Managing the Project
 Project management plays a critical role in software
development
 Many a team of superstar developers have seen their projects fail
due to poor management
 To aid in managing software development projects,
software engineering has developed software metrics
 Software metrics are quantifiable measures that can be
used to assess different characteristics of a software
system or software process
 There are two types of metrics, product and process, and both
types provide information to managers about the state of a
development process and the product that it is producing
Summary

 Student Systems vs. Software


Systems
 History of Software Engineering

 The Problem Domain

 Software Engineering Challenges

 The Software Engineering Approach


Next?

Software Development Process

You might also like