Sunteți pe pagina 1din 6

STUDY OF SOFTWARE DEVELOPMENT PROCESS MODELS.

Abhishek Kotecha Anshuman Mahapatra Swapnil Chandra Ritesh Kaul Prof. S.B.Patil
IT Department IT Department IT Department IT Department IT Department
mpstme,shirpur campus mpstme,shirpur campus mpstme,shirpur campus mpstme,shirpur campus ME Comp, PhD Comp(P)

ABSTRACT: software development involves a series of steps at every OVERVIEW: Each of the steps in the software life cycle is supported by
instance of software life process since the start to the final product numerous methods and approaches, all well-documented by textbooks and
delivery to the client. Mostly software engineering can be a very taught in university and industrial courses. The steps are also supported by
cumbersome process but software process models help in tailoring the numerous consulting firms, each having a custom or proprietary
whole process of software development. Software must be a successful methodology, and by practitioners well-trained in it.
product hence we must consider applying an agile, adaptable process that
leads to a high quality result that meets the needs of the people who will In the past two decades it has been popular to employ an analogy between
use the product. Lets take a look on the classic definition of software. hardware design and manufacture and software design and development.
Software “engineering” has become a topic of intense interest in an effort
Software is: to learn from the proven practices of hardware engineering—that is, how
1. Instructions that when executed provide desired features, we might design and build bug-free software.
function, and performance.
2. data structures that enable the programs to adequately
manipulate information The time-honored enterprise software development process generally
3. Documents that describe the operation and use of the program. follows these steps:
• Specification or functional design, done by system analysts in consort
Before starting with the actual course of development of software we with the potential end users of the software to determine why to do this,
should look at the layered methodology towards its development. what the application will do, and for whom it will do it.
Software engineering layers include tools, methods, process and quality • Architecture or technical design, done by system designers as the way to
focus. The whole development process is the glue that holds the layers of achieve the goals of the functional design using the computer systems
this mechanism together and enables rational and timely development of available, or to be acquired, in the context of the enterprise as it now
the software. operates. This is how the system will function.
• Programming or implementation, done by computer programmers
In our seminar we have focused on process models involved in software together with the system designers.
development. It envisages at a detailed study of various process models • Testing of new systems (or regression testing of modified systems) to
used for development of soft wares in industry presently. The detailed ensure that the goals of the functional design and technical design are met.
study includes comparison of all the process models with each other. • Documentation of the system, both intrinsically for its future
Categorizing these models in the wake of classifying them according to maintainers, and extrinsically for its future users. For large systems this
the software that they are used to develop. The classification is based upon step may involve end-user training as well.
real-time case studies pondered upon by us. These case studies have • Maintenance of the application system over its typical five-year life
proved very vital in understanding the implications in choosing the correct cycle, employing the design document now recrafted as the Technical
process model thereby saving us valuable time and resources. Specification or System Maintenance Document.

Process models are actually a part of generic framework activities that These steps are traditional to the process of development and help in
provide the guidelines for software development. developing robust mechanisms for robust and swift software development.
Software development process models can be largely categorized as Some of these models have been described briefly in this abstract. These
1. Prescriptive models. under mentioned process models are some specialized models that are
2. Incremental process models. mostly used in the industry. This EXTRACT will help us grasp some of
3. Evolutionary process models. the very recurringly used process models for developing soft wares
4. Specialized process models. throughout the industry. Under explained models include:
5. Formal methods process models. 1. Capability maturity model (cmm).
These models briefly categorize the process models but there are many 2. Rapid prototyping model.
specialized models under them this report aims at giving an overview of 3. Water fall model.
process models. 4. Iterative or evolutionary model.
5. Spiral model.
6. Rational unified model.
7. Object oriented programming.
MODELS:

Capability maturity model (cmmi): Iterative or evolutionary model:

