Welcome to Scribd, the world's digital library. Read, publish, and share books and documents. See more
Standard view
Full view
of .
Save to My Library
Look up keyword
Like this
0 of .
Results for:
No results containing your search query
P. 1
1_software Development Process

1_software Development Process

Ratings: (0)|Views: 893|Likes:
Published by api-3835955

More info:

Published by: api-3835955 on Oct 18, 2008
Copyright:Attribution Non-commercial


Read on Scribd mobile: iPhone, iPad and Android.
download as DOC, PDF, TXT or read online from Scribd
See more
See less





1. Introduction

Computers are becoming a key element in our daily lives. Slowly and surely they are taking over many of the functions that affect our lives critically. They are now controlling all forms of monetary transactions, manufacturing, transportation, communication, defense systems, process control systems, and so on. In the near future, they will be found in our homes, controlling all forms of appliances. Left to themselves, they are harmless pieces of hardware. Load the right kind of software; they can take you to the moon, both literally and figuratively. It is the software that gives life to them. When they are going to play such a crucial role, one small flaw either in the hardware or the software can lead to catastrophic consequences. The sad part is, while there are well defined processes based on theoretical foundations to ensure the reliability of the hardware, same thing can not be said about software. There is no theory for software development as yet. But at the same time, it is mandatory that software always behaves in a predictable manner, even in unforeseen circumstances. Hence there is a need to control its development through a well defined and systematic process. The old fashioned 'code & test' approach will not do any more. It may be good enough for 'toy' problems, but in real life, software is expected to solve enormously complex problems. Some of the aspects of real life software projects are:

Team effort: Any large development effort requires the services of a team of

specialists. For example the team could consist of domain experts, software design experts, coding specialists, testing experts, hardware specialists, etc. Each group could concentrate on a specific aspect of the problem and design suitable solution. However no group can work in isolation. There will be constant interaction among team members.

Methodology: Broadly there are two types of methodologies, namely,

'procedure oriented methodolgies' and 'object oriented methodologies'. Though theoretically either of them could be used in any given problem situation, one of them should be chosen in advance.

Documentation: Clear and unambiguous documentation of the artifacts of

the development process are critical for the success of the software project. Oral communication and 'back of the envelop designs' are not sufficient. For example, documentation is necessary if client signoff is required at various stages of the process. Once developed, the software lives for a long time. During its life, it has to undergo lot of changes. Without clear design specifications and well documented code, it will be impossible to make changes.

Planning: Since the development takes place against a client's requirements
it is imperative that the whole effort is well planned to meet the schedule and
cost constraints.
Quality assurance: Clients expect value for money. In addition to meeting
the client's requirements, the software also should meet additional quality
constraints. They could be in terms of performance, security, etc.
Lay user: Most of the time, these software packages will be used by non-
computer savvy users. Hence the software has to be highly robust.
Software tools: Documentation is important for the success of a software

project, but it is a cumbersome task and many software practitioners balk at the prospect of documentation. There are tools known as Computer Aided Software Engineering (CASE) tools which simplify the process of documentation.

Conformance to standards: We need to follow certain standards to ensure

clear and unambiguous documentation. For example, IEEE standards for requirements specifications, design, etc. Sometimes, clients may specify the standards to be used.

Reuse: The development effort can be optimised, by reusing well-tested
components. For example, mathematical libraries, graphical user interface
tool kits, EJBs, etc.
Non-developer maintenance: Software lives for a long time. The

development team, may not be available to maintain the package. Some other team will have to ensure that the software continues to provide services.

Change management: Whenever a change has to be made, it is necessary
to analyse its impact on various parts of the software. Imagine modifying the
value of global variable. Every function that accesses the variable will be
effected. Unless care is taken to minimise the impact, the software may not
behave as expected.
Version control: Once changes are made to the software, it is important
that the user gets the right copy of the software. In case of failures, it should
be possible to roll back to the previous versions.
Subject to risks: Any large effort is subject to risks. The risks could be in

terms of non-availability of skills, technology, inadequate resources, etc. It is necessary to constantly evaluate the risks, and put in place risk mitigation measures.

2. Software Quality
The goal of any software development process is to produce high quality software.
What is software quality? It has been variously defined as:
Fitness for purpose
Zero defects
Conformability & dependability
The ability of the software to meet customer's stated and implied needs
Some of the important attributes that can be used to measure software quality are:
Correctness: Software should meet the customer's needs
Robustness: Software must always behave in an expected manner, even when
unexpected inputs are given
Usability: Ease of use. A software with a graphical user interface is considered
more user-friendly than one without it
Portability: The ease with which software can be moved from one platform to
Efficiency: Optimal resource (memory & execution time) utilization
Maintainability: Ease with which software can be modified
Reliability: The probability of the software giving consistent results over a
period of time
Flexibility: Ease with which software can be adapted for use in different

Activity (13)

You've already reviewed this. Edit your review.
1 hundred reads
Sushil Kumar liked this
Chanchal Roy liked this
khamid liked this
userraj liked this
marija555 liked this
levantri_1987 liked this
sparrkumar liked this
koosdoos liked this

You're Reading a Free Preview

/*********** DO NOT ALTER ANYTHING BELOW THIS LINE ! ************/ var s_code=s.t();if(s_code)document.write(s_code)//-->