You are on page 1of 9

1.

Individual Ability:
Production and maintenance of software products are labour intensive activities. Productivity and Quality are direct functions of individual ability and effort. There are two aspects of ability General competition of the individual Familiarity of the individual with the particular application area. Lack of familiarity with the application area can research in low productivity and poor quality. On very large and extremely large projects no of programmers so large. The individual differences in programmer productivity will tend to average out. Modules developed by weaker programmers may show poor quality and may lag in delivery time. Small and medium size projects (5-fewer programmers)are extremely sensitive to the ability of the individual programmer. Individual ability is a primary factor in quality and productivity. Programming has regarded as an individual and private activity. Programmers are rarely precede as public documents and they rarely discuss the exact details of the work in a systematic manner. So as a result ,the programmers may miss understand the role of their modules in an evolving system. This made mistakes that may not be detected until some time later. Many of the recent innovations in software Engineering such as design, reviews and code reading exercise have the goals of making software more visible and improving communications among programmers. Increasing product size results in decreasing programmer productivity due to the increased complexity of interactions among program components. Due to this increased communication is required among programmers, managers and customers.

2. Team communication:

From Brooks observation: No of communication path among programmers = n(n-1)/2 Where, n=no of programmers. Increasing the number of team members from 3 to 4 to 5 increases the no of communication path from 3 to 6 to 10. Brooks law: Adding more programmers to a late project may make it later

3. Product complexity:
There are 3 levels of product complexity. 1. Application Programs 2. Utility Programs. 3. System level Programs. Application Program It includes scientific and data processing routines written in a high level language such as COBOL, FORTRAN, C, C++. Utility Program It includes compilers, Assemblers, linkage Editors and loaders. They may be written in high level language or Assembly language.

System Level Programs: It includes data communication packages real time process control system, OS routines in any languages.(i.e.)high level or assembly. Application programs have the highest productivity and the system programs the lowest productivity. Utility programs can be produced at a rate of 5-10 times of system programs. Application programs at a rate of 25-100 times of system programs. A product that is twice as large or twice as complex as a known product, by whatever measure other than effort may require 10 times or even 100 times the amount of effort required for the known product.

4. Appropriate Notations:
In software engineer the representation schemes have fundamental importance, programming languages provides compact notations for the implementation phase of software development. But there are no widely accepted notations for stating functional requirements ,design specifications, test plans are performance criteria. There are no universally accepted notation 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.

5. 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. In the evaluation of software engineering it is not clear which of the various approaches to software development should be used in which situation. The flexibility of software is a great strength and also a great source of difficulty in software engineering. Requirements can also change due to poor understanding of the problem are external economic and political factors beyond the control of the customers or developers. Notations and procedures provide the ability to trace and access the impact of proposed changes are necessary to make visible the true cost of apparently small changes to source code. Use of appropriate notations and techniques makes control change possible without degrading the quality of work products. Planning for software project must include plans for change control.

6. Change Control:

7. Level of Technology:
It include factors such as programming language. 1. Machine Environment 2. The Programming Practices. 3. Software tools Modern Programming languages provide improved facilities for data definition and data usage. Improve Constructs for specifying control flow, better modularization facilities, user defined exception Handling and facilities for concurrent programming.

The machine environment includes a set of hardware and software facilities for developing, using and maintaining a software product. Modern programming practices include use of systematic Analysis and design techniques, notations, structure coding, systematic techniques for designing and documenting and testing.

8. Level of Reliability:
Every software product must possess basic level of reliability. Extreme reliability is gained only with great care in analysis, design, design implementation, system testing and maintenance of software product. Both human and machine resources are required to obtained increased reliability.

9. Problem Understanding:
Failures to understand the true nature of the problem to be solved is a common and difficult issue. Often the customer does not truly understand nature of the problem. Often the software engineering does not understand the application area and has trouble communicating with the customer because of differences in educational backgrounds view the points and technology. Careful planning customer interviews, task observations and prototyping, a preliminary version of the users manual and precise product specification can increase both customer and developer understanding of the problem to be solved.

10.

