inherent problems of software developments
The software crisis was a team given to the messy software development process in the 1970s; when software became increasingly critical to the working of certain organizations. Yet at this stage the quality of software was questionable, far from being acceptable.
Issues:-
The understanding gap:-One of the most difficult aspects of program development is in getting both the customer and the developers to understanding each others point of view.Inorder to narrow this understanding gap between the user and the developer, software engineering methods provide the preparation of a formal user specification documents. It provide for regular user review mechanisms to ensure that no deviation from user requirements takesplace.Checking back with user and getting feed back keeps the user involved in the software development activity. This also ensures that the development is able to detect the correct errors, well in time. Adequate, timely, and meaningful user interaction will help build a system that the user desire.
Software takes long to develop:-We should always remember that development of Software should take only as long as it should and nothing more. You can ensure this by using scientific estimation methods.
High development costs:-High development costs result from project schedule overruns , which in turn may be caused by incorrect estimation, and clear or ill-defined requirements that change frequently , lack of properly trained project personnel,etc. High cost is controlled by better project management, control, and review techniques such that project manager is aware of where the project money is spend. Project overruns is a common occurrence in projects that are not managed well- more so in Software projects Software is an intangible product, intellectual activity and thus it is very difficult to control. Only well-controlled project management techniques can keep a software project on track. Software engineering provides a project planning techniques. The duration that is estimated for a project has a realistic base. It puts “gut feel” estimates in tight corner. Cost of developing a piece of software can be estimated based either on lines of code or on functions of a systems or based on the experience of experts. Treating the process of software development as a project ,provides focus on other cost issues that would exist with any other project-cost of requirements , cost of delay in schedule, cost of putting more people on a project ,cost of machinery etc.
No assurance of quality:- Quality assurance forms an important part of Software engineering procedures. World wide, the industry is setting standards against which organizations can bench mark their Software quality. With quality under the sport light and globalization of the Software developments activities, organizations cannot help but develop Software that confirms to world wide standards. Software quality assurance techniques reduce the trial and error aspects in Software development.
Difficult to monitor and Control:- Software project management techniques also provides monitoring and controlling techniques for a software project. Thus a project manager should at all times be in full control of this projects and take corrective action as soon as possible. Software is “Intangible” – it is very difficult to see Software growing in the development phases without proper documentation control.
Messy Maintenance:- Software maintenance is an important activity of the Software development life cycle. Keeping the development process well documented ensures that maintenance happens smoothly whenever required.
The entire process of Software development as presented through the Software engineering spectrum is aimed at easing out maintenance. Maintenance is difficult, tedious and traditionally looked down upon by programmers who are constantly yearning to write new code. Once a piece of Software is written in a structured manner, properly documented, and is easily traceable in the system where it belongs, maintenance will no longer remain a messy affair.
A Software system is essentially comprised of a set of related Software modules, which can be modified and updated when required through periodic maintenance. As a result of this several versions are created. It becomes necessary to control and track these various versions of Software. Configuration management is that part of the Software development process, which is concerned with maintaining and controlling the relationship between all the related pieces of various versions of a product.
Software Engineering Goal
It is not possible to identify a single, overall goal for Software engineering which would satisfy all the challenges that a merge in this field. But if we had to identify a single goal for a Software engineering project then it would be “To develop a quality Software product”.
A quality Software product is one that is developed according to stated requirements, complying with the user’s need, is error free and efficient. But just to say that quality is the important goal of every Software project and leave it at that would be unfair, individual projects will have different goals.
So it is very difficult to prescribe a single goal for all Software engineering projects.
Goals have to be defined in concrete terms so that every team member understands them and is able to translate them in the day working of the project-this is how they are achieved. This is a very important attribute of a goal-a goal must be achievable. Thus when a project is broken down into phases, goals must be set for every phase and reviewed during and after the phase is over. These sub-goals of each and every phase, must collectively add to the overall goal of the project.
Not only does a software project have several goals, but some these are conflicting as well. A case in point is – making software highly reliable of ten slows down attempt to achieve higher life-cycle productivity, assuming that reliability, and productivity is two goals of this project in question.
A goal that applies well to one project may not apply so well to another. Thus in trying to identify goals of a Software engineering project, we must skillfully identify a set of desirable goals such that it minimizes the conflicts with in goals of a project.
A good example to illustrate the above point is an experiment that was conducted by Weinberg Schulman several years ago. In this experiment five teams were given the same program to write with current objectives. Team A was asked to complete the assignment with the least possible effort. Team B was to minimize the number pf statements in the program. Team C was asked to minimize the memory used by the program. team D was to produce the clearest possible program and Team E was to produce the clearest possible output.
When the results were tallied, it was found that almost every team finished first on their stated objective but lagged on the others.
So the lesson to be drawn from this experiment is to fold:
1. Goals motivate teams to perform
2. Goals can conflict with one another.
We set ourselves goals in our day to day lives and need to balance them every now and them. For instance-we are on vacation and have to get from point A to B in an hours time. We can cover this distance by train or by road-train ride is more pleasurable, relaxed scenic and takes two hours to get there, while the road is crowded and strenuous but can get you there in 45 minutes. Since we are in vacation our ultimate objective is enjoyment at every step so we should take the train to get our destination, but time is an issue. Here is the tradeoff. Such tradeoffs come by a plenty in software projects – maintainable code versus user – friendly code versus memory efficient code to cite a few.
An important point to bear in mind is that a team performs best when given well - stated and clear goals, so it is very important to verbalize or write out the goals of each phase.
There are two things to remember about goals:
Two types of goals – quantitative and qualitative –may identify for a project.
Goals must be identified for every phase in the projects- There can be goals and sub-goals in keeping with activities distribution for every phase.
An example of the type of goals can be stated for a Software project is given below.
1. Keep the program within ‘n’ K of core memory.
2. Develop product that is easy to modify by numbers other than those developing it.
3. Develop the product within ‘n’ months.
4. Used product as a means of educating some of the programming staff in project management techniques.
Some of the above are goals stated quantitatively others are stated qualitatively. Also there are some generic goals of a Software engineering products-these are qualities that Software must represent and there are specific goals of every products.
Client Login
Related Readings:
Why
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.
Offshore
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.
Quality
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.