Introduction
Introduction
1. INTRODUCTION
A discipline whose aim is the production of quality software, software that is delivered on time,
within budget and that satisfies its requirements.
Program vs Software
Software is more than programs. It consist of programs, documentation of any facet of the
program and the procedures used to setup and operate the software system.
Programs
Operating
Documentation
Procedures
Any program is subset of software and it becomes software only if documentation and operating
procedures manuals are prepared. Program is a combination of source code and object code.
Documentation consist of different types of manuals as shown.
Formal spec ification
Analysis
Context Diagram
Specification
Data Flow Dig (DFA)
ER Diagrams
Documentation
Manuals Source Code Listings
Test data
Testing
Test Results
Operating procedures consist of instructions to setup and use the software system and instructions
on how to react to system failure.
System Overview
User
Beginner’s guide tutorial
Manuals
Operating Reference guide
procedures
Installation guide
Operating
Manuals
System admin guide
Software Process
The software process is the way in which we produce software. This differs from organization
to organization. We need effective software development processes, so that developers can systematically
use the best technical and managerial practices to successfully complete their projects.
It is however very difficult to improve the software process. Reasons –
1. Not enough time : Unrealistic schedules leave insufficient time to do essential project
work. No software groups are sitting with plenty of time to explore what is wrong with their
current development process and what should they do differently.
2. Lack of Knowledge : Many software developers do not seem to be familiar with industry
best practices. Developers look out for books on Java, but do not look for anything about
processes, testing or quality.
Industry awareness of process improvement such as CMM and ISO 9001 have grown but
not effective.
3. Wrong Motivations : Developers aim for higher CMM level or external certification (ISO
9000) just because an external entity / senior manager demand it. However, main motivation
should be customer satisfaction, reusability.
4. Insufficient Commitments : Software process improvement fails because of true
commitments. Management sets no expectation from the development community regarding
process improvement.
The investment made in process improvement will not have an impact on current
productivity because it is to work toward better tomorrow.
Improved future state
Initial Process
state improvement
begins
Productivity
Learing Curve
Time
Process Improvement Learning Curve
Software Characteristics
1. Software doesn't wear out : There is a well known bath tub curve that applies to
hardware products.
Burn
in
Time
Failure
Intensity
Time
It becomes obsolete only if the environment for which it was developed changes. Retired
due to new environmental changes, new requirements, new expectation etc.
2. Software is not manufactured : It is a one-time development and continuous maintenance
effort, in order to keep it operational. Making 1000 copies is not an issue and does not
involve cost. For hardware every copy cost due to raw material and other expense.
3. Reusability of Components : Every project is a new project. We start from scratch.
However effort has been made to design standard components (like GUI) that may be
used in new projects. However in hardware revsability is a natural part.
4. Software is Flexible : A program can be developed to do almost anything. This sometimes
make software development difficult to plan, monitor and control. This unpredictable behavior
is referred to as 'Software Crisis'.
Software Myths
1. Software is Easy to Change : Source code is easy to alter, but making changes without
introducing error is extremely difficult. Every change require the complete system to be
reverified. If not taken care, it is tedious and expensive process.
2. Computers provide greater reliability that the devices they replace : In manual
account systems, human error was a fact of life. Now software error.
3. Testing can Remove all errors : Testing is to show presence of errors not its absence.
Effective test case is to find maximum possible errors. The more we test the more
confident we are about the design.
4. Reusing Software Increases Safety : Code Reusability affects development efficiency.
5. Software can Work Right the First time : Software engineers are often asked to deliver
the software without even building a prototype.
6. Software can be Designed Thoroughly enough to Avoid Most Integration Problems
: There is no tool for inconsistencies in specification. Special care is required to under
stand the specification and should be resolved right before design.
7. Software with more Features is better Software : It is better, that software with less
features works out well.
8. Addition of more software engineers will make up delay : Software engineers if don't
coordinate with can other well will add up to delay.
Contact Us : Website : www.eduncle.com | Email : [email protected] | Call Toll Free : 1800-120-1021 3
Computer Science and Applications (Software Engineering)
9. Aim is to Develop Working Program : Aim of software engineering has been shifted to
good quality, maintainable programs.
Some Terminologies
1. Deliverable and Milestones :
Deliverables – generated during software development.
Example : Source code, user manuals.
Milestone – that ascertain status of the project.
Example : Formalization of specification, completion of design document.
2. Product and Process :
Product – what is to be delivered to the customer set of deliverables only.
Process – It is the way in which we produce software.
It is important for good quality software.
3. Measure, Metrics and Measurement :
Measure – Quantitative indication of size, capacity, productivity, reliability of product/process.
Measurement – act of evaluating a measure
Metrics – quantitative measure of degree to which a system, component or process
possesses a given attribute.
Example :
Measure (single data point) – Number of errors uncovered in a single module.
Measurement (collection of one or more data points) – a number of module reviews
are investigated to collect measures of number of errors in each modules
Metrics (relate individual measure in some way) – average number of errors found
per review.
4. Software Process and Product Review :
Process Metrics : quantity attributes of software development process and environment.
Example – productivity, quality, failure rate, efficiency.
Product Metrics – measure for software product.
Example Size, complexity, functionality etc.
5. Productivity and effect :
Productivity – rate of output
– quantity, of output & unit of time
LOC
KLOC / PM
days / month
Project Dependency
4 2 Product
order
3
Process
Software development is a people centric activity. Hence, success of the project is on the
shoulders of people who are involved in the development.
People
Software development require good managers. Managers who can understand the
psychology of people and provide good leadership. A good manager ensure probability of
success improves.
Areas to focus include proper selection, training, compensation, career development,
work culture etc.
It is the responsibility of manager to manage, motivate, encourage, guide and control
people of his/her team.
Product
It is what we want to deliver to the customer.
Objectives and scope of work should be defined clearly to understand the requirements.
Alternate solution should be discussed to help managers select the best approach within
constraints such as delivery, deadlines, budgetary restrictions, technical interfaces etc.
Without well defined requirements, it is impossible to define reasonable estimates of cost, time
and schedule of projects.
Process
Way in which we produce software.
If the process is weak, end product will suffer.
There are now a days different life cycle models and process improvement models that can be
selected. Ex-CMM.
Project
A proper planning is required to monitor the status of development and to control the complexity.
Also, the requirements should be defined, concrete. Do freeze the requirement. Changes should
not be incorporated to avoid software surprises. Software surprises are risky and should minimize them.
All four factors are important for project's success.
Solved Examples
1. Software does not wear-out in the traditional sense of the term, but software does tend to
deteriorate as it evolves, because :
(A) Software suffers from exposure to hostile environments.'
(B) Defects are more likely to arise after software has been used often.
(C) Multiple change requests introduce errors in component interactions.
(D) Software spare parts become harder to order.
Contact Us : Website : www.eduncle.com | Email : [email protected] | Call Toll Free : 1800-120-1021 5
Computer Science and Applications (Software Engineering)
1. (C) Software doesn't wear out but as the environment changes and needs change, it becomes
gradually less useful/effective and more errors.
2. Which of the following is not a key issue stressed by an agile philosophy of software engineering?
(A) The importance of self-organizing teams as well as communication and collaboration
between team members and customers.
(B) Recognition that change represents opportunity.
(C) Emphasis on rapid delivery of software that satisfies the customer.
(D) Having a separate testing phase after a build phase.
2. (D) List the key issues stressed by an agile philosophy of software engineering:
The importance of self-organizing teams
Communication and collaboration between team members and customers
Recognition that change represents opportunity
Emphasis on rapid delivery of software that satisfies the customer