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

Software development proces 2

Ratings: (0)|Views: 612|Likes:
Published by Marvin Njenga
For your software
For your software

More info:

Published by: Marvin Njenga on Apr 22, 2009
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





Software Development Paradigms
software development process
is a structure imposed on the development of a software product.Synonyms include
software life cycle
software process
. There are several models for such processes,each describing approaches to a variety of tasks or activities that take place during the process."A paradigm is a set of rules and regulations (written or unwritten) that does two things: 1) it establishes or defines boundaries; and 2) it tells you how to behave inside the boundaries in order to be successful". (JoelArthur Barker) "A shared set of assumptions. The paradigm is the way we perceive the world; water to thefish. The paradigm explains the world to us and helps us to predict its behavior. ...It is a conceptual model that is used to communicate descriptions of the component parts of a theory, a policy,a belief system or a worldview and how they interact and are interrelated.In software engineering and project management, a paradigm is used synonymously with methodology tomean or refer to a codified set of practices (sometimes accompanied by training materials, formal educational programs, worksheets, and diagramming tools) that may be
carried out to produce software.Software engineering methodologies span many disciplines, including project management, analysis,specification, design, coding, testing, and quality assurance. All of the methodologies guiding this field arecollations of all of these disciplines.
Processes and meta-processes
A growing body of software development organizations implements process methodologies/paradigms. Manyof them are in the defense industry, which in the U.S. requires a 'Rating' based on 'Process models' to obtaincontracts. ISO 12207 is a standard for describing the method of selecting, implementing and monitoring alifecycle for a project.The Capability Maturity Model (CMM) is one of the leading models. Independent assessments can be used tograde organizations on how well they create software according to how they define and execute their  processes. ISO 9000 describes standards for formally organizing processes with documentation.ISO 15504, also known as Software Process Improvement Capability Determination (SPICE), is a"framework for the assessment of software processes". The software process life cycle is also gaining wideusage. This standard is aimed at setting out a clear model for process comparison. SPICE is used much likeCMM and CMMI. It models processes to manage, control, guide and monitor software development. Thismodel is then used to measure what a development organization or project team actually does duringsoftware development. This information is analyzed to identify weaknesses and drive improvement. It alsoidentifies strengths that can be continued or integrated into common practice for that organization or team.Six Sigma is a project management methodology that uses data and statistical analysis to measure andimprove a company's operational performance. It works by identifying and eliminating "defects" inmanufacturing and service-related processes. The maximum permissible defects are 3.4 per millionopportunities. However Six Sigma is manufacturing-oriented, not software development-oriented and needsfurther research to even apply to software development.1
In software engineering and project management, a
is a codified set of practices (sometimesaccompanied by training materials, formal educational programs, worksheets, and diagramming tools) thatmay be
carried out to produce software.Software engineering methodologies span many disciplines, including project management, analysis,specification, design, coding, testing, and quality assurance. All of the methodologies guiding this field arecollations of all of these disciplines.
Methodology versus Method
There is a discussion in science in general about these two words: method and methodology. They are widelyused as synonyms, although many authors believe it to be important to draw a difference between the two.In Software Engineering, in particular, the discussion continues. One could argue that a (softwareengineering) method is a recipe, a series of steps, to build software, where a methodology is a codified set of recommended practices, sometimes accompanied by training materials, formal educational programs,worksheets, and diagramming tools. In this way, a (software engineering) method could be part of amethodology. Also, some authors believe that in a methodology there is an overall philosophical approach tothe problem.Using these definitions, Software Engineering is rich in methods, but has fewer methodologies. We could saythat there are two main stream types of methodologies: Structured Methodology (Information Engineering,SSADM and others), which encompass many methods and software processes; and Object OrientedMethodology (OOA/OOD and others) .
Major Software Engineering Models
A decades-long goal has been to find repeatable, predictable software engineering processes or methodologies that improve productivity and quality. Some try to systematize or formalize the seeminglyunruly task of writing software. Others apply project management techniques to writing software. Without project management, software projects can easily be delivered late or over budget. With large numbers of software projects not meeting their expectations in terms of functionality, cost, or delivery schedule, effective project management is proving difficult.1)
Iterative And Incremental Development
Iterative and Incremental development
is a software development process developed in response to theweaknesses of the more traditional waterfall model. The two most well known iterative developmentframeworks are the Rational Unified Process and the Dynamic Systems Development Method. Iterative andincremental development is also an essential part of Extreme Programming and all other agile softwaredevelopment frameworks.
The basic idea behind iterative enhancement is to develop a software system incrementally, allowing thedeveloper to take advantage of what was being learned during the development of earlier, incremental,deliverable versions of the system. Learning comes from both the development and use of the system, where possible. Key steps in the process were to start with a simple implementation of a subset of the software2
requirements and iteratively enhance the evolving sequence of versions until the full system is implemented.At each iteration, design modifications are made and new functional capabilities are added.The Procedure itself consists of the Initialization step, the Iteration step, and the Project Control List. Theinitialization step creates a base version of the system. The goal for this initial implementation is to create a product to which the user can react. It should offer a sampling of the key aspects of the problem and providea solution that is simple enough to understand and implement easily. To guide the iteration process, a projectcontrol list is created that contains a record of all tasks that need to be performed. It includes such items asnew features to be implemented and areas of redesign of the existing solution. The control list is constantly being revised as a result of the analysis phase.The iteration step involves the redesign and implementation of a task from project control list, and theanalysis of the current version of the system. The goal for the design and implementation of any iteration isto be simple, straightforward, and modular, supporting redesign at that stage or as a task added to the projectcontrol list. The iterations can, in some cases, represent the major source of documentation of the system.The analysis of an iteration is based upon user feedback, and the program analysis facilities available. Itinvolves analysis of the structure, modularity, usability, reliability, efficiency, and achievement of goals. The project control list is modified in light of the analysis results.Guidelines that drive the implementation and analysis include:
Any difficulty in design, coding and testing a modification should signal the need for redesign or re-coding.
Modifications should fit easily into isolated and easy-to-find- modules. If they do not, some redesignis needed.
Modifications to tables should be especially easy to make. If any table modification is not quickly andeasily done, redesign is indicated.
Modifications should become easier to make as the iterations progress. If they are not, there is a basic problem such as a design flaw or a proliferation of patches.
Patches should normally be allowed to exist for only one or two moons. Patches may be necessary toavoid redesigning during an implementation phase.
The existing implementation should be analyzed frequently to determine how well it measures up to project goals.
Program analysis facilities should be used whenever available to aid in the analysis of partialimplementations
User reaction should be solicited and analyzed for indications of deficiencies in the currentimplementation.
Using analysis and measurement as drivers of the enhancement process is one major difference betweeniterative enhancement and the current agile software development. It provides support for determining theeffectiveness of the processes and the quality of product. It allows one to study, and therefore improve andtailor, the processes for the particular environment. This measurement and analysis activity can be added toexisting agile development methods.In fact, the context of multiple iterations provides advantages in the use of measurement. Measures aresometimes difficult to understand in the absolute but the relative changes in measures over the evolution of the system can be very informative as they provide a basis for comparison. For example, a vector of measures, m1, m 2, ... mn, can be defined to characterize various aspects of the product at some point in time,3

Activity (7)

You've already reviewed this. Edit your review.
1 hundred reads
1 thousand reads
sumanenthiran123 liked this
zackjison liked this
gsreekumar liked this
haroonob liked this
gmvelan007 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)//-->