Available Time:
A software project requiring 6 programmer-months of effort can be completed by 1 programmer in 6 months or by 6 programmers in 1 month. Software projects are sensitive not only to total effort but also to elapses time and the no. of people involved. Utilizing 6 programmers for 1 month will be less effective than using 1 programmer for 6 months. This is because the learning curve for 6 programmers on an 1 month schedule will occupy a large percentage of the elapsed time and because the effort required for co-ordination and communication among 6 programmers. Programmer Productivity is also sensitive to the calendar time available for project completion. Determining optimum staff in levels and proper elapsed times for various activities in software product development is an important and difficult aspects of cost and resource estimation. Software Engineering requires a vast range of skills. Good Communications Knowledge of application area Requirement definition and design Problem solving skills Implementation of software (i.e.)Good programming knowledge, no syntax error Debugging and test plans Inter personnel communication skill.

11. Required Skill:


12. Facilities and Resources:


Work related factors such as Good machine access and quiet place to work are more important. Software project managers must be effective in dealing with the factors that motivate the programmers to maintain high product quality, high programmer productivity and high job satisfaction. Express oneself clearly in English Develop and Validate software requirements and design specifications. Work within application area Perform software maintenance Perform economic analysis. Work with project management techniques Work in groups

13. Adequacy of Training:


14. Management Skills:


Many of the problems in software project management are unique. Managers experienced in management of computer hardware projects find software project management to be difficult. This is due to the differences in design methods, notations and development tools. Many Organizations offer project management training to software engineers to prepare them for project management task.

15. Appropriate Goals:


Primary Goal of software engineering is to development of software products for their intended use. Every software product must provide optimal level of 1. Generality 2. Reliability 3. Efficiency

16. Raising Expectations:


There are two interrelated aspects of raising expectations 1. How much functionality, reliability and performance can be provided by a given amount of development effort. 2. Issues of fundamental limitations of software technology.

17. Other factors: Managerial Issues:


Success of Software project involves Technical Activities Managerial Activities Managers Control 1. Resources 2. Environment Important managers responsibility

Software product delivered on time Software working according to customers wish Software within cost estimates

Other managerial responsibility:


Business Plans Recruiting customers Marketing Strategies Recruiting and training employees Important Problems: Planning is poor Selection for project managers are poor (i.e.) Procedures and Techniques Description of project is poor Estimation of resources for software project is poor Success criteria is inappropriate Decisions rules are poor(for selecting the proper organizational structure, correct management techniques ) Procedures ,methods and techniques are not readily available.

Methods for solving these problems: Educate and Train Top management Project Software developers Analyze the data from previous software project to find effective methods Define objectives, quality Establish success priority criteria Develop accurate cost and schedule that are accepted by management and customer Selection of project managers Specific work assignments to software developers

1) Individual ability Production and maintenance of software is a labor intensive activity. So these factors are direct functions of individual ability and effort. There are two aspects to ability a) The general competence of the individual and b) Familiarity with the particular application area. 2) Team communication The new approach towards software development requires many individuals to be involved. Many recent innovations in software engineering, like design reviews, structured walkthroughs and code reading exercises improve communication between the programmers.r. BIT 3) Product complexity There are three generally acknowledged levels of product complexity a) Application programs, b) Utility programs and c) System level programs. Application programs have the highest productivity and Systems programs have the lowest productivity, measured in terms of LOC per programmer day. 4) Appropriate notations The representation schemes are of fundamental importance. Good and standardized notations can clarify the relationships and interactions, of any specific interest. 5) Systematic approach Following certain standard systematic approach in procedures and techniques makes the software development process very professional and contribute in improving the quality of the software product. 6) Controlling change o The factors that contribute the factor of change in software are a) Design deficiencies in hardware, b) Change in requirements due to poor understanding of problem, c) External economic and political factors etc. o To minimize the change the following suggestions can be utilized a) Use of appropriate notations and standard techniques, b) Scope of the mechanism to change i.e. flexibility provided to the software, c) During planning process the strategies for controlled changes should be included, etc. d) 7) Level of technology As the level of technology is changing rapidly hence modern programming languages should be used during development. Modern programming languages provide a) Improved facilities for data definition & data usage, b) User-defined exception handling,

