<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Learn Software Development &#187; Iterative</title>
	<atom:link href="http://learnsoftwareprocesses.com/category/iterative/feed/" rel="self" type="application/rss+xml" />
	<link>http://learnsoftwareprocesses.com</link>
	<description>All about the processes involved in software development</description>
	<lastBuildDate>Tue, 07 Feb 2012 19:53:10 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>UI Design Principles</title>
		<link>http://learnsoftwareprocesses.com/2008/01/30/ui-design-principles/</link>
		<comments>http://learnsoftwareprocesses.com/2008/01/30/ui-design-principles/#comments</comments>
		<pubDate>Wed, 30 Jan 2008 16:43:31 +0000</pubDate>
		<dc:creator>ashish</dc:creator>
				<category><![CDATA[Iterative]]></category>
		<category><![CDATA[UI]]></category>

		<guid isPermaLink="false">http://learnsoftwareprocesses.com/2008/01/30/ui-design-principles/</guid>
		<description><![CDATA[<p>What are UI design principles ? Design principles are statements of policy which help designers to make decisions during a design process. Design principles are high level guidance which require interpretation before they can be applied in real world design tasks.</p> <p>The structure principle. Your design should organize the user interface purposefully, in meaningful and [...]]]></description>
			<content:encoded><![CDATA[<p>What are UI design principles ?<br />
Design principles are statements of policy which help designers to make decisions during a design process. Design principles are high level guidance which require interpretation before they can be applied in real world design tasks.</p>
<p>The structure principle. Your design should organize the user interface purposefully, in meaningful and useful ways based on clear, consistent models that are apparent and recognizable to users, putting related things together and separating unrelated things, differentiating dissimilar things and making similar things resemble one another. The structure principle is concerned with your overall user interface architecture.</p>
<p>Principle of user profiling. Know who your user is. A design that is better for a technically skilled user might not be better for a non-technical businessman or an artist. Direct contact between end-users and developers has often radically transformed the development process.</p>
<p>The simplicity principle. Your design should make simple, common tasks simple to do, communicating clearly and simply in the user’s own language, and providing good shortcuts that are meaningfully related to longer procedures. The system should speak the users&#8217; language, with words, phrases and concepts familiar to the user, rather than system-oriented terms. Follow real-world conventions, making information appear in a natural and logical order. Users should not have to wonder whether different words, situations, or actions mean the same thing. Follow platform conventions.</p>
<p>The visibility principle. Your design should keep all needed options and materials for a given task visible without distracting the user with extraneous or redundant information. Good designs don’t overwhelm users with too many alternatives or confuse them with unneeded information. Minimize the user&#8217;s memory load by making objects, actions, and options visible. The user should not have to remember information from one part of the dialogue to another. Instructions for use of the system should be visible or easily retrievable whenever appropriate.</p>
<p>The feedback principle. Your design should keep users informed of actions or interpretations, changes of state or condition, and errors or exceptions that are relevant and of interest to the user through clear, concise, and unambiguous language familiar to users. Each change in the behavior of the program should be accompanied by a corresponding change in the appearance of the interface. The system should always keep users informed about what is going on, through appropriate feedback within reasonable time.</p>
<p>The tolerance principle. Your design should be flexible and tolerant, reducing the cost of mistakes and misuse by allowing undoing and redoing, while also preventing errors wherever possible by tolerating varied inputs and sequences and by interpreting all reasonable actions reasonable. Users often choose system functions by mistake and will need a clearly marked &#8220;emergency exit&#8221; to leave the unwanted state without having to go through an extended dialogue. Support undo and redo.</p>
<p>The reuse principle. Your design should reuse internal and external components and behaviors, maintaining consistency with purpose rather than merely arbitrary consistency, thus reducing the need for users to rethink and remember.</p>
<p>Keep Text Clear. Developers often try to make textual feedback clear by adding a lot of words. However, they ultimately make the message less clear. Concise wording of text labels, user error messages, and one-line help messages is challenging.</p>
<p>Shortcuts for frequent users. As the frequency of use increases, so do the user&#8217;s desires to reduce the number of interactions and to increase the pace of interaction. Abbreviations, function keys, hidden commands, and macro facilities are very helpful to an expert user. The important thing about these more powerful (and more abstract) methods is that they should not be the most exposed methods of accomplishing the task.</p>
<p>Principle of user testing. User-interface testing, that is, the testing of user-interfaces using actual end-users, has been shown to be an extraordinarily effective technique for discovering design defects. User testing can occur at any time during the project, however, it&#8217;s often more efficient to build a mock-up or prototype of the application and test that before building the real program. It&#8217;s much easier to deal with a design defect before it&#8217;s implemented than after.</p>
]]></content:encoded>
			<wfw:commentRss>http://learnsoftwareprocesses.com/2008/01/30/ui-design-principles/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Problems with Extreme Programming</title>
		<link>http://learnsoftwareprocesses.com/2007/12/20/problems-with-extreme-programming/</link>
		<comments>http://learnsoftwareprocesses.com/2007/12/20/problems-with-extreme-programming/#comments</comments>
		<pubDate>Thu, 20 Dec 2007 14:04:15 +0000</pubDate>
		<dc:creator>ashish</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Issues]]></category>
		<category><![CDATA[Iterative]]></category>
		<category><![CDATA[Model]]></category>
		<category><![CDATA[Process]]></category>
		<category><![CDATA[Software]]></category>

		<guid isPermaLink="false">http://learnsoftwareprocesses.com/2007/12/20/problems-with-extreme-programming/</guid>
		<description><![CDATA[<p>Chances are, when you are speaking to people about a software project and mention some development model, somebody will refer to Extreme Programming very enthusiastically and encourage you to try it, promising some incredible experiences. However, there are some issues with Extreme Programming, and it would be good if people reviewed these issues before going [...]]]></description>
			<content:encoded><![CDATA[<p>Chances are, when you are speaking to people about a software project and mention some development model, somebody will refer to Extreme Programming very enthusiastically and encourage you to try it, promising some incredible experiences. However, there are some issues with Extreme Programming, and it would be good if people reviewed these issues before going ahead with using Extreme Programming as a software development solution.</p>
<p>1. XP has the approach where there is a de-emphasis on detailed design in the beginning. This is supposed to lead to a situation where you actually build for what is required rather than making a heavy system that cannot be tweaked to respond to user requirements. However, developers will treat this as an excuse for not doing the required design, not something that should be encouraged. </p>
<p>2. XP has the concept of reliance on refactoring and unit testing as inputs to create a design. However, in most cases, doing an activity such as object modeling has many advantages, and those are very helpful for making a project successful. XP does not countenance this sort of design activity.</p>
<p>3. Catching the inevitable bugs in a design created from refactoring with pair programming. Not everyone likes pair programming. It&#8217;s useful for tackling a particularly complex problem, but most of the time it’s overkill. Pair programming also hinders &#8220;pure&#8221; programming, where one highly tuned mind meditates on a problem to produce a clean design.</p>
<p>4. If you have an existing development process that&#8217;s working well for you, stick with it. Don&#8217;t change just because XP is promised to be the new super-method.</p>
<p>5. There is a lot of dependence on the customer. You need to have a mature customer representative dedicated to your project who can represent the problem and work with you to figure out the best solution over iterations. A lot of direct customers don&#8217;t have the software experience to be comfortable with the idea of successive iterations getting closer to the desired solution (with many of the early iterations not having any great feature).</p>
<p>6. To setup an XP team you must work not only with very skilled but open-minded people: pair programming can be a problem if you don&#8217;t feel comfortable with your desk-mates.</p>
<p>7. Unstable Requirements: Proponents of Extreme Programming claim that by having the on-site customer request changes informally, the process becomes flexible, and saves the cost of formal overhead. Critics of XP claim this can lead to costly rework and project scope creep beyond what was previously agreed or funded.</p>
<p>8. Requirements are expressed as automated acceptance tests rather than specification documents. This is radically different from current practices and development teams struggle to be able to do this.</p>
<p>9. There is no Big Design Up Front. Most of the design activity takes place on the fly and incrementally, starting with &#8220;the simplest thing that could possibly work&#8221; and adding complexity only when it&#8217;s required by failing tests. Critics fear this would result in more re-design effort than only re-designing when requirements change.</p>
<p>10. XP is normally claimed to work with small teams of upto twelve people, and projects having people more than that can cause severe problems in getting XP to work effectively.</p>
<p>11. XP is all-or-nothing practise. You need to do all the steps of XP in the way that they are supposed to be done, or it all fails. This is difficult to do unless all the stakeholders are brought into the whole XP concept.</p>
<p>12. Unit tests are useful in everyday coding (not just in XP). However, as a safety net for test-first design and constant refactoring, they leave a critical area uncovered: design correctness. Because XP as a process does not involve getting a design spec reviewed by senior engineers, and instead places the emphasis on a constantly evolving design, this can be a high risk.</p>
<p>13. What sort of projects is XP not suitable for ? if the problem domain is well understood, and the requirements are not likely to change, then you should choose a process that places less emphasis on the ability to &#8220;chop and change&#8221; at any stage.</p>
<p>14. Communication not really so strong (especially written): XP makes a big issue about its core value of Communication. Unfortunately, XP also makes a big issue about not doing any documentation (or at least very little, or none at all). This seems very contradictory, since documentation is the only way you can have continuity in a project if people change.</p>
]]></content:encoded>
			<wfw:commentRss>http://learnsoftwareprocesses.com/2007/12/20/problems-with-extreme-programming/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Key principles for business-driven development (as per RUP)</title>
		<link>http://learnsoftwareprocesses.com/2007/09/16/key-principles-for-business-driven-development-as-per-rup/</link>
		<comments>http://learnsoftwareprocesses.com/2007/09/16/key-principles-for-business-driven-development-as-per-rup/#comments</comments>
		<pubDate>Sun, 16 Sep 2007 16:57:29 +0000</pubDate>
		<dc:creator>ashish</dc:creator>
				<category><![CDATA[Design]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[Iterative]]></category>
		<category><![CDATA[Model]]></category>
		<category><![CDATA[Process]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Techniques]]></category>

		<guid isPermaLink="false">http://learnsoftwareprocesses.com/2007/09/16/key-principles-for-business-driven-development-as-per-rup/</guid>
		<description><![CDATA[<p>Practitioners of the Rational Unified Process (RUP) believe that there are essentially 6 principles that direct the creation of software:</p> <p>* Adapt the process: You need to right-size the process to project needs. As a project grows in size, becomes more distributed, uses more complex technology, has a larger number of stakeholders, and needs to [...]]]></description>
			<content:encoded><![CDATA[<p>Practitioners of the Rational Unified Process (RUP) believe that there are essentially 6 principles that direct the creation of software:</p>
<p>* Adapt the process: You need to right-size the process to project needs. As a project grows in size, becomes more distributed, uses more complex technology, has a larger number of stakeholders, and needs to adhere to more stringent compliance standards, the process needs to become more disciplined. But, for smaller projects with co-located teams and known technology, the process should be more lightweight. Also, a project should adapt process ceremony to lifecycle phase. Further, an organization should strive to continuously improve the process. Many factors, including project size, team distributions, complexity of technology, number of stakeholders, compliance requirements, and where in the project lifecycle you are, steer how disciplined a process you need.</p>
<p>* Balance competing stakeholder priorities: Doing this will help you align applications with business and user needs, reduce custom development, and optimize business value. This principle articulates the importance of balancing often conflicting business and stakeholder needs. Yet these priorities are often in conflict. If you leverage a packaged application, for example, you may be able to deliver a solution faster and at a lower price, but you may have to trade off many of your requirements. On the other hand, if a business elects to build an application from scratch, it may be able to address every requirement on its wish list, but the budget and project completion date can both be pushed beyond their feasible limits. The first thing we need to do is to understand and prioritize business and stakeholder needs. This means capturing business processes and linking them to projects and software capabilities, which enables us to effectively prioritize the right projects and the right requirements, and to modify our prioritization as our understanding of the application and stakeholder needs evolve.</p>
<p>* Collaborate across teams: This helps in ensuring that there is improvement in team productivity, better coupling between business needs, and the development and operations of software systems. Many complex systems require the activities of a number of stakeholders with varying skills, and the largest projects often span geographical and temporal boundaries, further adding complexity to the development process. This is why people issues and collaboration &#8212; what some have referred to as the &#8220;soft&#8221; element of software development &#8212; have been a primary focus in the agile development community. The notion of self-managed teams has gained popularity in the agile community; it is based on making a team commit to what they should deliver and then providing them with the authority to decide on all the issues directly influencing the result. When people feel that they are truly responsible for the end result, they are much more motivated to do a good job. We need to break down the walls that are often built up between analysts, developers, and testers, and broaden the responsibilities of these roles to ensure effective collaboration in an environment with fast churn. Each member needs to understand the mission and vision of the project.</p>
<p>* Demonstrate value iteratively: You want to deliver incremental value to enable early and continuous feedback. This is done by dividing our project into a set of iterations. In each iteration, you do some requirements, design, implementation, and testing of your application, thus producing a deliverable that is one step closer to the final solution. This allows you to demonstrate the application to end users and other stakeholders, or have them use the application directly, enabling them to provide rapid feedback on how you are doing. Are you moving in the right direction? Are stakeholders satisfied with what you have done so far? Do you need to change the features implemented so far, and what additional features need to be implemented to add business value? By being able to satisfactorily answer these questions, you are more likely to build trust among stakeholders by delivering a system that will address their needs. Doing this also helps you to embrace and manage change. Today&#8217;s applications are too complex to allow you to perfectly align the requirements, design, implementation, and test the first time through. Instead, the most effective application development methods embrace the inevitability of change. Through early and continuous feedback, we learn how to improve the application, and the iterative approach provides us with the opportunity to implement those changes incrementally.</p>
<p>* Elevate the level of abstraction: One of the main problems we face in software development is complexity. We know that reducing complexity has a major impact on productivity. Working at a higher level of abstraction reduces complexity and facilitates communication. One effective approach to reducing complexity is reusing existing assets, such as reusable components, legacy systems, existing business processes, patterns, or open source software. Two great examples of reuse that have had a major impact on the software industry over the last decade is the reuse of middleware, such as databases, Web servers and portals, and, more recently, open source software that provides many smaller and larger components that can be leveraged.</p>
<p>* Focus continuously on quality: Improving quality is not simply &#8220;meeting requirements,&#8221; or producing a product that meets user needs and expectations. Rather, quality also includes identifying the measures and criteria to demonstrate its achievement, as well as the implementation of a process to ensure that the product created by the team has achieved the desired degree of quality, which can be repeated and managed. Ensuring high quality requires more than the participation of the testing team; it requires that the entire team owns quality. It involves all team members and all parts of the lifecycle. Analysts are responsible for making sure that requirements are testable, and that we specify clear requirements for the tests to be performed. Developers need to design applications with testing in mind, and must be responsible for testing their code. Management needs to ensure that the right test plans are in place, and that the right resources are in place for building the testware and performing required tests. Testers are the quality experts. They guide the rest of the team in understanding software quality issues, and they are responsible for functional-, system-, and performance-level testing, among other things.</p>
]]></content:encoded>
			<wfw:commentRss>http://learnsoftwareprocesses.com/2007/09/16/key-principles-for-business-driven-development-as-per-rup/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>6 best practices for Rational Unified Process</title>
		<link>http://learnsoftwareprocesses.com/2007/09/16/6-best-practices-for-rational-unified-process/</link>
		<comments>http://learnsoftwareprocesses.com/2007/09/16/6-best-practices-for-rational-unified-process/#comments</comments>
		<pubDate>Sun, 16 Sep 2007 05:25:52 +0000</pubDate>
		<dc:creator>ashish</dc:creator>
				<category><![CDATA[Design]]></category>
		<category><![CDATA[Iterative]]></category>
		<category><![CDATA[Model]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Techniques]]></category>
		<category><![CDATA[Tools]]></category>

		<guid isPermaLink="false">http://learnsoftwareprocesses.com/2007/09/16/6-best-practices-for-rational-unified-process/</guid>
		<description><![CDATA[<p>The Rational Unified Process has 6 best practices for software development:</p> <p>– Develop s/w iteratively: The waterfall model is just not a workable solution in today&#8217;s world; you cannot develop a sequential model of first laying out all the requirements, then creating a design for it, and then doing development. There is a need to [...]]]></description>
			<content:encoded><![CDATA[<p>The Rational Unified Process has 6 best practices for software development:</p>
<p>– Develop s/w iteratively: The waterfall model is just not a workable solution in today&#8217;s world; you cannot develop a sequential model of first laying out all the requirements, then creating a design for it, and then doing development. There is a need to have an iterative based approach that allows an increasing understanding of the problem through successive refinements, and to incrementally grow an effective solution over multiple iterations. The Rational Unified Process supports an iterative approach to development that addresses the highest risk items at every stage in the lifecycle, significantly reducing a project&#8217;s risk profile.</p>
<p>– Manage requirements: The Rational Unified Process describes how to elicit, organize, and document required functionality and constraints; track and document tradeoffs and decisions; and easily capture and communicate business requirements. The notions of use case and scenarios proscribed in the process has proven to be an excellent way to capture functional requirements and to ensure that these drive the design, implementation and testing of software, making it more likely that the final system fulfills the end user needs.</p>
<p>– Use component-based architectures: The process focuses on early development and baselining of a robust executable architecture, prior to committing resources for full-scale development. It describes how to design a resilient architecture that is flexible, accommodates change, is intuitively understandable, and promotes more effective software reuse. The Rational Unified Process supports component-based software development. Components are non-trivial modules, subsystems that fulfill a clear function. The Rational Unified Process provides a systematic approach to defining an architecture using new and existing components. </p>
<p>– Visually model software: The process shows you how to visually model software to capture the structure and behavior of architectures and components. This allows you to hide the details and write code using &#8220;graphical building blocks.&#8221; Visual abstractions help you communicate different aspects of your software; see how the elements of the system fit together; make sure that the building blocks are consistent with your code; maintain consistency between a design and its implementation; and promote unambiguous communication. The industry-standard Unified Modeling Language (UML), created by Rational Software, is the foundation for successful visual modeling.</p>
<p>– Continuously verify software quality: Poor application performance and poor reliability are common factors which dramatically inhibit the acceptability of today&#8217;s software applications. Hence, quality should be reviewed with respect to the requirements based on reliability, functionality, application performance and system performance. The Rational Unified Process assists you in the planning, design, implementation, execution, and evaluation of these test types. Quality assessment is built into the process, in all activities, involving all participants, using objective measurements and criteria, and not treated as an afterthought or a separate activity performed by a separate group.</p>
<p>– Control changes to s/w: The ability to manage change&#8211;making certain that each change is acceptable, and being able to track changes&#8211;is essential in an environment in which change is inevitable. The process describes how to control, track and monitor changes to enable successful iterative development. It also guides you in how to establish secure workspaces for each developer by providing isolation from changes made in other workspaces and by controlling changes of all software artifacts (e.g., models, code, documents, etc.). And it brings a team together to work as a single unit by describing how to automate integration and build management.</p>
]]></content:encoded>
			<wfw:commentRss>http://learnsoftwareprocesses.com/2007/09/16/6-best-practices-for-rational-unified-process/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Lifecycle phases of the Rational Unified Process</title>
		<link>http://learnsoftwareprocesses.com/2007/09/09/lifecycle-phases-of-the-rational-unified-process/</link>
		<comments>http://learnsoftwareprocesses.com/2007/09/09/lifecycle-phases-of-the-rational-unified-process/#comments</comments>
		<pubDate>Sun, 09 Sep 2007 05:29:07 +0000</pubDate>
		<dc:creator>ashish</dc:creator>
				<category><![CDATA[Design]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[Iterative]]></category>
		<category><![CDATA[Model]]></category>
		<category><![CDATA[Process]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Techniques]]></category>

		<guid isPermaLink="false">http://learnsoftwareprocesses.com/2007/09/09/lifecycle-phases-of-the-rational-unified-process/</guid>
		<description><![CDATA[<p>The RUP lifecycle is an implementation of the spiral model. It has been created by assembling the content elements into semi-ordered sequences. Consequently the RUP lifecycle is available as a work breakdown structure, which could be customized to address the specific needs of a project. The RUP lifecycle organizes the tasks into phases and iterations.</p> [...]]]></description>
			<content:encoded><![CDATA[<p>The RUP lifecycle is an implementation of the spiral model. It has been created by assembling the content elements into semi-ordered sequences. Consequently the RUP lifecycle is available as a work breakdown structure, which could be customized to address the specific needs of a project. The RUP lifecycle organizes the tasks into phases and iterations.</p>
<p>* Inception phase<br />
* Elaboration phase<br />
* Construction phase<br />
* Transition phase</p>
<p>Each phase is concluded with a well-defined milestone&#8211;a point in time at which certain critical decisions must be made, and therefore key goals must have been achieved.</p>
<p><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp3.blogger.com/_8U5YGYinltk/RuN3nAdS6II/AAAAAAAAAcg/ZFZCM2YMCI4/s1600-h/rup-phases.jpg"><img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp3.blogger.com/_8U5YGYinltk/RuN3nAdS6II/AAAAAAAAAcg/ZFZCM2YMCI4/s400/rup-phases.jpg" alt="Rational Unified Processes" id="BLOGGER_PHOTO_ID_5108057914389751938" border="0" /></a></p>
<div align="center">This is the dynamic organization of the process along time.</div>
<p><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp1.blogger.com/_8U5YGYinltk/RuN5BgdS6JI/AAAAAAAAAco/A0OoSnEUTS0/s1600-h/UnifiedProcessProjectProfile.jpg"><img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp1.blogger.com/_8U5YGYinltk/RuN5BgdS6JI/AAAAAAAAAco/A0OoSnEUTS0/s400/UnifiedProcessProjectProfile.jpg" alt="Rational Unified Process - Phases and Iterations" id="BLOGGER_PHOTO_ID_5108059469167913106" border="0" /></a></p>
<div align="center">Phases and Iterations&#8211;The Time Dimension</div>
<p>Inception Phase: In this phase the business case which includes business context, success factors (expected revenue, market recognition, etc), and financial forecast is established. To accomplish this you must identify all external entities with which the system will interact (actors) and define the nature of this interaction at a high-level. To complement the business case, a basic use case model, project plan, initial risk assessment and project description (the core project requirements, constraints and key features) are generated. The basic question is: do you and the Customer have a shared understanding of the system? The project is then checked against the following criteria:<br />
* Stakeholder concurrence on scope definition and cost/schedule estimates.<br />
* Requirements understanding as evidenced by the fidelity of the primary use cases.<br />
* Credibility of the cost/schedule estimates, priorities, risks, and development process.<br />
* Depth and breadth of any architectural prototype that was developed.<br />
* Establishing a baseline by which to compare actual expenditures versus planned expenditures.</p>
<p>Elaboration phase: The purpose of the elaboration phase is to analyze the problem domain, establish a sound architectural foundation, develop the project plan, and eliminate the highest risk elements of the project. To accomplish these objectives, you must have the &#8220;mile wide and inch deep&#8221; view of the system. Architectural decisions have to be made with an understanding of the whole system: its scope, major functionality and nonfunctional requirements such as performance requirements. The elaboration phase is where the project starts to take shape. In this phase the problem domain analysis is made and the architecture of the project gets its basic form.<br />
The outcome of the elaboration phase is:<br />
* A use-case model (at least 80% complete) &#8211; all use cases and actors have been identified, and most use-case descriptions have been developed.<br />
* Supplementary requirements capturing the non functional requirements and any requirements that are not associated with a specific use case.<br />
* A Software Architecture Description.<br />
* An executable architectural prototype.<br />
* A revised risk list and a revised business case.<br />
* A development plan for the overall project, including the coarse-grained project plan, showing iterations&#8221; and evaluation criteria for each iteration.<br />
* An updated development case specifying the process to be used.<br />
* A preliminary user manual (optional). </p>
<p>Construction phase: During the construction phase, all remaining components and application features are developed and integrated into the product, and all features are thoroughly tested. The construction phase is, in one sense, a manufacturing process where emphasis is placed on managing resources and controlling operations to optimize costs, schedules, and quality. In this sense, the management mindset undergoes a transition from the development of intellectual property during inception and elaboration, to the development of deployable products during construction and transition. In this phase, the main focus goes to the development of components and other features of the system being designed. This is the phase when the bulk of the coding takes place. In larger projects, several construction iterations may be developed in an effort to divide the use cases into manageable segments that produce demonstrable prototypes.<br />
The outcome of the construction phase is a product ready to put in hands of its end-users. At a minimum, it consists of:<br />
* The software product integrated on the adequate platforms.<br />
* The user manuals.<br />
* A description of the current release. </p>
<p>Transition phase: The purpose of the transition phase is to transition the software product to the user community. Once the product has been given to the end user, issues usually arise that require you to develop new releases, correct some problems, or finish the features that were postponed. The transition phase is entered when a baseline is mature enough to be deployed in the end-user domain. This typically requires that some usable subset of the system has been completed to an acceptable level of quality and that user documentation is available so that the transition to the user will provide positive results for all parties. This includes:<br />
* &#8220;Beta testing&#8221; to validate the new system against user expectations<br />
* Parallel operation with a legacy system that it is replacing<br />
* Conversion of operational databases<br />
* Training of users and maintainers<br />
* Roll-out the product to the marketing, distribution, and sales teams<br />
In the transition phase, the product has moved from the development organization to the end user. The activities of this phase include training of the end users and maintainers and beta testing of the system to validate it against the end users&#8217; expectations. The product is also checked against the quality level set in the Inception phase. If it does not meet this level, or the standards of the end users, the entire cycle in this phase begins again.<br />
If all objectives are met, the Product Release Milestone is reached and the development cycle ends.</p>
]]></content:encoded>
			<wfw:commentRss>http://learnsoftwareprocesses.com/2007/09/09/lifecycle-phases-of-the-rational-unified-process/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