The Capability Maturity Model (CMM) for software development was The iterative development model is the most realistic of the traditional
developed by the Software Engineering Institute at Carnegie Mellon software development models. Rather than being open-loop like build-
University. CMM is an organizational maturity model, not a specific and-fix or the original waterfall models, it has continuous feedback
technology model. Maturity involves continuous process improvement between each stage and the prior one. Occasionally it has feedback across
based on evaluation of iterative execution, gathering results, and analyzing several stages in well-developed versions. Its most effective applications,
metrics. As such, it has a very broad universe of application. The CMM is this model is used in an incremental iterative way. That is, applying
based on four principles: feedback from the last stage back to the first stage results in each
• Evolution (process improvement) is possible but takes time. The process iteration’s producing a useable executable release of the software product.
view tells us that a process can be incrementally improved until the result A lower feedback arrow indicates this feature, but the combined
of that process becomes adequately reliable. incremental iterative method schema is often drawn as a circle.
• Process maturity has distinguishable stages. The five levels of the CMM It has been applied to both procedural and object-oriented program
are indicators of process maturity and capability and have proven effective development.
for measuring process improvement.
• Evolution implies that some things must be done before others..
• Maturity will erode unless it is sustained. Lasting changes require Build-and-Fix Model
continued effort.
The build-and-fix model was adopted from an earlier and simpler age of
Rapid prototyping model: hardware product development. Those of us who bought early
Volkswagen automobiles in the 1950s and ’60s remember it well. As new
Rapid prototyping has long been used in the development of one-off models were brought out and old models updated, the cars were sold
programs, based on the familiar model of the chemical engineer’s pilot apparently without benefit of testing, only to be tested by the customer. In
plant. More recently it has been used to prototype larger systems in two every case, the vehicles were promptly and cheerfully repaired by the
variants—the “throwaway” model and the “operational” model, which is dealer at no cost to their owners, except for the inconvenience and
really the incremental model to be discussed later. This development occasional risk of a breakdown. This method clearly works, but it depends
process produces a program that performs some essential or perhaps on having a faithful and patient customer set almost totally dependent
typical set of functions for the final product. A throwaway prototype on the use of your product! It is the same with software. A few well-
approach is often used if the goal is to test the implementation method, known vendors are famous for their numerous free upgrades and the rapid
language, or end-user acceptability. If this technology is completely proliferation of new versions. This always works best in a monopolistic or
viable, the prototype may become the basis of the final product semi monopolistic environment, in which the customer has limited access
development, but normally it is merely a vehicle to arrive at a completely to alternative vendors. Unfortunately in the build-and-fix approach, the
secure functional specification. From that point on the process is very product’s overall quality is never really addressed, even though some of
similar to the waterfall model. The major difference between this and the the development issues are ultimately corrected. Also, there is no way to
waterfall model is not just the creation of the operational prototype or feed back to the design process any proactive improvement approaches.
functional subset; the essence is that it be done very quickly—hence the Corrections are put back into the market as bug fixes, service packs, or
term rapid prototyping. upgrades as soon as possible as a means of marketing “damage control.”
Thus, little learning takes place within the development process. Because
Waterfall model: of this, build-and-fix is totally reactive and, by today’s standards, is not
really a development model at all.
It is so named because it can be represented or graphically modeled as a
cascade from establishing requirements, to design creation, to program
implementation, to system test, to release to customer. It was a great step Spiral Model:
forward in software development as an engineering discipline. The
original waterfall model had little or no feedback between stages, just as The spiral model, developed by Dr. Barry Boehm at TRW, is an
water does not reverse or flow uphill in a cascade but is drawn ever enhancement of the waterfall/rapid prototype model, with risk analysis
downward by gravity. This method might work satisfactorily if design preceding each phase of the cascade. You can imagine the rapid
requirements could be perfectly addressed before flowing down to design prototyping model drawn in the form of a spiral. This model has been
creation, and if the design were perfect when program implementation successfully used for the internal development of large systems and is
began, and if the code were perfect before testing began, and if testing especially useful when software reuse is a goal and when specific quality
guaranteed that no bugs remained in the code before the users applied it, objectives can be incorporated. It does depend on being able to accurately
and of course if the users never changed their minds about requirements. assess risks during development. This depends on controlling all factors
Some simple hardware products may be designed and manufactured this and eliminating or at least minimizing exogenous influences. Like the
way, but this model has been unsatisfactory for software products because other extensions of and improvements to the waterfall model, it adds
of the complexity issue. It is simply impossible to guarantee correctness of feedback to earlier stages. This model has seen service in the development
any program of more than about 169 lines of code by any process as of major programming projects over a number of years, and is well
rigorous as mathematical proof. Proving program functionality a priority documented in publications by Boehm and others.
was advantageous and useful in the early days of embedded computer
control systems, when such programs were tiny, but today’s multifunction
cell phones may require a million lines of code or more!
Object-Oriented Programming: very effective at defining software functionality and even planning to
accommodate error or “noise.” However, the RUP’s most important
Object-Oriented Programming (OOP) technology is not a software advantage is Software Process Improvement its iterative process that
development model. It is a new way of designing, writing, and allows changes in functional requirements also to be accommodated as
documenting programs that came about after the development of early they inevitably change during system development. Not only do external
OOP languages such as C++ and Smalltalk. However, OOP does enhance circumstances reflect changes to the design, but also the user’s
the effectiveness of earlier software development models intended for understanding of system functionality becomes clearer as that
procedural programming languages, because it allows the development of functionality develops. The RUP has been developing since 1995 and can
applications by slices rather than by layers. The central ideas of OOP are claim well over 1,000 user organizations.
encapsulation and polymorphism, which dramatically reduce complexity
and increase program reusability. We will give examples of these from our
experience in later chapters. OOP has become a major development
technology, especially since the wide acceptance of the Java programming IMPLEMENTATION:
language and Internet-based application programs.
Other investigators developed models of the process at a detailed level.
OOP analysis, design, and programming factor system functionality into Using tools designed to model concurrent processes Humphrey, Kellner
objects, which include data and methods designed to achieve a specific, and Raffo created models based on the activities of the development
scope-limited set of tasks. The objects are implementations or instances of process. Raffo extended earlier models by adding a quality model and
program classes, which are arranged into class hierarchies in which correlating task duration based on the number of errors. In addition to
subclasses inherit properties (data and methods) from super classes. The answering questions about duration and effort, these models could be used
OOP model is well supported by both program development environments to evaluate the behavior of different processes. Some of the applications of
(PDEs) and more sophisticated team-oriented integrated development these models include predicting the impact of process changes on process
environments (IDEs), which encourage or at least enable automatic code performance and prioritizing process changes. The work strongly
generation. OOP is a different style of programming than traditional supported the process improvement paradigm fostered by the Capability
procedural programming. Hence, it has given rise to a whole family of Maturity Model. Capability maturity model is a specialized model.
software development models. Here we will describe the popular Booch
Round-Tripping model.
When to Use Prototyping with the Waterfall?
This model assumes a pair of coordinated tool sets—one for analysis and
design and another for program development. For example, you can use As noted in the description of the Boehm Spiral, prototyping may be used
the Uniform Modeling Language (UML) to graphically describe an with the waterfall; it can be useful to demonstrate technical feasibility
application program or system as a class hierarchy. The UML can be fed when the technical risk is high. It can also be used to better understand and
to the IDE to produce a Java or C++ program, which consists of the extract user requirements. In either case, the goal is to limit cost by
housekeeping and control logic and a large number of stubs and skeleton understanding the problem before committing more resources.
programs. The various stub and skeleton programs can be coded to a
greater or lesser extent to develop the program to a given level or “slice”
of functionality. The code can be fed back or “round-tripped” to the UML
ription of the
processor Boehm
to create Spiral,
a new prototyping
graphical description ofmay be used
the system. withandthe.
Changes
additions can be made to the new UML description and a new program ISO 9000-3 Software Development Guidance Standard:
generated. This general process is not really new.
This guidance standard is a guideline for the application of standards to
The Texas Instruments TEF tool set and the Xcellerator tool set both the development, supply, and maintenance of computer software. It is not
allowed this same process with procedural COBOL programs. These tools a development model like RUP or even a organization developmental
proved their worth in the preparation for the Y2K crisis. A working model like CMM. Neither is it a certification process. It is a guidance
COBOL application with two digit year dates could be reverse-engineered document that explains how ISO 9001 should be interpreted within the
to produce an accurate flowchart of the application (not as it was software industry (see Figure 1.10). It has been used since 1994, having
originally programmed, but as it was actually implemented and running). been introduced as ISO 9001 Software Quality Management.13 It was
Then it could be modified at a high level to add four-digit year date updated in 2002 as ISO 9000-3. Prudent compliance of ISO 9000-3 may
capability. Finally, a new COBOL program could be generated, compiled, result in the following benefits:
and tested. This older onetime reverse engineering is now built into the • Increases the likelihood of quality software products
design feedback loop of the Booch Round- Trip OOP development model. • Gives you a competitive advantage over non-ISO 9000 certified
It can be further supported with code generators that can create large development vendors.
amounts of code based on recurring design patterns. • Assures customers of the end product’s quality
• Defines the phases, roles, and responsibilities of the software
Rational Unified Process: development process
• Measures the efficiency of the development process
The Rational Unified Process (RUP) is modeled in two dimensions, rather • Gives structure to what is often a chaotic process
than linearly or even circularly, as the previously described models. The
Rational Model is characterized by a set of software best practices and the ISO 9000-3 Software Development Model
extensive application of use cases. A use case is a set of specified action The document was designed as a checklist for the development, supply,
sequences, including variant and error sequences, that a system or and maintenance of software. It is not intended as a certification
subsystem can perform interacting with outside actors. The use cases are document, like other standards in the ISO 9000 series. Copies of the
guideline can be ordered from the ISO in Switzerland. Also, many unanticipated, changing, or growing needs. While the software costs far
consulting firms have Web sites that present the ISO 9000-3 guidelines in exceed hardware costs, the corresponding frequency of failure rate
a cogent, simplified, and accessible way. between software and hardware could be as high as 100:1. This ratio can
be even higher for more advanced microprocessor-based systems. Clearly,
these are huge issues that cannot be addressed effectively by continuing to
Software process improvement techniques: deploy traditional software development approaches.
• Preparation of a software development plan to control:
• Technical activities (design, coding, testing). It is well known that various quality issues are interrelated. Moreover,
high costs and delays can be attributed to low software reliability. Thus, it
• Managerial activities (supervision, review). is conceivable that several objectives may be met with the correct strategic
• Design input (functional specs, customer needs). intervention. Quality has a great many useful attributes, and you must
clearly understand the customer perspectives throughout the software life
• Design output (design specs, procedures). cycle. This helps you not only understand the changing user needs but also
• Design validation. avoid cost escalation, delays, and unnecessary complexity. You need to
deploy a multipronged strategy to address quality issues in large and
• Design verification.
complex software such as enterprise applications.
• Design review.
• Design changes.
• Development of procedures to control the following documents and data:
The Seven Components of a Robust Software Development Process are:
• Specifications.
• Requirements. 1. A steadfast development process that can provide interaction with users
by identifying their spoken and unspoken requirements throughout the
• Communications. software life cycle.
• Descriptions. 2. Provision for feedback and iteration between two or more development
stages as needed.
• Procedures.
3. An instrument to optimize design for reliability (or other attributes),
• Contracts. cost, and cycle time at once at upstream stages. This particular activity,
• Development of procedures to plan, monitor, and control the production, which addresses software product robustness, is one of the unique features
installation, and service processes for managing the following: of the RSDM, because other software development models do not.
• Software replication. 4. Opportunity for the early return on investment that incremental
development methods provide.
• Software release. 5. Step-wise development to build an application as needed and to provide
• Software installation. adequate documentation.
6. Provision for risk analyses at various stages.
• Develop software test plans (for unit and integration testing). 7. Capability to provide for object-oriented development.
• Perform software validation tests.
• Document testing procedures.
SAMPLE PROBLEM (Experimentation): The following example
illustrates the differences between the two approaches. A manager of a
Looking at the various aspects of these process models we can predict the
software development project would like to use a model to plan a new
developmental aspects of software and we know which process models
project. From records kept during previous projects, he has schedule and
can beneficial in developing a particular kind of software. The process
effort data by phase for each of the 50 modules in the last project. He also
models give an insight into the kind of software that is under development.
has data on the number of defects detected for each module and the
These models can be a key factor in saving available resources during the
average time to fix each defect. On the basis of his experience with similar
process of development. The choice of appropriate process model for the
projects, the manager expects that the average productivity of the team
development of software helps us thereby achieve almost half of the goals
will drop in the later stages of the project as people become overworked
in the process of development. Hence a thorough study of process models
and exhausted. He also expects that initial productivity will increase as the
is a key success factor necessary in software engineering for delivering a
team learns the application and tools. Both factors affecting productivity
successful product.
can be described as functions that vary over time. The manager would like
to use the model to understand the relative impact of the productivity loss
and the learning curve on the scheduled completion date. He would also
Seven Components of the Robust Software
like to determine the risk that the project will exceed the schedule.
Development Process:
There can two methods of solving the problem either we can use:
Software has become an increasingly indispensable element of a wide
range of military, industrial, and business applications. But it is often • System dynamics approach.
characterized by high costs, low reliability, and unacceptable delays. • Process model approach.
Often, they are downright unacceptable. Software life-cycle costs (LCC)
typically far exceed the hardware costs. Low software quality has a direct If we use the system dynamic approach the decision maker will not be
impact on cost. Some 40% of software development cost is spent testing to able to ask about the variability or uncertainty of the process, hence we
remove errors and to ensure high quality, and 80 to 90% of the software use the process model approach. A process model would be more useful to
LCC goes to fix, adapt, and expand the delivered program to meet users’ assess the risk of exceeding the schedule. To develop a process model for
the same problem, the modeling effort would begin by identifying the enables and encourages new applications, which require much larger and
artifacts which flow through the process. For example, the manager might more complex programs. Perhaps a dozen models of software
have code modules that are first described by design documents and development aim to improve development productivity and/or enhance
subsequently transformed into code and test plans. Each class of artifacts quality. They all work reasonably well when faithfully and diligently
may have several attributes. applied.