c) Concurrent programming etc. Also varied tools are provided such as assemblers and primitive debugging facilities integrated under a single fully integrated development environment. 8) Level of reliability High reliability can be achieved by taking great care during a) Analysis, b) Design, c) System testing and d) Maintenance. Both human and machine resources are required to increase reliability. Too much reliability causes decreased productivity when measured in LOC produced Per Programmer Month. 9) Problem understanding Failure to understand the problem can result in an unsuccessful project. There are some suggestions for avoiding these problems a) Careful planning, b) Customer interviews, c) Task observation, d) Prototyping, e) Precise product specifications etc. 10) Available time Programmer productivity is sensitive to the, calendar time available for project completion. It is observed that the development time can not be compressed below 75 percent of the nominal development time. Extending a project beyond some nominal duration increases the total effort required. 11) Required Skills The practice of SE required variety of skills. The requirement definition and design activity are conceptual in nature hence require good creative problem solving skills. Debugging requires deductive or detective kind of skills. Preparations of external documents require good writing and expressive skills. Software Engineers should have good social skills to interact properly with the managers, customers and other engineers. 12) Facilities and resources Through various studies it had been found that work-related factors such as a) Good machine, b) Quite place of work, c) Plenty of access to the machine d) Creative challenges, e) Variety of tasks, f) Opportunities for professional advancement etc, creates more satisfaction among the programmers rather than status factors. 13) Adequacy of training It is seen that the freshers from college do not have the following skills, which are very necessary for becoming a successful software engineer a) Express one self clearly in English

b) Develop & validate software requirements and design specifications. c) Work with in application area. d) Perform software maintenance. e) Perform economic analysis. f) Work with project management techniques. g) Work in groups. Hence adequate of training is required for entrylevel programmers. 14) Management Skills As the concept of SE is new hence the managers who work in traditional styles are unable to properly manage the SE activities. Also it is seen that during giving promotions if the competency of the candidate is only measured in the technical point of view then there may arise the same kind of problem. So the management skills in a candidate should also include technical and managerial competency. 15) Appropriate goals Setting of appropriate goals is a major contributing factor in successful execution of a project. Generally the most common goals include a) Generality, b) Efficiency and c) Reliability. High productivity and quality factors can be achieved by adhering to the goals and requirements established for the software during project planning. 16) Rising expectations Progress is constantly being made in the development of tools and techniques to improve software quality and programmer productivity, equally diversity, size and complexity of software applications are growing at a fast rate but also the expectations and increasing demands. Hence its necessary to adhere to the latest that is happening. 17) Stability of requirements The requirements of a software project includes a. Manpower, b. Software and c. Hardware. The requirements definition is done during problem analysis phase where the amount and type of resources are predicted. In this point if the analysis and prediction is not based on facts, expert guidance and experience from previous projects, then the requirements would change throughout the development process and may extend to maintenance phase. Un-stability of requirements increases the cost, degrades overall quality and reduces the productivity. Hence great care should be taken during the initial phase of problem identification & problem analysis.

Other factors There are several other factors that influence the productivity a. Familiarity to the programming environment, b. Amount and type of access to the computing system,

c. d. e. f.

Stability of the computing system, Memory & timing constrains, Experience in that particular area of interest, Data-base size etc.

Managerial Issues Ideal or expected activities of Managers in a firm 1) Managers should control the resources and the environment in which technical activities occurs. 2) They also have ultimate responsibility for ensuring that software products are delivered on time and within cost estimates. 3) They have the responsibility of ensuring that the software products exhibit the functional and quality attributes desired by the customer. 4) The managers are responsible for project management which includes methods for organizing and monitoring the project progress. 5) Organizing and monitoring a project includes a. Cost estimation, b. Resource allocation policies, c. Budgetary control, d. Setting project milestones, e. Making schedule adjustments, f. Establishing quality assurance procedures, g. Establishing effective communication between project members, h. Customer communications, i. Development of contractual agreements with customers taking in to view legal obligations and responsibilities

You might also like