Factors affecting the development of software

Big Image

Software engineering can be considered as an answer to many problems that pervade the software development activity. It would be worthwhile to explore some of the problems faced by the industry and then to understand how the software engineering discipline is equipped to handle them.

Problems faced in process of Software Development:-

1. Individual Ability

2. Team Communication

3. Non-linear Estimation

4. Change Control

5. Available Project Time

6. Problem Understanding

7. Inadequate Training

8. Lack of Management Skills

9. Level of user Expectations

Individual Ability

There is 2 aspects of individual ability.

1. Competence of Individual

2. Knowledge /familiarity with the application area under development.

Unlike other professionals, a software person is required to extremely competent in the technology that is employed for software development, possess a good problem solving abilities and also be well versed with the application area that has to be automated. So whether or not we liked accounts in school, we need to our debits from credits when working on an account system.

Lack of the knowledge of the application area is known to have resulted in low productivity and poor quality.

Most of the times the competence levels of an individual reflects very heavily in small or medium sized projects, where the number of programmers is few. However ,in larger projects, the effects pf poor programming are averaged out ,as there will be also be extremely efficient pieces of code written by the more competent programmers.

Software Engineering provides methods, tools and procedures, which to some extent, even out the competency levels that exist among individuals and provide standardization.Neverthless, an individual’s competence remains a factor of some importance in the entire process.

Team Communication

Here is dealing with paradox. It is a well known and proven fact, that programmers have a low social need and prefer to work alone, rather than in groups. But a software project, like all other projects, is a team work.

Software Engineering practices attempt to resolve the situation by providing for bring-your-work-in-the-open techniques like, structured walkthroughs and design reviews.

Another misconception about team communication is that if you put more people on a project running behind schedule, it will run faster.

Men are not machines and each individual needs to communicate with other. Notice how the communication complexity increases. We could enter spending more time to trying to decipher what others are communicating rather than pushing the project to its stipulated completion date.

Brooks has stated that putting more men on a late project may make it later-and nothing could be closer to the truth.

In the words of Brooks, “Men and months are interchangeable commodities only when a task can be partitioned among many workers with no communication among them. This is true of reaping wheat and picking cotton : it is not even approximately true…of programming”.

The underline assumption for the above is that men and months are not interchangeable-that if we will put more men on project, the time taken to complete a task could increase drastically.

Software Engineering does bring to use structured forms of communications and reporting mechanisms, such that each person knows what is other is taking about. So minimum time is spending deciphering communication.

Non-linear Estimation

Any estimate of how long it will take to develop a piece of software dependent on two basic facts- the complexity of the software and its size.

One method of grading complexity is by the type of software being written that is

1. Application

2. System

3. Utility

It is a generally accepted fact that application programs have the highest productivity and systems programs the lowest. Size and complexity of programs have a non-linear bearing on the effort required to develop them. That is to say that, we cannot make generalization such as –If a software product is twice as large or twice as complex as an existing one, It will take twice as long to develop it. In fact studies have revealed that it may take 10 times longer or even 100 times longer.

Use of software engineering practices ensures that we do not rely upon ad hoc linear estimation. It treats software times and effort estimation more formally and provides a place for it in the software development life cycle.

Change Control

The fact that software can be made flexible to suite changing requirements is its strength, but it is a software engineer’s night mare. Requirements can change because of changing business conditions or because of poorly understood requirements. While the first is acceptable, the second is not.

Software engineering provides for formal methods for understanding and documenting user requirements such that the changes to software for this reason are minimized. It also provides for a formal method of documenting changes in business situations that may trigger changes in the software. First document change required, and then document changed piece of software. Software management is a full – fledged activity that treats change control and falls under the purview of software engineering.

Available Project Time

Staffing a software project is a critical activity, which unfortunately is often ignored or relegated to the background. It is a common occurrence that when estimated time required to develop a piece of software needs 4 months, project managers would like to put 2 programmers to speed up the work or worse still put 4 people to have the job finished in 1 month.

In such cases we ignored communication factors discussed earlier and the fact that each of these 4 people has learning curves, which by it mat exceed the project time of 1 month. On the other hand these 4 people may have extensive experience of having developed similar systems before, and may be quick to get off the mark and get the job finished in a month- there is no rule of thumb that applies here.

Problem Understanding

It is a non fact that one of the problems faced by the software engineers is the understanding of the user problems. Without a complete and comprehensive understanding of the problem at hand we can never develop quality software. Software engineering procedure provides various mechanisms and builds adequate time for these in the product life cycle.

Inadequate Training

Most entry-level programmers are not adequately trained to handle the multifarious activities of a Software engineering project. They consider their jobs to include only coding and some related tasks such as maintenance to the extent of fixing”bugs”. Communication with other team members and coordinating activities of a project is not for them. They also do not enjoy working in teams and are unfamiliar with project management techniques.

They face difficulty in expression themselves with out using technical jargon- and that puts off the user and makes communication even more difficult.

Software engineering has brought the multi-faceted task associated with a software project out of the closet. Techniques of project reviews, structured walkthroughs, design reviews bring the discussion of various project-related issues into the open. So more and more people on the project are able to learn on-the-job and appreciate the importance of these techniques. Software engineering tools enable unbiased communication. Therefore communication is standardized to a large extent.

Lack of Management Skills

This problem has arisen because historically, technically competent individuals have been promoted as project managers –they do not, usually have the inclination and training to perform managerial tasks associated with a project.

Level of user Expectations

Simply stated, more the industry highlights the reliability, quality, safety, and flexibility issues of software, more the user expectations rise.

User will expect the industry to perform unprecedented levels of quality. And the industry itself will place demands on members of the software development community for a sterling performance, fuelled by research in newer and better software techniques, tools and procedures.

The need for Software engineering practices is impelling also because of the software “crisis” that the industry faces.

Client Login

User ID
Password
 
Our offshore clients may login for review the status of the work, place another order , cash settlements etc.

Related Readings:

ImageWhy  Outsourcing to India ?
With the process of Business Outsourcing being proved an effective method over the time, it was evident that CLAVE LAND learns and moves with the racing market.

Accommodating specifically cost controlled budget on a comparative study, accompanied by highly skilled professionals working with cultural ethos, India has always been with the reputation as being the forerunner in Outsourced services.

CLAVE LAND maintains an Offshore software Development Company (ODC) in India essentially to provide budget software development outsourcing services to its clients.
 

ImageOffshore Software Development Approach
Keeping in mind the needs of our clients, CLAVE LAND's software outsourcing approach in India was initiated by facilitating services, extending the resources in a country developing rapidly in the IT sector.
With the contemporary best of software professionals, web designers, conceptualists and skilled software developers available in hand, CLAVE LAND's Offshore Outsourcing decision has been justified over the period of time.

ImageQuality Assurance
Quality is an ever-extending goal - the better you are, the better you need to be.

Outsourced software quality assurance is the best bet to assure the performance of any software without sacrificing on deadlines and resource utilization. Design and development usually get a lot of attention while putting software together. What usually gets sacrificed due to a rush to market is quality.

The improvement quality process is infinite, and marked only by milestones, never by completion! We recognize that, to fulfill our goal of self-evident quality, we need to constantly improve our deliverables to match the increasing expectations of our customers. With standardization being the key to all growth - we review all software development processes periodically and enhance them regularly to move towards standardization.
CLAVE LAND 's periodic quality training sessions of coding standards, best coding practice, documentation standards and quality assurance to enhance the performance of all employees.