Attributes for a module could be size, complexity, number of defects, and Let us take a look at the comparision table of some of the most commonly
so forth. The manager would then determine which activities act upon the used process models in the industry.
artifacts. Each activity would last for a specified duration and may affect MODEL PROS CONS
the values of the attributes of an artifact. Activities could be the design,
coding and testing as well as inspections and reviews. The choices of WATERFALL Simple as well as Requires a
activities, artifacts and attributes determine the kind of data that the Easy to Execute. Most complete set of
simulation will generate. In this example, we define the artifacts as widely used. requirements at the
modules of code. The activities set and change the values of attributes for onset.
the number of errors, time entering and time leaving the system. We
sample the delays for each activity from probability distributions. Multiple
RAPID Guarantees client May not for large
replications of the simulation will produce a distribution of the estimates
for duration and effort. PROTOTYPING satisfaction applications.
SPIRAL Ultimately waterfall Only for large
These output distributions allow the manager to evaluate the schedule risk. developments
One should also note that the simulation tool easily supports extensions to INCREMENTAL Promotes Can degenerate
the mental model to include more detailed process steps. By maintainability
experimenting with different processes, the manager can quantitatively
explore the effects of process changes. If the mental model includes the OOP Supported by ide tools May lack
idea that some activities inject errors, the process model will capture the discipline
number of errors. The hierarchical nature of the simulation tool allows a
ITERATIVE Can be used by oop May allow
natural integration of the quality model with the effort and duration
models. overiteration

