This document discusses 15 factors that influence quality and productivity in software development processes: individual ability, team communication, product complexity, appropriate notations, systematic approaches, change control, level of technology, level of reliability, problem understanding, available time, required skills, facilities and resources, adequacy of training, management skills, and appropriate goals. Each factor is described in 1-3 paragraphs on how it can impact quality and productivity.
Factors influencing quality and productivity in software engineering
1. Quality and Productivity
Factors
Mrs. R. Nancy Beaulah MCA., M.Phil.,
Assistant Professor
Department of Computer Applications
V.V.Vanniaperumal College for Women
Virudhunagar
2. Quality and Productivity
Factors
Development and Maintenance of
software products are complex tasks.
It requires Technical and Managerial
skills.
It’s Quality and Productivity depends
on the processes which develop and
maintain those software products.
Some factors that influence quality
and productivity are:
3. 1. Individual Ability
2. Team Communication
3. Product Complexity
4. Appropriate Notations
5. Systematic Approaches
6. Change Control
7. Level of Technology
8. Level of Reliability
9. Problem Understanding
10. Available Time
11. Required Skills
12. Facilities and Resources
13. Adequacy of Training
14. Management Skills
15. Appropriate Goals
16. Rising Expectations
17. Other Factors
4. Individual Ability
Software Engineering is labor –intensive. So, its
Productivity and Quality needs ability and effort.
There are two aspects to ability.
The general competence of the individual
Familiarity of the individual with the particular application
area.
On very large and extremely large projects, the
no of programmers is so large that individual
differences in programmer productivity will be
average.
But, small and medium size projects are
extremely sensitive to the ability of the individual
programmer.
Lack of familiarity with the application area will
result in low Productivity and poor Quality.
5. Team Communication
In general, programming is an individual and
private activity.
But, in large projects, the programmers need
to discuss the exact details of their work.
Sometimes, the programmers may
misunderstand their roles and commit
mistakes.
So, the communication among the
programmers must be improved and it is a
goal of Software Engineering.
If the product size increases, then the
complexity of interactions among program
components increases. As a result,
programmer productivity decreases.
6. Contd…
No of communication path among
programmers = ( n ( n - 1 ) ) / 2
Where, n – no of programmers.
If the no of team members is increased from 3 to 4 to 5,
then the no of communication paths also increased from 3
to 6 to 10.
Brooks Law:
Adding more programmers to a late
project may make it later.
7. Product Complexity
There are three levels of Product Complexity.
◦ Application Programs
◦ Utility Programs
◦ System – level Programs
Application Programs:
◦ It includes scientific and data processing routines written in a high level
language such as COBOL, FORTRON, C, C++.
◦ It has the highest productivity.
◦ It can be produced at a rate 25 to 100 times that of system programs.
Utility Programs:
◦ It includes compliers, assemblers, linkage Editors and loaders.
◦ They may be written in high level language or assembly language.
◦ It can be produced at a rate 5 to 10 times that of system programs.
System-level Programs:
◦ It includes data communications packages, real-time process control systems
and Operating systems routines.
◦ They may be written in high-level system language.
◦ They have the lowest Productivity.
8. Appropriate Notations
Programming languages provide compact notations for
the implementation phase of Software development.
Good notations clarify the relationships and interactions
of interest, whereas, poor notations complicate.
Generally, programming languages provide concise
notations for implementation.
But, there are no universally accepted notations in
Software Engineering.
Appropriate notations provide vehicles of
communication among project personnel.
It introduces the possibility of using automated software
tools to manipulate the notations and verify proper
usage.
9. Systematic Approaches
In every field, there are certain
accepted procedures and techniques.
A single approach to software
development and maintenance will not
be adequate to cover all situations.
Therefore, either one or a combination
of the methods is followed to software
development and maintenance.
10. Change Control
The flexibility of software is a great strength and
also a great source of difficulty in Software
Engineering.
The requirements to change may occur due to
poor understanding of the problem, changes in
hardware or software environment, or external
economic or political factors.
Notations and procedures provide the ability to
trace and assess the impact of proposed
changes.
Use of appropriate notations and techniques
makes controlled change possible without
degrading the Quality of work products.
Planning for a software project must include
plans for change control.
11. Level of Technology
It includes factors such as,
Programming language
Machine environment
The programming practices
Software tools.
In the programming language, the facilities for data
definition and data usage are improved.
The machine environment includes a set of hardware
and software facilities available for developing, using
and maintaining a software product. Its stability and
availability has a strong influence on productivity and
Quality.
Modern programming practices include use of
systematic analysis and design techniques, appropriate
notations, structured coding, systematic techniques for
examining design documents and source code and
systematic testing.
12. Level of Reliability
Every software product must possess
basic level of reliability.
Extreme Reliability is gained only with
great care in analysis, design,
implementation, testing and
maintenance of software product.
But, extreme reliability results in low
productivity.
13. Problem Understanding
It is a difficult issue that it fails to
understand the true nature of a problem
to be solved.
The customer may not understand the
nature of the problem. The software
Engineers don’t understand the area of
the application.
Careful planning, customer interviews,
task observations, prototyping, user’s
manual and precise product specification
can increase the problem understanding
of both customer and developer.
14. Available Time
Software projects are sensitive to total
effort and also to elapse time and the no
of people involved.
Instead of using 6 programmers for 1
month, it is effective to use only one
programmer for 6 months. This is
because the learning curve, co-
ordination and communication occupy a
large percentage of elapsed time.
Staffing levels and elapsed times for a
software development play an important
and difficult role in cost and resource
15. Required Skills
Software Engineering requires many
skills.
For Programmers:
◦ Good Communication Skills
Needed to extract information from Customer
Important for gaining user needs and constraints.
◦ Knowledge about application area.
◦ Problem solving skills.
To create requirement definition and design
activities.
◦ Concentrated attention
To implement the software.
16. Contd…
Development of a software is similar
to publishing a book.
◦ No spelling mistakes, No errors even
punctuation.
Deductive Skills
◦ To debug the software
Consideration of each and every
situation
◦ For Test Planning
Destructive Skills
◦ For Stress testing
17. Contd…
Good Writing Skills
◦ Preparation of external documents.
Interpersonal Communication and oral
skills.
◦ Working with customers and developers.
For Software Engineers:
◦ Social Skills
To interact with managers, customers and other
engineers.
There is no need that every software engineer
should have all the skills for a programmer.
But all the skills must be present inside a
programming team.
Project manager should assign work according to
the individual programmer skills.
18. Facilities and Resources
Facilities that motivate programmers
◦ Work related factors (good machine
access)
◦ Quiet place to work
◦ Giving importance to the programmer
than the status related factors.
◦ Reserved parking areas.
◦ Keys to the executive rest rooms.
Positive aspects always create
challenges and advancement to the
professional progress.
19. Contd…
Negative aspects
◦ Inappropriate management
◦ Company’s policies
◦ Organization which has rigid and procedures,
policies and constraints.
Programmers should receive
motivational rewards according to their
work.
They will get easily frustrated with poor
facilities and inadequate resources.
Software engineers should balance
between motivating and frustrating
factors.
20. Adequacy of Training
Product implementation is one step in
software development.
But most of the institution train only for
this.
Only some of the institution alone offer
courses for analysis, design, testing
and so on.
Such institution are small in number.
21. Contd…
Lacking Skill in entry level
programmers:
◦ Express oneself clearly in English.
◦ Develop and validate software
requirements and design specification.
◦ Work with in application area.
◦ Perform software maintenance.
◦ Perform economic analyses.
◦ Work with management techniques.
◦ Work in groups.
22. Contd…
Reasons for Lacking Skills:
◦ It is difficult to find out the exact reasons.
◦ There is major difference in education supply
and industrial demand.
◦ Most programmers are trained as computer
scientists not as software engineers.
◦ Computer Science education provides a
basic understanding of the underlying
theories and concepts.
◦ But software engineering requires analyzing,
designing, constructing, testing, verifying and
so on.
23. Management Skills
Software projects are often managed
by the people who know little about
software engineering.
Most of the software engineering
problems are unique.
Managers who managed software
projects even find harder for managing
software projects.
The activities of hardware projects and
software projects differ.
24. Contd…
Mostly software engineer has to report
everything to a hardware engineer or
people who have little knowledge about
software.
This is very unfortunate situation for both
of them.
Promoting technically competent people
to manage software is also fails.
Most of the time organization give
management training to software
engineers and promote them as software
engineers.
But it is not always succeeded.
25. Appropriate goals
Goal of software engineering is
development of software products
appropriate for their intended use.
Commonly, every software product
must posses certain level of
generality, efficiency and reliability.
Excessive effort sometimes make it
difficult for programmers.
So the trade off is achieving goals in
project planning.
26. Rising Expectations
Main problem in software engineering is
rising expectations.
Development of tools and techniques
improve software quality and
productivity.
But diversity, size and complexity of the
software increases faster than the
demand.
Vast technological improvement in
hardware technology also increases the
expectation towards software technology
27. Contd…
This increases pressure to the
software engineers.
Currently we are unable to satisfy the
demand for software product.
We are clear about the reasons.
◦ May be nature of the software.
◦ Human problem solving capabilities.
◦ Immaturity of Software engineering
discipline.
Convinced that systematic techniques
will some what improve the product
28. Other Factors
Other factors that affect programmer’s
productivity are
◦ Familiarity with the application area.
◦ Stability of the computing system used to
develop and modify the software.
◦ Memory and timing constraints of the
software product.
◦ Experience with the programming
language.
◦ Data base size.