Quality and Productivity Factors Mrs. R. Nancy Beaulah MCA., M.Phil., Assistant Professor Department of Computer Applications V.V.Vanniaperumal College for Women Virudhunagar
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:
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 Appropriate Goals Rising Expectations Other Factors
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.
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.
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.
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.
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 .
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.
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.
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.
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.
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.
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 estimation.
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.
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
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.
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.
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.
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.
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.
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.
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.
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.
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.
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 also.
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 quality.
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.
Reference: Software Engineering Concepts , Richard Fairley , Tata McGraw Hill Edition.