Some commonly used process models that are used along with the type of
FUTURE SCOPES: projects that they are used for:
Software engineering is the practice of using selected process techniques MODEL WATERFALL INCREMENTAL PROTOTYPING
to improve the quality of a software development effort. This is based on
the assumption, subject to endless debate and supported by patient SUITABL If If it is too risky When need to
experience, that a methodical approach to software development results in E FOR requirements to develop the accommodate
fewer defects and, therefore, ultimately provides shorter delivery times are well- whole system at change. New or
and better value. The documented collection of policies, processes and defined and once, then the original
procedures used by a development team or organization to practice stable. incremental development.
software engineering is called its software development methodology Automation of development Human –
(SDM) or system development life cycle (SDLC). existing should be machine
Manual considered. interaction.
There is lot of scope of development in the field of process models we System. Limited set of
can hereby note that the presently available process models may not be designs is best customer’s
sufficient enough in future hence there must be attempts to develop managed with requirements for
process models that can support more and more complex software needs. the waterfall quick
The Department of Defence has sponsored a number of software model implementation
development process improvement initiatives as a leader in the use of and delivery.
sophisticated computer applications and dedicated or embedded Development of
applications. The Design for Trustworthy Software (DFTS) technology word processing
addresses challenges of producing trustworthy software using a software (like
combination of the iterative Robust Software Development Model, MS Word or
Software Design Optimization Engineering, and Object-Oriented Design Word Star).
Technology.
NOT When there Less applicable
SUITABL are to existing
CONCLUSION: E FOR uncertainties systems than to
Now one can say what the need is, the need can be put as, inspite of 50 in new, original
years of software development methodology and process improvement; requirements development.
we need a new paradigm to develop increasingly complex software and risk of a
systems. Productivity gains in software development have not kept up long project
with the performance increases in hardware. New hardware technology cannot be
taken.

Process models serve as a very important and vital aspect of software


engineering process and can never be overlooked.

S-ar putea să vă placă și