<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en-GB">
	<id>http://13.50.150.85/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Lessisv</id>
	<title>DTU ProjectLab - User contributions [en-gb]</title>
	<link rel="self" type="application/atom+xml" href="http://13.50.150.85/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Lessisv"/>
	<link rel="alternate" type="text/html" href="http://13.50.150.85/index.php/Special:Contributions/Lessisv"/>
	<updated>2026-07-15T17:23:22Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.43.3</generator>
	<entry>
		<id>http://13.50.150.85/index.php?title=Talk:Rational_Unified_Process_(RUP)&amp;diff=18344</id>
		<title>Talk:Rational Unified Process (RUP)</title>
		<link rel="alternate" type="text/html" href="http://13.50.150.85/index.php?title=Talk:Rational_Unified_Process_(RUP)&amp;diff=18344"/>
		<updated>2015-09-29T13:23:19Z</updated>

		<summary type="html">&lt;p&gt;Lessisv: /* Reviewer 1, Damien */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Anna: I like the topic idea, remember to keep in mind that you need to showcase how this tool is relevant/useful for project/portfolio/program management.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Reviewer 1, Damien===&lt;br /&gt;
The article has been accessed the 22/09/2015 at 4 p.m.&lt;br /&gt;
&lt;br /&gt;
*Overall overview. &lt;br /&gt;
The presentation and the overall writing is very clear and clean. The article seems to be well organised and structured. It is also completed, more than 3000 words. Even without any knowledge of the subject, it becomes accessible through the article. &lt;br /&gt;
&lt;br /&gt;
*Formal aspect.&lt;br /&gt;
No mistakes noticed, the vocabulary is very precise and the formal aspect of the Wiki seems to me perfectly mastered. The references and the links inside the article are well used in order to explain technical aspect through other pages. &lt;br /&gt;
&lt;br /&gt;
*Schemas and photos&lt;br /&gt;
They are clearly identified and used in harmony within the text. Maybe more pictures should be introduced in order to break the monotony of the article. &lt;br /&gt;
&lt;br /&gt;
*Links, connections and comprehension. &lt;br /&gt;
The article describes the subject in a cascade way, each part is clearly explained in a fall down structure leading to the use in management. So the choice structure makes perfect sense to me.&lt;br /&gt;
 &lt;br /&gt;
However, despite the great efficiency in term of explanation, the style can be quite repetitive in terms of reading. It may be corrected by introducing some personal comment, or practical example from times to times and when possible.&lt;br /&gt;
&lt;br /&gt;
*Bibliography &lt;br /&gt;
The references seem to be very serious one.&lt;br /&gt;
 &lt;br /&gt;
However 4 references isn’t enough, and there is no explanation (yet) considering how each reference is relevant regarding the topic. &lt;br /&gt;
&lt;br /&gt;
*Conclusion and advices: &lt;br /&gt;
From my very own point of view the subject is perfectly explained and presented. However I personally think that it may help to consider some practical examples of the use of the RUP, even if oversimplification is needed. It would make the article more alive in a way (possibility to introduce other picture etc.). The article described the use of RUP in management but doesn’t provide examples.&lt;br /&gt;
&lt;br /&gt;
I understand the subject is complex and need a complete description in order to be fully understandable to the reader. Reducing the description or replacing some parts by concrete examples could still help for the comprehension. &lt;br /&gt;
&lt;br /&gt;
The actual formal presentation is however perfectly acceptable.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Answer to reviewer 1&#039;&#039;&#039;&lt;br /&gt;
Dear Damien, &lt;br /&gt;
thank you very much for all your points. To me the most important ones were the missing references and some concrete examples of using the method. As far as the references are concerned, they have all been added. As you said the article was pretty extensive (a bit more than 3000 words) and i could not delete any of the parts to add a practical example (by doing so, i would have to delete important aspects of the method and it wouldn&#039;t make sense to the final reader). However, i added a &#039;&#039;&#039;Further Reading&#039;&#039;&#039; section where the reader can find such an example for better comprehension of the method.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
‘’’Ana – Reviewer 2’’’&lt;br /&gt;
*I found this an interesting topic I did not know nothing about before. I really liked the start, it is good to have a definition when you are about to discover a new subject.&lt;br /&gt;
&lt;br /&gt;
As I was blind in this matter it was a bit hard for me to read, there is “a lot of meat in that bone” but I have to admit that it is well structured event though it is quite long for the amount of information, it goes into much detail. I find useful the use of bullet points.&lt;br /&gt;
&lt;br /&gt;
*Figures are useful and well use, they are referred in the text what make easier to follow the explanation. &lt;br /&gt;
The conclusion is brief and sums up the content of the article.&lt;br /&gt;
&lt;br /&gt;
*I would have like to have links in the reference list to consult in case of doubts.&lt;br /&gt;
&lt;br /&gt;
*I would have like to have examples of use in this article to make it easier to follow, I personally learn better with a “background story”, it seems more coherent for me in a complex topic like this.&lt;br /&gt;
&lt;br /&gt;
*To conclude my feedback I have to say that this article looks accurate and good for expand knowledge.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Answer to reviewer 1&#039;&#039;&#039;&lt;br /&gt;
Dear Ana, thank you very much for your points. I added all the missing references as you suggested and i added a &#039;&#039;&#039;Further Reading&#039;&#039;&#039; section, where you can read a practical example of the method.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Reviewer username: s103128 (Martin Larsen) – Reviewer 1&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Hello Author of Rational Unified Process! Wauv, what an outstanding article! I think you did an awesome job on this one.&lt;br /&gt;
&lt;br /&gt;
-The introduction starts the article very well. In just a few lines, the origin and use of the method is covered and explained, even for someone, like me, with very little knowledge on the subject&lt;br /&gt;
&lt;br /&gt;
-The subject seems very relevant, and the article follows the structure of a “method” article very well&lt;br /&gt;
&lt;br /&gt;
-The process paragraph gives a good overview of what seems to be a complex process. I like the way it is done with bullet points, it gives a strong sense of linearity in the article. &lt;br /&gt;
&lt;br /&gt;
-The use of figures support the text and arguments. Especially the figure describing the phases really improves understanding.&lt;br /&gt;
&lt;br /&gt;
-Your language is correct, highly scientific and with very, very few errors. Awesome!&lt;br /&gt;
&lt;br /&gt;
-Your link to project management is good, but maybe it should be emphasized a bit earlier, that this is a tool that can be used in the project/programme/portfoilio context? A line or two in the introduction would be sufficient. &lt;br /&gt;
&lt;br /&gt;
-Remember to make the annotated bibliography for your sources, and I will recommend the use of the wiki reference system instead of a sub-section&lt;br /&gt;
&lt;br /&gt;
-Your article has A LOT of headlines. Usually, I would consider many headlines with only limited amount of supporting text a bad thing. But I think, the subject and wiki format considered, you make it work. Just be careful that your points are not lost by having only a limited amount of “flowing” text. For instance the “deployment” sub-paragraph has very little supportive text, apart from the bullet points. It could be a bit more elaborated in text what is going on. &lt;br /&gt;
&lt;br /&gt;
I must admit that I don’t have much else to critize you for, as I think you have written an excellent article. Good luck with your article!&lt;br /&gt;
&lt;br /&gt;
/Martin&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Answer to reviewer 3&#039;&#039;&#039;&lt;br /&gt;
Dear Martin, thank you very much for all your points! I added all the missing references and i also used the wiki reference system as you suggested. I agree that some parts may not contain a lot of supportive text, however i believe that these parts did not need any further explanation and the article was pretty extensive already(a bit more than 3000 words).&lt;/div&gt;</summary>
		<author><name>Lessisv</name></author>
	</entry>
	<entry>
		<id>http://13.50.150.85/index.php?title=Talk:Rational_Unified_Process_(RUP)&amp;diff=18342</id>
		<title>Talk:Rational Unified Process (RUP)</title>
		<link rel="alternate" type="text/html" href="http://13.50.150.85/index.php?title=Talk:Rational_Unified_Process_(RUP)&amp;diff=18342"/>
		<updated>2015-09-29T13:19:15Z</updated>

		<summary type="html">&lt;p&gt;Lessisv: /* Reviewer 1, Damien */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Anna: I like the topic idea, remember to keep in mind that you need to showcase how this tool is relevant/useful for project/portfolio/program management.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Reviewer 1, Damien===&lt;br /&gt;
The article has been accessed the 22/09/2015 at 4 p.m.&lt;br /&gt;
&lt;br /&gt;
*Overall overview. &lt;br /&gt;
The presentation and the overall writing is very clear and clean. The article seems to be well organised and structured. It is also completed, more than 3000 words. Even without any knowledge of the subject, it becomes accessible through the article. &lt;br /&gt;
&lt;br /&gt;
*Formal aspect.&lt;br /&gt;
No mistakes noticed, the vocabulary is very precise and the formal aspect of the Wiki seems to me perfectly mastered. The references and the links inside the article are well used in order to explain technical aspect through other pages. &lt;br /&gt;
&lt;br /&gt;
*Schemas and photos&lt;br /&gt;
They are clearly identified and used in harmony within the text. Maybe more pictures should be introduced in order to break the monotony of the article. &lt;br /&gt;
&lt;br /&gt;
*Links, connections and comprehension. &lt;br /&gt;
The article describes the subject in a cascade way, each part is clearly explained in a fall down structure leading to the use in management. So the choice structure makes perfect sense to me.&lt;br /&gt;
 &lt;br /&gt;
However, despite the great efficiency in term of explanation, the style can be quite repetitive in terms of reading. It may be corrected by introducing some personal comment, or practical example from times to times and when possible.&lt;br /&gt;
&lt;br /&gt;
*Bibliography &lt;br /&gt;
The references seem to be very serious one.&lt;br /&gt;
 &lt;br /&gt;
However 4 references isn’t enough, and there is no explanation (yet) considering how each reference is relevant regarding the topic. &lt;br /&gt;
&lt;br /&gt;
*Conclusion and advices: &lt;br /&gt;
From my very own point of view the subject is perfectly explained and presented. However I personally think that it may help to consider some practical examples of the use of the RUP, even if oversimplification is needed. It would make the article more alive in a way (possibility to introduce other picture etc.). The article described the use of RUP in management but doesn’t provide examples.&lt;br /&gt;
&lt;br /&gt;
I understand the subject is complex and need a complete description in order to be fully understandable to the reader. Reducing the description or replacing some parts by concrete examples could still help for the comprehension. &lt;br /&gt;
&lt;br /&gt;
The actual formal presentation is however perfectly acceptable.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Answer to reviewer 1&#039;&#039;&#039;&lt;br /&gt;
Dear Damien, &lt;br /&gt;
thank you very much for all your points. To me the most important ones were the missing references and some concrete examples of using the method. As far as the references are concerned, they have all been added. As you said the article was pretty extensive (a bit more than 3000 words) and i could not delete any of the parts to add a practical example (by doing so, i would have to delete important aspects of the method and it wouldn&#039;t make sense to the final reader). However, i added a &#039;&#039;&#039;Further Reading&#039;&#039;&#039; section where the reader can find such an example for better comprehension of the method.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
‘’’Ana – Reviewer 2’’’&lt;br /&gt;
*I found this an interesting topic I did not know nothing about before. I really liked the start, it is good to have a definition when you are about to discover a new subject.&lt;br /&gt;
&lt;br /&gt;
As I was blind in this matter it was a bit hard for me to read, there is “a lot of meat in that bone” but I have to admit that it is well structured event though it is quite long for the amount of information, it goes into much detail. I find useful the use of bullet points.&lt;br /&gt;
&lt;br /&gt;
*Figures are useful and well use, they are referred in the text what make easier to follow the explanation. &lt;br /&gt;
The conclusion is brief and sums up the content of the article.&lt;br /&gt;
&lt;br /&gt;
*I would have like to have links in the reference list to consult in case of doubts.&lt;br /&gt;
&lt;br /&gt;
*I would have like to have examples of use in this article to make it easier to follow, I personally learn better with a “background story”, it seems more coherent for me in a complex topic like this.&lt;br /&gt;
&lt;br /&gt;
*To conclude my feedback I have to say that this article looks accurate and good for expand knowledge.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Answer to reviewer 1&#039;&#039;&#039;&lt;br /&gt;
Dear Ana, thank you very much for your points. I added all the missing references as you suggested and i added a &#039;&#039;&#039;Further Reading&#039;&#039;&#039; section, where you can read a practical example of the method.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Reviewer username: s103128 (Martin Larsen) – Reviewer 1&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Hello Author of Rational Unified Process! Wauv, what an outstanding article! I think you did an awesome job on this one.&lt;br /&gt;
&lt;br /&gt;
-The introduction starts the article very well. In just a few lines, the origin and use of the method is covered and explained, even for someone, like me, with very little knowledge on the subject&lt;br /&gt;
&lt;br /&gt;
-The subject seems very relevant, and the article follows the structure of a “method” article very well&lt;br /&gt;
&lt;br /&gt;
-The process paragraph gives a good overview of what seems to be a complex process. I like the way it is done with bullet points, it gives a strong sense of linearity in the article. &lt;br /&gt;
&lt;br /&gt;
-The use of figures support the text and arguments. Especially the figure describing the phases really improves understanding.&lt;br /&gt;
&lt;br /&gt;
-Your language is correct, highly scientific and with very, very few errors. Awesome!&lt;br /&gt;
&lt;br /&gt;
-Your link to project management is good, but maybe it should be emphasized a bit earlier, that this is a tool that can be used in the project/programme/portfoilio context? A line or two in the introduction would be sufficient. &lt;br /&gt;
&lt;br /&gt;
-Remember to make the annotated bibliography for your sources, and I will recommend the use of the wiki reference system instead of a sub-section&lt;br /&gt;
&lt;br /&gt;
-Your article has A LOT of headlines. Usually, I would consider many headlines with only limited amount of supporting text a bad thing. But I think, the subject and wiki format considered, you make it work. Just be careful that your points are not lost by having only a limited amount of “flowing” text. For instance the “deployment” sub-paragraph has very little supportive text, apart from the bullet points. It could be a bit more elaborated in text what is going on. &lt;br /&gt;
&lt;br /&gt;
I must admit that I don’t have much else to critize you for, as I think you have written an excellent article. Good luck with your article!&lt;br /&gt;
&lt;br /&gt;
/Martin&lt;/div&gt;</summary>
		<author><name>Lessisv</name></author>
	</entry>
	<entry>
		<id>http://13.50.150.85/index.php?title=Talk:Rational_Unified_Process_(RUP)&amp;diff=18340</id>
		<title>Talk:Rational Unified Process (RUP)</title>
		<link rel="alternate" type="text/html" href="http://13.50.150.85/index.php?title=Talk:Rational_Unified_Process_(RUP)&amp;diff=18340"/>
		<updated>2015-09-29T13:17:20Z</updated>

		<summary type="html">&lt;p&gt;Lessisv: /* Reviewer 1, Damien */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Anna: I like the topic idea, remember to keep in mind that you need to showcase how this tool is relevant/useful for project/portfolio/program management.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Reviewer 1, Damien===&lt;br /&gt;
The article has been accessed the 22/09/2015 at 4 p.m.&lt;br /&gt;
&lt;br /&gt;
*Overall overview. &lt;br /&gt;
The presentation and the overall writing is very clear and clean. The article seems to be well organised and structured. It is also completed, more than 3000 words. Even without any knowledge of the subject, it becomes accessible through the article. &lt;br /&gt;
&lt;br /&gt;
*Formal aspect.&lt;br /&gt;
No mistakes noticed, the vocabulary is very precise and the formal aspect of the Wiki seems to me perfectly mastered. The references and the links inside the article are well used in order to explain technical aspect through other pages. &lt;br /&gt;
&lt;br /&gt;
*Schemas and photos&lt;br /&gt;
They are clearly identified and used in harmony within the text. Maybe more pictures should be introduced in order to break the monotony of the article. &lt;br /&gt;
&lt;br /&gt;
*Links, connections and comprehension. &lt;br /&gt;
The article describes the subject in a cascade way, each part is clearly explained in a fall down structure leading to the use in management. So the choice structure makes perfect sense to me.&lt;br /&gt;
 &lt;br /&gt;
However, despite the great efficiency in term of explanation, the style can be quite repetitive in terms of reading. It may be corrected by introducing some personal comment, or practical example from times to times and when possible.&lt;br /&gt;
&lt;br /&gt;
*Bibliography &lt;br /&gt;
The references seem to be very serious one.&lt;br /&gt;
 &lt;br /&gt;
However 4 references isn’t enough, and there is no explanation (yet) considering how each reference is relevant regarding the topic. &lt;br /&gt;
&lt;br /&gt;
*Conclusion and advices: &lt;br /&gt;
From my very own point of view the subject is perfectly explained and presented. However I personally think that it may help to consider some practical examples of the use of the RUP, even if oversimplification is needed. It would make the article more alive in a way (possibility to introduce other picture etc.). The article described the use of RUP in management but doesn’t provide examples.&lt;br /&gt;
&lt;br /&gt;
I understand the subject is complex and need a complete description in order to be fully understandable to the reader. Reducing the description or replacing some parts by concrete examples could still help for the comprehension. &lt;br /&gt;
&lt;br /&gt;
The actual formal presentation is however perfectly acceptable.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Answer to reviewer 1&#039;&#039;&#039;&lt;br /&gt;
Dear Damien, &lt;br /&gt;
thank you very much for all your points. To me the most important ones were the missing references and some concrete examples of using the method. As far as the references are concerned, they have all been added. As you said the article was pretty extensive (a bit more than 3000 words) and i could not delete any of the parts to add a practical example (by doing so, i would have to delete important aspects of the method and it wouldn&#039;t make sense to the final reader). However, i added a &#039;&#039;&#039;Further Reading&#039;&#039;&#039; section where the reader can find such an example for better comprehension of the method.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
‘’’Ana – Reviewer 2’’’&lt;br /&gt;
*I found this an interesting topic I did not know nothing about before. I really liked the start, it is good to have a definition when you are about to discover a new subject.&lt;br /&gt;
&lt;br /&gt;
As I was blind in this matter it was a bit hard for me to read, there is “a lot of meat in that bone” but I have to admit that it is well structured event though it is quite long for the amount of information, it goes into much detail. I find useful the use of bullet points.&lt;br /&gt;
&lt;br /&gt;
*Figures are useful and well use, they are referred in the text what make easier to follow the explanation. &lt;br /&gt;
The conclusion is brief and sums up the content of the article.&lt;br /&gt;
&lt;br /&gt;
*I would have like to have links in the reference list to consult in case of doubts.&lt;br /&gt;
&lt;br /&gt;
*I would have like to have examples of use in this article to make it easier to follow, I personally learn better with a “background story”, it seems more coherent for me in a complex topic like this.&lt;br /&gt;
&lt;br /&gt;
*To conclude my feedback I have to say that this article looks accurate and good for expand knowledge.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Reviewer username: s103128 (Martin Larsen) – Reviewer 1&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Hello Author of Rational Unified Process! Wauv, what an outstanding article! I think you did an awesome job on this one.&lt;br /&gt;
&lt;br /&gt;
-The introduction starts the article very well. In just a few lines, the origin and use of the method is covered and explained, even for someone, like me, with very little knowledge on the subject&lt;br /&gt;
&lt;br /&gt;
-The subject seems very relevant, and the article follows the structure of a “method” article very well&lt;br /&gt;
&lt;br /&gt;
-The process paragraph gives a good overview of what seems to be a complex process. I like the way it is done with bullet points, it gives a strong sense of linearity in the article. &lt;br /&gt;
&lt;br /&gt;
-The use of figures support the text and arguments. Especially the figure describing the phases really improves understanding.&lt;br /&gt;
&lt;br /&gt;
-Your language is correct, highly scientific and with very, very few errors. Awesome!&lt;br /&gt;
&lt;br /&gt;
-Your link to project management is good, but maybe it should be emphasized a bit earlier, that this is a tool that can be used in the project/programme/portfoilio context? A line or two in the introduction would be sufficient. &lt;br /&gt;
&lt;br /&gt;
-Remember to make the annotated bibliography for your sources, and I will recommend the use of the wiki reference system instead of a sub-section&lt;br /&gt;
&lt;br /&gt;
-Your article has A LOT of headlines. Usually, I would consider many headlines with only limited amount of supporting text a bad thing. But I think, the subject and wiki format considered, you make it work. Just be careful that your points are not lost by having only a limited amount of “flowing” text. For instance the “deployment” sub-paragraph has very little supportive text, apart from the bullet points. It could be a bit more elaborated in text what is going on. &lt;br /&gt;
&lt;br /&gt;
I must admit that I don’t have much else to critize you for, as I think you have written an excellent article. Good luck with your article!&lt;br /&gt;
&lt;br /&gt;
/Martin&lt;/div&gt;</summary>
		<author><name>Lessisv</name></author>
	</entry>
	<entry>
		<id>http://13.50.150.85/index.php?title=Talk:Rational_Unified_Process_(RUP)&amp;diff=18338</id>
		<title>Talk:Rational Unified Process (RUP)</title>
		<link rel="alternate" type="text/html" href="http://13.50.150.85/index.php?title=Talk:Rational_Unified_Process_(RUP)&amp;diff=18338"/>
		<updated>2015-09-29T13:16:36Z</updated>

		<summary type="html">&lt;p&gt;Lessisv: /* Reviewer 1, Damien */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Anna: I like the topic idea, remember to keep in mind that you need to showcase how this tool is relevant/useful for project/portfolio/program management.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Reviewer 1, Damien===&lt;br /&gt;
The article has been accessed the 22/09/2015 at 4 p.m.&lt;br /&gt;
&lt;br /&gt;
*Overall overview. &lt;br /&gt;
The presentation and the overall writing is very clear and clean. The article seems to be well organised and structured. It is also completed, more than 3000 words. Even without any knowledge of the subject, it becomes accessible through the article. &lt;br /&gt;
&lt;br /&gt;
*Formal aspect.&lt;br /&gt;
No mistakes noticed, the vocabulary is very precise and the formal aspect of the Wiki seems to me perfectly mastered. The references and the links inside the article are well used in order to explain technical aspect through other pages. &lt;br /&gt;
&lt;br /&gt;
*Schemas and photos&lt;br /&gt;
They are clearly identified and used in harmony within the text. Maybe more pictures should be introduced in order to break the monotony of the article. &lt;br /&gt;
&lt;br /&gt;
*Links, connections and comprehension. &lt;br /&gt;
The article describes the subject in a cascade way, each part is clearly explained in a fall down structure leading to the use in management. So the choice structure makes perfect sense to me.&lt;br /&gt;
 &lt;br /&gt;
However, despite the great efficiency in term of explanation, the style can be quite repetitive in terms of reading. It may be corrected by introducing some personal comment, or practical example from times to times and when possible.&lt;br /&gt;
&lt;br /&gt;
*Bibliography &lt;br /&gt;
The references seem to be very serious one.&lt;br /&gt;
 &lt;br /&gt;
However 4 references isn’t enough, and there is no explanation (yet) considering how each reference is relevant regarding the topic. &lt;br /&gt;
&lt;br /&gt;
*Conclusion and advices: &lt;br /&gt;
From my very own point of view the subject is perfectly explained and presented. However I personally think that it may help to consider some practical examples of the use of the RUP, even if oversimplification is needed. It would make the article more alive in a way (possibility to introduce other picture etc.). The article described the use of RUP in management but doesn’t provide examples.&lt;br /&gt;
&lt;br /&gt;
I understand the subject is complex and need a complete description in order to be fully understandable to the reader. Reducing the description or replacing some parts by concrete examples could still help for the comprehension. &lt;br /&gt;
&lt;br /&gt;
The actual formal presentation is however perfectly acceptable.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Answer to reviewer 1&#039;&#039;&#039;&lt;br /&gt;
Dear Damien, &lt;br /&gt;
thank you very much for all your points. To me the most important ones were the missing references and some concrete examples of using the method. As far as the references are concerned, they have all been added. As you said the article was pretty extensive (a bit more than 3000 words) and i could not delete any of the parts to add a practical example (by doing so, i would have to important aspects of the method and it wouldn&#039;t make sense to the final reader). However, i added a &#039;&#039;&#039;Further Reading&#039;&#039;&#039; section where the reader can find such an example for better comprehension of the method.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
‘’’Ana – Reviewer 2’’’&lt;br /&gt;
*I found this an interesting topic I did not know nothing about before. I really liked the start, it is good to have a definition when you are about to discover a new subject.&lt;br /&gt;
&lt;br /&gt;
As I was blind in this matter it was a bit hard for me to read, there is “a lot of meat in that bone” but I have to admit that it is well structured event though it is quite long for the amount of information, it goes into much detail. I find useful the use of bullet points.&lt;br /&gt;
&lt;br /&gt;
*Figures are useful and well use, they are referred in the text what make easier to follow the explanation. &lt;br /&gt;
The conclusion is brief and sums up the content of the article.&lt;br /&gt;
&lt;br /&gt;
*I would have like to have links in the reference list to consult in case of doubts.&lt;br /&gt;
&lt;br /&gt;
*I would have like to have examples of use in this article to make it easier to follow, I personally learn better with a “background story”, it seems more coherent for me in a complex topic like this.&lt;br /&gt;
&lt;br /&gt;
*To conclude my feedback I have to say that this article looks accurate and good for expand knowledge.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Reviewer username: s103128 (Martin Larsen) – Reviewer 1&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Hello Author of Rational Unified Process! Wauv, what an outstanding article! I think you did an awesome job on this one.&lt;br /&gt;
&lt;br /&gt;
-The introduction starts the article very well. In just a few lines, the origin and use of the method is covered and explained, even for someone, like me, with very little knowledge on the subject&lt;br /&gt;
&lt;br /&gt;
-The subject seems very relevant, and the article follows the structure of a “method” article very well&lt;br /&gt;
&lt;br /&gt;
-The process paragraph gives a good overview of what seems to be a complex process. I like the way it is done with bullet points, it gives a strong sense of linearity in the article. &lt;br /&gt;
&lt;br /&gt;
-The use of figures support the text and arguments. Especially the figure describing the phases really improves understanding.&lt;br /&gt;
&lt;br /&gt;
-Your language is correct, highly scientific and with very, very few errors. Awesome!&lt;br /&gt;
&lt;br /&gt;
-Your link to project management is good, but maybe it should be emphasized a bit earlier, that this is a tool that can be used in the project/programme/portfoilio context? A line or two in the introduction would be sufficient. &lt;br /&gt;
&lt;br /&gt;
-Remember to make the annotated bibliography for your sources, and I will recommend the use of the wiki reference system instead of a sub-section&lt;br /&gt;
&lt;br /&gt;
-Your article has A LOT of headlines. Usually, I would consider many headlines with only limited amount of supporting text a bad thing. But I think, the subject and wiki format considered, you make it work. Just be careful that your points are not lost by having only a limited amount of “flowing” text. For instance the “deployment” sub-paragraph has very little supportive text, apart from the bullet points. It could be a bit more elaborated in text what is going on. &lt;br /&gt;
&lt;br /&gt;
I must admit that I don’t have much else to critize you for, as I think you have written an excellent article. Good luck with your article!&lt;br /&gt;
&lt;br /&gt;
/Martin&lt;/div&gt;</summary>
		<author><name>Lessisv</name></author>
	</entry>
	<entry>
		<id>http://13.50.150.85/index.php?title=Rational_Unified_Process_(RUP)&amp;diff=17970</id>
		<title>Rational Unified Process (RUP)</title>
		<link rel="alternate" type="text/html" href="http://13.50.150.85/index.php?title=Rational_Unified_Process_(RUP)&amp;diff=17970"/>
		<updated>2015-09-28T23:55:13Z</updated>

		<summary type="html">&lt;p&gt;Lessisv: /* Further Reading */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The &#039;&#039;&#039;Rational Unified Process (RUP)&#039;&#039;&#039; is an iterative, &#039;&#039;&#039;software development methodology&#039;&#039;&#039;, firstly introduced by the [https://en.wikipedia.org/wiki/Rational_Software Rational Software Corporation] which was [http://www-03.ibm.com/press/us/en/pressrelease/314.wss acquired by IBM] in 2003. RUP is a disciplined approach to assign tasks within a development organization and software project teams. It was developed to ensure the production of &#039;&#039;&#039;high quality software&#039;&#039;&#039; by providing the development team with a set of &#039;&#039;&#039;guidelines, templates and tool mentors&#039;&#039;&#039;, for all the critical life-cycle activities within a project. This cluster of objects, form a knowledge base that is shared between all project team members. As a result, no matter what each member is working with (e.g testing, designing, managing), they all share a common language and view on how to develop software. Consequently, team productivity is boosted, in order to deliver software that can meet and exceed the needs and expectations of end-users, strictly following a predictable budget and schedule &amp;lt;ref name=&amp;quot;Ivar Jacobson, Grady Booch, and Jim Rumbaugh&amp;quot;&amp;gt;Ivar Jacobson, Grady Booch, and Jim Rumbaugh, Unified Software Development Process, Addison-Wesley, 1999.&amp;lt;/ref&amp;gt;. RUP is the most popular and extensively documented refinement of the [https://en.wikipedia.org/wiki/Unified_Process Unified Process], an iterative and incremental software development process framework. Other worth mentioning forms are the [https://en.wikipedia.org/wiki/OpenUP OpenUP] and [https://en.wikipedia.org/wiki/Agile_Unified_Process Agile Unified Process].&lt;br /&gt;
&lt;br /&gt;
== Process Overview ==&lt;br /&gt;
&lt;br /&gt;
[[File:RUP.png|450px|right|thumb| Figure 1. The iterative model graph shows how the process is structured along two dimensions]]&lt;br /&gt;
&lt;br /&gt;
The best possible way to describe the methodology is through a 2 - dimensional graph &amp;lt;ref name=&amp;quot;IBM (2005) Rational Unified Process&amp;quot;&amp;gt;IBM (2005) Rational Unified Process – Best Practices for Software Development Teams. Rational Software White paper. Rational&amp;lt;/ref&amp;gt;.&lt;br /&gt;
* The first dimension (horizontal axis) represents the &#039;&#039;&#039;dynamic aspect&#039;&#039;&#039; of the process. It expresses &#039;&#039;&#039;time&#039;&#039;&#039; in terms of &#039;&#039;&#039;phases&#039;&#039;&#039; and &#039;&#039;&#039;iterations&#039;&#039;&#039;. &lt;br /&gt;
* The second dimension (vertical axis) represents the &#039;&#039;&#039;static aspect&#039;&#039;&#039; of the process. It expresses &#039;&#039;&#039;workflows&#039;&#039;&#039; in terms of 6 core and 3 supporting &#039;&#039;&#039;disciplines&#039;&#039;&#039; (more on that on &amp;quot;Disciplines&amp;quot; section).&lt;br /&gt;
&lt;br /&gt;
=== Time Dimension - Phases and Iterations ===&lt;br /&gt;
When developing software, the project team goes through a multi-step process, from establishing a system&#039;s requirements to designing, implementing and finally maintaining the software with new releases. This is the software life cycle  &amp;lt;ref name=&amp;quot;IBM (2003) The Rational Unified Process®&amp;quot;&amp;gt;IBM (2003) The Rational Unified Process®, Version 2003.06.12.01, Rational Software Corporation.&amp;lt;/ref&amp;gt;. RUP delicately breaks the software life cycle down to four consecutive phases &amp;lt;ref name=&amp;quot;Philippe Kruchten&amp;quot;&amp;gt;A Rational Development Process, CrossTalk, 9 (7), STSC, Hill AFB, UT, pp.11-16.&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
* Inception phase&lt;br /&gt;
* Elaboration phase&lt;br /&gt;
* Construction phase&lt;br /&gt;
* Transition phase&lt;br /&gt;
&lt;br /&gt;
Depending on the project, each of these phases can consist of one to a number of &#039;&#039;&#039;iterations&#039;&#039;&#039;. An iteration is defined as a complete development loop, resulting in a new product release. All the phases include a well-defined milestone, in order to be completed. In the end of every phase, the development team can evaluate whether all the key goals have been achieved, all stakeholders have been considered and the actual expenditures correspond with the planned ones  &amp;lt;ref name=&amp;quot;Barry W. Boehm&amp;quot;&amp;gt;Barry W. Boehm, Anchoring the Software Process, IEEE Software, 13, 4, July 1996, pp. 73-82. &amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[File:RUP_phases.png|550px|right|thumb| Figure 2. The four phases and milestones of a project]]&lt;br /&gt;
==== Inception Phase ====&lt;br /&gt;
The first phase is the inception phase. The focus of this phase, is understanding the scope of the project and studying if is both worth doing and possible to do. All the internal and external entities that the system will interact with are identified and the nature of the interaction is well defined at a high level. For this reason, the inception phase is primarily significant for new development projects. &lt;br /&gt;
The expected outcome of the inception phase includes :&lt;br /&gt;
&lt;br /&gt;
* A vision document: The document states the general vision of the project including its key requirements, features and main constraints.&lt;br /&gt;
* An initial use-case model (10%-20% complete)&lt;br /&gt;
* An initial project glossary&lt;br /&gt;
* An initial business case, including the business context, success criteria and a financial forecast.&lt;br /&gt;
* An initial risk assessment&lt;br /&gt;
* A project plan (phases and iterations)&lt;br /&gt;
* A business model (if necessary)&lt;br /&gt;
* Prototypes&lt;br /&gt;
&lt;br /&gt;
At the end of the inception phase lies the first major project milestone; the &#039;&#039;&#039;Lifecycle Objective Milestone&#039;&#039;&#039;.&lt;br /&gt;
The inception phase has five evaluation criteria:&lt;br /&gt;
&lt;br /&gt;
* Stakeholder concurrence on scope definition and cost/schedule estimates.&lt;br /&gt;
* Depth and breadth of any prototype that was developed.&lt;br /&gt;
* Actual expenditures versus planned ones.&lt;br /&gt;
* Requirements understanding.&lt;br /&gt;
* Credibility of the cost/schedule estimates, risks and priorities.&lt;br /&gt;
&lt;br /&gt;
If for any reason the project fails to pass this milestone, it can either be completely cancelled or re-designed to successfully meet the criteria.&lt;br /&gt;
 &lt;br /&gt;
==== Elaboration Phase ====&lt;br /&gt;
The second phase is the elaboration phase. The focus of this phase, is establishing a baseline to the architecture of the system, further developing the project plan and analyzing the problem domain while trying to mitigate the highest risk elements. In other words, this is the phase where the project starts to take shape. One of the most important characteristics of this phase, is the production of a component-based architectural prototype. The purpose of this prototype, is to address the critical use-cases that were identified in the previous phase, and hopefully expose the highest technical risks of the project. The expected outcome of the elaboration phase includes:&lt;br /&gt;
&lt;br /&gt;
* A use-case model (at least 80% complete) which will be able to identify all the actors and use-cases.&lt;br /&gt;
* Supplementary requirements (if any).&lt;br /&gt;
* A clear description of the software architecture.&lt;br /&gt;
* An architectural prototype.&lt;br /&gt;
* A more detailed risk assessment and business case.&lt;br /&gt;
* A development plan for the overall project.&lt;br /&gt;
* A preliminary user manual (optional).&lt;br /&gt;
&lt;br /&gt;
At the end of the elaboration phase lies the second major project milestone; the &#039;&#039;&#039;Lifecycle Architecture Milestone&#039;&#039;&#039;.&lt;br /&gt;
The elaboration phase has six evaluation criteria:&lt;br /&gt;
&lt;br /&gt;
* Is the vision stable enough?&lt;br /&gt;
* Is the system architecture stable enough?&lt;br /&gt;
* Have all the major risks been successfully identified and resolved?&lt;br /&gt;
* Is the plan for the construction phase accurate enough?&lt;br /&gt;
* Do all the stakeholders share the opinion that the vision can be achieved by executing the current plan?&lt;br /&gt;
* Is the actual vs planned resource expenditure in acceptable levels?&lt;br /&gt;
&lt;br /&gt;
If the project fails to pass the milestone, there is still time to be re-designed or even cancelled. However, when the project moves to the next phase the associated operation risks raise significantly and changes become much more difficult.&lt;br /&gt;
&lt;br /&gt;
==== Construction Phase====&lt;br /&gt;
The third phase is the construction phase. The focus of this phase, is to develop and integrate all the remaining components and application features into the product. In other words this is the phase where the vision is finally translated into a final stable product, which is based on the architecture that was developed during the previous phases  &amp;lt;ref name=&amp;quot;KRUCHTEN, P. (2000)&amp;quot;&amp;gt;KRUCHTEN, P. (2000) The Rational Unified Process - An Introduction, Second Edition, Addison-Wesley.&amp;lt;/ref&amp;gt;. Most emphasize is given to resources, control and process management in order to fully optimize costs, schedules and quality &amp;lt;ref name=&amp;quot;IBM (2003) The Rational Unified Process®&amp;quot;&amp;gt;IBM (2003) The Rational Unified Process®, Version 2003.06.12.01, Rational Software Corporation.&amp;lt;/ref&amp;gt;. The existing prototype evolves via a number of iterations into a fully functional product that meets the stakeholders&#039; needs. The construction phase is usually the longest one of the project life cycle. The expected outcome of the construction phase includes:&lt;br /&gt;
&lt;br /&gt;
* First external release of the software.&lt;br /&gt;
* User manuals.&lt;br /&gt;
* A detailed description of the current release.&lt;br /&gt;
&lt;br /&gt;
At the end of the construction phase lies the third major project milestone; the &#039;&#039;&#039;Initial Operation Capability Milestone&#039;&#039;&#039;.&lt;br /&gt;
The construction phase has three evaluation criteria:&lt;br /&gt;
&lt;br /&gt;
* Is the software release stable enough to be given to the user community?&lt;br /&gt;
* Are all the stakeholders ready for the transition to the user community?&lt;br /&gt;
* Is the actual vs planned resource expenditure in acceptable levels?&lt;br /&gt;
&lt;br /&gt;
If the project fails to pass this milestone, transition may have to be postponed by one release.&lt;br /&gt;
&lt;br /&gt;
==== Transition Phase ====&lt;br /&gt;
The fourth and final phase is the transition phase. The focus of this phase is, as the word says, to transition the software product to the user community. It includes ensuring that the product has been developed to an acceptable quality level, by beta testing the software through the end users, and validating it against the stakeholders&#039; expectations. Once the product has been given for beta testing, a number of issues can arise, requiring the development of new releases (fixing bugs) and adding features that may have been postponed. The expected outcome of the transition phase includes:&lt;br /&gt;
&lt;br /&gt;
* Beta-testing to fix any major [https://en.wikipedia.org/wiki/Software_bug software bugs] and add any missing features.&lt;br /&gt;
* Conversion of operational databases&lt;br /&gt;
* Training of end users and maintainers.&lt;br /&gt;
* Marketing and distribution of the product.&lt;br /&gt;
&lt;br /&gt;
At the end of the transition phase lies the fourth and final major project milestone; the &#039;&#039;&#039;Product Release&#039;&#039;&#039;.&lt;br /&gt;
The transition phase has two evaluation criteria:&lt;br /&gt;
&lt;br /&gt;
* Are the end - users satisfied with the product?&lt;br /&gt;
* Is the actual vs planned resource expenditure in acceptable levels?&lt;br /&gt;
&lt;br /&gt;
==== Iterations ====&lt;br /&gt;
As stated before, every phase can consist of a number of iterations, depending on the project size and scope. RUP, in comparison to the traditional [https://en.wikipedia.org/wiki/Waterfall_model waterfall] approach, is heavily based on iterations. This gives a number of advantages and benefits to the project team, with the most important one being mitigating risks much more earlier in the project. Moreover, change is more manageable and there is normally a higher level of reuse. Finally, iterations ensure an overall high quality in the final product and that the project team can learn throughout the developing process &amp;lt;ref name=&amp;quot;KRUCHTEN, P.&amp;quot;&amp;gt; KRUCHTEN, P. A Rational Development Process, CrossTalk, 9 (7), STSC, Hill AFB, UT, pp.11-16.&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Workflow Dimension - Disciplines ===&lt;br /&gt;
&lt;br /&gt;
[[File:activities.png|350px|right|thumb| Figure 4. Individuals, Roles and Activities]]&lt;br /&gt;
[[File:workflows.png|350px|right|thumb| Figure 5. Example of a workflow]]&lt;br /&gt;
&lt;br /&gt;
A process describes &#039;&#039;&#039;who&#039;&#039;&#039; is doing &#039;&#039;&#039;what&#039;&#039;&#039;, &#039;&#039;&#039;how&#039;&#039;&#039; and &#039;&#039;&#039;when&#039;&#039;&#039;. RUP addresses those terms with four modelling elements; &#039;&#039;&#039;Roles&#039;&#039;&#039;, &#039;&#039;&#039;Activities&#039;&#039;&#039;, &#039;&#039;&#039;Artifacts&#039;&#039;&#039; and &#039;&#039;&#039;Workflows&#039;&#039;&#039; respectively  &amp;lt;ref name=&amp;quot;IBM (2005) Rational Unified Process&amp;quot;&amp;gt; IBM (2005) Rational Unified Process – Best Practices for Software Development Teams. Rational Software White paper. Rational. &amp;lt;/ref&amp;gt;. A &#039;&#039;&#039;role&#039;&#039;&#039;, formally addressed as a worker, describes the behavior and responsibilities of an individual or a group of individuals in order to produce an artifact. Throughout the development of a project, a person can play one or a number of roles. Some examples of roles are the system analyst, designer, tester. &#039;&#039;&#039;Activities&#039;&#039;&#039; are expressed through behaviors. An activity, is a job that a person performs through his role, as seen in Figure 4. The length of an activity may vary from a few hours to a number of days. Examples of activities are: Plan an operation - performed by the role of Project Manager or add a missing feature - performed by the role of a software developer. All activities produce a meaningful result, called an artifact. &#039;&#039;&#039;Artifacts&#039;&#039;&#039;, are the responsibilities of ones role or roles and express a piece of information that is produced, modified or even used by a process. They can act both as input or output of an activity. Examples of artifacts are the source code, the business case, the software architecture. The roles perform activities that can produce a sequence of artifacts, called &#039;&#039;&#039;workflows&#039;&#039;&#039;. Examples of workflows can be seen in Figure 5. &lt;br /&gt;
&lt;br /&gt;
RUP identifies nine core process workflows, called &#039;&#039;&#039;disciplines&#039;&#039;&#039;. Every discipline, addresses a set of activities and artifacts, based upon a set of skills that are common in an ICT project. These disciplines have the ability to arrange the activities and artifacts in such a way, to provide an understanding of the overall project from a waterfall perspective  &amp;lt;ref name=&amp;quot;RATIONALUNIVERSITY (2003) PRJ270&amp;quot;&amp;gt;RATIONALUNIVERSITY (2003) PRJ270: Essentials of Rational Unified Process - Student Manual, IBM Corporation. &amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
There are six core &amp;quot;engineering&amp;quot; disciplines:&lt;br /&gt;
* Business Modelling Discipline&lt;br /&gt;
* Requirements Discipline&lt;br /&gt;
* Analysis and Design Discipline&lt;br /&gt;
* Implementation Discipline&lt;br /&gt;
* Test Discipline&lt;br /&gt;
* Deployment Discipline&lt;br /&gt;
&lt;br /&gt;
And three core &amp;quot;supporting&amp;quot; disciplines:&lt;br /&gt;
* Project Management Discipline&lt;br /&gt;
* Configuration and Change Management Discipline&lt;br /&gt;
* Environment Discipline&lt;br /&gt;
&lt;br /&gt;
==== Business Modelling ====&lt;br /&gt;
&lt;br /&gt;
Miscommunication between the software engineering community and the business engineering community is one of the most common problems among most business engineering efforts. This means that the output from software development efforts is not correctly used as input to the business engineering and vice versa. The purpose of the Business Modelling discipline is to provide a common language between the two communities and create a direct coupling between software and business models. All business processes are documented using &amp;quot;use cases&amp;quot;. This assures that all stakeholders share the same understanding of the demanding organization.&lt;br /&gt;
&lt;br /&gt;
==== Requirements ====&lt;br /&gt;
The purpose of the requirements discipline is to describe in detail &#039;&#039;&#039;what&#039;&#039;&#039; the system should do. Based on that, a Vision document is created where required functionality and constraints are documented. Moreover, actors (end - users) and use cases (behaviors of the system) are identified. Use cases are described in detail and each description clearly shows how the system interacts with the actors. This way an agreement is established between the customers and the rest of the stakeholders regarding the system&#039;s capabilities, user-interface and the end user&#039;s needs.&lt;br /&gt;
&lt;br /&gt;
==== Analysis and Design ====&lt;br /&gt;
&lt;br /&gt;
The purpose of the Analysis and Design discipline it to investigate &#039;&#039;&#039;how&#039;&#039;&#039; the system requirements will be translated into a detailed implementation plan. The system needs to:&lt;br /&gt;
* Perform exactly as described in the use-case descriptions.&lt;br /&gt;
* Fulfill all requirements.&lt;br /&gt;
* Have a robust structure.&lt;br /&gt;
&lt;br /&gt;
Analysis and Design result in the creation of a &#039;&#039;&#039;design model&#039;&#039;&#039;  &amp;lt;ref name=&amp;quot;KRUCHTEN, P.&amp;quot;&amp;gt;KRUCHTEN, P. (2000) The Rational Unified Process - An Introduction, Second Edition, Addison-Wesley&amp;lt;/ref&amp;gt;. The design model is an abstraction of the system&#039;s architecture and acts as a guide of how the source code should be finally written and structured.&lt;br /&gt;
&lt;br /&gt;
==== Implementation ====&lt;br /&gt;
The purpose of the Implementation discipline is to:&lt;br /&gt;
&lt;br /&gt;
* Arrange the code into subsystems, organized in layers.&lt;br /&gt;
* Implement classes and objects in terms of components.&lt;br /&gt;
* Uni-test the developed components to ensure quality.&lt;br /&gt;
* Integrate the results into an executable system.&lt;br /&gt;
&lt;br /&gt;
The whole system can be realized as an implementation of various components. RUP enables the integration of those components, in a revolutionary way, making the system easier to maintain and increasing the possibilities for future re-use.&lt;br /&gt;
&lt;br /&gt;
==== Test ====&lt;br /&gt;
&lt;br /&gt;
In the implementation discipline, all the developed components were uni-tested individually and were integrated into the system. The purpose of the Test discipline is to assess the system as a whole and verify the product quality. It is a mechanism to verify the smooth interaction between the various components, their proper integration into the system and finally ensure that all requirements have been successfully implemented. All tests are carried out along 4 quality dimensions:&lt;br /&gt;
* Functionality.&lt;br /&gt;
* Reliability.&lt;br /&gt;
* Application Performance.&lt;br /&gt;
* System Performance.&lt;br /&gt;
&lt;br /&gt;
==== Deployment ====&lt;br /&gt;
&lt;br /&gt;
The purpose of the Deployment discipline is primarily to develop product releases and distribute the software to the end – users. More specifically the Deployment discipline focuses at:&lt;br /&gt;
&lt;br /&gt;
* Developing external software releases&lt;br /&gt;
* Distributing the software&lt;br /&gt;
* Installing the software&lt;br /&gt;
* Providing help to the end – users&lt;br /&gt;
* Creating an up-to-date user manual&lt;br /&gt;
* Conducting beta testing&lt;br /&gt;
&lt;br /&gt;
==== Project Management ====&lt;br /&gt;
&lt;br /&gt;
The purpose of the Project Management discipline, is to successfully balance competing objectives, manage and mitigate risks and finally handle any constraints on delivering the product. Project management, ideally provides:&lt;br /&gt;
&lt;br /&gt;
* A framework for managing software-intensive projects.&lt;br /&gt;
* A framework to successfully manage risks.&lt;br /&gt;
* A framework to plan, execute and monitor projects.&lt;br /&gt;
&lt;br /&gt;
While the discipline does not guarantee success, the odds of delivering successful software are greatly improved  &amp;lt;ref name=&amp;quot;Walker Royce&amp;quot;&amp;gt;Walker Royce, Software Project Management  A Unified Framework, Addison-Wesley, 1998. &amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==== Configuration and Change Management ====&lt;br /&gt;
&lt;br /&gt;
The purpose of the Configuration and Change Management Discipline is to control, maintain and configure all the various artifacts that are produced by the different actors that are working on a project. During the software development life cycle, artifacts are regularly updated (changed). In order to understand the current state of an artifact, it is very important to keep track of its location and history; what was the reason and who decided to change the artifact. The discipline helps create a framework that keeps track of all the project assets.&lt;br /&gt;
&lt;br /&gt;
==== Environment ====&lt;br /&gt;
&lt;br /&gt;
The purpose of the environment discipline, is to provide the development team with all the processes, tools and methods for supporting all developing activities. It is responsible for producing a Development Kit, able to provide guidelines and templates for customizing processes.&lt;br /&gt;
&lt;br /&gt;
== Why RUP - Best Practices ==&lt;br /&gt;
&lt;br /&gt;
RUP captures many of the “best practices” that are currently used in modern software development and more particularly in industry by successful organizations. The practices are:&lt;br /&gt;
&lt;br /&gt;
* Develop Software Iteratively&lt;br /&gt;
* Manage Requirements&lt;br /&gt;
* Use component-based architectures&lt;br /&gt;
* Visually model software&lt;br /&gt;
* Continuously verify software quality&lt;br /&gt;
* Control changes to software&lt;br /&gt;
&lt;br /&gt;
=== Develop Software iteratively ===&lt;br /&gt;
&lt;br /&gt;
Today’s high sophisticated software systems, consist of many and complex structures which make it nearly impossible to define the entire system from the very beginning, develop the entire solution and then test the product in the end. RUP uses an iterative approach that allows an increasing understanding of the problem and developing a step – by – step solution, over multiple iterations. Each iteration ends with an executable release, which enables continuous end - user involvement and feedback. As a result, the risks of the project are mitigated at an early stage and stakeholders are ensured that the project requirements are fulfilled. &amp;lt;ref name=&amp;quot;Barry W. Boehm 2&amp;quot;&amp;gt;Barry W. Boehm, A Spiral Model of Software Development and Enhancement, Computer, May 1988, IEEE, pp.61-72 &amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Manage requirements ===&lt;br /&gt;
&lt;br /&gt;
The requirements of a system include the description of the services that the system is able to provide and its operational constraints. RUP documents, organizes and tracks required functionality and constraints and easily communicates business requirements. The use – cases that are used in the process are an excellent way to ensure that requirements are actually those elements that drive the design, implementation and testing of software, making it more likely that the final system fulfills the stakeholders needs. &amp;lt;ref name=&amp;quot;Ivar Jacobson, Magnus Christerson, Patrik Jonsson, and Gunnar Övergaard&amp;quot;&amp;gt;Ivar Jacobson, Magnus Christerson, Patrik Jonsson, and Gunnar Övergaard, Object-Oriented Software Engineering—A Use Case Driven Approach, Wokingham, England, Addison-Wesley, 1992, 582p&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Use component-based architectures ===&lt;br /&gt;
&lt;br /&gt;
Component-based architecture makes the system dynamic; components are independent from the system and interact with other components through well-defined interfaces. Their in-dependency from the system, gives them a great flexibility meaning that they can easily be added, updated or totally replaced. RUP supports component-based software development by providing a systematic approach to defining an architecture using new and existing components.  &amp;lt;ref name=&amp;quot;Alan W. Brown (ed.)&amp;quot;&amp;gt;Alan W. Brown (ed.), Component-Based Software Engineering, IEEE Computer Society, Los Alamitos, CA, 1996, pp.140.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Visually model software ===&lt;br /&gt;
&lt;br /&gt;
A model is an abstraction of reality that can help better comprehend large and complex systems. Visual abstractions help the development team to easily communicate different aspects of the software and see how all the components fit together. RUP uses the [http://www.uml.org/ Unified Modelling Language (UML)] standard which is a graphical language for visualizing and constructing the artifacts of a software-intensive system.  &amp;lt;ref name=&amp;quot;Grady Booch, Ivar Jacobson, and James Rumbaugh&amp;quot;&amp;gt;Grady Booch, Ivar Jacobson, and James Rumbaugh, Unified Modeling Language 1.3, White paper, Rational Software Corp., 1998&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Continuously verify software quality ===&lt;br /&gt;
&lt;br /&gt;
In software development, quality should always be reviewed with respect to the requirements based on reliability, functionality , application and system performance. In RUP, quality verification and assessment is built into the process, inside all activities, including all stakeholders and is not treated as a separate activity, performed by a separate group.&lt;br /&gt;
&lt;br /&gt;
=== Control changes to software ===&lt;br /&gt;
&lt;br /&gt;
A software system is developed by a number of teams or individuals, using different platforms and at times being in different locations. As a result, it is essential to somehow make sure that all the changes made in the system are synchronized and constantly verified. RUP ensures that all the individuals working in the project are well informed about any changes and everything is in sync. The process describes how to control, track and monitor changes to enable successful iterative development.&lt;br /&gt;
&lt;br /&gt;
== Limitations ==&lt;br /&gt;
&lt;br /&gt;
While being a complete methodology in itself with an emphasis on accurate documentation and quickly resolving project associated risks, RUP comes with a number of limitations.&lt;br /&gt;
&lt;br /&gt;
* In order for team members to start developing software under this methodology, they need to be &#039;&#039;&#039;experts&#039;&#039;&#039; in their respective fields.&lt;br /&gt;
* The development process can easily become too complex to handle.&lt;br /&gt;
* When working with cutting - edge projects that highly utilize new technology, components will not be able to be reused. &lt;br /&gt;
* While in theory integration throughout the process of software development sounds like a good thing, when working with particularly complex projects with multiple development streams, issues and significant confusion may rise during the stages of testing.&lt;br /&gt;
&lt;br /&gt;
== Conclusion ==&lt;br /&gt;
&lt;br /&gt;
The Rational Unified Process, is an exemplary method for addressing and mitigating risks from the very early stages, by rapidly developing an initial version of the system (prototype) that describes its architecture. There are not fixed requirements from the beginning but rather allows refining requirements , while the project progresses. It expects and actually deals with change pretty well while its main focus is the quality of the product and the degree to which it satisfies its end - users, throughout the project life-cycle. However, while being a complete and well documented methodology, it should be stressed that remains a very complex one. In order to increase the likelihood of success, while adopting this methodology, all the project members need to be &#039;&#039;&#039;experts&#039;&#039;&#039; in their respective fields. The method can easily become too difficult to learn and most importantly too difficult to apply.&lt;br /&gt;
&lt;br /&gt;
== Further Reading ==&lt;br /&gt;
A [http://www.differnet.com/crose/CR_Files/CRose-RUPSample/RUPSample-CR1.pdf practical example] of using the Rational Unified Process.&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Lessisv</name></author>
	</entry>
	<entry>
		<id>http://13.50.150.85/index.php?title=Rational_Unified_Process_(RUP)&amp;diff=17966</id>
		<title>Rational Unified Process (RUP)</title>
		<link rel="alternate" type="text/html" href="http://13.50.150.85/index.php?title=Rational_Unified_Process_(RUP)&amp;diff=17966"/>
		<updated>2015-09-28T23:53:59Z</updated>

		<summary type="html">&lt;p&gt;Lessisv: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The &#039;&#039;&#039;Rational Unified Process (RUP)&#039;&#039;&#039; is an iterative, &#039;&#039;&#039;software development methodology&#039;&#039;&#039;, firstly introduced by the [https://en.wikipedia.org/wiki/Rational_Software Rational Software Corporation] which was [http://www-03.ibm.com/press/us/en/pressrelease/314.wss acquired by IBM] in 2003. RUP is a disciplined approach to assign tasks within a development organization and software project teams. It was developed to ensure the production of &#039;&#039;&#039;high quality software&#039;&#039;&#039; by providing the development team with a set of &#039;&#039;&#039;guidelines, templates and tool mentors&#039;&#039;&#039;, for all the critical life-cycle activities within a project. This cluster of objects, form a knowledge base that is shared between all project team members. As a result, no matter what each member is working with (e.g testing, designing, managing), they all share a common language and view on how to develop software. Consequently, team productivity is boosted, in order to deliver software that can meet and exceed the needs and expectations of end-users, strictly following a predictable budget and schedule &amp;lt;ref name=&amp;quot;Ivar Jacobson, Grady Booch, and Jim Rumbaugh&amp;quot;&amp;gt;Ivar Jacobson, Grady Booch, and Jim Rumbaugh, Unified Software Development Process, Addison-Wesley, 1999.&amp;lt;/ref&amp;gt;. RUP is the most popular and extensively documented refinement of the [https://en.wikipedia.org/wiki/Unified_Process Unified Process], an iterative and incremental software development process framework. Other worth mentioning forms are the [https://en.wikipedia.org/wiki/OpenUP OpenUP] and [https://en.wikipedia.org/wiki/Agile_Unified_Process Agile Unified Process].&lt;br /&gt;
&lt;br /&gt;
== Process Overview ==&lt;br /&gt;
&lt;br /&gt;
[[File:RUP.png|450px|right|thumb| Figure 1. The iterative model graph shows how the process is structured along two dimensions]]&lt;br /&gt;
&lt;br /&gt;
The best possible way to describe the methodology is through a 2 - dimensional graph &amp;lt;ref name=&amp;quot;IBM (2005) Rational Unified Process&amp;quot;&amp;gt;IBM (2005) Rational Unified Process – Best Practices for Software Development Teams. Rational Software White paper. Rational&amp;lt;/ref&amp;gt;.&lt;br /&gt;
* The first dimension (horizontal axis) represents the &#039;&#039;&#039;dynamic aspect&#039;&#039;&#039; of the process. It expresses &#039;&#039;&#039;time&#039;&#039;&#039; in terms of &#039;&#039;&#039;phases&#039;&#039;&#039; and &#039;&#039;&#039;iterations&#039;&#039;&#039;. &lt;br /&gt;
* The second dimension (vertical axis) represents the &#039;&#039;&#039;static aspect&#039;&#039;&#039; of the process. It expresses &#039;&#039;&#039;workflows&#039;&#039;&#039; in terms of 6 core and 3 supporting &#039;&#039;&#039;disciplines&#039;&#039;&#039; (more on that on &amp;quot;Disciplines&amp;quot; section).&lt;br /&gt;
&lt;br /&gt;
=== Time Dimension - Phases and Iterations ===&lt;br /&gt;
When developing software, the project team goes through a multi-step process, from establishing a system&#039;s requirements to designing, implementing and finally maintaining the software with new releases. This is the software life cycle  &amp;lt;ref name=&amp;quot;IBM (2003) The Rational Unified Process®&amp;quot;&amp;gt;IBM (2003) The Rational Unified Process®, Version 2003.06.12.01, Rational Software Corporation.&amp;lt;/ref&amp;gt;. RUP delicately breaks the software life cycle down to four consecutive phases &amp;lt;ref name=&amp;quot;Philippe Kruchten&amp;quot;&amp;gt;A Rational Development Process, CrossTalk, 9 (7), STSC, Hill AFB, UT, pp.11-16.&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
* Inception phase&lt;br /&gt;
* Elaboration phase&lt;br /&gt;
* Construction phase&lt;br /&gt;
* Transition phase&lt;br /&gt;
&lt;br /&gt;
Depending on the project, each of these phases can consist of one to a number of &#039;&#039;&#039;iterations&#039;&#039;&#039;. An iteration is defined as a complete development loop, resulting in a new product release. All the phases include a well-defined milestone, in order to be completed. In the end of every phase, the development team can evaluate whether all the key goals have been achieved, all stakeholders have been considered and the actual expenditures correspond with the planned ones  &amp;lt;ref name=&amp;quot;Barry W. Boehm&amp;quot;&amp;gt;Barry W. Boehm, Anchoring the Software Process, IEEE Software, 13, 4, July 1996, pp. 73-82. &amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[File:RUP_phases.png|550px|right|thumb| Figure 2. The four phases and milestones of a project]]&lt;br /&gt;
==== Inception Phase ====&lt;br /&gt;
The first phase is the inception phase. The focus of this phase, is understanding the scope of the project and studying if is both worth doing and possible to do. All the internal and external entities that the system will interact with are identified and the nature of the interaction is well defined at a high level. For this reason, the inception phase is primarily significant for new development projects. &lt;br /&gt;
The expected outcome of the inception phase includes :&lt;br /&gt;
&lt;br /&gt;
* A vision document: The document states the general vision of the project including its key requirements, features and main constraints.&lt;br /&gt;
* An initial use-case model (10%-20% complete)&lt;br /&gt;
* An initial project glossary&lt;br /&gt;
* An initial business case, including the business context, success criteria and a financial forecast.&lt;br /&gt;
* An initial risk assessment&lt;br /&gt;
* A project plan (phases and iterations)&lt;br /&gt;
* A business model (if necessary)&lt;br /&gt;
* Prototypes&lt;br /&gt;
&lt;br /&gt;
At the end of the inception phase lies the first major project milestone; the &#039;&#039;&#039;Lifecycle Objective Milestone&#039;&#039;&#039;.&lt;br /&gt;
The inception phase has five evaluation criteria:&lt;br /&gt;
&lt;br /&gt;
* Stakeholder concurrence on scope definition and cost/schedule estimates.&lt;br /&gt;
* Depth and breadth of any prototype that was developed.&lt;br /&gt;
* Actual expenditures versus planned ones.&lt;br /&gt;
* Requirements understanding.&lt;br /&gt;
* Credibility of the cost/schedule estimates, risks and priorities.&lt;br /&gt;
&lt;br /&gt;
If for any reason the project fails to pass this milestone, it can either be completely cancelled or re-designed to successfully meet the criteria.&lt;br /&gt;
 &lt;br /&gt;
==== Elaboration Phase ====&lt;br /&gt;
The second phase is the elaboration phase. The focus of this phase, is establishing a baseline to the architecture of the system, further developing the project plan and analyzing the problem domain while trying to mitigate the highest risk elements. In other words, this is the phase where the project starts to take shape. One of the most important characteristics of this phase, is the production of a component-based architectural prototype. The purpose of this prototype, is to address the critical use-cases that were identified in the previous phase, and hopefully expose the highest technical risks of the project. The expected outcome of the elaboration phase includes:&lt;br /&gt;
&lt;br /&gt;
* A use-case model (at least 80% complete) which will be able to identify all the actors and use-cases.&lt;br /&gt;
* Supplementary requirements (if any).&lt;br /&gt;
* A clear description of the software architecture.&lt;br /&gt;
* An architectural prototype.&lt;br /&gt;
* A more detailed risk assessment and business case.&lt;br /&gt;
* A development plan for the overall project.&lt;br /&gt;
* A preliminary user manual (optional).&lt;br /&gt;
&lt;br /&gt;
At the end of the elaboration phase lies the second major project milestone; the &#039;&#039;&#039;Lifecycle Architecture Milestone&#039;&#039;&#039;.&lt;br /&gt;
The elaboration phase has six evaluation criteria:&lt;br /&gt;
&lt;br /&gt;
* Is the vision stable enough?&lt;br /&gt;
* Is the system architecture stable enough?&lt;br /&gt;
* Have all the major risks been successfully identified and resolved?&lt;br /&gt;
* Is the plan for the construction phase accurate enough?&lt;br /&gt;
* Do all the stakeholders share the opinion that the vision can be achieved by executing the current plan?&lt;br /&gt;
* Is the actual vs planned resource expenditure in acceptable levels?&lt;br /&gt;
&lt;br /&gt;
If the project fails to pass the milestone, there is still time to be re-designed or even cancelled. However, when the project moves to the next phase the associated operation risks raise significantly and changes become much more difficult.&lt;br /&gt;
&lt;br /&gt;
==== Construction Phase====&lt;br /&gt;
The third phase is the construction phase. The focus of this phase, is to develop and integrate all the remaining components and application features into the product. In other words this is the phase where the vision is finally translated into a final stable product, which is based on the architecture that was developed during the previous phases  &amp;lt;ref name=&amp;quot;KRUCHTEN, P. (2000)&amp;quot;&amp;gt;KRUCHTEN, P. (2000) The Rational Unified Process - An Introduction, Second Edition, Addison-Wesley.&amp;lt;/ref&amp;gt;. Most emphasize is given to resources, control and process management in order to fully optimize costs, schedules and quality &amp;lt;ref name=&amp;quot;IBM (2003) The Rational Unified Process®&amp;quot;&amp;gt;IBM (2003) The Rational Unified Process®, Version 2003.06.12.01, Rational Software Corporation.&amp;lt;/ref&amp;gt;. The existing prototype evolves via a number of iterations into a fully functional product that meets the stakeholders&#039; needs. The construction phase is usually the longest one of the project life cycle. The expected outcome of the construction phase includes:&lt;br /&gt;
&lt;br /&gt;
* First external release of the software.&lt;br /&gt;
* User manuals.&lt;br /&gt;
* A detailed description of the current release.&lt;br /&gt;
&lt;br /&gt;
At the end of the construction phase lies the third major project milestone; the &#039;&#039;&#039;Initial Operation Capability Milestone&#039;&#039;&#039;.&lt;br /&gt;
The construction phase has three evaluation criteria:&lt;br /&gt;
&lt;br /&gt;
* Is the software release stable enough to be given to the user community?&lt;br /&gt;
* Are all the stakeholders ready for the transition to the user community?&lt;br /&gt;
* Is the actual vs planned resource expenditure in acceptable levels?&lt;br /&gt;
&lt;br /&gt;
If the project fails to pass this milestone, transition may have to be postponed by one release.&lt;br /&gt;
&lt;br /&gt;
==== Transition Phase ====&lt;br /&gt;
The fourth and final phase is the transition phase. The focus of this phase is, as the word says, to transition the software product to the user community. It includes ensuring that the product has been developed to an acceptable quality level, by beta testing the software through the end users, and validating it against the stakeholders&#039; expectations. Once the product has been given for beta testing, a number of issues can arise, requiring the development of new releases (fixing bugs) and adding features that may have been postponed. The expected outcome of the transition phase includes:&lt;br /&gt;
&lt;br /&gt;
* Beta-testing to fix any major [https://en.wikipedia.org/wiki/Software_bug software bugs] and add any missing features.&lt;br /&gt;
* Conversion of operational databases&lt;br /&gt;
* Training of end users and maintainers.&lt;br /&gt;
* Marketing and distribution of the product.&lt;br /&gt;
&lt;br /&gt;
At the end of the transition phase lies the fourth and final major project milestone; the &#039;&#039;&#039;Product Release&#039;&#039;&#039;.&lt;br /&gt;
The transition phase has two evaluation criteria:&lt;br /&gt;
&lt;br /&gt;
* Are the end - users satisfied with the product?&lt;br /&gt;
* Is the actual vs planned resource expenditure in acceptable levels?&lt;br /&gt;
&lt;br /&gt;
==== Iterations ====&lt;br /&gt;
As stated before, every phase can consist of a number of iterations, depending on the project size and scope. RUP, in comparison to the traditional [https://en.wikipedia.org/wiki/Waterfall_model waterfall] approach, is heavily based on iterations. This gives a number of advantages and benefits to the project team, with the most important one being mitigating risks much more earlier in the project. Moreover, change is more manageable and there is normally a higher level of reuse. Finally, iterations ensure an overall high quality in the final product and that the project team can learn throughout the developing process &amp;lt;ref name=&amp;quot;KRUCHTEN, P.&amp;quot;&amp;gt; KRUCHTEN, P. A Rational Development Process, CrossTalk, 9 (7), STSC, Hill AFB, UT, pp.11-16.&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Workflow Dimension - Disciplines ===&lt;br /&gt;
&lt;br /&gt;
[[File:activities.png|350px|right|thumb| Figure 4. Individuals, Roles and Activities]]&lt;br /&gt;
[[File:workflows.png|350px|right|thumb| Figure 5. Example of a workflow]]&lt;br /&gt;
&lt;br /&gt;
A process describes &#039;&#039;&#039;who&#039;&#039;&#039; is doing &#039;&#039;&#039;what&#039;&#039;&#039;, &#039;&#039;&#039;how&#039;&#039;&#039; and &#039;&#039;&#039;when&#039;&#039;&#039;. RUP addresses those terms with four modelling elements; &#039;&#039;&#039;Roles&#039;&#039;&#039;, &#039;&#039;&#039;Activities&#039;&#039;&#039;, &#039;&#039;&#039;Artifacts&#039;&#039;&#039; and &#039;&#039;&#039;Workflows&#039;&#039;&#039; respectively  &amp;lt;ref name=&amp;quot;IBM (2005) Rational Unified Process&amp;quot;&amp;gt; IBM (2005) Rational Unified Process – Best Practices for Software Development Teams. Rational Software White paper. Rational. &amp;lt;/ref&amp;gt;. A &#039;&#039;&#039;role&#039;&#039;&#039;, formally addressed as a worker, describes the behavior and responsibilities of an individual or a group of individuals in order to produce an artifact. Throughout the development of a project, a person can play one or a number of roles. Some examples of roles are the system analyst, designer, tester. &#039;&#039;&#039;Activities&#039;&#039;&#039; are expressed through behaviors. An activity, is a job that a person performs through his role, as seen in Figure 4. The length of an activity may vary from a few hours to a number of days. Examples of activities are: Plan an operation - performed by the role of Project Manager or add a missing feature - performed by the role of a software developer. All activities produce a meaningful result, called an artifact. &#039;&#039;&#039;Artifacts&#039;&#039;&#039;, are the responsibilities of ones role or roles and express a piece of information that is produced, modified or even used by a process. They can act both as input or output of an activity. Examples of artifacts are the source code, the business case, the software architecture. The roles perform activities that can produce a sequence of artifacts, called &#039;&#039;&#039;workflows&#039;&#039;&#039;. Examples of workflows can be seen in Figure 5. &lt;br /&gt;
&lt;br /&gt;
RUP identifies nine core process workflows, called &#039;&#039;&#039;disciplines&#039;&#039;&#039;. Every discipline, addresses a set of activities and artifacts, based upon a set of skills that are common in an ICT project. These disciplines have the ability to arrange the activities and artifacts in such a way, to provide an understanding of the overall project from a waterfall perspective  &amp;lt;ref name=&amp;quot;RATIONALUNIVERSITY (2003) PRJ270&amp;quot;&amp;gt;RATIONALUNIVERSITY (2003) PRJ270: Essentials of Rational Unified Process - Student Manual, IBM Corporation. &amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
There are six core &amp;quot;engineering&amp;quot; disciplines:&lt;br /&gt;
* Business Modelling Discipline&lt;br /&gt;
* Requirements Discipline&lt;br /&gt;
* Analysis and Design Discipline&lt;br /&gt;
* Implementation Discipline&lt;br /&gt;
* Test Discipline&lt;br /&gt;
* Deployment Discipline&lt;br /&gt;
&lt;br /&gt;
And three core &amp;quot;supporting&amp;quot; disciplines:&lt;br /&gt;
* Project Management Discipline&lt;br /&gt;
* Configuration and Change Management Discipline&lt;br /&gt;
* Environment Discipline&lt;br /&gt;
&lt;br /&gt;
==== Business Modelling ====&lt;br /&gt;
&lt;br /&gt;
Miscommunication between the software engineering community and the business engineering community is one of the most common problems among most business engineering efforts. This means that the output from software development efforts is not correctly used as input to the business engineering and vice versa. The purpose of the Business Modelling discipline is to provide a common language between the two communities and create a direct coupling between software and business models. All business processes are documented using &amp;quot;use cases&amp;quot;. This assures that all stakeholders share the same understanding of the demanding organization.&lt;br /&gt;
&lt;br /&gt;
==== Requirements ====&lt;br /&gt;
The purpose of the requirements discipline is to describe in detail &#039;&#039;&#039;what&#039;&#039;&#039; the system should do. Based on that, a Vision document is created where required functionality and constraints are documented. Moreover, actors (end - users) and use cases (behaviors of the system) are identified. Use cases are described in detail and each description clearly shows how the system interacts with the actors. This way an agreement is established between the customers and the rest of the stakeholders regarding the system&#039;s capabilities, user-interface and the end user&#039;s needs.&lt;br /&gt;
&lt;br /&gt;
==== Analysis and Design ====&lt;br /&gt;
&lt;br /&gt;
The purpose of the Analysis and Design discipline it to investigate &#039;&#039;&#039;how&#039;&#039;&#039; the system requirements will be translated into a detailed implementation plan. The system needs to:&lt;br /&gt;
* Perform exactly as described in the use-case descriptions.&lt;br /&gt;
* Fulfill all requirements.&lt;br /&gt;
* Have a robust structure.&lt;br /&gt;
&lt;br /&gt;
Analysis and Design result in the creation of a &#039;&#039;&#039;design model&#039;&#039;&#039;  &amp;lt;ref name=&amp;quot;KRUCHTEN, P.&amp;quot;&amp;gt;KRUCHTEN, P. (2000) The Rational Unified Process - An Introduction, Second Edition, Addison-Wesley&amp;lt;/ref&amp;gt;. The design model is an abstraction of the system&#039;s architecture and acts as a guide of how the source code should be finally written and structured.&lt;br /&gt;
&lt;br /&gt;
==== Implementation ====&lt;br /&gt;
The purpose of the Implementation discipline is to:&lt;br /&gt;
&lt;br /&gt;
* Arrange the code into subsystems, organized in layers.&lt;br /&gt;
* Implement classes and objects in terms of components.&lt;br /&gt;
* Uni-test the developed components to ensure quality.&lt;br /&gt;
* Integrate the results into an executable system.&lt;br /&gt;
&lt;br /&gt;
The whole system can be realized as an implementation of various components. RUP enables the integration of those components, in a revolutionary way, making the system easier to maintain and increasing the possibilities for future re-use.&lt;br /&gt;
&lt;br /&gt;
==== Test ====&lt;br /&gt;
&lt;br /&gt;
In the implementation discipline, all the developed components were uni-tested individually and were integrated into the system. The purpose of the Test discipline is to assess the system as a whole and verify the product quality. It is a mechanism to verify the smooth interaction between the various components, their proper integration into the system and finally ensure that all requirements have been successfully implemented. All tests are carried out along 4 quality dimensions:&lt;br /&gt;
* Functionality.&lt;br /&gt;
* Reliability.&lt;br /&gt;
* Application Performance.&lt;br /&gt;
* System Performance.&lt;br /&gt;
&lt;br /&gt;
==== Deployment ====&lt;br /&gt;
&lt;br /&gt;
The purpose of the Deployment discipline is primarily to develop product releases and distribute the software to the end – users. More specifically the Deployment discipline focuses at:&lt;br /&gt;
&lt;br /&gt;
* Developing external software releases&lt;br /&gt;
* Distributing the software&lt;br /&gt;
* Installing the software&lt;br /&gt;
* Providing help to the end – users&lt;br /&gt;
* Creating an up-to-date user manual&lt;br /&gt;
* Conducting beta testing&lt;br /&gt;
&lt;br /&gt;
==== Project Management ====&lt;br /&gt;
&lt;br /&gt;
The purpose of the Project Management discipline, is to successfully balance competing objectives, manage and mitigate risks and finally handle any constraints on delivering the product. Project management, ideally provides:&lt;br /&gt;
&lt;br /&gt;
* A framework for managing software-intensive projects.&lt;br /&gt;
* A framework to successfully manage risks.&lt;br /&gt;
* A framework to plan, execute and monitor projects.&lt;br /&gt;
&lt;br /&gt;
While the discipline does not guarantee success, the odds of delivering successful software are greatly improved  &amp;lt;ref name=&amp;quot;Walker Royce&amp;quot;&amp;gt;Walker Royce, Software Project Management  A Unified Framework, Addison-Wesley, 1998. &amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==== Configuration and Change Management ====&lt;br /&gt;
&lt;br /&gt;
The purpose of the Configuration and Change Management Discipline is to control, maintain and configure all the various artifacts that are produced by the different actors that are working on a project. During the software development life cycle, artifacts are regularly updated (changed). In order to understand the current state of an artifact, it is very important to keep track of its location and history; what was the reason and who decided to change the artifact. The discipline helps create a framework that keeps track of all the project assets.&lt;br /&gt;
&lt;br /&gt;
==== Environment ====&lt;br /&gt;
&lt;br /&gt;
The purpose of the environment discipline, is to provide the development team with all the processes, tools and methods for supporting all developing activities. It is responsible for producing a Development Kit, able to provide guidelines and templates for customizing processes.&lt;br /&gt;
&lt;br /&gt;
== Why RUP - Best Practices ==&lt;br /&gt;
&lt;br /&gt;
RUP captures many of the “best practices” that are currently used in modern software development and more particularly in industry by successful organizations. The practices are:&lt;br /&gt;
&lt;br /&gt;
* Develop Software Iteratively&lt;br /&gt;
* Manage Requirements&lt;br /&gt;
* Use component-based architectures&lt;br /&gt;
* Visually model software&lt;br /&gt;
* Continuously verify software quality&lt;br /&gt;
* Control changes to software&lt;br /&gt;
&lt;br /&gt;
=== Develop Software iteratively ===&lt;br /&gt;
&lt;br /&gt;
Today’s high sophisticated software systems, consist of many and complex structures which make it nearly impossible to define the entire system from the very beginning, develop the entire solution and then test the product in the end. RUP uses an iterative approach that allows an increasing understanding of the problem and developing a step – by – step solution, over multiple iterations. Each iteration ends with an executable release, which enables continuous end - user involvement and feedback. As a result, the risks of the project are mitigated at an early stage and stakeholders are ensured that the project requirements are fulfilled. &amp;lt;ref name=&amp;quot;Barry W. Boehm 2&amp;quot;&amp;gt;Barry W. Boehm, A Spiral Model of Software Development and Enhancement, Computer, May 1988, IEEE, pp.61-72 &amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Manage requirements ===&lt;br /&gt;
&lt;br /&gt;
The requirements of a system include the description of the services that the system is able to provide and its operational constraints. RUP documents, organizes and tracks required functionality and constraints and easily communicates business requirements. The use – cases that are used in the process are an excellent way to ensure that requirements are actually those elements that drive the design, implementation and testing of software, making it more likely that the final system fulfills the stakeholders needs. &amp;lt;ref name=&amp;quot;Ivar Jacobson, Magnus Christerson, Patrik Jonsson, and Gunnar Övergaard&amp;quot;&amp;gt;Ivar Jacobson, Magnus Christerson, Patrik Jonsson, and Gunnar Övergaard, Object-Oriented Software Engineering—A Use Case Driven Approach, Wokingham, England, Addison-Wesley, 1992, 582p&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Use component-based architectures ===&lt;br /&gt;
&lt;br /&gt;
Component-based architecture makes the system dynamic; components are independent from the system and interact with other components through well-defined interfaces. Their in-dependency from the system, gives them a great flexibility meaning that they can easily be added, updated or totally replaced. RUP supports component-based software development by providing a systematic approach to defining an architecture using new and existing components.  &amp;lt;ref name=&amp;quot;Alan W. Brown (ed.)&amp;quot;&amp;gt;Alan W. Brown (ed.), Component-Based Software Engineering, IEEE Computer Society, Los Alamitos, CA, 1996, pp.140.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Visually model software ===&lt;br /&gt;
&lt;br /&gt;
A model is an abstraction of reality that can help better comprehend large and complex systems. Visual abstractions help the development team to easily communicate different aspects of the software and see how all the components fit together. RUP uses the [http://www.uml.org/ Unified Modelling Language (UML)] standard which is a graphical language for visualizing and constructing the artifacts of a software-intensive system.  &amp;lt;ref name=&amp;quot;Grady Booch, Ivar Jacobson, and James Rumbaugh&amp;quot;&amp;gt;Grady Booch, Ivar Jacobson, and James Rumbaugh, Unified Modeling Language 1.3, White paper, Rational Software Corp., 1998&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Continuously verify software quality ===&lt;br /&gt;
&lt;br /&gt;
In software development, quality should always be reviewed with respect to the requirements based on reliability, functionality , application and system performance. In RUP, quality verification and assessment is built into the process, inside all activities, including all stakeholders and is not treated as a separate activity, performed by a separate group.&lt;br /&gt;
&lt;br /&gt;
=== Control changes to software ===&lt;br /&gt;
&lt;br /&gt;
A software system is developed by a number of teams or individuals, using different platforms and at times being in different locations. As a result, it is essential to somehow make sure that all the changes made in the system are synchronized and constantly verified. RUP ensures that all the individuals working in the project are well informed about any changes and everything is in sync. The process describes how to control, track and monitor changes to enable successful iterative development.&lt;br /&gt;
&lt;br /&gt;
== Limitations ==&lt;br /&gt;
&lt;br /&gt;
While being a complete methodology in itself with an emphasis on accurate documentation and quickly resolving project associated risks, RUP comes with a number of limitations.&lt;br /&gt;
&lt;br /&gt;
* In order for team members to start developing software under this methodology, they need to be &#039;&#039;&#039;experts&#039;&#039;&#039; in their respective fields.&lt;br /&gt;
* The development process can easily become too complex to handle.&lt;br /&gt;
* When working with cutting - edge projects that highly utilize new technology, components will not be able to be reused. &lt;br /&gt;
* While in theory integration throughout the process of software development sounds like a good thing, when working with particularly complex projects with multiple development streams, issues and significant confusion may rise during the stages of testing.&lt;br /&gt;
&lt;br /&gt;
== Conclusion ==&lt;br /&gt;
&lt;br /&gt;
The Rational Unified Process, is an exemplary method for addressing and mitigating risks from the very early stages, by rapidly developing an initial version of the system (prototype) that describes its architecture. There are not fixed requirements from the beginning but rather allows refining requirements , while the project progresses. It expects and actually deals with change pretty well while its main focus is the quality of the product and the degree to which it satisfies its end - users, throughout the project life-cycle. However, while being a complete and well documented methodology, it should be stressed that remains a very complex one. In order to increase the likelihood of success, while adopting this methodology, all the project members need to be &#039;&#039;&#039;experts&#039;&#039;&#039; in their respective fields. The method can easily become too difficult to learn and most importantly too difficult to apply.&lt;br /&gt;
&lt;br /&gt;
== Further Reading ==&lt;br /&gt;
An [http://www.differnet.com/crose/CR_Files/CRose-RUPSample/RUPSample-CR1.pdf example] of using RUP&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Lessisv</name></author>
	</entry>
	<entry>
		<id>http://13.50.150.85/index.php?title=Rational_Unified_Process_(RUP)&amp;diff=14794</id>
		<title>Rational Unified Process (RUP)</title>
		<link rel="alternate" type="text/html" href="http://13.50.150.85/index.php?title=Rational_Unified_Process_(RUP)&amp;diff=14794"/>
		<updated>2015-09-26T13:07:59Z</updated>

		<summary type="html">&lt;p&gt;Lessisv: /* Visually model software */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The &#039;&#039;&#039;Rational Unified Process (RUP)&#039;&#039;&#039; is an iterative, &#039;&#039;&#039;software development methodology&#039;&#039;&#039;, firstly introduced by the [https://en.wikipedia.org/wiki/Rational_Software Rational Software Corporation] which was [http://www-03.ibm.com/press/us/en/pressrelease/314.wss acquired by IBM] in 2003. RUP is a disciplined approach to assign tasks within a development organization and software project teams. It was developed to ensure the production of &#039;&#039;&#039;high quality software&#039;&#039;&#039; by providing the development team with a set of &#039;&#039;&#039;guidelines, templates and tool mentors&#039;&#039;&#039;, for all the critical life-cycle activities within a project. This cluster of objects, form a knowledge base that is shared between all project team members. As a result, no matter what each member is working with (e.g testing, designing, managing), they all share a common language and view on how to develop software. Consequently, team productivity is boosted, in order to deliver software that can meet and exceed the needs and expectations of end-users, strictly following a predictable budget and schedule &amp;lt;ref name=&amp;quot;Ivar Jacobson, Grady Booch, and Jim Rumbaugh&amp;quot;&amp;gt;Ivar Jacobson, Grady Booch, and Jim Rumbaugh, Unified Software Development Process, Addison-Wesley, 1999.&amp;lt;/ref&amp;gt;. RUP is the most popular and extensively documented refinement of the [https://en.wikipedia.org/wiki/Unified_Process Unified Process], an iterative and incremental software development process framework. Other worth mentioning forms are the [https://en.wikipedia.org/wiki/OpenUP OpenUP] and [https://en.wikipedia.org/wiki/Agile_Unified_Process Agile Unified Process].&lt;br /&gt;
&lt;br /&gt;
== Process Overview ==&lt;br /&gt;
&lt;br /&gt;
[[File:RUP.png|450px|right|thumb| Figure 1. The iterative model graph shows how the process is structured along two dimensions]]&lt;br /&gt;
&lt;br /&gt;
The best possible way to describe the methodology is through a 2 - dimensional graph &amp;lt;ref name=&amp;quot;IBM (2005) Rational Unified Process&amp;quot;&amp;gt;IBM (2005) Rational Unified Process – Best Practices for Software Development Teams. Rational Software White paper. Rational&amp;lt;/ref&amp;gt;.&lt;br /&gt;
* The first dimension (horizontal axis) represents the &#039;&#039;&#039;dynamic aspect&#039;&#039;&#039; of the process. It expresses &#039;&#039;&#039;time&#039;&#039;&#039; in terms of &#039;&#039;&#039;phases&#039;&#039;&#039; and &#039;&#039;&#039;iterations&#039;&#039;&#039;. &lt;br /&gt;
* The second dimension (vertical axis) represents the &#039;&#039;&#039;static aspect&#039;&#039;&#039; of the process. It expresses &#039;&#039;&#039;workflows&#039;&#039;&#039; in terms of 6 core and 3 supporting &#039;&#039;&#039;disciplines&#039;&#039;&#039; (more on that on &amp;quot;Disciplines&amp;quot; section).&lt;br /&gt;
&lt;br /&gt;
=== Time Dimension - Phases and Iterations ===&lt;br /&gt;
When developing software, the project team goes through a multi-step process, from establishing a system&#039;s requirements to designing, implementing and finally maintaining the software with new releases. This is the software life cycle  &amp;lt;ref name=&amp;quot;IBM (2003) The Rational Unified Process®&amp;quot;&amp;gt;IBM (2003) The Rational Unified Process®, Version 2003.06.12.01, Rational Software Corporation.&amp;lt;/ref&amp;gt;. RUP delicately breaks the software life cycle down to four consecutive phases &amp;lt;ref name=&amp;quot;Philippe Kruchten&amp;quot;&amp;gt;A Rational Development Process, CrossTalk, 9 (7), STSC, Hill AFB, UT, pp.11-16.&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
* Inception phase&lt;br /&gt;
* Elaboration phase&lt;br /&gt;
* Construction phase&lt;br /&gt;
* Transition phase&lt;br /&gt;
&lt;br /&gt;
Depending on the project, each of these phases can consist of one to a number of &#039;&#039;&#039;iterations&#039;&#039;&#039;. An iteration is defined as a complete development loop, resulting in a new product release. All the phases include a well-defined milestone, in order to be completed. In the end of every phase, the development team can evaluate whether all the key goals have been achieved, all stakeholders have been considered and the actual expenditures correspond with the planned ones  &amp;lt;ref name=&amp;quot;Barry W. Boehm&amp;quot;&amp;gt;Barry W. Boehm, Anchoring the Software Process, IEEE Software, 13, 4, July 1996, pp. 73-82. &amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[File:RUP_phases.png|550px|right|thumb| Figure 2. The four phases and milestones of a project]]&lt;br /&gt;
==== Inception Phase ====&lt;br /&gt;
The first phase is the inception phase. The focus of this phase, is understanding the scope of the project and studying if is both worth doing and possible to do. All the internal and external entities that the system will interact with are identified and the nature of the interaction is well defined at a high level. For this reason, the inception phase is primarily significant for new development projects. &lt;br /&gt;
The expected outcome of the inception phase includes :&lt;br /&gt;
&lt;br /&gt;
* A vision document: The document states the general vision of the project including its key requirements, features and main constraints.&lt;br /&gt;
* An initial use-case model (10%-20% complete)&lt;br /&gt;
* An initial project glossary&lt;br /&gt;
* An initial business case, including the business context, success criteria and a financial forecast.&lt;br /&gt;
* An initial risk assessment&lt;br /&gt;
* A project plan (phases and iterations)&lt;br /&gt;
* A business model (if necessary)&lt;br /&gt;
* Prototypes&lt;br /&gt;
&lt;br /&gt;
At the end of the inception phase lies the first major project milestone; the &#039;&#039;&#039;Lifecycle Objective Milestone&#039;&#039;&#039;.&lt;br /&gt;
The inception phase has five evaluation criteria:&lt;br /&gt;
&lt;br /&gt;
* Stakeholder concurrence on scope definition and cost/schedule estimates.&lt;br /&gt;
* Depth and breadth of any prototype that was developed.&lt;br /&gt;
* Actual expenditures versus planned ones.&lt;br /&gt;
* Requirements understanding.&lt;br /&gt;
* Credibility of the cost/schedule estimates, risks and priorities.&lt;br /&gt;
&lt;br /&gt;
If for any reason the project fails to pass this milestone, it can either be completely cancelled or re-designed to successfully meet the criteria.&lt;br /&gt;
 &lt;br /&gt;
==== Elaboration Phase ====&lt;br /&gt;
The second phase is the elaboration phase. The focus of this phase, is establishing a baseline to the architecture of the system, further developing the project plan and analyzing the problem domain while trying to mitigate the highest risk elements. In other words, this is the phase where the project starts to take shape. One of the most important characteristics of this phase, is the production of a component-based architectural prototype. The purpose of this prototype, is to address the critical use-cases that were identified in the previous phase, and hopefully expose the highest technical risks of the project. The expected outcome of the elaboration phase includes:&lt;br /&gt;
&lt;br /&gt;
* A use-case model (at least 80% complete) which will be able to identify all the actors and use-cases.&lt;br /&gt;
* Supplementary requirements (if any).&lt;br /&gt;
* A clear description of the software architecture.&lt;br /&gt;
* An architectural prototype.&lt;br /&gt;
* A more detailed risk assessment and business case.&lt;br /&gt;
* A development plan for the overall project.&lt;br /&gt;
* A preliminary user manual (optional).&lt;br /&gt;
&lt;br /&gt;
At the end of the elaboration phase lies the second major project milestone; the &#039;&#039;&#039;Lifecycle Architecture Milestone&#039;&#039;&#039;.&lt;br /&gt;
The elaboration phase has six evaluation criteria:&lt;br /&gt;
&lt;br /&gt;
* Is the vision stable enough?&lt;br /&gt;
* Is the system architecture stable enough?&lt;br /&gt;
* Have all the major risks been successfully identified and resolved?&lt;br /&gt;
* Is the plan for the construction phase accurate enough?&lt;br /&gt;
* Do all the stakeholders share the opinion that the vision can be achieved by executing the current plan?&lt;br /&gt;
* Is the actual vs planned resource expenditure in acceptable levels?&lt;br /&gt;
&lt;br /&gt;
If the project fails to pass the milestone, there is still time to be re-designed or even cancelled. However, when the project moves to the next phase the associated operation risks raise significantly and changes become much more difficult.&lt;br /&gt;
&lt;br /&gt;
==== Construction Phase====&lt;br /&gt;
The third phase is the construction phase. The focus of this phase, is to develop and integrate all the remaining components and application features into the product. In other words this is the phase where the vision is finally translated into a final stable product, which is based on the architecture that was developed during the previous phases  &amp;lt;ref name=&amp;quot;KRUCHTEN, P. (2000)&amp;quot;&amp;gt;KRUCHTEN, P. (2000) The Rational Unified Process - An Introduction, Second Edition, Addison-Wesley.&amp;lt;/ref&amp;gt;. Most emphasize is given to resources, control and process management in order to fully optimize costs, schedules and quality &amp;lt;ref name=&amp;quot;IBM (2003) The Rational Unified Process®&amp;quot;&amp;gt;IBM (2003) The Rational Unified Process®, Version 2003.06.12.01, Rational Software Corporation.&amp;lt;/ref&amp;gt;. The existing prototype evolves via a number of iterations into a fully functional product that meets the stakeholders&#039; needs. The construction phase is usually the longest one of the project life cycle. The expected outcome of the construction phase includes:&lt;br /&gt;
&lt;br /&gt;
* First external release of the software.&lt;br /&gt;
* User manuals.&lt;br /&gt;
* A detailed description of the current release.&lt;br /&gt;
&lt;br /&gt;
At the end of the construction phase lies the third major project milestone; the &#039;&#039;&#039;Initial Operation Capability Milestone&#039;&#039;&#039;.&lt;br /&gt;
The construction phase has three evaluation criteria:&lt;br /&gt;
&lt;br /&gt;
* Is the software release stable enough to be given to the user community?&lt;br /&gt;
* Are all the stakeholders ready for the transition to the user community?&lt;br /&gt;
* Is the actual vs planned resource expenditure in acceptable levels?&lt;br /&gt;
&lt;br /&gt;
If the project fails to pass this milestone, transition may have to be postponed by one release.&lt;br /&gt;
&lt;br /&gt;
==== Transition Phase ====&lt;br /&gt;
The fourth and final phase is the transition phase. The focus of this phase is, as the word says, to transition the software product to the user community. It includes ensuring that the product has been developed to an acceptable quality level, by beta testing the software through the end users, and validating it against the stakeholders&#039; expectations. Once the product has been given for beta testing, a number of issues can arise, requiring the development of new releases (fixing bugs) and adding features that may have been postponed. The expected outcome of the transition phase includes:&lt;br /&gt;
&lt;br /&gt;
* Beta-testing to fix any major [https://en.wikipedia.org/wiki/Software_bug software bugs] and add any missing features.&lt;br /&gt;
* Conversion of operational databases&lt;br /&gt;
* Training of end users and maintainers.&lt;br /&gt;
* Marketing and distribution of the product.&lt;br /&gt;
&lt;br /&gt;
At the end of the transition phase lies the fourth and final major project milestone; the &#039;&#039;&#039;Product Release&#039;&#039;&#039;.&lt;br /&gt;
The transition phase has two evaluation criteria:&lt;br /&gt;
&lt;br /&gt;
* Are the end - users satisfied with the product?&lt;br /&gt;
* Is the actual vs planned resource expenditure in acceptable levels?&lt;br /&gt;
&lt;br /&gt;
==== Iterations ====&lt;br /&gt;
As stated before, every phase can consist of a number of iterations, depending on the project size and scope. RUP, in comparison to the traditional [https://en.wikipedia.org/wiki/Waterfall_model waterfall] approach, is heavily based on iterations. This gives a number of advantages and benefits to the project team, with the most important one being mitigating risks much more earlier in the project. Moreover, change is more manageable and there is normally a higher level of reuse. Finally, iterations ensure an overall high quality in the final product and that the project team can learn throughout the developing process &amp;lt;ref name=&amp;quot;KRUCHTEN, P.&amp;quot;&amp;gt; KRUCHTEN, P. A Rational Development Process, CrossTalk, 9 (7), STSC, Hill AFB, UT, pp.11-16.&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Workflow Dimension - Disciplines ===&lt;br /&gt;
&lt;br /&gt;
[[File:activities.png|350px|right|thumb| Figure 4. Individuals, Roles and Activities]]&lt;br /&gt;
[[File:workflows.png|350px|right|thumb| Figure 5. Example of a workflow]]&lt;br /&gt;
&lt;br /&gt;
A process describes &#039;&#039;&#039;who&#039;&#039;&#039; is doing &#039;&#039;&#039;what&#039;&#039;&#039;, &#039;&#039;&#039;how&#039;&#039;&#039; and &#039;&#039;&#039;when&#039;&#039;&#039;. RUP addresses those terms with four modelling elements; &#039;&#039;&#039;Roles&#039;&#039;&#039;, &#039;&#039;&#039;Activities&#039;&#039;&#039;, &#039;&#039;&#039;Artifacts&#039;&#039;&#039; and &#039;&#039;&#039;Workflows&#039;&#039;&#039; respectively  &amp;lt;ref name=&amp;quot;IBM (2005) Rational Unified Process&amp;quot;&amp;gt; IBM (2005) Rational Unified Process – Best Practices for Software Development Teams. Rational Software White paper. Rational. &amp;lt;/ref&amp;gt;. A &#039;&#039;&#039;role&#039;&#039;&#039;, formally addressed as a worker, describes the behavior and responsibilities of an individual or a group of individuals in order to produce an artifact. Throughout the development of a project, a person can play one or a number of roles. Some examples of roles are the system analyst, designer, tester. &#039;&#039;&#039;Activities&#039;&#039;&#039; are expressed through behaviors. An activity, is a job that a person performs through his role, as seen in Figure 4. The length of an activity may vary from a few hours to a number of days. Examples of activities are: Plan an operation - performed by the role of Project Manager or add a missing feature - performed by the role of a software developer. All activities produce a meaningful result, called an artifact. &#039;&#039;&#039;Artifacts&#039;&#039;&#039;, are the responsibilities of ones role or roles and express a piece of information that is produced, modified or even used by a process. They can act both as input or output of an activity. Examples of artifacts are the source code, the business case, the software architecture. The roles perform activities that can produce a sequence of artifacts, called &#039;&#039;&#039;workflows&#039;&#039;&#039;. Examples of workflows can be seen in Figure 5. &lt;br /&gt;
&lt;br /&gt;
RUP identifies nine core process workflows, called &#039;&#039;&#039;disciplines&#039;&#039;&#039;. Every discipline, addresses a set of activities and artifacts, based upon a set of skills that are common in an ICT project. These disciplines have the ability to arrange the activities and artifacts in such a way, to provide an understanding of the overall project from a waterfall perspective  &amp;lt;ref name=&amp;quot;RATIONALUNIVERSITY (2003) PRJ270&amp;quot;&amp;gt;RATIONALUNIVERSITY (2003) PRJ270: Essentials of Rational Unified Process - Student Manual, IBM Corporation. &amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
There are six core &amp;quot;engineering&amp;quot; disciplines:&lt;br /&gt;
* Business Modelling Discipline&lt;br /&gt;
* Requirements Discipline&lt;br /&gt;
* Analysis and Design Discipline&lt;br /&gt;
* Implementation Discipline&lt;br /&gt;
* Test Discipline&lt;br /&gt;
* Deployment Discipline&lt;br /&gt;
&lt;br /&gt;
And three core &amp;quot;supporting&amp;quot; disciplines:&lt;br /&gt;
* Project Management Discipline&lt;br /&gt;
* Configuration and Change Management Discipline&lt;br /&gt;
* Environment Discipline&lt;br /&gt;
&lt;br /&gt;
==== Business Modelling ====&lt;br /&gt;
&lt;br /&gt;
Miscommunication between the software engineering community and the business engineering community is one of the most common problems among most business engineering efforts. This means that the output from software development efforts is not correctly used as input to the business engineering and vice versa. The purpose of the Business Modelling discipline is to provide a common language between the two communities and create a direct coupling between software and business models. All business processes are documented using &amp;quot;use cases&amp;quot;. This assures that all stakeholders share the same understanding of the demanding organization.&lt;br /&gt;
&lt;br /&gt;
==== Requirements ====&lt;br /&gt;
The purpose of the requirements discipline is to describe in detail &#039;&#039;&#039;what&#039;&#039;&#039; the system should do. Based on that, a Vision document is created where required functionality and constraints are documented. Moreover, actors (end - users) and use cases (behaviors of the system) are identified. Use cases are described in detail and each description clearly shows how the system interacts with the actors. This way an agreement is established between the customers and the rest of the stakeholders regarding the system&#039;s capabilities, user-interface and the end user&#039;s needs.&lt;br /&gt;
&lt;br /&gt;
==== Analysis and Design ====&lt;br /&gt;
&lt;br /&gt;
The purpose of the Analysis and Design discipline it to investigate &#039;&#039;&#039;how&#039;&#039;&#039; the system requirements will be translated into a detailed implementation plan. The system needs to:&lt;br /&gt;
* Perform exactly as described in the use-case descriptions.&lt;br /&gt;
* Fulfill all requirements.&lt;br /&gt;
* Have a robust structure.&lt;br /&gt;
&lt;br /&gt;
Analysis and Design result in the creation of a &#039;&#039;&#039;design model&#039;&#039;&#039;  &amp;lt;ref name=&amp;quot;KRUCHTEN, P.&amp;quot;&amp;gt;KRUCHTEN, P. (2000) The Rational Unified Process - An Introduction, Second Edition, Addison-Wesley&amp;lt;/ref&amp;gt;. The design model is an abstraction of the system&#039;s architecture and acts as a guide of how the source code should be finally written and structured.&lt;br /&gt;
&lt;br /&gt;
==== Implementation ====&lt;br /&gt;
The purpose of the Implementation discipline is to:&lt;br /&gt;
&lt;br /&gt;
* Arrange the code into subsystems, organized in layers.&lt;br /&gt;
* Implement classes and objects in terms of components.&lt;br /&gt;
* Uni-test the developed components to ensure quality.&lt;br /&gt;
* Integrate the results into an executable system.&lt;br /&gt;
&lt;br /&gt;
The whole system can be realized as an implementation of various components. RUP enables the integration of those components, in a revolutionary way, making the system easier to maintain and increasing the possibilities for future re-use.&lt;br /&gt;
&lt;br /&gt;
==== Test ====&lt;br /&gt;
&lt;br /&gt;
In the implementation discipline, all the developed components were uni-tested individually and were integrated into the system. The purpose of the Test discipline is to assess the system as a whole and verify the product quality. It is a mechanism to verify the smooth interaction between the various components, their proper integration into the system and finally ensure that all requirements have been successfully implemented. All tests are carried out along 4 quality dimensions:&lt;br /&gt;
* Functionality.&lt;br /&gt;
* Reliability.&lt;br /&gt;
* Application Performance.&lt;br /&gt;
* System Performance.&lt;br /&gt;
&lt;br /&gt;
==== Deployment ====&lt;br /&gt;
&lt;br /&gt;
The purpose of the Deployment discipline is primarily to develop product releases and distribute the software to the end – users. More specifically the Deployment discipline focuses at:&lt;br /&gt;
&lt;br /&gt;
* Developing external software releases&lt;br /&gt;
* Distributing the software&lt;br /&gt;
* Installing the software&lt;br /&gt;
* Providing help to the end – users&lt;br /&gt;
* Creating an up-to-date user manual&lt;br /&gt;
* Conducting beta testing&lt;br /&gt;
&lt;br /&gt;
==== Project Management ====&lt;br /&gt;
&lt;br /&gt;
The purpose of the Project Management discipline, is to successfully balance competing objectives, manage and mitigate risks and finally handle any constraints on delivering the product. Project management, ideally provides:&lt;br /&gt;
&lt;br /&gt;
* A framework for managing software-intensive projects.&lt;br /&gt;
* A framework to successfully manage risks.&lt;br /&gt;
* A framework to plan, execute and monitor projects.&lt;br /&gt;
&lt;br /&gt;
While the discipline does not guarantee success, the odds of delivering successful software are greatly improved  &amp;lt;ref name=&amp;quot;Walker Royce&amp;quot;&amp;gt;Walker Royce, Software Project Management  A Unified Framework, Addison-Wesley, 1998. &amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==== Configuration and Change Management ====&lt;br /&gt;
&lt;br /&gt;
The purpose of the Configuration and Change Management Discipline is to control, maintain and configure all the various artifacts that are produced by the different actors that are working on a project. During the software development life cycle, artifacts are regularly updated (changed). In order to understand the current state of an artifact, it is very important to keep track of its location and history; what was the reason and who decided to change the artifact. The discipline helps create a framework that keeps track of all the project assets.&lt;br /&gt;
&lt;br /&gt;
==== Environment ====&lt;br /&gt;
&lt;br /&gt;
The purpose of the environment discipline, is to provide the development team with all the processes, tools and methods for supporting all developing activities. It is responsible for producing a Development Kit, able to provide guidelines and templates for customizing processes.&lt;br /&gt;
&lt;br /&gt;
== Why RUP - Best Practices ==&lt;br /&gt;
&lt;br /&gt;
RUP captures many of the “best practices” that are currently used in modern software development and more particularly in industry by successful organizations. The practices are:&lt;br /&gt;
&lt;br /&gt;
* Develop Software Iteratively&lt;br /&gt;
* Manage Requirements&lt;br /&gt;
* Use component-based architectures&lt;br /&gt;
* Visually model software&lt;br /&gt;
* Continuously verify software quality&lt;br /&gt;
* Control changes to software&lt;br /&gt;
&lt;br /&gt;
=== Develop Software iteratively ===&lt;br /&gt;
&lt;br /&gt;
Today’s high sophisticated software systems, consist of many and complex structures which make it nearly impossible to define the entire system from the very beginning, develop the entire solution and then test the product in the end. RUP uses an iterative approach that allows an increasing understanding of the problem and developing a step – by – step solution, over multiple iterations. Each iteration ends with an executable release, which enables continuous end - user involvement and feedback. As a result, the risks of the project are mitigated at an early stage and stakeholders are ensured that the project requirements are fulfilled. &amp;lt;ref name=&amp;quot;Barry W. Boehm 2&amp;quot;&amp;gt;Barry W. Boehm, A Spiral Model of Software Development and Enhancement, Computer, May 1988, IEEE, pp.61-72 &amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Manage requirements ===&lt;br /&gt;
&lt;br /&gt;
The requirements of a system include the description of the services that the system is able to provide and its operational constraints. RUP documents, organizes and tracks required functionality and constraints and easily communicates business requirements. The use – cases that are used in the process are an excellent way to ensure that requirements are actually those elements that drive the design, implementation and testing of software, making it more likely that the final system fulfills the stakeholders needs. &amp;lt;ref name=&amp;quot;Ivar Jacobson, Magnus Christerson, Patrik Jonsson, and Gunnar Övergaard&amp;quot;&amp;gt;Ivar Jacobson, Magnus Christerson, Patrik Jonsson, and Gunnar Övergaard, Object-Oriented Software Engineering—A Use Case Driven Approach, Wokingham, England, Addison-Wesley, 1992, 582p&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Use component-based architectures ===&lt;br /&gt;
&lt;br /&gt;
Component-based architecture makes the system dynamic; components are independent from the system and interact with other components through well-defined interfaces. Their in-dependency from the system, gives them a great flexibility meaning that they can easily be added, updated or totally replaced. RUP supports component-based software development by providing a systematic approach to defining an architecture using new and existing components.  &amp;lt;ref name=&amp;quot;Alan W. Brown (ed.)&amp;quot;&amp;gt;Alan W. Brown (ed.), Component-Based Software Engineering, IEEE Computer Society, Los Alamitos, CA, 1996, pp.140.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Visually model software ===&lt;br /&gt;
&lt;br /&gt;
A model is an abstraction of reality that can help better comprehend large and complex systems. Visual abstractions help the development team to easily communicate different aspects of the software and see how all the components fit together. RUP uses the [http://www.uml.org/ Unified Modelling Language (UML)] standard which is a graphical language for visualizing and constructing the artifacts of a software-intensive system.  &amp;lt;ref name=&amp;quot;Grady Booch, Ivar Jacobson, and James Rumbaugh&amp;quot;&amp;gt;Grady Booch, Ivar Jacobson, and James Rumbaugh, Unified Modeling Language 1.3, White paper, Rational Software Corp., 1998&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Continuously verify software quality ===&lt;br /&gt;
&lt;br /&gt;
In software development, quality should always be reviewed with respect to the requirements based on reliability, functionality , application and system performance. In RUP, quality verification and assessment is built into the process, inside all activities, including all stakeholders and is not treated as a separate activity, performed by a separate group.&lt;br /&gt;
&lt;br /&gt;
=== Control changes to software ===&lt;br /&gt;
&lt;br /&gt;
A software system is developed by a number of teams or individuals, using different platforms and at times being in different locations. As a result, it is essential to somehow make sure that all the changes made in the system are synchronized and constantly verified. RUP ensures that all the individuals working in the project are well informed about any changes and everything is in sync. The process describes how to control, track and monitor changes to enable successful iterative development.&lt;br /&gt;
&lt;br /&gt;
== Limitations ==&lt;br /&gt;
&lt;br /&gt;
While being a complete methodology in itself with an emphasis on accurate documentation and quickly resolving project associated risks, RUP comes with a number of limitations.&lt;br /&gt;
&lt;br /&gt;
* In order for team members to start developing software under this methodology, they need to be &#039;&#039;&#039;experts&#039;&#039;&#039; in their respective fields.&lt;br /&gt;
* The development process can easily become too complex to handle.&lt;br /&gt;
* When working with cutting - edge projects that highly utilize new technology, components will not be able to be reused. &lt;br /&gt;
* While in theory integration throughout the process of software development sounds like a good thing, when working with particularly complex projects with multiple development streams, issues and significant confusion may rise during the stages of testing.&lt;br /&gt;
&lt;br /&gt;
== Conclusion ==&lt;br /&gt;
&lt;br /&gt;
The Rational Unified Process, is an exemplary method for addressing and mitigating risks from the very early stages, by rapidly developing an initial version of the system (prototype) that describes its architecture. There are not fixed requirements from the beginning but rather allows refining requirements , while the project progresses. It expects and actually deals with change pretty well while its main focus is the quality of the product and the degree to which it satisfies its end - users, throughout the project life-cycle. However, while being a complete and well documented methodology, it should be stressed that remains a very complex one. In order to increase the likelihood of success, while adopting this methodology, all the project members need to be &#039;&#039;&#039;experts&#039;&#039;&#039; in their respective fields. The method can easily become too difficult to learn and most importantly too difficult to apply.&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Lessisv</name></author>
	</entry>
	<entry>
		<id>http://13.50.150.85/index.php?title=Rational_Unified_Process_(RUP)&amp;diff=14790</id>
		<title>Rational Unified Process (RUP)</title>
		<link rel="alternate" type="text/html" href="http://13.50.150.85/index.php?title=Rational_Unified_Process_(RUP)&amp;diff=14790"/>
		<updated>2015-09-26T13:06:32Z</updated>

		<summary type="html">&lt;p&gt;Lessisv: /* Use component-based architectures */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The &#039;&#039;&#039;Rational Unified Process (RUP)&#039;&#039;&#039; is an iterative, &#039;&#039;&#039;software development methodology&#039;&#039;&#039;, firstly introduced by the [https://en.wikipedia.org/wiki/Rational_Software Rational Software Corporation] which was [http://www-03.ibm.com/press/us/en/pressrelease/314.wss acquired by IBM] in 2003. RUP is a disciplined approach to assign tasks within a development organization and software project teams. It was developed to ensure the production of &#039;&#039;&#039;high quality software&#039;&#039;&#039; by providing the development team with a set of &#039;&#039;&#039;guidelines, templates and tool mentors&#039;&#039;&#039;, for all the critical life-cycle activities within a project. This cluster of objects, form a knowledge base that is shared between all project team members. As a result, no matter what each member is working with (e.g testing, designing, managing), they all share a common language and view on how to develop software. Consequently, team productivity is boosted, in order to deliver software that can meet and exceed the needs and expectations of end-users, strictly following a predictable budget and schedule &amp;lt;ref name=&amp;quot;Ivar Jacobson, Grady Booch, and Jim Rumbaugh&amp;quot;&amp;gt;Ivar Jacobson, Grady Booch, and Jim Rumbaugh, Unified Software Development Process, Addison-Wesley, 1999.&amp;lt;/ref&amp;gt;. RUP is the most popular and extensively documented refinement of the [https://en.wikipedia.org/wiki/Unified_Process Unified Process], an iterative and incremental software development process framework. Other worth mentioning forms are the [https://en.wikipedia.org/wiki/OpenUP OpenUP] and [https://en.wikipedia.org/wiki/Agile_Unified_Process Agile Unified Process].&lt;br /&gt;
&lt;br /&gt;
== Process Overview ==&lt;br /&gt;
&lt;br /&gt;
[[File:RUP.png|450px|right|thumb| Figure 1. The iterative model graph shows how the process is structured along two dimensions]]&lt;br /&gt;
&lt;br /&gt;
The best possible way to describe the methodology is through a 2 - dimensional graph &amp;lt;ref name=&amp;quot;IBM (2005) Rational Unified Process&amp;quot;&amp;gt;IBM (2005) Rational Unified Process – Best Practices for Software Development Teams. Rational Software White paper. Rational&amp;lt;/ref&amp;gt;.&lt;br /&gt;
* The first dimension (horizontal axis) represents the &#039;&#039;&#039;dynamic aspect&#039;&#039;&#039; of the process. It expresses &#039;&#039;&#039;time&#039;&#039;&#039; in terms of &#039;&#039;&#039;phases&#039;&#039;&#039; and &#039;&#039;&#039;iterations&#039;&#039;&#039;. &lt;br /&gt;
* The second dimension (vertical axis) represents the &#039;&#039;&#039;static aspect&#039;&#039;&#039; of the process. It expresses &#039;&#039;&#039;workflows&#039;&#039;&#039; in terms of 6 core and 3 supporting &#039;&#039;&#039;disciplines&#039;&#039;&#039; (more on that on &amp;quot;Disciplines&amp;quot; section).&lt;br /&gt;
&lt;br /&gt;
=== Time Dimension - Phases and Iterations ===&lt;br /&gt;
When developing software, the project team goes through a multi-step process, from establishing a system&#039;s requirements to designing, implementing and finally maintaining the software with new releases. This is the software life cycle  &amp;lt;ref name=&amp;quot;IBM (2003) The Rational Unified Process®&amp;quot;&amp;gt;IBM (2003) The Rational Unified Process®, Version 2003.06.12.01, Rational Software Corporation.&amp;lt;/ref&amp;gt;. RUP delicately breaks the software life cycle down to four consecutive phases &amp;lt;ref name=&amp;quot;Philippe Kruchten&amp;quot;&amp;gt;A Rational Development Process, CrossTalk, 9 (7), STSC, Hill AFB, UT, pp.11-16.&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
* Inception phase&lt;br /&gt;
* Elaboration phase&lt;br /&gt;
* Construction phase&lt;br /&gt;
* Transition phase&lt;br /&gt;
&lt;br /&gt;
Depending on the project, each of these phases can consist of one to a number of &#039;&#039;&#039;iterations&#039;&#039;&#039;. An iteration is defined as a complete development loop, resulting in a new product release. All the phases include a well-defined milestone, in order to be completed. In the end of every phase, the development team can evaluate whether all the key goals have been achieved, all stakeholders have been considered and the actual expenditures correspond with the planned ones  &amp;lt;ref name=&amp;quot;Barry W. Boehm&amp;quot;&amp;gt;Barry W. Boehm, Anchoring the Software Process, IEEE Software, 13, 4, July 1996, pp. 73-82. &amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[File:RUP_phases.png|550px|right|thumb| Figure 2. The four phases and milestones of a project]]&lt;br /&gt;
==== Inception Phase ====&lt;br /&gt;
The first phase is the inception phase. The focus of this phase, is understanding the scope of the project and studying if is both worth doing and possible to do. All the internal and external entities that the system will interact with are identified and the nature of the interaction is well defined at a high level. For this reason, the inception phase is primarily significant for new development projects. &lt;br /&gt;
The expected outcome of the inception phase includes :&lt;br /&gt;
&lt;br /&gt;
* A vision document: The document states the general vision of the project including its key requirements, features and main constraints.&lt;br /&gt;
* An initial use-case model (10%-20% complete)&lt;br /&gt;
* An initial project glossary&lt;br /&gt;
* An initial business case, including the business context, success criteria and a financial forecast.&lt;br /&gt;
* An initial risk assessment&lt;br /&gt;
* A project plan (phases and iterations)&lt;br /&gt;
* A business model (if necessary)&lt;br /&gt;
* Prototypes&lt;br /&gt;
&lt;br /&gt;
At the end of the inception phase lies the first major project milestone; the &#039;&#039;&#039;Lifecycle Objective Milestone&#039;&#039;&#039;.&lt;br /&gt;
The inception phase has five evaluation criteria:&lt;br /&gt;
&lt;br /&gt;
* Stakeholder concurrence on scope definition and cost/schedule estimates.&lt;br /&gt;
* Depth and breadth of any prototype that was developed.&lt;br /&gt;
* Actual expenditures versus planned ones.&lt;br /&gt;
* Requirements understanding.&lt;br /&gt;
* Credibility of the cost/schedule estimates, risks and priorities.&lt;br /&gt;
&lt;br /&gt;
If for any reason the project fails to pass this milestone, it can either be completely cancelled or re-designed to successfully meet the criteria.&lt;br /&gt;
 &lt;br /&gt;
==== Elaboration Phase ====&lt;br /&gt;
The second phase is the elaboration phase. The focus of this phase, is establishing a baseline to the architecture of the system, further developing the project plan and analyzing the problem domain while trying to mitigate the highest risk elements. In other words, this is the phase where the project starts to take shape. One of the most important characteristics of this phase, is the production of a component-based architectural prototype. The purpose of this prototype, is to address the critical use-cases that were identified in the previous phase, and hopefully expose the highest technical risks of the project. The expected outcome of the elaboration phase includes:&lt;br /&gt;
&lt;br /&gt;
* A use-case model (at least 80% complete) which will be able to identify all the actors and use-cases.&lt;br /&gt;
* Supplementary requirements (if any).&lt;br /&gt;
* A clear description of the software architecture.&lt;br /&gt;
* An architectural prototype.&lt;br /&gt;
* A more detailed risk assessment and business case.&lt;br /&gt;
* A development plan for the overall project.&lt;br /&gt;
* A preliminary user manual (optional).&lt;br /&gt;
&lt;br /&gt;
At the end of the elaboration phase lies the second major project milestone; the &#039;&#039;&#039;Lifecycle Architecture Milestone&#039;&#039;&#039;.&lt;br /&gt;
The elaboration phase has six evaluation criteria:&lt;br /&gt;
&lt;br /&gt;
* Is the vision stable enough?&lt;br /&gt;
* Is the system architecture stable enough?&lt;br /&gt;
* Have all the major risks been successfully identified and resolved?&lt;br /&gt;
* Is the plan for the construction phase accurate enough?&lt;br /&gt;
* Do all the stakeholders share the opinion that the vision can be achieved by executing the current plan?&lt;br /&gt;
* Is the actual vs planned resource expenditure in acceptable levels?&lt;br /&gt;
&lt;br /&gt;
If the project fails to pass the milestone, there is still time to be re-designed or even cancelled. However, when the project moves to the next phase the associated operation risks raise significantly and changes become much more difficult.&lt;br /&gt;
&lt;br /&gt;
==== Construction Phase====&lt;br /&gt;
The third phase is the construction phase. The focus of this phase, is to develop and integrate all the remaining components and application features into the product. In other words this is the phase where the vision is finally translated into a final stable product, which is based on the architecture that was developed during the previous phases  &amp;lt;ref name=&amp;quot;KRUCHTEN, P. (2000)&amp;quot;&amp;gt;KRUCHTEN, P. (2000) The Rational Unified Process - An Introduction, Second Edition, Addison-Wesley.&amp;lt;/ref&amp;gt;. Most emphasize is given to resources, control and process management in order to fully optimize costs, schedules and quality &amp;lt;ref name=&amp;quot;IBM (2003) The Rational Unified Process®&amp;quot;&amp;gt;IBM (2003) The Rational Unified Process®, Version 2003.06.12.01, Rational Software Corporation.&amp;lt;/ref&amp;gt;. The existing prototype evolves via a number of iterations into a fully functional product that meets the stakeholders&#039; needs. The construction phase is usually the longest one of the project life cycle. The expected outcome of the construction phase includes:&lt;br /&gt;
&lt;br /&gt;
* First external release of the software.&lt;br /&gt;
* User manuals.&lt;br /&gt;
* A detailed description of the current release.&lt;br /&gt;
&lt;br /&gt;
At the end of the construction phase lies the third major project milestone; the &#039;&#039;&#039;Initial Operation Capability Milestone&#039;&#039;&#039;.&lt;br /&gt;
The construction phase has three evaluation criteria:&lt;br /&gt;
&lt;br /&gt;
* Is the software release stable enough to be given to the user community?&lt;br /&gt;
* Are all the stakeholders ready for the transition to the user community?&lt;br /&gt;
* Is the actual vs planned resource expenditure in acceptable levels?&lt;br /&gt;
&lt;br /&gt;
If the project fails to pass this milestone, transition may have to be postponed by one release.&lt;br /&gt;
&lt;br /&gt;
==== Transition Phase ====&lt;br /&gt;
The fourth and final phase is the transition phase. The focus of this phase is, as the word says, to transition the software product to the user community. It includes ensuring that the product has been developed to an acceptable quality level, by beta testing the software through the end users, and validating it against the stakeholders&#039; expectations. Once the product has been given for beta testing, a number of issues can arise, requiring the development of new releases (fixing bugs) and adding features that may have been postponed. The expected outcome of the transition phase includes:&lt;br /&gt;
&lt;br /&gt;
* Beta-testing to fix any major [https://en.wikipedia.org/wiki/Software_bug software bugs] and add any missing features.&lt;br /&gt;
* Conversion of operational databases&lt;br /&gt;
* Training of end users and maintainers.&lt;br /&gt;
* Marketing and distribution of the product.&lt;br /&gt;
&lt;br /&gt;
At the end of the transition phase lies the fourth and final major project milestone; the &#039;&#039;&#039;Product Release&#039;&#039;&#039;.&lt;br /&gt;
The transition phase has two evaluation criteria:&lt;br /&gt;
&lt;br /&gt;
* Are the end - users satisfied with the product?&lt;br /&gt;
* Is the actual vs planned resource expenditure in acceptable levels?&lt;br /&gt;
&lt;br /&gt;
==== Iterations ====&lt;br /&gt;
As stated before, every phase can consist of a number of iterations, depending on the project size and scope. RUP, in comparison to the traditional [https://en.wikipedia.org/wiki/Waterfall_model waterfall] approach, is heavily based on iterations. This gives a number of advantages and benefits to the project team, with the most important one being mitigating risks much more earlier in the project. Moreover, change is more manageable and there is normally a higher level of reuse. Finally, iterations ensure an overall high quality in the final product and that the project team can learn throughout the developing process &amp;lt;ref name=&amp;quot;KRUCHTEN, P.&amp;quot;&amp;gt; KRUCHTEN, P. A Rational Development Process, CrossTalk, 9 (7), STSC, Hill AFB, UT, pp.11-16.&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Workflow Dimension - Disciplines ===&lt;br /&gt;
&lt;br /&gt;
[[File:activities.png|350px|right|thumb| Figure 4. Individuals, Roles and Activities]]&lt;br /&gt;
[[File:workflows.png|350px|right|thumb| Figure 5. Example of a workflow]]&lt;br /&gt;
&lt;br /&gt;
A process describes &#039;&#039;&#039;who&#039;&#039;&#039; is doing &#039;&#039;&#039;what&#039;&#039;&#039;, &#039;&#039;&#039;how&#039;&#039;&#039; and &#039;&#039;&#039;when&#039;&#039;&#039;. RUP addresses those terms with four modelling elements; &#039;&#039;&#039;Roles&#039;&#039;&#039;, &#039;&#039;&#039;Activities&#039;&#039;&#039;, &#039;&#039;&#039;Artifacts&#039;&#039;&#039; and &#039;&#039;&#039;Workflows&#039;&#039;&#039; respectively  &amp;lt;ref name=&amp;quot;IBM (2005) Rational Unified Process&amp;quot;&amp;gt; IBM (2005) Rational Unified Process – Best Practices for Software Development Teams. Rational Software White paper. Rational. &amp;lt;/ref&amp;gt;. A &#039;&#039;&#039;role&#039;&#039;&#039;, formally addressed as a worker, describes the behavior and responsibilities of an individual or a group of individuals in order to produce an artifact. Throughout the development of a project, a person can play one or a number of roles. Some examples of roles are the system analyst, designer, tester. &#039;&#039;&#039;Activities&#039;&#039;&#039; are expressed through behaviors. An activity, is a job that a person performs through his role, as seen in Figure 4. The length of an activity may vary from a few hours to a number of days. Examples of activities are: Plan an operation - performed by the role of Project Manager or add a missing feature - performed by the role of a software developer. All activities produce a meaningful result, called an artifact. &#039;&#039;&#039;Artifacts&#039;&#039;&#039;, are the responsibilities of ones role or roles and express a piece of information that is produced, modified or even used by a process. They can act both as input or output of an activity. Examples of artifacts are the source code, the business case, the software architecture. The roles perform activities that can produce a sequence of artifacts, called &#039;&#039;&#039;workflows&#039;&#039;&#039;. Examples of workflows can be seen in Figure 5. &lt;br /&gt;
&lt;br /&gt;
RUP identifies nine core process workflows, called &#039;&#039;&#039;disciplines&#039;&#039;&#039;. Every discipline, addresses a set of activities and artifacts, based upon a set of skills that are common in an ICT project. These disciplines have the ability to arrange the activities and artifacts in such a way, to provide an understanding of the overall project from a waterfall perspective  &amp;lt;ref name=&amp;quot;RATIONALUNIVERSITY (2003) PRJ270&amp;quot;&amp;gt;RATIONALUNIVERSITY (2003) PRJ270: Essentials of Rational Unified Process - Student Manual, IBM Corporation. &amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
There are six core &amp;quot;engineering&amp;quot; disciplines:&lt;br /&gt;
* Business Modelling Discipline&lt;br /&gt;
* Requirements Discipline&lt;br /&gt;
* Analysis and Design Discipline&lt;br /&gt;
* Implementation Discipline&lt;br /&gt;
* Test Discipline&lt;br /&gt;
* Deployment Discipline&lt;br /&gt;
&lt;br /&gt;
And three core &amp;quot;supporting&amp;quot; disciplines:&lt;br /&gt;
* Project Management Discipline&lt;br /&gt;
* Configuration and Change Management Discipline&lt;br /&gt;
* Environment Discipline&lt;br /&gt;
&lt;br /&gt;
==== Business Modelling ====&lt;br /&gt;
&lt;br /&gt;
Miscommunication between the software engineering community and the business engineering community is one of the most common problems among most business engineering efforts. This means that the output from software development efforts is not correctly used as input to the business engineering and vice versa. The purpose of the Business Modelling discipline is to provide a common language between the two communities and create a direct coupling between software and business models. All business processes are documented using &amp;quot;use cases&amp;quot;. This assures that all stakeholders share the same understanding of the demanding organization.&lt;br /&gt;
&lt;br /&gt;
==== Requirements ====&lt;br /&gt;
The purpose of the requirements discipline is to describe in detail &#039;&#039;&#039;what&#039;&#039;&#039; the system should do. Based on that, a Vision document is created where required functionality and constraints are documented. Moreover, actors (end - users) and use cases (behaviors of the system) are identified. Use cases are described in detail and each description clearly shows how the system interacts with the actors. This way an agreement is established between the customers and the rest of the stakeholders regarding the system&#039;s capabilities, user-interface and the end user&#039;s needs.&lt;br /&gt;
&lt;br /&gt;
==== Analysis and Design ====&lt;br /&gt;
&lt;br /&gt;
The purpose of the Analysis and Design discipline it to investigate &#039;&#039;&#039;how&#039;&#039;&#039; the system requirements will be translated into a detailed implementation plan. The system needs to:&lt;br /&gt;
* Perform exactly as described in the use-case descriptions.&lt;br /&gt;
* Fulfill all requirements.&lt;br /&gt;
* Have a robust structure.&lt;br /&gt;
&lt;br /&gt;
Analysis and Design result in the creation of a &#039;&#039;&#039;design model&#039;&#039;&#039;  &amp;lt;ref name=&amp;quot;KRUCHTEN, P.&amp;quot;&amp;gt;KRUCHTEN, P. (2000) The Rational Unified Process - An Introduction, Second Edition, Addison-Wesley&amp;lt;/ref&amp;gt;. The design model is an abstraction of the system&#039;s architecture and acts as a guide of how the source code should be finally written and structured.&lt;br /&gt;
&lt;br /&gt;
==== Implementation ====&lt;br /&gt;
The purpose of the Implementation discipline is to:&lt;br /&gt;
&lt;br /&gt;
* Arrange the code into subsystems, organized in layers.&lt;br /&gt;
* Implement classes and objects in terms of components.&lt;br /&gt;
* Uni-test the developed components to ensure quality.&lt;br /&gt;
* Integrate the results into an executable system.&lt;br /&gt;
&lt;br /&gt;
The whole system can be realized as an implementation of various components. RUP enables the integration of those components, in a revolutionary way, making the system easier to maintain and increasing the possibilities for future re-use.&lt;br /&gt;
&lt;br /&gt;
==== Test ====&lt;br /&gt;
&lt;br /&gt;
In the implementation discipline, all the developed components were uni-tested individually and were integrated into the system. The purpose of the Test discipline is to assess the system as a whole and verify the product quality. It is a mechanism to verify the smooth interaction between the various components, their proper integration into the system and finally ensure that all requirements have been successfully implemented. All tests are carried out along 4 quality dimensions:&lt;br /&gt;
* Functionality.&lt;br /&gt;
* Reliability.&lt;br /&gt;
* Application Performance.&lt;br /&gt;
* System Performance.&lt;br /&gt;
&lt;br /&gt;
==== Deployment ====&lt;br /&gt;
&lt;br /&gt;
The purpose of the Deployment discipline is primarily to develop product releases and distribute the software to the end – users. More specifically the Deployment discipline focuses at:&lt;br /&gt;
&lt;br /&gt;
* Developing external software releases&lt;br /&gt;
* Distributing the software&lt;br /&gt;
* Installing the software&lt;br /&gt;
* Providing help to the end – users&lt;br /&gt;
* Creating an up-to-date user manual&lt;br /&gt;
* Conducting beta testing&lt;br /&gt;
&lt;br /&gt;
==== Project Management ====&lt;br /&gt;
&lt;br /&gt;
The purpose of the Project Management discipline, is to successfully balance competing objectives, manage and mitigate risks and finally handle any constraints on delivering the product. Project management, ideally provides:&lt;br /&gt;
&lt;br /&gt;
* A framework for managing software-intensive projects.&lt;br /&gt;
* A framework to successfully manage risks.&lt;br /&gt;
* A framework to plan, execute and monitor projects.&lt;br /&gt;
&lt;br /&gt;
While the discipline does not guarantee success, the odds of delivering successful software are greatly improved  &amp;lt;ref name=&amp;quot;Walker Royce&amp;quot;&amp;gt;Walker Royce, Software Project Management  A Unified Framework, Addison-Wesley, 1998. &amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==== Configuration and Change Management ====&lt;br /&gt;
&lt;br /&gt;
The purpose of the Configuration and Change Management Discipline is to control, maintain and configure all the various artifacts that are produced by the different actors that are working on a project. During the software development life cycle, artifacts are regularly updated (changed). In order to understand the current state of an artifact, it is very important to keep track of its location and history; what was the reason and who decided to change the artifact. The discipline helps create a framework that keeps track of all the project assets.&lt;br /&gt;
&lt;br /&gt;
==== Environment ====&lt;br /&gt;
&lt;br /&gt;
The purpose of the environment discipline, is to provide the development team with all the processes, tools and methods for supporting all developing activities. It is responsible for producing a Development Kit, able to provide guidelines and templates for customizing processes.&lt;br /&gt;
&lt;br /&gt;
== Why RUP - Best Practices ==&lt;br /&gt;
&lt;br /&gt;
RUP captures many of the “best practices” that are currently used in modern software development and more particularly in industry by successful organizations. The practices are:&lt;br /&gt;
&lt;br /&gt;
* Develop Software Iteratively&lt;br /&gt;
* Manage Requirements&lt;br /&gt;
* Use component-based architectures&lt;br /&gt;
* Visually model software&lt;br /&gt;
* Continuously verify software quality&lt;br /&gt;
* Control changes to software&lt;br /&gt;
&lt;br /&gt;
=== Develop Software iteratively ===&lt;br /&gt;
&lt;br /&gt;
Today’s high sophisticated software systems, consist of many and complex structures which make it nearly impossible to define the entire system from the very beginning, develop the entire solution and then test the product in the end. RUP uses an iterative approach that allows an increasing understanding of the problem and developing a step – by – step solution, over multiple iterations. Each iteration ends with an executable release, which enables continuous end - user involvement and feedback. As a result, the risks of the project are mitigated at an early stage and stakeholders are ensured that the project requirements are fulfilled. &amp;lt;ref name=&amp;quot;Barry W. Boehm 2&amp;quot;&amp;gt;Barry W. Boehm, A Spiral Model of Software Development and Enhancement, Computer, May 1988, IEEE, pp.61-72 &amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Manage requirements ===&lt;br /&gt;
&lt;br /&gt;
The requirements of a system include the description of the services that the system is able to provide and its operational constraints. RUP documents, organizes and tracks required functionality and constraints and easily communicates business requirements. The use – cases that are used in the process are an excellent way to ensure that requirements are actually those elements that drive the design, implementation and testing of software, making it more likely that the final system fulfills the stakeholders needs. &amp;lt;ref name=&amp;quot;Ivar Jacobson, Magnus Christerson, Patrik Jonsson, and Gunnar Övergaard&amp;quot;&amp;gt;Ivar Jacobson, Magnus Christerson, Patrik Jonsson, and Gunnar Övergaard, Object-Oriented Software Engineering—A Use Case Driven Approach, Wokingham, England, Addison-Wesley, 1992, 582p&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Use component-based architectures ===&lt;br /&gt;
&lt;br /&gt;
Component-based architecture makes the system dynamic; components are independent from the system and interact with other components through well-defined interfaces. Their in-dependency from the system, gives them a great flexibility meaning that they can easily be added, updated or totally replaced. RUP supports component-based software development by providing a systematic approach to defining an architecture using new and existing components.  &amp;lt;ref name=&amp;quot;Alan W. Brown (ed.)&amp;quot;&amp;gt;Alan W. Brown (ed.), Component-Based Software Engineering, IEEE Computer Society, Los Alamitos, CA, 1996, pp.140.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Visually model software ===&lt;br /&gt;
&lt;br /&gt;
A model is an abstraction of reality that can help better comprehend large and complex systems. Visual abstractions help the development team to easily communicate different aspects of the software and see how all the components fit together. RUP uses the [http://www.uml.org/ Unified Modelling Language (UML)] standard which is a graphical language for visualizing and constructing the artifacts of a software-intensive system.&lt;br /&gt;
&lt;br /&gt;
=== Continuously verify software quality ===&lt;br /&gt;
&lt;br /&gt;
In software development, quality should always be reviewed with respect to the requirements based on reliability, functionality , application and system performance. In RUP, quality verification and assessment is built into the process, inside all activities, including all stakeholders and is not treated as a separate activity, performed by a separate group.&lt;br /&gt;
&lt;br /&gt;
=== Control changes to software ===&lt;br /&gt;
&lt;br /&gt;
A software system is developed by a number of teams or individuals, using different platforms and at times being in different locations. As a result, it is essential to somehow make sure that all the changes made in the system are synchronized and constantly verified. RUP ensures that all the individuals working in the project are well informed about any changes and everything is in sync. The process describes how to control, track and monitor changes to enable successful iterative development.&lt;br /&gt;
&lt;br /&gt;
== Limitations ==&lt;br /&gt;
&lt;br /&gt;
While being a complete methodology in itself with an emphasis on accurate documentation and quickly resolving project associated risks, RUP comes with a number of limitations.&lt;br /&gt;
&lt;br /&gt;
* In order for team members to start developing software under this methodology, they need to be &#039;&#039;&#039;experts&#039;&#039;&#039; in their respective fields.&lt;br /&gt;
* The development process can easily become too complex to handle.&lt;br /&gt;
* When working with cutting - edge projects that highly utilize new technology, components will not be able to be reused. &lt;br /&gt;
* While in theory integration throughout the process of software development sounds like a good thing, when working with particularly complex projects with multiple development streams, issues and significant confusion may rise during the stages of testing.&lt;br /&gt;
&lt;br /&gt;
== Conclusion ==&lt;br /&gt;
&lt;br /&gt;
The Rational Unified Process, is an exemplary method for addressing and mitigating risks from the very early stages, by rapidly developing an initial version of the system (prototype) that describes its architecture. There are not fixed requirements from the beginning but rather allows refining requirements , while the project progresses. It expects and actually deals with change pretty well while its main focus is the quality of the product and the degree to which it satisfies its end - users, throughout the project life-cycle. However, while being a complete and well documented methodology, it should be stressed that remains a very complex one. In order to increase the likelihood of success, while adopting this methodology, all the project members need to be &#039;&#039;&#039;experts&#039;&#039;&#039; in their respective fields. The method can easily become too difficult to learn and most importantly too difficult to apply.&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Lessisv</name></author>
	</entry>
	<entry>
		<id>http://13.50.150.85/index.php?title=Rational_Unified_Process_(RUP)&amp;diff=14787</id>
		<title>Rational Unified Process (RUP)</title>
		<link rel="alternate" type="text/html" href="http://13.50.150.85/index.php?title=Rational_Unified_Process_(RUP)&amp;diff=14787"/>
		<updated>2015-09-26T13:05:01Z</updated>

		<summary type="html">&lt;p&gt;Lessisv: /* Develop Software iteratively */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The &#039;&#039;&#039;Rational Unified Process (RUP)&#039;&#039;&#039; is an iterative, &#039;&#039;&#039;software development methodology&#039;&#039;&#039;, firstly introduced by the [https://en.wikipedia.org/wiki/Rational_Software Rational Software Corporation] which was [http://www-03.ibm.com/press/us/en/pressrelease/314.wss acquired by IBM] in 2003. RUP is a disciplined approach to assign tasks within a development organization and software project teams. It was developed to ensure the production of &#039;&#039;&#039;high quality software&#039;&#039;&#039; by providing the development team with a set of &#039;&#039;&#039;guidelines, templates and tool mentors&#039;&#039;&#039;, for all the critical life-cycle activities within a project. This cluster of objects, form a knowledge base that is shared between all project team members. As a result, no matter what each member is working with (e.g testing, designing, managing), they all share a common language and view on how to develop software. Consequently, team productivity is boosted, in order to deliver software that can meet and exceed the needs and expectations of end-users, strictly following a predictable budget and schedule &amp;lt;ref name=&amp;quot;Ivar Jacobson, Grady Booch, and Jim Rumbaugh&amp;quot;&amp;gt;Ivar Jacobson, Grady Booch, and Jim Rumbaugh, Unified Software Development Process, Addison-Wesley, 1999.&amp;lt;/ref&amp;gt;. RUP is the most popular and extensively documented refinement of the [https://en.wikipedia.org/wiki/Unified_Process Unified Process], an iterative and incremental software development process framework. Other worth mentioning forms are the [https://en.wikipedia.org/wiki/OpenUP OpenUP] and [https://en.wikipedia.org/wiki/Agile_Unified_Process Agile Unified Process].&lt;br /&gt;
&lt;br /&gt;
== Process Overview ==&lt;br /&gt;
&lt;br /&gt;
[[File:RUP.png|450px|right|thumb| Figure 1. The iterative model graph shows how the process is structured along two dimensions]]&lt;br /&gt;
&lt;br /&gt;
The best possible way to describe the methodology is through a 2 - dimensional graph &amp;lt;ref name=&amp;quot;IBM (2005) Rational Unified Process&amp;quot;&amp;gt;IBM (2005) Rational Unified Process – Best Practices for Software Development Teams. Rational Software White paper. Rational&amp;lt;/ref&amp;gt;.&lt;br /&gt;
* The first dimension (horizontal axis) represents the &#039;&#039;&#039;dynamic aspect&#039;&#039;&#039; of the process. It expresses &#039;&#039;&#039;time&#039;&#039;&#039; in terms of &#039;&#039;&#039;phases&#039;&#039;&#039; and &#039;&#039;&#039;iterations&#039;&#039;&#039;. &lt;br /&gt;
* The second dimension (vertical axis) represents the &#039;&#039;&#039;static aspect&#039;&#039;&#039; of the process. It expresses &#039;&#039;&#039;workflows&#039;&#039;&#039; in terms of 6 core and 3 supporting &#039;&#039;&#039;disciplines&#039;&#039;&#039; (more on that on &amp;quot;Disciplines&amp;quot; section).&lt;br /&gt;
&lt;br /&gt;
=== Time Dimension - Phases and Iterations ===&lt;br /&gt;
When developing software, the project team goes through a multi-step process, from establishing a system&#039;s requirements to designing, implementing and finally maintaining the software with new releases. This is the software life cycle  &amp;lt;ref name=&amp;quot;IBM (2003) The Rational Unified Process®&amp;quot;&amp;gt;IBM (2003) The Rational Unified Process®, Version 2003.06.12.01, Rational Software Corporation.&amp;lt;/ref&amp;gt;. RUP delicately breaks the software life cycle down to four consecutive phases &amp;lt;ref name=&amp;quot;Philippe Kruchten&amp;quot;&amp;gt;A Rational Development Process, CrossTalk, 9 (7), STSC, Hill AFB, UT, pp.11-16.&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
* Inception phase&lt;br /&gt;
* Elaboration phase&lt;br /&gt;
* Construction phase&lt;br /&gt;
* Transition phase&lt;br /&gt;
&lt;br /&gt;
Depending on the project, each of these phases can consist of one to a number of &#039;&#039;&#039;iterations&#039;&#039;&#039;. An iteration is defined as a complete development loop, resulting in a new product release. All the phases include a well-defined milestone, in order to be completed. In the end of every phase, the development team can evaluate whether all the key goals have been achieved, all stakeholders have been considered and the actual expenditures correspond with the planned ones  &amp;lt;ref name=&amp;quot;Barry W. Boehm&amp;quot;&amp;gt;Barry W. Boehm, Anchoring the Software Process, IEEE Software, 13, 4, July 1996, pp. 73-82. &amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[File:RUP_phases.png|550px|right|thumb| Figure 2. The four phases and milestones of a project]]&lt;br /&gt;
==== Inception Phase ====&lt;br /&gt;
The first phase is the inception phase. The focus of this phase, is understanding the scope of the project and studying if is both worth doing and possible to do. All the internal and external entities that the system will interact with are identified and the nature of the interaction is well defined at a high level. For this reason, the inception phase is primarily significant for new development projects. &lt;br /&gt;
The expected outcome of the inception phase includes :&lt;br /&gt;
&lt;br /&gt;
* A vision document: The document states the general vision of the project including its key requirements, features and main constraints.&lt;br /&gt;
* An initial use-case model (10%-20% complete)&lt;br /&gt;
* An initial project glossary&lt;br /&gt;
* An initial business case, including the business context, success criteria and a financial forecast.&lt;br /&gt;
* An initial risk assessment&lt;br /&gt;
* A project plan (phases and iterations)&lt;br /&gt;
* A business model (if necessary)&lt;br /&gt;
* Prototypes&lt;br /&gt;
&lt;br /&gt;
At the end of the inception phase lies the first major project milestone; the &#039;&#039;&#039;Lifecycle Objective Milestone&#039;&#039;&#039;.&lt;br /&gt;
The inception phase has five evaluation criteria:&lt;br /&gt;
&lt;br /&gt;
* Stakeholder concurrence on scope definition and cost/schedule estimates.&lt;br /&gt;
* Depth and breadth of any prototype that was developed.&lt;br /&gt;
* Actual expenditures versus planned ones.&lt;br /&gt;
* Requirements understanding.&lt;br /&gt;
* Credibility of the cost/schedule estimates, risks and priorities.&lt;br /&gt;
&lt;br /&gt;
If for any reason the project fails to pass this milestone, it can either be completely cancelled or re-designed to successfully meet the criteria.&lt;br /&gt;
 &lt;br /&gt;
==== Elaboration Phase ====&lt;br /&gt;
The second phase is the elaboration phase. The focus of this phase, is establishing a baseline to the architecture of the system, further developing the project plan and analyzing the problem domain while trying to mitigate the highest risk elements. In other words, this is the phase where the project starts to take shape. One of the most important characteristics of this phase, is the production of a component-based architectural prototype. The purpose of this prototype, is to address the critical use-cases that were identified in the previous phase, and hopefully expose the highest technical risks of the project. The expected outcome of the elaboration phase includes:&lt;br /&gt;
&lt;br /&gt;
* A use-case model (at least 80% complete) which will be able to identify all the actors and use-cases.&lt;br /&gt;
* Supplementary requirements (if any).&lt;br /&gt;
* A clear description of the software architecture.&lt;br /&gt;
* An architectural prototype.&lt;br /&gt;
* A more detailed risk assessment and business case.&lt;br /&gt;
* A development plan for the overall project.&lt;br /&gt;
* A preliminary user manual (optional).&lt;br /&gt;
&lt;br /&gt;
At the end of the elaboration phase lies the second major project milestone; the &#039;&#039;&#039;Lifecycle Architecture Milestone&#039;&#039;&#039;.&lt;br /&gt;
The elaboration phase has six evaluation criteria:&lt;br /&gt;
&lt;br /&gt;
* Is the vision stable enough?&lt;br /&gt;
* Is the system architecture stable enough?&lt;br /&gt;
* Have all the major risks been successfully identified and resolved?&lt;br /&gt;
* Is the plan for the construction phase accurate enough?&lt;br /&gt;
* Do all the stakeholders share the opinion that the vision can be achieved by executing the current plan?&lt;br /&gt;
* Is the actual vs planned resource expenditure in acceptable levels?&lt;br /&gt;
&lt;br /&gt;
If the project fails to pass the milestone, there is still time to be re-designed or even cancelled. However, when the project moves to the next phase the associated operation risks raise significantly and changes become much more difficult.&lt;br /&gt;
&lt;br /&gt;
==== Construction Phase====&lt;br /&gt;
The third phase is the construction phase. The focus of this phase, is to develop and integrate all the remaining components and application features into the product. In other words this is the phase where the vision is finally translated into a final stable product, which is based on the architecture that was developed during the previous phases  &amp;lt;ref name=&amp;quot;KRUCHTEN, P. (2000)&amp;quot;&amp;gt;KRUCHTEN, P. (2000) The Rational Unified Process - An Introduction, Second Edition, Addison-Wesley.&amp;lt;/ref&amp;gt;. Most emphasize is given to resources, control and process management in order to fully optimize costs, schedules and quality &amp;lt;ref name=&amp;quot;IBM (2003) The Rational Unified Process®&amp;quot;&amp;gt;IBM (2003) The Rational Unified Process®, Version 2003.06.12.01, Rational Software Corporation.&amp;lt;/ref&amp;gt;. The existing prototype evolves via a number of iterations into a fully functional product that meets the stakeholders&#039; needs. The construction phase is usually the longest one of the project life cycle. The expected outcome of the construction phase includes:&lt;br /&gt;
&lt;br /&gt;
* First external release of the software.&lt;br /&gt;
* User manuals.&lt;br /&gt;
* A detailed description of the current release.&lt;br /&gt;
&lt;br /&gt;
At the end of the construction phase lies the third major project milestone; the &#039;&#039;&#039;Initial Operation Capability Milestone&#039;&#039;&#039;.&lt;br /&gt;
The construction phase has three evaluation criteria:&lt;br /&gt;
&lt;br /&gt;
* Is the software release stable enough to be given to the user community?&lt;br /&gt;
* Are all the stakeholders ready for the transition to the user community?&lt;br /&gt;
* Is the actual vs planned resource expenditure in acceptable levels?&lt;br /&gt;
&lt;br /&gt;
If the project fails to pass this milestone, transition may have to be postponed by one release.&lt;br /&gt;
&lt;br /&gt;
==== Transition Phase ====&lt;br /&gt;
The fourth and final phase is the transition phase. The focus of this phase is, as the word says, to transition the software product to the user community. It includes ensuring that the product has been developed to an acceptable quality level, by beta testing the software through the end users, and validating it against the stakeholders&#039; expectations. Once the product has been given for beta testing, a number of issues can arise, requiring the development of new releases (fixing bugs) and adding features that may have been postponed. The expected outcome of the transition phase includes:&lt;br /&gt;
&lt;br /&gt;
* Beta-testing to fix any major [https://en.wikipedia.org/wiki/Software_bug software bugs] and add any missing features.&lt;br /&gt;
* Conversion of operational databases&lt;br /&gt;
* Training of end users and maintainers.&lt;br /&gt;
* Marketing and distribution of the product.&lt;br /&gt;
&lt;br /&gt;
At the end of the transition phase lies the fourth and final major project milestone; the &#039;&#039;&#039;Product Release&#039;&#039;&#039;.&lt;br /&gt;
The transition phase has two evaluation criteria:&lt;br /&gt;
&lt;br /&gt;
* Are the end - users satisfied with the product?&lt;br /&gt;
* Is the actual vs planned resource expenditure in acceptable levels?&lt;br /&gt;
&lt;br /&gt;
==== Iterations ====&lt;br /&gt;
As stated before, every phase can consist of a number of iterations, depending on the project size and scope. RUP, in comparison to the traditional [https://en.wikipedia.org/wiki/Waterfall_model waterfall] approach, is heavily based on iterations. This gives a number of advantages and benefits to the project team, with the most important one being mitigating risks much more earlier in the project. Moreover, change is more manageable and there is normally a higher level of reuse. Finally, iterations ensure an overall high quality in the final product and that the project team can learn throughout the developing process &amp;lt;ref name=&amp;quot;KRUCHTEN, P.&amp;quot;&amp;gt; KRUCHTEN, P. A Rational Development Process, CrossTalk, 9 (7), STSC, Hill AFB, UT, pp.11-16.&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Workflow Dimension - Disciplines ===&lt;br /&gt;
&lt;br /&gt;
[[File:activities.png|350px|right|thumb| Figure 4. Individuals, Roles and Activities]]&lt;br /&gt;
[[File:workflows.png|350px|right|thumb| Figure 5. Example of a workflow]]&lt;br /&gt;
&lt;br /&gt;
A process describes &#039;&#039;&#039;who&#039;&#039;&#039; is doing &#039;&#039;&#039;what&#039;&#039;&#039;, &#039;&#039;&#039;how&#039;&#039;&#039; and &#039;&#039;&#039;when&#039;&#039;&#039;. RUP addresses those terms with four modelling elements; &#039;&#039;&#039;Roles&#039;&#039;&#039;, &#039;&#039;&#039;Activities&#039;&#039;&#039;, &#039;&#039;&#039;Artifacts&#039;&#039;&#039; and &#039;&#039;&#039;Workflows&#039;&#039;&#039; respectively  &amp;lt;ref name=&amp;quot;IBM (2005) Rational Unified Process&amp;quot;&amp;gt; IBM (2005) Rational Unified Process – Best Practices for Software Development Teams. Rational Software White paper. Rational. &amp;lt;/ref&amp;gt;. A &#039;&#039;&#039;role&#039;&#039;&#039;, formally addressed as a worker, describes the behavior and responsibilities of an individual or a group of individuals in order to produce an artifact. Throughout the development of a project, a person can play one or a number of roles. Some examples of roles are the system analyst, designer, tester. &#039;&#039;&#039;Activities&#039;&#039;&#039; are expressed through behaviors. An activity, is a job that a person performs through his role, as seen in Figure 4. The length of an activity may vary from a few hours to a number of days. Examples of activities are: Plan an operation - performed by the role of Project Manager or add a missing feature - performed by the role of a software developer. All activities produce a meaningful result, called an artifact. &#039;&#039;&#039;Artifacts&#039;&#039;&#039;, are the responsibilities of ones role or roles and express a piece of information that is produced, modified or even used by a process. They can act both as input or output of an activity. Examples of artifacts are the source code, the business case, the software architecture. The roles perform activities that can produce a sequence of artifacts, called &#039;&#039;&#039;workflows&#039;&#039;&#039;. Examples of workflows can be seen in Figure 5. &lt;br /&gt;
&lt;br /&gt;
RUP identifies nine core process workflows, called &#039;&#039;&#039;disciplines&#039;&#039;&#039;. Every discipline, addresses a set of activities and artifacts, based upon a set of skills that are common in an ICT project. These disciplines have the ability to arrange the activities and artifacts in such a way, to provide an understanding of the overall project from a waterfall perspective  &amp;lt;ref name=&amp;quot;RATIONALUNIVERSITY (2003) PRJ270&amp;quot;&amp;gt;RATIONALUNIVERSITY (2003) PRJ270: Essentials of Rational Unified Process - Student Manual, IBM Corporation. &amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
There are six core &amp;quot;engineering&amp;quot; disciplines:&lt;br /&gt;
* Business Modelling Discipline&lt;br /&gt;
* Requirements Discipline&lt;br /&gt;
* Analysis and Design Discipline&lt;br /&gt;
* Implementation Discipline&lt;br /&gt;
* Test Discipline&lt;br /&gt;
* Deployment Discipline&lt;br /&gt;
&lt;br /&gt;
And three core &amp;quot;supporting&amp;quot; disciplines:&lt;br /&gt;
* Project Management Discipline&lt;br /&gt;
* Configuration and Change Management Discipline&lt;br /&gt;
* Environment Discipline&lt;br /&gt;
&lt;br /&gt;
==== Business Modelling ====&lt;br /&gt;
&lt;br /&gt;
Miscommunication between the software engineering community and the business engineering community is one of the most common problems among most business engineering efforts. This means that the output from software development efforts is not correctly used as input to the business engineering and vice versa. The purpose of the Business Modelling discipline is to provide a common language between the two communities and create a direct coupling between software and business models. All business processes are documented using &amp;quot;use cases&amp;quot;. This assures that all stakeholders share the same understanding of the demanding organization.&lt;br /&gt;
&lt;br /&gt;
==== Requirements ====&lt;br /&gt;
The purpose of the requirements discipline is to describe in detail &#039;&#039;&#039;what&#039;&#039;&#039; the system should do. Based on that, a Vision document is created where required functionality and constraints are documented. Moreover, actors (end - users) and use cases (behaviors of the system) are identified. Use cases are described in detail and each description clearly shows how the system interacts with the actors. This way an agreement is established between the customers and the rest of the stakeholders regarding the system&#039;s capabilities, user-interface and the end user&#039;s needs.&lt;br /&gt;
&lt;br /&gt;
==== Analysis and Design ====&lt;br /&gt;
&lt;br /&gt;
The purpose of the Analysis and Design discipline it to investigate &#039;&#039;&#039;how&#039;&#039;&#039; the system requirements will be translated into a detailed implementation plan. The system needs to:&lt;br /&gt;
* Perform exactly as described in the use-case descriptions.&lt;br /&gt;
* Fulfill all requirements.&lt;br /&gt;
* Have a robust structure.&lt;br /&gt;
&lt;br /&gt;
Analysis and Design result in the creation of a &#039;&#039;&#039;design model&#039;&#039;&#039;  &amp;lt;ref name=&amp;quot;KRUCHTEN, P.&amp;quot;&amp;gt;KRUCHTEN, P. (2000) The Rational Unified Process - An Introduction, Second Edition, Addison-Wesley&amp;lt;/ref&amp;gt;. The design model is an abstraction of the system&#039;s architecture and acts as a guide of how the source code should be finally written and structured.&lt;br /&gt;
&lt;br /&gt;
==== Implementation ====&lt;br /&gt;
The purpose of the Implementation discipline is to:&lt;br /&gt;
&lt;br /&gt;
* Arrange the code into subsystems, organized in layers.&lt;br /&gt;
* Implement classes and objects in terms of components.&lt;br /&gt;
* Uni-test the developed components to ensure quality.&lt;br /&gt;
* Integrate the results into an executable system.&lt;br /&gt;
&lt;br /&gt;
The whole system can be realized as an implementation of various components. RUP enables the integration of those components, in a revolutionary way, making the system easier to maintain and increasing the possibilities for future re-use.&lt;br /&gt;
&lt;br /&gt;
==== Test ====&lt;br /&gt;
&lt;br /&gt;
In the implementation discipline, all the developed components were uni-tested individually and were integrated into the system. The purpose of the Test discipline is to assess the system as a whole and verify the product quality. It is a mechanism to verify the smooth interaction between the various components, their proper integration into the system and finally ensure that all requirements have been successfully implemented. All tests are carried out along 4 quality dimensions:&lt;br /&gt;
* Functionality.&lt;br /&gt;
* Reliability.&lt;br /&gt;
* Application Performance.&lt;br /&gt;
* System Performance.&lt;br /&gt;
&lt;br /&gt;
==== Deployment ====&lt;br /&gt;
&lt;br /&gt;
The purpose of the Deployment discipline is primarily to develop product releases and distribute the software to the end – users. More specifically the Deployment discipline focuses at:&lt;br /&gt;
&lt;br /&gt;
* Developing external software releases&lt;br /&gt;
* Distributing the software&lt;br /&gt;
* Installing the software&lt;br /&gt;
* Providing help to the end – users&lt;br /&gt;
* Creating an up-to-date user manual&lt;br /&gt;
* Conducting beta testing&lt;br /&gt;
&lt;br /&gt;
==== Project Management ====&lt;br /&gt;
&lt;br /&gt;
The purpose of the Project Management discipline, is to successfully balance competing objectives, manage and mitigate risks and finally handle any constraints on delivering the product. Project management, ideally provides:&lt;br /&gt;
&lt;br /&gt;
* A framework for managing software-intensive projects.&lt;br /&gt;
* A framework to successfully manage risks.&lt;br /&gt;
* A framework to plan, execute and monitor projects.&lt;br /&gt;
&lt;br /&gt;
While the discipline does not guarantee success, the odds of delivering successful software are greatly improved  &amp;lt;ref name=&amp;quot;Walker Royce&amp;quot;&amp;gt;Walker Royce, Software Project Management  A Unified Framework, Addison-Wesley, 1998. &amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==== Configuration and Change Management ====&lt;br /&gt;
&lt;br /&gt;
The purpose of the Configuration and Change Management Discipline is to control, maintain and configure all the various artifacts that are produced by the different actors that are working on a project. During the software development life cycle, artifacts are regularly updated (changed). In order to understand the current state of an artifact, it is very important to keep track of its location and history; what was the reason and who decided to change the artifact. The discipline helps create a framework that keeps track of all the project assets.&lt;br /&gt;
&lt;br /&gt;
==== Environment ====&lt;br /&gt;
&lt;br /&gt;
The purpose of the environment discipline, is to provide the development team with all the processes, tools and methods for supporting all developing activities. It is responsible for producing a Development Kit, able to provide guidelines and templates for customizing processes.&lt;br /&gt;
&lt;br /&gt;
== Why RUP - Best Practices ==&lt;br /&gt;
&lt;br /&gt;
RUP captures many of the “best practices” that are currently used in modern software development and more particularly in industry by successful organizations. The practices are:&lt;br /&gt;
&lt;br /&gt;
* Develop Software Iteratively&lt;br /&gt;
* Manage Requirements&lt;br /&gt;
* Use component-based architectures&lt;br /&gt;
* Visually model software&lt;br /&gt;
* Continuously verify software quality&lt;br /&gt;
* Control changes to software&lt;br /&gt;
&lt;br /&gt;
=== Develop Software iteratively ===&lt;br /&gt;
&lt;br /&gt;
Today’s high sophisticated software systems, consist of many and complex structures which make it nearly impossible to define the entire system from the very beginning, develop the entire solution and then test the product in the end. RUP uses an iterative approach that allows an increasing understanding of the problem and developing a step – by – step solution, over multiple iterations. Each iteration ends with an executable release, which enables continuous end - user involvement and feedback. As a result, the risks of the project are mitigated at an early stage and stakeholders are ensured that the project requirements are fulfilled. &amp;lt;ref name=&amp;quot;Barry W. Boehm 2&amp;quot;&amp;gt;Barry W. Boehm, A Spiral Model of Software Development and Enhancement, Computer, May 1988, IEEE, pp.61-72 &amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Manage requirements ===&lt;br /&gt;
&lt;br /&gt;
The requirements of a system include the description of the services that the system is able to provide and its operational constraints. RUP documents, organizes and tracks required functionality and constraints and easily communicates business requirements. The use – cases that are used in the process are an excellent way to ensure that requirements are actually those elements that drive the design, implementation and testing of software, making it more likely that the final system fulfills the stakeholders needs. &amp;lt;ref name=&amp;quot;Ivar Jacobson, Magnus Christerson, Patrik Jonsson, and Gunnar Övergaard&amp;quot;&amp;gt;Ivar Jacobson, Magnus Christerson, Patrik Jonsson, and Gunnar Övergaard, Object-Oriented Software Engineering—A Use Case Driven Approach, Wokingham, England, Addison-Wesley, 1992, 582p&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Use component-based architectures ===&lt;br /&gt;
&lt;br /&gt;
Component-based architecture makes the system dynamic; components are independent from the system and interact with other components through well-defined interfaces. Their in-dependency from the system, gives them a great flexibility meaning that they can easily be added, updated or totally replaced. RUP supports component-based software development by providing a systematic approach to defining an architecture using new and existing components.&lt;br /&gt;
&lt;br /&gt;
=== Visually model software ===&lt;br /&gt;
&lt;br /&gt;
A model is an abstraction of reality that can help better comprehend large and complex systems. Visual abstractions help the development team to easily communicate different aspects of the software and see how all the components fit together. RUP uses the [http://www.uml.org/ Unified Modelling Language (UML)] standard which is a graphical language for visualizing and constructing the artifacts of a software-intensive system.&lt;br /&gt;
&lt;br /&gt;
=== Continuously verify software quality ===&lt;br /&gt;
&lt;br /&gt;
In software development, quality should always be reviewed with respect to the requirements based on reliability, functionality , application and system performance. In RUP, quality verification and assessment is built into the process, inside all activities, including all stakeholders and is not treated as a separate activity, performed by a separate group.&lt;br /&gt;
&lt;br /&gt;
=== Control changes to software ===&lt;br /&gt;
&lt;br /&gt;
A software system is developed by a number of teams or individuals, using different platforms and at times being in different locations. As a result, it is essential to somehow make sure that all the changes made in the system are synchronized and constantly verified. RUP ensures that all the individuals working in the project are well informed about any changes and everything is in sync. The process describes how to control, track and monitor changes to enable successful iterative development.&lt;br /&gt;
&lt;br /&gt;
== Limitations ==&lt;br /&gt;
&lt;br /&gt;
While being a complete methodology in itself with an emphasis on accurate documentation and quickly resolving project associated risks, RUP comes with a number of limitations.&lt;br /&gt;
&lt;br /&gt;
* In order for team members to start developing software under this methodology, they need to be &#039;&#039;&#039;experts&#039;&#039;&#039; in their respective fields.&lt;br /&gt;
* The development process can easily become too complex to handle.&lt;br /&gt;
* When working with cutting - edge projects that highly utilize new technology, components will not be able to be reused. &lt;br /&gt;
* While in theory integration throughout the process of software development sounds like a good thing, when working with particularly complex projects with multiple development streams, issues and significant confusion may rise during the stages of testing.&lt;br /&gt;
&lt;br /&gt;
== Conclusion ==&lt;br /&gt;
&lt;br /&gt;
The Rational Unified Process, is an exemplary method for addressing and mitigating risks from the very early stages, by rapidly developing an initial version of the system (prototype) that describes its architecture. There are not fixed requirements from the beginning but rather allows refining requirements , while the project progresses. It expects and actually deals with change pretty well while its main focus is the quality of the product and the degree to which it satisfies its end - users, throughout the project life-cycle. However, while being a complete and well documented methodology, it should be stressed that remains a very complex one. In order to increase the likelihood of success, while adopting this methodology, all the project members need to be &#039;&#039;&#039;experts&#039;&#039;&#039; in their respective fields. The method can easily become too difficult to learn and most importantly too difficult to apply.&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Lessisv</name></author>
	</entry>
	<entry>
		<id>http://13.50.150.85/index.php?title=Rational_Unified_Process_(RUP)&amp;diff=14784</id>
		<title>Rational Unified Process (RUP)</title>
		<link rel="alternate" type="text/html" href="http://13.50.150.85/index.php?title=Rational_Unified_Process_(RUP)&amp;diff=14784"/>
		<updated>2015-09-26T13:04:34Z</updated>

		<summary type="html">&lt;p&gt;Lessisv: /* Manage requirements */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The &#039;&#039;&#039;Rational Unified Process (RUP)&#039;&#039;&#039; is an iterative, &#039;&#039;&#039;software development methodology&#039;&#039;&#039;, firstly introduced by the [https://en.wikipedia.org/wiki/Rational_Software Rational Software Corporation] which was [http://www-03.ibm.com/press/us/en/pressrelease/314.wss acquired by IBM] in 2003. RUP is a disciplined approach to assign tasks within a development organization and software project teams. It was developed to ensure the production of &#039;&#039;&#039;high quality software&#039;&#039;&#039; by providing the development team with a set of &#039;&#039;&#039;guidelines, templates and tool mentors&#039;&#039;&#039;, for all the critical life-cycle activities within a project. This cluster of objects, form a knowledge base that is shared between all project team members. As a result, no matter what each member is working with (e.g testing, designing, managing), they all share a common language and view on how to develop software. Consequently, team productivity is boosted, in order to deliver software that can meet and exceed the needs and expectations of end-users, strictly following a predictable budget and schedule &amp;lt;ref name=&amp;quot;Ivar Jacobson, Grady Booch, and Jim Rumbaugh&amp;quot;&amp;gt;Ivar Jacobson, Grady Booch, and Jim Rumbaugh, Unified Software Development Process, Addison-Wesley, 1999.&amp;lt;/ref&amp;gt;. RUP is the most popular and extensively documented refinement of the [https://en.wikipedia.org/wiki/Unified_Process Unified Process], an iterative and incremental software development process framework. Other worth mentioning forms are the [https://en.wikipedia.org/wiki/OpenUP OpenUP] and [https://en.wikipedia.org/wiki/Agile_Unified_Process Agile Unified Process].&lt;br /&gt;
&lt;br /&gt;
== Process Overview ==&lt;br /&gt;
&lt;br /&gt;
[[File:RUP.png|450px|right|thumb| Figure 1. The iterative model graph shows how the process is structured along two dimensions]]&lt;br /&gt;
&lt;br /&gt;
The best possible way to describe the methodology is through a 2 - dimensional graph &amp;lt;ref name=&amp;quot;IBM (2005) Rational Unified Process&amp;quot;&amp;gt;IBM (2005) Rational Unified Process – Best Practices for Software Development Teams. Rational Software White paper. Rational&amp;lt;/ref&amp;gt;.&lt;br /&gt;
* The first dimension (horizontal axis) represents the &#039;&#039;&#039;dynamic aspect&#039;&#039;&#039; of the process. It expresses &#039;&#039;&#039;time&#039;&#039;&#039; in terms of &#039;&#039;&#039;phases&#039;&#039;&#039; and &#039;&#039;&#039;iterations&#039;&#039;&#039;. &lt;br /&gt;
* The second dimension (vertical axis) represents the &#039;&#039;&#039;static aspect&#039;&#039;&#039; of the process. It expresses &#039;&#039;&#039;workflows&#039;&#039;&#039; in terms of 6 core and 3 supporting &#039;&#039;&#039;disciplines&#039;&#039;&#039; (more on that on &amp;quot;Disciplines&amp;quot; section).&lt;br /&gt;
&lt;br /&gt;
=== Time Dimension - Phases and Iterations ===&lt;br /&gt;
When developing software, the project team goes through a multi-step process, from establishing a system&#039;s requirements to designing, implementing and finally maintaining the software with new releases. This is the software life cycle  &amp;lt;ref name=&amp;quot;IBM (2003) The Rational Unified Process®&amp;quot;&amp;gt;IBM (2003) The Rational Unified Process®, Version 2003.06.12.01, Rational Software Corporation.&amp;lt;/ref&amp;gt;. RUP delicately breaks the software life cycle down to four consecutive phases &amp;lt;ref name=&amp;quot;Philippe Kruchten&amp;quot;&amp;gt;A Rational Development Process, CrossTalk, 9 (7), STSC, Hill AFB, UT, pp.11-16.&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
* Inception phase&lt;br /&gt;
* Elaboration phase&lt;br /&gt;
* Construction phase&lt;br /&gt;
* Transition phase&lt;br /&gt;
&lt;br /&gt;
Depending on the project, each of these phases can consist of one to a number of &#039;&#039;&#039;iterations&#039;&#039;&#039;. An iteration is defined as a complete development loop, resulting in a new product release. All the phases include a well-defined milestone, in order to be completed. In the end of every phase, the development team can evaluate whether all the key goals have been achieved, all stakeholders have been considered and the actual expenditures correspond with the planned ones  &amp;lt;ref name=&amp;quot;Barry W. Boehm&amp;quot;&amp;gt;Barry W. Boehm, Anchoring the Software Process, IEEE Software, 13, 4, July 1996, pp. 73-82. &amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[File:RUP_phases.png|550px|right|thumb| Figure 2. The four phases and milestones of a project]]&lt;br /&gt;
==== Inception Phase ====&lt;br /&gt;
The first phase is the inception phase. The focus of this phase, is understanding the scope of the project and studying if is both worth doing and possible to do. All the internal and external entities that the system will interact with are identified and the nature of the interaction is well defined at a high level. For this reason, the inception phase is primarily significant for new development projects. &lt;br /&gt;
The expected outcome of the inception phase includes :&lt;br /&gt;
&lt;br /&gt;
* A vision document: The document states the general vision of the project including its key requirements, features and main constraints.&lt;br /&gt;
* An initial use-case model (10%-20% complete)&lt;br /&gt;
* An initial project glossary&lt;br /&gt;
* An initial business case, including the business context, success criteria and a financial forecast.&lt;br /&gt;
* An initial risk assessment&lt;br /&gt;
* A project plan (phases and iterations)&lt;br /&gt;
* A business model (if necessary)&lt;br /&gt;
* Prototypes&lt;br /&gt;
&lt;br /&gt;
At the end of the inception phase lies the first major project milestone; the &#039;&#039;&#039;Lifecycle Objective Milestone&#039;&#039;&#039;.&lt;br /&gt;
The inception phase has five evaluation criteria:&lt;br /&gt;
&lt;br /&gt;
* Stakeholder concurrence on scope definition and cost/schedule estimates.&lt;br /&gt;
* Depth and breadth of any prototype that was developed.&lt;br /&gt;
* Actual expenditures versus planned ones.&lt;br /&gt;
* Requirements understanding.&lt;br /&gt;
* Credibility of the cost/schedule estimates, risks and priorities.&lt;br /&gt;
&lt;br /&gt;
If for any reason the project fails to pass this milestone, it can either be completely cancelled or re-designed to successfully meet the criteria.&lt;br /&gt;
 &lt;br /&gt;
==== Elaboration Phase ====&lt;br /&gt;
The second phase is the elaboration phase. The focus of this phase, is establishing a baseline to the architecture of the system, further developing the project plan and analyzing the problem domain while trying to mitigate the highest risk elements. In other words, this is the phase where the project starts to take shape. One of the most important characteristics of this phase, is the production of a component-based architectural prototype. The purpose of this prototype, is to address the critical use-cases that were identified in the previous phase, and hopefully expose the highest technical risks of the project. The expected outcome of the elaboration phase includes:&lt;br /&gt;
&lt;br /&gt;
* A use-case model (at least 80% complete) which will be able to identify all the actors and use-cases.&lt;br /&gt;
* Supplementary requirements (if any).&lt;br /&gt;
* A clear description of the software architecture.&lt;br /&gt;
* An architectural prototype.&lt;br /&gt;
* A more detailed risk assessment and business case.&lt;br /&gt;
* A development plan for the overall project.&lt;br /&gt;
* A preliminary user manual (optional).&lt;br /&gt;
&lt;br /&gt;
At the end of the elaboration phase lies the second major project milestone; the &#039;&#039;&#039;Lifecycle Architecture Milestone&#039;&#039;&#039;.&lt;br /&gt;
The elaboration phase has six evaluation criteria:&lt;br /&gt;
&lt;br /&gt;
* Is the vision stable enough?&lt;br /&gt;
* Is the system architecture stable enough?&lt;br /&gt;
* Have all the major risks been successfully identified and resolved?&lt;br /&gt;
* Is the plan for the construction phase accurate enough?&lt;br /&gt;
* Do all the stakeholders share the opinion that the vision can be achieved by executing the current plan?&lt;br /&gt;
* Is the actual vs planned resource expenditure in acceptable levels?&lt;br /&gt;
&lt;br /&gt;
If the project fails to pass the milestone, there is still time to be re-designed or even cancelled. However, when the project moves to the next phase the associated operation risks raise significantly and changes become much more difficult.&lt;br /&gt;
&lt;br /&gt;
==== Construction Phase====&lt;br /&gt;
The third phase is the construction phase. The focus of this phase, is to develop and integrate all the remaining components and application features into the product. In other words this is the phase where the vision is finally translated into a final stable product, which is based on the architecture that was developed during the previous phases  &amp;lt;ref name=&amp;quot;KRUCHTEN, P. (2000)&amp;quot;&amp;gt;KRUCHTEN, P. (2000) The Rational Unified Process - An Introduction, Second Edition, Addison-Wesley.&amp;lt;/ref&amp;gt;. Most emphasize is given to resources, control and process management in order to fully optimize costs, schedules and quality &amp;lt;ref name=&amp;quot;IBM (2003) The Rational Unified Process®&amp;quot;&amp;gt;IBM (2003) The Rational Unified Process®, Version 2003.06.12.01, Rational Software Corporation.&amp;lt;/ref&amp;gt;. The existing prototype evolves via a number of iterations into a fully functional product that meets the stakeholders&#039; needs. The construction phase is usually the longest one of the project life cycle. The expected outcome of the construction phase includes:&lt;br /&gt;
&lt;br /&gt;
* First external release of the software.&lt;br /&gt;
* User manuals.&lt;br /&gt;
* A detailed description of the current release.&lt;br /&gt;
&lt;br /&gt;
At the end of the construction phase lies the third major project milestone; the &#039;&#039;&#039;Initial Operation Capability Milestone&#039;&#039;&#039;.&lt;br /&gt;
The construction phase has three evaluation criteria:&lt;br /&gt;
&lt;br /&gt;
* Is the software release stable enough to be given to the user community?&lt;br /&gt;
* Are all the stakeholders ready for the transition to the user community?&lt;br /&gt;
* Is the actual vs planned resource expenditure in acceptable levels?&lt;br /&gt;
&lt;br /&gt;
If the project fails to pass this milestone, transition may have to be postponed by one release.&lt;br /&gt;
&lt;br /&gt;
==== Transition Phase ====&lt;br /&gt;
The fourth and final phase is the transition phase. The focus of this phase is, as the word says, to transition the software product to the user community. It includes ensuring that the product has been developed to an acceptable quality level, by beta testing the software through the end users, and validating it against the stakeholders&#039; expectations. Once the product has been given for beta testing, a number of issues can arise, requiring the development of new releases (fixing bugs) and adding features that may have been postponed. The expected outcome of the transition phase includes:&lt;br /&gt;
&lt;br /&gt;
* Beta-testing to fix any major [https://en.wikipedia.org/wiki/Software_bug software bugs] and add any missing features.&lt;br /&gt;
* Conversion of operational databases&lt;br /&gt;
* Training of end users and maintainers.&lt;br /&gt;
* Marketing and distribution of the product.&lt;br /&gt;
&lt;br /&gt;
At the end of the transition phase lies the fourth and final major project milestone; the &#039;&#039;&#039;Product Release&#039;&#039;&#039;.&lt;br /&gt;
The transition phase has two evaluation criteria:&lt;br /&gt;
&lt;br /&gt;
* Are the end - users satisfied with the product?&lt;br /&gt;
* Is the actual vs planned resource expenditure in acceptable levels?&lt;br /&gt;
&lt;br /&gt;
==== Iterations ====&lt;br /&gt;
As stated before, every phase can consist of a number of iterations, depending on the project size and scope. RUP, in comparison to the traditional [https://en.wikipedia.org/wiki/Waterfall_model waterfall] approach, is heavily based on iterations. This gives a number of advantages and benefits to the project team, with the most important one being mitigating risks much more earlier in the project. Moreover, change is more manageable and there is normally a higher level of reuse. Finally, iterations ensure an overall high quality in the final product and that the project team can learn throughout the developing process &amp;lt;ref name=&amp;quot;KRUCHTEN, P.&amp;quot;&amp;gt; KRUCHTEN, P. A Rational Development Process, CrossTalk, 9 (7), STSC, Hill AFB, UT, pp.11-16.&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Workflow Dimension - Disciplines ===&lt;br /&gt;
&lt;br /&gt;
[[File:activities.png|350px|right|thumb| Figure 4. Individuals, Roles and Activities]]&lt;br /&gt;
[[File:workflows.png|350px|right|thumb| Figure 5. Example of a workflow]]&lt;br /&gt;
&lt;br /&gt;
A process describes &#039;&#039;&#039;who&#039;&#039;&#039; is doing &#039;&#039;&#039;what&#039;&#039;&#039;, &#039;&#039;&#039;how&#039;&#039;&#039; and &#039;&#039;&#039;when&#039;&#039;&#039;. RUP addresses those terms with four modelling elements; &#039;&#039;&#039;Roles&#039;&#039;&#039;, &#039;&#039;&#039;Activities&#039;&#039;&#039;, &#039;&#039;&#039;Artifacts&#039;&#039;&#039; and &#039;&#039;&#039;Workflows&#039;&#039;&#039; respectively  &amp;lt;ref name=&amp;quot;IBM (2005) Rational Unified Process&amp;quot;&amp;gt; IBM (2005) Rational Unified Process – Best Practices for Software Development Teams. Rational Software White paper. Rational. &amp;lt;/ref&amp;gt;. A &#039;&#039;&#039;role&#039;&#039;&#039;, formally addressed as a worker, describes the behavior and responsibilities of an individual or a group of individuals in order to produce an artifact. Throughout the development of a project, a person can play one or a number of roles. Some examples of roles are the system analyst, designer, tester. &#039;&#039;&#039;Activities&#039;&#039;&#039; are expressed through behaviors. An activity, is a job that a person performs through his role, as seen in Figure 4. The length of an activity may vary from a few hours to a number of days. Examples of activities are: Plan an operation - performed by the role of Project Manager or add a missing feature - performed by the role of a software developer. All activities produce a meaningful result, called an artifact. &#039;&#039;&#039;Artifacts&#039;&#039;&#039;, are the responsibilities of ones role or roles and express a piece of information that is produced, modified or even used by a process. They can act both as input or output of an activity. Examples of artifacts are the source code, the business case, the software architecture. The roles perform activities that can produce a sequence of artifacts, called &#039;&#039;&#039;workflows&#039;&#039;&#039;. Examples of workflows can be seen in Figure 5. &lt;br /&gt;
&lt;br /&gt;
RUP identifies nine core process workflows, called &#039;&#039;&#039;disciplines&#039;&#039;&#039;. Every discipline, addresses a set of activities and artifacts, based upon a set of skills that are common in an ICT project. These disciplines have the ability to arrange the activities and artifacts in such a way, to provide an understanding of the overall project from a waterfall perspective  &amp;lt;ref name=&amp;quot;RATIONALUNIVERSITY (2003) PRJ270&amp;quot;&amp;gt;RATIONALUNIVERSITY (2003) PRJ270: Essentials of Rational Unified Process - Student Manual, IBM Corporation. &amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
There are six core &amp;quot;engineering&amp;quot; disciplines:&lt;br /&gt;
* Business Modelling Discipline&lt;br /&gt;
* Requirements Discipline&lt;br /&gt;
* Analysis and Design Discipline&lt;br /&gt;
* Implementation Discipline&lt;br /&gt;
* Test Discipline&lt;br /&gt;
* Deployment Discipline&lt;br /&gt;
&lt;br /&gt;
And three core &amp;quot;supporting&amp;quot; disciplines:&lt;br /&gt;
* Project Management Discipline&lt;br /&gt;
* Configuration and Change Management Discipline&lt;br /&gt;
* Environment Discipline&lt;br /&gt;
&lt;br /&gt;
==== Business Modelling ====&lt;br /&gt;
&lt;br /&gt;
Miscommunication between the software engineering community and the business engineering community is one of the most common problems among most business engineering efforts. This means that the output from software development efforts is not correctly used as input to the business engineering and vice versa. The purpose of the Business Modelling discipline is to provide a common language between the two communities and create a direct coupling between software and business models. All business processes are documented using &amp;quot;use cases&amp;quot;. This assures that all stakeholders share the same understanding of the demanding organization.&lt;br /&gt;
&lt;br /&gt;
==== Requirements ====&lt;br /&gt;
The purpose of the requirements discipline is to describe in detail &#039;&#039;&#039;what&#039;&#039;&#039; the system should do. Based on that, a Vision document is created where required functionality and constraints are documented. Moreover, actors (end - users) and use cases (behaviors of the system) are identified. Use cases are described in detail and each description clearly shows how the system interacts with the actors. This way an agreement is established between the customers and the rest of the stakeholders regarding the system&#039;s capabilities, user-interface and the end user&#039;s needs.&lt;br /&gt;
&lt;br /&gt;
==== Analysis and Design ====&lt;br /&gt;
&lt;br /&gt;
The purpose of the Analysis and Design discipline it to investigate &#039;&#039;&#039;how&#039;&#039;&#039; the system requirements will be translated into a detailed implementation plan. The system needs to:&lt;br /&gt;
* Perform exactly as described in the use-case descriptions.&lt;br /&gt;
* Fulfill all requirements.&lt;br /&gt;
* Have a robust structure.&lt;br /&gt;
&lt;br /&gt;
Analysis and Design result in the creation of a &#039;&#039;&#039;design model&#039;&#039;&#039;  &amp;lt;ref name=&amp;quot;KRUCHTEN, P.&amp;quot;&amp;gt;KRUCHTEN, P. (2000) The Rational Unified Process - An Introduction, Second Edition, Addison-Wesley&amp;lt;/ref&amp;gt;. The design model is an abstraction of the system&#039;s architecture and acts as a guide of how the source code should be finally written and structured.&lt;br /&gt;
&lt;br /&gt;
==== Implementation ====&lt;br /&gt;
The purpose of the Implementation discipline is to:&lt;br /&gt;
&lt;br /&gt;
* Arrange the code into subsystems, organized in layers.&lt;br /&gt;
* Implement classes and objects in terms of components.&lt;br /&gt;
* Uni-test the developed components to ensure quality.&lt;br /&gt;
* Integrate the results into an executable system.&lt;br /&gt;
&lt;br /&gt;
The whole system can be realized as an implementation of various components. RUP enables the integration of those components, in a revolutionary way, making the system easier to maintain and increasing the possibilities for future re-use.&lt;br /&gt;
&lt;br /&gt;
==== Test ====&lt;br /&gt;
&lt;br /&gt;
In the implementation discipline, all the developed components were uni-tested individually and were integrated into the system. The purpose of the Test discipline is to assess the system as a whole and verify the product quality. It is a mechanism to verify the smooth interaction between the various components, their proper integration into the system and finally ensure that all requirements have been successfully implemented. All tests are carried out along 4 quality dimensions:&lt;br /&gt;
* Functionality.&lt;br /&gt;
* Reliability.&lt;br /&gt;
* Application Performance.&lt;br /&gt;
* System Performance.&lt;br /&gt;
&lt;br /&gt;
==== Deployment ====&lt;br /&gt;
&lt;br /&gt;
The purpose of the Deployment discipline is primarily to develop product releases and distribute the software to the end – users. More specifically the Deployment discipline focuses at:&lt;br /&gt;
&lt;br /&gt;
* Developing external software releases&lt;br /&gt;
* Distributing the software&lt;br /&gt;
* Installing the software&lt;br /&gt;
* Providing help to the end – users&lt;br /&gt;
* Creating an up-to-date user manual&lt;br /&gt;
* Conducting beta testing&lt;br /&gt;
&lt;br /&gt;
==== Project Management ====&lt;br /&gt;
&lt;br /&gt;
The purpose of the Project Management discipline, is to successfully balance competing objectives, manage and mitigate risks and finally handle any constraints on delivering the product. Project management, ideally provides:&lt;br /&gt;
&lt;br /&gt;
* A framework for managing software-intensive projects.&lt;br /&gt;
* A framework to successfully manage risks.&lt;br /&gt;
* A framework to plan, execute and monitor projects.&lt;br /&gt;
&lt;br /&gt;
While the discipline does not guarantee success, the odds of delivering successful software are greatly improved  &amp;lt;ref name=&amp;quot;Walker Royce&amp;quot;&amp;gt;Walker Royce, Software Project Management  A Unified Framework, Addison-Wesley, 1998. &amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==== Configuration and Change Management ====&lt;br /&gt;
&lt;br /&gt;
The purpose of the Configuration and Change Management Discipline is to control, maintain and configure all the various artifacts that are produced by the different actors that are working on a project. During the software development life cycle, artifacts are regularly updated (changed). In order to understand the current state of an artifact, it is very important to keep track of its location and history; what was the reason and who decided to change the artifact. The discipline helps create a framework that keeps track of all the project assets.&lt;br /&gt;
&lt;br /&gt;
==== Environment ====&lt;br /&gt;
&lt;br /&gt;
The purpose of the environment discipline, is to provide the development team with all the processes, tools and methods for supporting all developing activities. It is responsible for producing a Development Kit, able to provide guidelines and templates for customizing processes.&lt;br /&gt;
&lt;br /&gt;
== Why RUP - Best Practices ==&lt;br /&gt;
&lt;br /&gt;
RUP captures many of the “best practices” that are currently used in modern software development and more particularly in industry by successful organizations. The practices are:&lt;br /&gt;
&lt;br /&gt;
* Develop Software Iteratively&lt;br /&gt;
* Manage Requirements&lt;br /&gt;
* Use component-based architectures&lt;br /&gt;
* Visually model software&lt;br /&gt;
* Continuously verify software quality&lt;br /&gt;
* Control changes to software&lt;br /&gt;
&lt;br /&gt;
=== Develop Software iteratively ===&lt;br /&gt;
&lt;br /&gt;
Today’s high sophisticated software systems, consist of many and complex structures which make it nearly impossible to define the entire system from the very beginning, develop the entire solution and then test the product in the end. RUP uses an iterative approach that allows an increasing understanding of the problem and developing a step – by – step solution, over multiple iterations. Each iteration ends with an executable release, which enables continuous end - user involvement and feedback. As a result, the risks of the project are mitigated at an early stage and stakeholders are ensured that the project requirements are fulfilled &amp;lt;ref name=&amp;quot;Barry W. Boehm 2&amp;quot;&amp;gt;Barry W. Boehm, A Spiral Model of Software Development and Enhancement, Computer, May 1988, IEEE, pp.61-72 &amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Manage requirements ===&lt;br /&gt;
&lt;br /&gt;
The requirements of a system include the description of the services that the system is able to provide and its operational constraints. RUP documents, organizes and tracks required functionality and constraints and easily communicates business requirements. The use – cases that are used in the process are an excellent way to ensure that requirements are actually those elements that drive the design, implementation and testing of software, making it more likely that the final system fulfills the stakeholders needs. &amp;lt;ref name=&amp;quot;Ivar Jacobson, Magnus Christerson, Patrik Jonsson, and Gunnar Övergaard&amp;quot;&amp;gt;Ivar Jacobson, Magnus Christerson, Patrik Jonsson, and Gunnar Övergaard, Object-Oriented Software Engineering—A Use Case Driven Approach, Wokingham, England, Addison-Wesley, 1992, 582p&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Use component-based architectures ===&lt;br /&gt;
&lt;br /&gt;
Component-based architecture makes the system dynamic; components are independent from the system and interact with other components through well-defined interfaces. Their in-dependency from the system, gives them a great flexibility meaning that they can easily be added, updated or totally replaced. RUP supports component-based software development by providing a systematic approach to defining an architecture using new and existing components.&lt;br /&gt;
&lt;br /&gt;
=== Visually model software ===&lt;br /&gt;
&lt;br /&gt;
A model is an abstraction of reality that can help better comprehend large and complex systems. Visual abstractions help the development team to easily communicate different aspects of the software and see how all the components fit together. RUP uses the [http://www.uml.org/ Unified Modelling Language (UML)] standard which is a graphical language for visualizing and constructing the artifacts of a software-intensive system.&lt;br /&gt;
&lt;br /&gt;
=== Continuously verify software quality ===&lt;br /&gt;
&lt;br /&gt;
In software development, quality should always be reviewed with respect to the requirements based on reliability, functionality , application and system performance. In RUP, quality verification and assessment is built into the process, inside all activities, including all stakeholders and is not treated as a separate activity, performed by a separate group.&lt;br /&gt;
&lt;br /&gt;
=== Control changes to software ===&lt;br /&gt;
&lt;br /&gt;
A software system is developed by a number of teams or individuals, using different platforms and at times being in different locations. As a result, it is essential to somehow make sure that all the changes made in the system are synchronized and constantly verified. RUP ensures that all the individuals working in the project are well informed about any changes and everything is in sync. The process describes how to control, track and monitor changes to enable successful iterative development.&lt;br /&gt;
&lt;br /&gt;
== Limitations ==&lt;br /&gt;
&lt;br /&gt;
While being a complete methodology in itself with an emphasis on accurate documentation and quickly resolving project associated risks, RUP comes with a number of limitations.&lt;br /&gt;
&lt;br /&gt;
* In order for team members to start developing software under this methodology, they need to be &#039;&#039;&#039;experts&#039;&#039;&#039; in their respective fields.&lt;br /&gt;
* The development process can easily become too complex to handle.&lt;br /&gt;
* When working with cutting - edge projects that highly utilize new technology, components will not be able to be reused. &lt;br /&gt;
* While in theory integration throughout the process of software development sounds like a good thing, when working with particularly complex projects with multiple development streams, issues and significant confusion may rise during the stages of testing.&lt;br /&gt;
&lt;br /&gt;
== Conclusion ==&lt;br /&gt;
&lt;br /&gt;
The Rational Unified Process, is an exemplary method for addressing and mitigating risks from the very early stages, by rapidly developing an initial version of the system (prototype) that describes its architecture. There are not fixed requirements from the beginning but rather allows refining requirements , while the project progresses. It expects and actually deals with change pretty well while its main focus is the quality of the product and the degree to which it satisfies its end - users, throughout the project life-cycle. However, while being a complete and well documented methodology, it should be stressed that remains a very complex one. In order to increase the likelihood of success, while adopting this methodology, all the project members need to be &#039;&#039;&#039;experts&#039;&#039;&#039; in their respective fields. The method can easily become too difficult to learn and most importantly too difficult to apply.&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Lessisv</name></author>
	</entry>
	<entry>
		<id>http://13.50.150.85/index.php?title=Rational_Unified_Process_(RUP)&amp;diff=14781</id>
		<title>Rational Unified Process (RUP)</title>
		<link rel="alternate" type="text/html" href="http://13.50.150.85/index.php?title=Rational_Unified_Process_(RUP)&amp;diff=14781"/>
		<updated>2015-09-26T13:03:24Z</updated>

		<summary type="html">&lt;p&gt;Lessisv: /* Develop Software iteratively */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The &#039;&#039;&#039;Rational Unified Process (RUP)&#039;&#039;&#039; is an iterative, &#039;&#039;&#039;software development methodology&#039;&#039;&#039;, firstly introduced by the [https://en.wikipedia.org/wiki/Rational_Software Rational Software Corporation] which was [http://www-03.ibm.com/press/us/en/pressrelease/314.wss acquired by IBM] in 2003. RUP is a disciplined approach to assign tasks within a development organization and software project teams. It was developed to ensure the production of &#039;&#039;&#039;high quality software&#039;&#039;&#039; by providing the development team with a set of &#039;&#039;&#039;guidelines, templates and tool mentors&#039;&#039;&#039;, for all the critical life-cycle activities within a project. This cluster of objects, form a knowledge base that is shared between all project team members. As a result, no matter what each member is working with (e.g testing, designing, managing), they all share a common language and view on how to develop software. Consequently, team productivity is boosted, in order to deliver software that can meet and exceed the needs and expectations of end-users, strictly following a predictable budget and schedule &amp;lt;ref name=&amp;quot;Ivar Jacobson, Grady Booch, and Jim Rumbaugh&amp;quot;&amp;gt;Ivar Jacobson, Grady Booch, and Jim Rumbaugh, Unified Software Development Process, Addison-Wesley, 1999.&amp;lt;/ref&amp;gt;. RUP is the most popular and extensively documented refinement of the [https://en.wikipedia.org/wiki/Unified_Process Unified Process], an iterative and incremental software development process framework. Other worth mentioning forms are the [https://en.wikipedia.org/wiki/OpenUP OpenUP] and [https://en.wikipedia.org/wiki/Agile_Unified_Process Agile Unified Process].&lt;br /&gt;
&lt;br /&gt;
== Process Overview ==&lt;br /&gt;
&lt;br /&gt;
[[File:RUP.png|450px|right|thumb| Figure 1. The iterative model graph shows how the process is structured along two dimensions]]&lt;br /&gt;
&lt;br /&gt;
The best possible way to describe the methodology is through a 2 - dimensional graph &amp;lt;ref name=&amp;quot;IBM (2005) Rational Unified Process&amp;quot;&amp;gt;IBM (2005) Rational Unified Process – Best Practices for Software Development Teams. Rational Software White paper. Rational&amp;lt;/ref&amp;gt;.&lt;br /&gt;
* The first dimension (horizontal axis) represents the &#039;&#039;&#039;dynamic aspect&#039;&#039;&#039; of the process. It expresses &#039;&#039;&#039;time&#039;&#039;&#039; in terms of &#039;&#039;&#039;phases&#039;&#039;&#039; and &#039;&#039;&#039;iterations&#039;&#039;&#039;. &lt;br /&gt;
* The second dimension (vertical axis) represents the &#039;&#039;&#039;static aspect&#039;&#039;&#039; of the process. It expresses &#039;&#039;&#039;workflows&#039;&#039;&#039; in terms of 6 core and 3 supporting &#039;&#039;&#039;disciplines&#039;&#039;&#039; (more on that on &amp;quot;Disciplines&amp;quot; section).&lt;br /&gt;
&lt;br /&gt;
=== Time Dimension - Phases and Iterations ===&lt;br /&gt;
When developing software, the project team goes through a multi-step process, from establishing a system&#039;s requirements to designing, implementing and finally maintaining the software with new releases. This is the software life cycle  &amp;lt;ref name=&amp;quot;IBM (2003) The Rational Unified Process®&amp;quot;&amp;gt;IBM (2003) The Rational Unified Process®, Version 2003.06.12.01, Rational Software Corporation.&amp;lt;/ref&amp;gt;. RUP delicately breaks the software life cycle down to four consecutive phases &amp;lt;ref name=&amp;quot;Philippe Kruchten&amp;quot;&amp;gt;A Rational Development Process, CrossTalk, 9 (7), STSC, Hill AFB, UT, pp.11-16.&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
* Inception phase&lt;br /&gt;
* Elaboration phase&lt;br /&gt;
* Construction phase&lt;br /&gt;
* Transition phase&lt;br /&gt;
&lt;br /&gt;
Depending on the project, each of these phases can consist of one to a number of &#039;&#039;&#039;iterations&#039;&#039;&#039;. An iteration is defined as a complete development loop, resulting in a new product release. All the phases include a well-defined milestone, in order to be completed. In the end of every phase, the development team can evaluate whether all the key goals have been achieved, all stakeholders have been considered and the actual expenditures correspond with the planned ones  &amp;lt;ref name=&amp;quot;Barry W. Boehm&amp;quot;&amp;gt;Barry W. Boehm, Anchoring the Software Process, IEEE Software, 13, 4, July 1996, pp. 73-82. &amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[File:RUP_phases.png|550px|right|thumb| Figure 2. The four phases and milestones of a project]]&lt;br /&gt;
==== Inception Phase ====&lt;br /&gt;
The first phase is the inception phase. The focus of this phase, is understanding the scope of the project and studying if is both worth doing and possible to do. All the internal and external entities that the system will interact with are identified and the nature of the interaction is well defined at a high level. For this reason, the inception phase is primarily significant for new development projects. &lt;br /&gt;
The expected outcome of the inception phase includes :&lt;br /&gt;
&lt;br /&gt;
* A vision document: The document states the general vision of the project including its key requirements, features and main constraints.&lt;br /&gt;
* An initial use-case model (10%-20% complete)&lt;br /&gt;
* An initial project glossary&lt;br /&gt;
* An initial business case, including the business context, success criteria and a financial forecast.&lt;br /&gt;
* An initial risk assessment&lt;br /&gt;
* A project plan (phases and iterations)&lt;br /&gt;
* A business model (if necessary)&lt;br /&gt;
* Prototypes&lt;br /&gt;
&lt;br /&gt;
At the end of the inception phase lies the first major project milestone; the &#039;&#039;&#039;Lifecycle Objective Milestone&#039;&#039;&#039;.&lt;br /&gt;
The inception phase has five evaluation criteria:&lt;br /&gt;
&lt;br /&gt;
* Stakeholder concurrence on scope definition and cost/schedule estimates.&lt;br /&gt;
* Depth and breadth of any prototype that was developed.&lt;br /&gt;
* Actual expenditures versus planned ones.&lt;br /&gt;
* Requirements understanding.&lt;br /&gt;
* Credibility of the cost/schedule estimates, risks and priorities.&lt;br /&gt;
&lt;br /&gt;
If for any reason the project fails to pass this milestone, it can either be completely cancelled or re-designed to successfully meet the criteria.&lt;br /&gt;
 &lt;br /&gt;
==== Elaboration Phase ====&lt;br /&gt;
The second phase is the elaboration phase. The focus of this phase, is establishing a baseline to the architecture of the system, further developing the project plan and analyzing the problem domain while trying to mitigate the highest risk elements. In other words, this is the phase where the project starts to take shape. One of the most important characteristics of this phase, is the production of a component-based architectural prototype. The purpose of this prototype, is to address the critical use-cases that were identified in the previous phase, and hopefully expose the highest technical risks of the project. The expected outcome of the elaboration phase includes:&lt;br /&gt;
&lt;br /&gt;
* A use-case model (at least 80% complete) which will be able to identify all the actors and use-cases.&lt;br /&gt;
* Supplementary requirements (if any).&lt;br /&gt;
* A clear description of the software architecture.&lt;br /&gt;
* An architectural prototype.&lt;br /&gt;
* A more detailed risk assessment and business case.&lt;br /&gt;
* A development plan for the overall project.&lt;br /&gt;
* A preliminary user manual (optional).&lt;br /&gt;
&lt;br /&gt;
At the end of the elaboration phase lies the second major project milestone; the &#039;&#039;&#039;Lifecycle Architecture Milestone&#039;&#039;&#039;.&lt;br /&gt;
The elaboration phase has six evaluation criteria:&lt;br /&gt;
&lt;br /&gt;
* Is the vision stable enough?&lt;br /&gt;
* Is the system architecture stable enough?&lt;br /&gt;
* Have all the major risks been successfully identified and resolved?&lt;br /&gt;
* Is the plan for the construction phase accurate enough?&lt;br /&gt;
* Do all the stakeholders share the opinion that the vision can be achieved by executing the current plan?&lt;br /&gt;
* Is the actual vs planned resource expenditure in acceptable levels?&lt;br /&gt;
&lt;br /&gt;
If the project fails to pass the milestone, there is still time to be re-designed or even cancelled. However, when the project moves to the next phase the associated operation risks raise significantly and changes become much more difficult.&lt;br /&gt;
&lt;br /&gt;
==== Construction Phase====&lt;br /&gt;
The third phase is the construction phase. The focus of this phase, is to develop and integrate all the remaining components and application features into the product. In other words this is the phase where the vision is finally translated into a final stable product, which is based on the architecture that was developed during the previous phases  &amp;lt;ref name=&amp;quot;KRUCHTEN, P. (2000)&amp;quot;&amp;gt;KRUCHTEN, P. (2000) The Rational Unified Process - An Introduction, Second Edition, Addison-Wesley.&amp;lt;/ref&amp;gt;. Most emphasize is given to resources, control and process management in order to fully optimize costs, schedules and quality &amp;lt;ref name=&amp;quot;IBM (2003) The Rational Unified Process®&amp;quot;&amp;gt;IBM (2003) The Rational Unified Process®, Version 2003.06.12.01, Rational Software Corporation.&amp;lt;/ref&amp;gt;. The existing prototype evolves via a number of iterations into a fully functional product that meets the stakeholders&#039; needs. The construction phase is usually the longest one of the project life cycle. The expected outcome of the construction phase includes:&lt;br /&gt;
&lt;br /&gt;
* First external release of the software.&lt;br /&gt;
* User manuals.&lt;br /&gt;
* A detailed description of the current release.&lt;br /&gt;
&lt;br /&gt;
At the end of the construction phase lies the third major project milestone; the &#039;&#039;&#039;Initial Operation Capability Milestone&#039;&#039;&#039;.&lt;br /&gt;
The construction phase has three evaluation criteria:&lt;br /&gt;
&lt;br /&gt;
* Is the software release stable enough to be given to the user community?&lt;br /&gt;
* Are all the stakeholders ready for the transition to the user community?&lt;br /&gt;
* Is the actual vs planned resource expenditure in acceptable levels?&lt;br /&gt;
&lt;br /&gt;
If the project fails to pass this milestone, transition may have to be postponed by one release.&lt;br /&gt;
&lt;br /&gt;
==== Transition Phase ====&lt;br /&gt;
The fourth and final phase is the transition phase. The focus of this phase is, as the word says, to transition the software product to the user community. It includes ensuring that the product has been developed to an acceptable quality level, by beta testing the software through the end users, and validating it against the stakeholders&#039; expectations. Once the product has been given for beta testing, a number of issues can arise, requiring the development of new releases (fixing bugs) and adding features that may have been postponed. The expected outcome of the transition phase includes:&lt;br /&gt;
&lt;br /&gt;
* Beta-testing to fix any major [https://en.wikipedia.org/wiki/Software_bug software bugs] and add any missing features.&lt;br /&gt;
* Conversion of operational databases&lt;br /&gt;
* Training of end users and maintainers.&lt;br /&gt;
* Marketing and distribution of the product.&lt;br /&gt;
&lt;br /&gt;
At the end of the transition phase lies the fourth and final major project milestone; the &#039;&#039;&#039;Product Release&#039;&#039;&#039;.&lt;br /&gt;
The transition phase has two evaluation criteria:&lt;br /&gt;
&lt;br /&gt;
* Are the end - users satisfied with the product?&lt;br /&gt;
* Is the actual vs planned resource expenditure in acceptable levels?&lt;br /&gt;
&lt;br /&gt;
==== Iterations ====&lt;br /&gt;
As stated before, every phase can consist of a number of iterations, depending on the project size and scope. RUP, in comparison to the traditional [https://en.wikipedia.org/wiki/Waterfall_model waterfall] approach, is heavily based on iterations. This gives a number of advantages and benefits to the project team, with the most important one being mitigating risks much more earlier in the project. Moreover, change is more manageable and there is normally a higher level of reuse. Finally, iterations ensure an overall high quality in the final product and that the project team can learn throughout the developing process &amp;lt;ref name=&amp;quot;KRUCHTEN, P.&amp;quot;&amp;gt; KRUCHTEN, P. A Rational Development Process, CrossTalk, 9 (7), STSC, Hill AFB, UT, pp.11-16.&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Workflow Dimension - Disciplines ===&lt;br /&gt;
&lt;br /&gt;
[[File:activities.png|350px|right|thumb| Figure 4. Individuals, Roles and Activities]]&lt;br /&gt;
[[File:workflows.png|350px|right|thumb| Figure 5. Example of a workflow]]&lt;br /&gt;
&lt;br /&gt;
A process describes &#039;&#039;&#039;who&#039;&#039;&#039; is doing &#039;&#039;&#039;what&#039;&#039;&#039;, &#039;&#039;&#039;how&#039;&#039;&#039; and &#039;&#039;&#039;when&#039;&#039;&#039;. RUP addresses those terms with four modelling elements; &#039;&#039;&#039;Roles&#039;&#039;&#039;, &#039;&#039;&#039;Activities&#039;&#039;&#039;, &#039;&#039;&#039;Artifacts&#039;&#039;&#039; and &#039;&#039;&#039;Workflows&#039;&#039;&#039; respectively  &amp;lt;ref name=&amp;quot;IBM (2005) Rational Unified Process&amp;quot;&amp;gt; IBM (2005) Rational Unified Process – Best Practices for Software Development Teams. Rational Software White paper. Rational. &amp;lt;/ref&amp;gt;. A &#039;&#039;&#039;role&#039;&#039;&#039;, formally addressed as a worker, describes the behavior and responsibilities of an individual or a group of individuals in order to produce an artifact. Throughout the development of a project, a person can play one or a number of roles. Some examples of roles are the system analyst, designer, tester. &#039;&#039;&#039;Activities&#039;&#039;&#039; are expressed through behaviors. An activity, is a job that a person performs through his role, as seen in Figure 4. The length of an activity may vary from a few hours to a number of days. Examples of activities are: Plan an operation - performed by the role of Project Manager or add a missing feature - performed by the role of a software developer. All activities produce a meaningful result, called an artifact. &#039;&#039;&#039;Artifacts&#039;&#039;&#039;, are the responsibilities of ones role or roles and express a piece of information that is produced, modified or even used by a process. They can act both as input or output of an activity. Examples of artifacts are the source code, the business case, the software architecture. The roles perform activities that can produce a sequence of artifacts, called &#039;&#039;&#039;workflows&#039;&#039;&#039;. Examples of workflows can be seen in Figure 5. &lt;br /&gt;
&lt;br /&gt;
RUP identifies nine core process workflows, called &#039;&#039;&#039;disciplines&#039;&#039;&#039;. Every discipline, addresses a set of activities and artifacts, based upon a set of skills that are common in an ICT project. These disciplines have the ability to arrange the activities and artifacts in such a way, to provide an understanding of the overall project from a waterfall perspective  &amp;lt;ref name=&amp;quot;RATIONALUNIVERSITY (2003) PRJ270&amp;quot;&amp;gt;RATIONALUNIVERSITY (2003) PRJ270: Essentials of Rational Unified Process - Student Manual, IBM Corporation. &amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
There are six core &amp;quot;engineering&amp;quot; disciplines:&lt;br /&gt;
* Business Modelling Discipline&lt;br /&gt;
* Requirements Discipline&lt;br /&gt;
* Analysis and Design Discipline&lt;br /&gt;
* Implementation Discipline&lt;br /&gt;
* Test Discipline&lt;br /&gt;
* Deployment Discipline&lt;br /&gt;
&lt;br /&gt;
And three core &amp;quot;supporting&amp;quot; disciplines:&lt;br /&gt;
* Project Management Discipline&lt;br /&gt;
* Configuration and Change Management Discipline&lt;br /&gt;
* Environment Discipline&lt;br /&gt;
&lt;br /&gt;
==== Business Modelling ====&lt;br /&gt;
&lt;br /&gt;
Miscommunication between the software engineering community and the business engineering community is one of the most common problems among most business engineering efforts. This means that the output from software development efforts is not correctly used as input to the business engineering and vice versa. The purpose of the Business Modelling discipline is to provide a common language between the two communities and create a direct coupling between software and business models. All business processes are documented using &amp;quot;use cases&amp;quot;. This assures that all stakeholders share the same understanding of the demanding organization.&lt;br /&gt;
&lt;br /&gt;
==== Requirements ====&lt;br /&gt;
The purpose of the requirements discipline is to describe in detail &#039;&#039;&#039;what&#039;&#039;&#039; the system should do. Based on that, a Vision document is created where required functionality and constraints are documented. Moreover, actors (end - users) and use cases (behaviors of the system) are identified. Use cases are described in detail and each description clearly shows how the system interacts with the actors. This way an agreement is established between the customers and the rest of the stakeholders regarding the system&#039;s capabilities, user-interface and the end user&#039;s needs.&lt;br /&gt;
&lt;br /&gt;
==== Analysis and Design ====&lt;br /&gt;
&lt;br /&gt;
The purpose of the Analysis and Design discipline it to investigate &#039;&#039;&#039;how&#039;&#039;&#039; the system requirements will be translated into a detailed implementation plan. The system needs to:&lt;br /&gt;
* Perform exactly as described in the use-case descriptions.&lt;br /&gt;
* Fulfill all requirements.&lt;br /&gt;
* Have a robust structure.&lt;br /&gt;
&lt;br /&gt;
Analysis and Design result in the creation of a &#039;&#039;&#039;design model&#039;&#039;&#039;  &amp;lt;ref name=&amp;quot;KRUCHTEN, P.&amp;quot;&amp;gt;KRUCHTEN, P. (2000) The Rational Unified Process - An Introduction, Second Edition, Addison-Wesley&amp;lt;/ref&amp;gt;. The design model is an abstraction of the system&#039;s architecture and acts as a guide of how the source code should be finally written and structured.&lt;br /&gt;
&lt;br /&gt;
==== Implementation ====&lt;br /&gt;
The purpose of the Implementation discipline is to:&lt;br /&gt;
&lt;br /&gt;
* Arrange the code into subsystems, organized in layers.&lt;br /&gt;
* Implement classes and objects in terms of components.&lt;br /&gt;
* Uni-test the developed components to ensure quality.&lt;br /&gt;
* Integrate the results into an executable system.&lt;br /&gt;
&lt;br /&gt;
The whole system can be realized as an implementation of various components. RUP enables the integration of those components, in a revolutionary way, making the system easier to maintain and increasing the possibilities for future re-use.&lt;br /&gt;
&lt;br /&gt;
==== Test ====&lt;br /&gt;
&lt;br /&gt;
In the implementation discipline, all the developed components were uni-tested individually and were integrated into the system. The purpose of the Test discipline is to assess the system as a whole and verify the product quality. It is a mechanism to verify the smooth interaction between the various components, their proper integration into the system and finally ensure that all requirements have been successfully implemented. All tests are carried out along 4 quality dimensions:&lt;br /&gt;
* Functionality.&lt;br /&gt;
* Reliability.&lt;br /&gt;
* Application Performance.&lt;br /&gt;
* System Performance.&lt;br /&gt;
&lt;br /&gt;
==== Deployment ====&lt;br /&gt;
&lt;br /&gt;
The purpose of the Deployment discipline is primarily to develop product releases and distribute the software to the end – users. More specifically the Deployment discipline focuses at:&lt;br /&gt;
&lt;br /&gt;
* Developing external software releases&lt;br /&gt;
* Distributing the software&lt;br /&gt;
* Installing the software&lt;br /&gt;
* Providing help to the end – users&lt;br /&gt;
* Creating an up-to-date user manual&lt;br /&gt;
* Conducting beta testing&lt;br /&gt;
&lt;br /&gt;
==== Project Management ====&lt;br /&gt;
&lt;br /&gt;
The purpose of the Project Management discipline, is to successfully balance competing objectives, manage and mitigate risks and finally handle any constraints on delivering the product. Project management, ideally provides:&lt;br /&gt;
&lt;br /&gt;
* A framework for managing software-intensive projects.&lt;br /&gt;
* A framework to successfully manage risks.&lt;br /&gt;
* A framework to plan, execute and monitor projects.&lt;br /&gt;
&lt;br /&gt;
While the discipline does not guarantee success, the odds of delivering successful software are greatly improved  &amp;lt;ref name=&amp;quot;Walker Royce&amp;quot;&amp;gt;Walker Royce, Software Project Management  A Unified Framework, Addison-Wesley, 1998. &amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==== Configuration and Change Management ====&lt;br /&gt;
&lt;br /&gt;
The purpose of the Configuration and Change Management Discipline is to control, maintain and configure all the various artifacts that are produced by the different actors that are working on a project. During the software development life cycle, artifacts are regularly updated (changed). In order to understand the current state of an artifact, it is very important to keep track of its location and history; what was the reason and who decided to change the artifact. The discipline helps create a framework that keeps track of all the project assets.&lt;br /&gt;
&lt;br /&gt;
==== Environment ====&lt;br /&gt;
&lt;br /&gt;
The purpose of the environment discipline, is to provide the development team with all the processes, tools and methods for supporting all developing activities. It is responsible for producing a Development Kit, able to provide guidelines and templates for customizing processes.&lt;br /&gt;
&lt;br /&gt;
== Why RUP - Best Practices ==&lt;br /&gt;
&lt;br /&gt;
RUP captures many of the “best practices” that are currently used in modern software development and more particularly in industry by successful organizations. The practices are:&lt;br /&gt;
&lt;br /&gt;
* Develop Software Iteratively&lt;br /&gt;
* Manage Requirements&lt;br /&gt;
* Use component-based architectures&lt;br /&gt;
* Visually model software&lt;br /&gt;
* Continuously verify software quality&lt;br /&gt;
* Control changes to software&lt;br /&gt;
&lt;br /&gt;
=== Develop Software iteratively ===&lt;br /&gt;
&lt;br /&gt;
Today’s high sophisticated software systems, consist of many and complex structures which make it nearly impossible to define the entire system from the very beginning, develop the entire solution and then test the product in the end. RUP uses an iterative approach that allows an increasing understanding of the problem and developing a step – by – step solution, over multiple iterations. Each iteration ends with an executable release, which enables continuous end - user involvement and feedback. As a result, the risks of the project are mitigated at an early stage and stakeholders are ensured that the project requirements are fulfilled &amp;lt;ref name=&amp;quot;Barry W. Boehm 2&amp;quot;&amp;gt;Barry W. Boehm, A Spiral Model of Software Development and Enhancement, Computer, May 1988, IEEE, pp.61-72 &amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Manage requirements ===&lt;br /&gt;
&lt;br /&gt;
The requirements of a system include the description of the services that the system is able to provide and its operational constraints. RUP documents, organizes and tracks required functionality and constraints and easily communicates business requirements. The use – cases that are used in the process are an excellent way to ensure that requirements are actually those elements that drive the design, implementation and testing of software, making it more likely that the final system fulfills the stakeholders needs.&lt;br /&gt;
&lt;br /&gt;
=== Use component-based architectures ===&lt;br /&gt;
&lt;br /&gt;
Component-based architecture makes the system dynamic; components are independent from the system and interact with other components through well-defined interfaces. Their in-dependency from the system, gives them a great flexibility meaning that they can easily be added, updated or totally replaced. RUP supports component-based software development by providing a systematic approach to defining an architecture using new and existing components.&lt;br /&gt;
&lt;br /&gt;
=== Visually model software ===&lt;br /&gt;
&lt;br /&gt;
A model is an abstraction of reality that can help better comprehend large and complex systems. Visual abstractions help the development team to easily communicate different aspects of the software and see how all the components fit together. RUP uses the [http://www.uml.org/ Unified Modelling Language (UML)] standard which is a graphical language for visualizing and constructing the artifacts of a software-intensive system.&lt;br /&gt;
&lt;br /&gt;
=== Continuously verify software quality ===&lt;br /&gt;
&lt;br /&gt;
In software development, quality should always be reviewed with respect to the requirements based on reliability, functionality , application and system performance. In RUP, quality verification and assessment is built into the process, inside all activities, including all stakeholders and is not treated as a separate activity, performed by a separate group.&lt;br /&gt;
&lt;br /&gt;
=== Control changes to software ===&lt;br /&gt;
&lt;br /&gt;
A software system is developed by a number of teams or individuals, using different platforms and at times being in different locations. As a result, it is essential to somehow make sure that all the changes made in the system are synchronized and constantly verified. RUP ensures that all the individuals working in the project are well informed about any changes and everything is in sync. The process describes how to control, track and monitor changes to enable successful iterative development.&lt;br /&gt;
&lt;br /&gt;
== Limitations ==&lt;br /&gt;
&lt;br /&gt;
While being a complete methodology in itself with an emphasis on accurate documentation and quickly resolving project associated risks, RUP comes with a number of limitations.&lt;br /&gt;
&lt;br /&gt;
* In order for team members to start developing software under this methodology, they need to be &#039;&#039;&#039;experts&#039;&#039;&#039; in their respective fields.&lt;br /&gt;
* The development process can easily become too complex to handle.&lt;br /&gt;
* When working with cutting - edge projects that highly utilize new technology, components will not be able to be reused. &lt;br /&gt;
* While in theory integration throughout the process of software development sounds like a good thing, when working with particularly complex projects with multiple development streams, issues and significant confusion may rise during the stages of testing.&lt;br /&gt;
&lt;br /&gt;
== Conclusion ==&lt;br /&gt;
&lt;br /&gt;
The Rational Unified Process, is an exemplary method for addressing and mitigating risks from the very early stages, by rapidly developing an initial version of the system (prototype) that describes its architecture. There are not fixed requirements from the beginning but rather allows refining requirements , while the project progresses. It expects and actually deals with change pretty well while its main focus is the quality of the product and the degree to which it satisfies its end - users, throughout the project life-cycle. However, while being a complete and well documented methodology, it should be stressed that remains a very complex one. In order to increase the likelihood of success, while adopting this methodology, all the project members need to be &#039;&#039;&#039;experts&#039;&#039;&#039; in their respective fields. The method can easily become too difficult to learn and most importantly too difficult to apply.&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Lessisv</name></author>
	</entry>
	<entry>
		<id>http://13.50.150.85/index.php?title=Rational_Unified_Process_(RUP)&amp;diff=14778</id>
		<title>Rational Unified Process (RUP)</title>
		<link rel="alternate" type="text/html" href="http://13.50.150.85/index.php?title=Rational_Unified_Process_(RUP)&amp;diff=14778"/>
		<updated>2015-09-26T13:03:04Z</updated>

		<summary type="html">&lt;p&gt;Lessisv: /* Develop Software iteratively */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The &#039;&#039;&#039;Rational Unified Process (RUP)&#039;&#039;&#039; is an iterative, &#039;&#039;&#039;software development methodology&#039;&#039;&#039;, firstly introduced by the [https://en.wikipedia.org/wiki/Rational_Software Rational Software Corporation] which was [http://www-03.ibm.com/press/us/en/pressrelease/314.wss acquired by IBM] in 2003. RUP is a disciplined approach to assign tasks within a development organization and software project teams. It was developed to ensure the production of &#039;&#039;&#039;high quality software&#039;&#039;&#039; by providing the development team with a set of &#039;&#039;&#039;guidelines, templates and tool mentors&#039;&#039;&#039;, for all the critical life-cycle activities within a project. This cluster of objects, form a knowledge base that is shared between all project team members. As a result, no matter what each member is working with (e.g testing, designing, managing), they all share a common language and view on how to develop software. Consequently, team productivity is boosted, in order to deliver software that can meet and exceed the needs and expectations of end-users, strictly following a predictable budget and schedule &amp;lt;ref name=&amp;quot;Ivar Jacobson, Grady Booch, and Jim Rumbaugh&amp;quot;&amp;gt;Ivar Jacobson, Grady Booch, and Jim Rumbaugh, Unified Software Development Process, Addison-Wesley, 1999.&amp;lt;/ref&amp;gt;. RUP is the most popular and extensively documented refinement of the [https://en.wikipedia.org/wiki/Unified_Process Unified Process], an iterative and incremental software development process framework. Other worth mentioning forms are the [https://en.wikipedia.org/wiki/OpenUP OpenUP] and [https://en.wikipedia.org/wiki/Agile_Unified_Process Agile Unified Process].&lt;br /&gt;
&lt;br /&gt;
== Process Overview ==&lt;br /&gt;
&lt;br /&gt;
[[File:RUP.png|450px|right|thumb| Figure 1. The iterative model graph shows how the process is structured along two dimensions]]&lt;br /&gt;
&lt;br /&gt;
The best possible way to describe the methodology is through a 2 - dimensional graph &amp;lt;ref name=&amp;quot;IBM (2005) Rational Unified Process&amp;quot;&amp;gt;IBM (2005) Rational Unified Process – Best Practices for Software Development Teams. Rational Software White paper. Rational&amp;lt;/ref&amp;gt;.&lt;br /&gt;
* The first dimension (horizontal axis) represents the &#039;&#039;&#039;dynamic aspect&#039;&#039;&#039; of the process. It expresses &#039;&#039;&#039;time&#039;&#039;&#039; in terms of &#039;&#039;&#039;phases&#039;&#039;&#039; and &#039;&#039;&#039;iterations&#039;&#039;&#039;. &lt;br /&gt;
* The second dimension (vertical axis) represents the &#039;&#039;&#039;static aspect&#039;&#039;&#039; of the process. It expresses &#039;&#039;&#039;workflows&#039;&#039;&#039; in terms of 6 core and 3 supporting &#039;&#039;&#039;disciplines&#039;&#039;&#039; (more on that on &amp;quot;Disciplines&amp;quot; section).&lt;br /&gt;
&lt;br /&gt;
=== Time Dimension - Phases and Iterations ===&lt;br /&gt;
When developing software, the project team goes through a multi-step process, from establishing a system&#039;s requirements to designing, implementing and finally maintaining the software with new releases. This is the software life cycle  &amp;lt;ref name=&amp;quot;IBM (2003) The Rational Unified Process®&amp;quot;&amp;gt;IBM (2003) The Rational Unified Process®, Version 2003.06.12.01, Rational Software Corporation.&amp;lt;/ref&amp;gt;. RUP delicately breaks the software life cycle down to four consecutive phases &amp;lt;ref name=&amp;quot;Philippe Kruchten&amp;quot;&amp;gt;A Rational Development Process, CrossTalk, 9 (7), STSC, Hill AFB, UT, pp.11-16.&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
* Inception phase&lt;br /&gt;
* Elaboration phase&lt;br /&gt;
* Construction phase&lt;br /&gt;
* Transition phase&lt;br /&gt;
&lt;br /&gt;
Depending on the project, each of these phases can consist of one to a number of &#039;&#039;&#039;iterations&#039;&#039;&#039;. An iteration is defined as a complete development loop, resulting in a new product release. All the phases include a well-defined milestone, in order to be completed. In the end of every phase, the development team can evaluate whether all the key goals have been achieved, all stakeholders have been considered and the actual expenditures correspond with the planned ones  &amp;lt;ref name=&amp;quot;Barry W. Boehm&amp;quot;&amp;gt;Barry W. Boehm, Anchoring the Software Process, IEEE Software, 13, 4, July 1996, pp. 73-82. &amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[File:RUP_phases.png|550px|right|thumb| Figure 2. The four phases and milestones of a project]]&lt;br /&gt;
==== Inception Phase ====&lt;br /&gt;
The first phase is the inception phase. The focus of this phase, is understanding the scope of the project and studying if is both worth doing and possible to do. All the internal and external entities that the system will interact with are identified and the nature of the interaction is well defined at a high level. For this reason, the inception phase is primarily significant for new development projects. &lt;br /&gt;
The expected outcome of the inception phase includes :&lt;br /&gt;
&lt;br /&gt;
* A vision document: The document states the general vision of the project including its key requirements, features and main constraints.&lt;br /&gt;
* An initial use-case model (10%-20% complete)&lt;br /&gt;
* An initial project glossary&lt;br /&gt;
* An initial business case, including the business context, success criteria and a financial forecast.&lt;br /&gt;
* An initial risk assessment&lt;br /&gt;
* A project plan (phases and iterations)&lt;br /&gt;
* A business model (if necessary)&lt;br /&gt;
* Prototypes&lt;br /&gt;
&lt;br /&gt;
At the end of the inception phase lies the first major project milestone; the &#039;&#039;&#039;Lifecycle Objective Milestone&#039;&#039;&#039;.&lt;br /&gt;
The inception phase has five evaluation criteria:&lt;br /&gt;
&lt;br /&gt;
* Stakeholder concurrence on scope definition and cost/schedule estimates.&lt;br /&gt;
* Depth and breadth of any prototype that was developed.&lt;br /&gt;
* Actual expenditures versus planned ones.&lt;br /&gt;
* Requirements understanding.&lt;br /&gt;
* Credibility of the cost/schedule estimates, risks and priorities.&lt;br /&gt;
&lt;br /&gt;
If for any reason the project fails to pass this milestone, it can either be completely cancelled or re-designed to successfully meet the criteria.&lt;br /&gt;
 &lt;br /&gt;
==== Elaboration Phase ====&lt;br /&gt;
The second phase is the elaboration phase. The focus of this phase, is establishing a baseline to the architecture of the system, further developing the project plan and analyzing the problem domain while trying to mitigate the highest risk elements. In other words, this is the phase where the project starts to take shape. One of the most important characteristics of this phase, is the production of a component-based architectural prototype. The purpose of this prototype, is to address the critical use-cases that were identified in the previous phase, and hopefully expose the highest technical risks of the project. The expected outcome of the elaboration phase includes:&lt;br /&gt;
&lt;br /&gt;
* A use-case model (at least 80% complete) which will be able to identify all the actors and use-cases.&lt;br /&gt;
* Supplementary requirements (if any).&lt;br /&gt;
* A clear description of the software architecture.&lt;br /&gt;
* An architectural prototype.&lt;br /&gt;
* A more detailed risk assessment and business case.&lt;br /&gt;
* A development plan for the overall project.&lt;br /&gt;
* A preliminary user manual (optional).&lt;br /&gt;
&lt;br /&gt;
At the end of the elaboration phase lies the second major project milestone; the &#039;&#039;&#039;Lifecycle Architecture Milestone&#039;&#039;&#039;.&lt;br /&gt;
The elaboration phase has six evaluation criteria:&lt;br /&gt;
&lt;br /&gt;
* Is the vision stable enough?&lt;br /&gt;
* Is the system architecture stable enough?&lt;br /&gt;
* Have all the major risks been successfully identified and resolved?&lt;br /&gt;
* Is the plan for the construction phase accurate enough?&lt;br /&gt;
* Do all the stakeholders share the opinion that the vision can be achieved by executing the current plan?&lt;br /&gt;
* Is the actual vs planned resource expenditure in acceptable levels?&lt;br /&gt;
&lt;br /&gt;
If the project fails to pass the milestone, there is still time to be re-designed or even cancelled. However, when the project moves to the next phase the associated operation risks raise significantly and changes become much more difficult.&lt;br /&gt;
&lt;br /&gt;
==== Construction Phase====&lt;br /&gt;
The third phase is the construction phase. The focus of this phase, is to develop and integrate all the remaining components and application features into the product. In other words this is the phase where the vision is finally translated into a final stable product, which is based on the architecture that was developed during the previous phases  &amp;lt;ref name=&amp;quot;KRUCHTEN, P. (2000)&amp;quot;&amp;gt;KRUCHTEN, P. (2000) The Rational Unified Process - An Introduction, Second Edition, Addison-Wesley.&amp;lt;/ref&amp;gt;. Most emphasize is given to resources, control and process management in order to fully optimize costs, schedules and quality &amp;lt;ref name=&amp;quot;IBM (2003) The Rational Unified Process®&amp;quot;&amp;gt;IBM (2003) The Rational Unified Process®, Version 2003.06.12.01, Rational Software Corporation.&amp;lt;/ref&amp;gt;. The existing prototype evolves via a number of iterations into a fully functional product that meets the stakeholders&#039; needs. The construction phase is usually the longest one of the project life cycle. The expected outcome of the construction phase includes:&lt;br /&gt;
&lt;br /&gt;
* First external release of the software.&lt;br /&gt;
* User manuals.&lt;br /&gt;
* A detailed description of the current release.&lt;br /&gt;
&lt;br /&gt;
At the end of the construction phase lies the third major project milestone; the &#039;&#039;&#039;Initial Operation Capability Milestone&#039;&#039;&#039;.&lt;br /&gt;
The construction phase has three evaluation criteria:&lt;br /&gt;
&lt;br /&gt;
* Is the software release stable enough to be given to the user community?&lt;br /&gt;
* Are all the stakeholders ready for the transition to the user community?&lt;br /&gt;
* Is the actual vs planned resource expenditure in acceptable levels?&lt;br /&gt;
&lt;br /&gt;
If the project fails to pass this milestone, transition may have to be postponed by one release.&lt;br /&gt;
&lt;br /&gt;
==== Transition Phase ====&lt;br /&gt;
The fourth and final phase is the transition phase. The focus of this phase is, as the word says, to transition the software product to the user community. It includes ensuring that the product has been developed to an acceptable quality level, by beta testing the software through the end users, and validating it against the stakeholders&#039; expectations. Once the product has been given for beta testing, a number of issues can arise, requiring the development of new releases (fixing bugs) and adding features that may have been postponed. The expected outcome of the transition phase includes:&lt;br /&gt;
&lt;br /&gt;
* Beta-testing to fix any major [https://en.wikipedia.org/wiki/Software_bug software bugs] and add any missing features.&lt;br /&gt;
* Conversion of operational databases&lt;br /&gt;
* Training of end users and maintainers.&lt;br /&gt;
* Marketing and distribution of the product.&lt;br /&gt;
&lt;br /&gt;
At the end of the transition phase lies the fourth and final major project milestone; the &#039;&#039;&#039;Product Release&#039;&#039;&#039;.&lt;br /&gt;
The transition phase has two evaluation criteria:&lt;br /&gt;
&lt;br /&gt;
* Are the end - users satisfied with the product?&lt;br /&gt;
* Is the actual vs planned resource expenditure in acceptable levels?&lt;br /&gt;
&lt;br /&gt;
==== Iterations ====&lt;br /&gt;
As stated before, every phase can consist of a number of iterations, depending on the project size and scope. RUP, in comparison to the traditional [https://en.wikipedia.org/wiki/Waterfall_model waterfall] approach, is heavily based on iterations. This gives a number of advantages and benefits to the project team, with the most important one being mitigating risks much more earlier in the project. Moreover, change is more manageable and there is normally a higher level of reuse. Finally, iterations ensure an overall high quality in the final product and that the project team can learn throughout the developing process &amp;lt;ref name=&amp;quot;KRUCHTEN, P.&amp;quot;&amp;gt; KRUCHTEN, P. A Rational Development Process, CrossTalk, 9 (7), STSC, Hill AFB, UT, pp.11-16.&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Workflow Dimension - Disciplines ===&lt;br /&gt;
&lt;br /&gt;
[[File:activities.png|350px|right|thumb| Figure 4. Individuals, Roles and Activities]]&lt;br /&gt;
[[File:workflows.png|350px|right|thumb| Figure 5. Example of a workflow]]&lt;br /&gt;
&lt;br /&gt;
A process describes &#039;&#039;&#039;who&#039;&#039;&#039; is doing &#039;&#039;&#039;what&#039;&#039;&#039;, &#039;&#039;&#039;how&#039;&#039;&#039; and &#039;&#039;&#039;when&#039;&#039;&#039;. RUP addresses those terms with four modelling elements; &#039;&#039;&#039;Roles&#039;&#039;&#039;, &#039;&#039;&#039;Activities&#039;&#039;&#039;, &#039;&#039;&#039;Artifacts&#039;&#039;&#039; and &#039;&#039;&#039;Workflows&#039;&#039;&#039; respectively  &amp;lt;ref name=&amp;quot;IBM (2005) Rational Unified Process&amp;quot;&amp;gt; IBM (2005) Rational Unified Process – Best Practices for Software Development Teams. Rational Software White paper. Rational. &amp;lt;/ref&amp;gt;. A &#039;&#039;&#039;role&#039;&#039;&#039;, formally addressed as a worker, describes the behavior and responsibilities of an individual or a group of individuals in order to produce an artifact. Throughout the development of a project, a person can play one or a number of roles. Some examples of roles are the system analyst, designer, tester. &#039;&#039;&#039;Activities&#039;&#039;&#039; are expressed through behaviors. An activity, is a job that a person performs through his role, as seen in Figure 4. The length of an activity may vary from a few hours to a number of days. Examples of activities are: Plan an operation - performed by the role of Project Manager or add a missing feature - performed by the role of a software developer. All activities produce a meaningful result, called an artifact. &#039;&#039;&#039;Artifacts&#039;&#039;&#039;, are the responsibilities of ones role or roles and express a piece of information that is produced, modified or even used by a process. They can act both as input or output of an activity. Examples of artifacts are the source code, the business case, the software architecture. The roles perform activities that can produce a sequence of artifacts, called &#039;&#039;&#039;workflows&#039;&#039;&#039;. Examples of workflows can be seen in Figure 5. &lt;br /&gt;
&lt;br /&gt;
RUP identifies nine core process workflows, called &#039;&#039;&#039;disciplines&#039;&#039;&#039;. Every discipline, addresses a set of activities and artifacts, based upon a set of skills that are common in an ICT project. These disciplines have the ability to arrange the activities and artifacts in such a way, to provide an understanding of the overall project from a waterfall perspective  &amp;lt;ref name=&amp;quot;RATIONALUNIVERSITY (2003) PRJ270&amp;quot;&amp;gt;RATIONALUNIVERSITY (2003) PRJ270: Essentials of Rational Unified Process - Student Manual, IBM Corporation. &amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
There are six core &amp;quot;engineering&amp;quot; disciplines:&lt;br /&gt;
* Business Modelling Discipline&lt;br /&gt;
* Requirements Discipline&lt;br /&gt;
* Analysis and Design Discipline&lt;br /&gt;
* Implementation Discipline&lt;br /&gt;
* Test Discipline&lt;br /&gt;
* Deployment Discipline&lt;br /&gt;
&lt;br /&gt;
And three core &amp;quot;supporting&amp;quot; disciplines:&lt;br /&gt;
* Project Management Discipline&lt;br /&gt;
* Configuration and Change Management Discipline&lt;br /&gt;
* Environment Discipline&lt;br /&gt;
&lt;br /&gt;
==== Business Modelling ====&lt;br /&gt;
&lt;br /&gt;
Miscommunication between the software engineering community and the business engineering community is one of the most common problems among most business engineering efforts. This means that the output from software development efforts is not correctly used as input to the business engineering and vice versa. The purpose of the Business Modelling discipline is to provide a common language between the two communities and create a direct coupling between software and business models. All business processes are documented using &amp;quot;use cases&amp;quot;. This assures that all stakeholders share the same understanding of the demanding organization.&lt;br /&gt;
&lt;br /&gt;
==== Requirements ====&lt;br /&gt;
The purpose of the requirements discipline is to describe in detail &#039;&#039;&#039;what&#039;&#039;&#039; the system should do. Based on that, a Vision document is created where required functionality and constraints are documented. Moreover, actors (end - users) and use cases (behaviors of the system) are identified. Use cases are described in detail and each description clearly shows how the system interacts with the actors. This way an agreement is established between the customers and the rest of the stakeholders regarding the system&#039;s capabilities, user-interface and the end user&#039;s needs.&lt;br /&gt;
&lt;br /&gt;
==== Analysis and Design ====&lt;br /&gt;
&lt;br /&gt;
The purpose of the Analysis and Design discipline it to investigate &#039;&#039;&#039;how&#039;&#039;&#039; the system requirements will be translated into a detailed implementation plan. The system needs to:&lt;br /&gt;
* Perform exactly as described in the use-case descriptions.&lt;br /&gt;
* Fulfill all requirements.&lt;br /&gt;
* Have a robust structure.&lt;br /&gt;
&lt;br /&gt;
Analysis and Design result in the creation of a &#039;&#039;&#039;design model&#039;&#039;&#039;  &amp;lt;ref name=&amp;quot;KRUCHTEN, P.&amp;quot;&amp;gt;KRUCHTEN, P. (2000) The Rational Unified Process - An Introduction, Second Edition, Addison-Wesley&amp;lt;/ref&amp;gt;. The design model is an abstraction of the system&#039;s architecture and acts as a guide of how the source code should be finally written and structured.&lt;br /&gt;
&lt;br /&gt;
==== Implementation ====&lt;br /&gt;
The purpose of the Implementation discipline is to:&lt;br /&gt;
&lt;br /&gt;
* Arrange the code into subsystems, organized in layers.&lt;br /&gt;
* Implement classes and objects in terms of components.&lt;br /&gt;
* Uni-test the developed components to ensure quality.&lt;br /&gt;
* Integrate the results into an executable system.&lt;br /&gt;
&lt;br /&gt;
The whole system can be realized as an implementation of various components. RUP enables the integration of those components, in a revolutionary way, making the system easier to maintain and increasing the possibilities for future re-use.&lt;br /&gt;
&lt;br /&gt;
==== Test ====&lt;br /&gt;
&lt;br /&gt;
In the implementation discipline, all the developed components were uni-tested individually and were integrated into the system. The purpose of the Test discipline is to assess the system as a whole and verify the product quality. It is a mechanism to verify the smooth interaction between the various components, their proper integration into the system and finally ensure that all requirements have been successfully implemented. All tests are carried out along 4 quality dimensions:&lt;br /&gt;
* Functionality.&lt;br /&gt;
* Reliability.&lt;br /&gt;
* Application Performance.&lt;br /&gt;
* System Performance.&lt;br /&gt;
&lt;br /&gt;
==== Deployment ====&lt;br /&gt;
&lt;br /&gt;
The purpose of the Deployment discipline is primarily to develop product releases and distribute the software to the end – users. More specifically the Deployment discipline focuses at:&lt;br /&gt;
&lt;br /&gt;
* Developing external software releases&lt;br /&gt;
* Distributing the software&lt;br /&gt;
* Installing the software&lt;br /&gt;
* Providing help to the end – users&lt;br /&gt;
* Creating an up-to-date user manual&lt;br /&gt;
* Conducting beta testing&lt;br /&gt;
&lt;br /&gt;
==== Project Management ====&lt;br /&gt;
&lt;br /&gt;
The purpose of the Project Management discipline, is to successfully balance competing objectives, manage and mitigate risks and finally handle any constraints on delivering the product. Project management, ideally provides:&lt;br /&gt;
&lt;br /&gt;
* A framework for managing software-intensive projects.&lt;br /&gt;
* A framework to successfully manage risks.&lt;br /&gt;
* A framework to plan, execute and monitor projects.&lt;br /&gt;
&lt;br /&gt;
While the discipline does not guarantee success, the odds of delivering successful software are greatly improved  &amp;lt;ref name=&amp;quot;Walker Royce&amp;quot;&amp;gt;Walker Royce, Software Project Management  A Unified Framework, Addison-Wesley, 1998. &amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==== Configuration and Change Management ====&lt;br /&gt;
&lt;br /&gt;
The purpose of the Configuration and Change Management Discipline is to control, maintain and configure all the various artifacts that are produced by the different actors that are working on a project. During the software development life cycle, artifacts are regularly updated (changed). In order to understand the current state of an artifact, it is very important to keep track of its location and history; what was the reason and who decided to change the artifact. The discipline helps create a framework that keeps track of all the project assets.&lt;br /&gt;
&lt;br /&gt;
==== Environment ====&lt;br /&gt;
&lt;br /&gt;
The purpose of the environment discipline, is to provide the development team with all the processes, tools and methods for supporting all developing activities. It is responsible for producing a Development Kit, able to provide guidelines and templates for customizing processes.&lt;br /&gt;
&lt;br /&gt;
== Why RUP - Best Practices ==&lt;br /&gt;
&lt;br /&gt;
RUP captures many of the “best practices” that are currently used in modern software development and more particularly in industry by successful organizations. The practices are:&lt;br /&gt;
&lt;br /&gt;
* Develop Software Iteratively&lt;br /&gt;
* Manage Requirements&lt;br /&gt;
* Use component-based architectures&lt;br /&gt;
* Visually model software&lt;br /&gt;
* Continuously verify software quality&lt;br /&gt;
* Control changes to software&lt;br /&gt;
&lt;br /&gt;
=== Develop Software iteratively ===&lt;br /&gt;
&lt;br /&gt;
Today’s high sophisticated software systems, consist of many and complex structures which make it nearly impossible to define the entire system from the very beginning, develop the entire solution and then test the product in the end. RUP uses an iterative approach that allows an increasing understanding of the problem and developing a step – by – step solution, over multiple iterations. Each iteration ends with an executable release, which enables continuous end - user involvement and feedback. As a result, the risks of the project are mitigated at an early stage and stakeholders are ensured that the project requirements are fulfilled.  &amp;lt;ref name=&amp;quot;Barry W. Boehm 2&amp;quot;&amp;gt;Barry W. Boehm, A Spiral Model of Software Development and Enhancement, Computer, May 1988, IEEE, pp.61-72 &amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Manage requirements ===&lt;br /&gt;
&lt;br /&gt;
The requirements of a system include the description of the services that the system is able to provide and its operational constraints. RUP documents, organizes and tracks required functionality and constraints and easily communicates business requirements. The use – cases that are used in the process are an excellent way to ensure that requirements are actually those elements that drive the design, implementation and testing of software, making it more likely that the final system fulfills the stakeholders needs.&lt;br /&gt;
&lt;br /&gt;
=== Use component-based architectures ===&lt;br /&gt;
&lt;br /&gt;
Component-based architecture makes the system dynamic; components are independent from the system and interact with other components through well-defined interfaces. Their in-dependency from the system, gives them a great flexibility meaning that they can easily be added, updated or totally replaced. RUP supports component-based software development by providing a systematic approach to defining an architecture using new and existing components.&lt;br /&gt;
&lt;br /&gt;
=== Visually model software ===&lt;br /&gt;
&lt;br /&gt;
A model is an abstraction of reality that can help better comprehend large and complex systems. Visual abstractions help the development team to easily communicate different aspects of the software and see how all the components fit together. RUP uses the [http://www.uml.org/ Unified Modelling Language (UML)] standard which is a graphical language for visualizing and constructing the artifacts of a software-intensive system.&lt;br /&gt;
&lt;br /&gt;
=== Continuously verify software quality ===&lt;br /&gt;
&lt;br /&gt;
In software development, quality should always be reviewed with respect to the requirements based on reliability, functionality , application and system performance. In RUP, quality verification and assessment is built into the process, inside all activities, including all stakeholders and is not treated as a separate activity, performed by a separate group.&lt;br /&gt;
&lt;br /&gt;
=== Control changes to software ===&lt;br /&gt;
&lt;br /&gt;
A software system is developed by a number of teams or individuals, using different platforms and at times being in different locations. As a result, it is essential to somehow make sure that all the changes made in the system are synchronized and constantly verified. RUP ensures that all the individuals working in the project are well informed about any changes and everything is in sync. The process describes how to control, track and monitor changes to enable successful iterative development.&lt;br /&gt;
&lt;br /&gt;
== Limitations ==&lt;br /&gt;
&lt;br /&gt;
While being a complete methodology in itself with an emphasis on accurate documentation and quickly resolving project associated risks, RUP comes with a number of limitations.&lt;br /&gt;
&lt;br /&gt;
* In order for team members to start developing software under this methodology, they need to be &#039;&#039;&#039;experts&#039;&#039;&#039; in their respective fields.&lt;br /&gt;
* The development process can easily become too complex to handle.&lt;br /&gt;
* When working with cutting - edge projects that highly utilize new technology, components will not be able to be reused. &lt;br /&gt;
* While in theory integration throughout the process of software development sounds like a good thing, when working with particularly complex projects with multiple development streams, issues and significant confusion may rise during the stages of testing.&lt;br /&gt;
&lt;br /&gt;
== Conclusion ==&lt;br /&gt;
&lt;br /&gt;
The Rational Unified Process, is an exemplary method for addressing and mitigating risks from the very early stages, by rapidly developing an initial version of the system (prototype) that describes its architecture. There are not fixed requirements from the beginning but rather allows refining requirements , while the project progresses. It expects and actually deals with change pretty well while its main focus is the quality of the product and the degree to which it satisfies its end - users, throughout the project life-cycle. However, while being a complete and well documented methodology, it should be stressed that remains a very complex one. In order to increase the likelihood of success, while adopting this methodology, all the project members need to be &#039;&#039;&#039;experts&#039;&#039;&#039; in their respective fields. The method can easily become too difficult to learn and most importantly too difficult to apply.&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Lessisv</name></author>
	</entry>
	<entry>
		<id>http://13.50.150.85/index.php?title=Rational_Unified_Process_(RUP)&amp;diff=14776</id>
		<title>Rational Unified Process (RUP)</title>
		<link rel="alternate" type="text/html" href="http://13.50.150.85/index.php?title=Rational_Unified_Process_(RUP)&amp;diff=14776"/>
		<updated>2015-09-26T13:01:32Z</updated>

		<summary type="html">&lt;p&gt;Lessisv: /* Develop Software iteratively */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The &#039;&#039;&#039;Rational Unified Process (RUP)&#039;&#039;&#039; is an iterative, &#039;&#039;&#039;software development methodology&#039;&#039;&#039;, firstly introduced by the [https://en.wikipedia.org/wiki/Rational_Software Rational Software Corporation] which was [http://www-03.ibm.com/press/us/en/pressrelease/314.wss acquired by IBM] in 2003. RUP is a disciplined approach to assign tasks within a development organization and software project teams. It was developed to ensure the production of &#039;&#039;&#039;high quality software&#039;&#039;&#039; by providing the development team with a set of &#039;&#039;&#039;guidelines, templates and tool mentors&#039;&#039;&#039;, for all the critical life-cycle activities within a project. This cluster of objects, form a knowledge base that is shared between all project team members. As a result, no matter what each member is working with (e.g testing, designing, managing), they all share a common language and view on how to develop software. Consequently, team productivity is boosted, in order to deliver software that can meet and exceed the needs and expectations of end-users, strictly following a predictable budget and schedule &amp;lt;ref name=&amp;quot;Ivar Jacobson, Grady Booch, and Jim Rumbaugh&amp;quot;&amp;gt;Ivar Jacobson, Grady Booch, and Jim Rumbaugh, Unified Software Development Process, Addison-Wesley, 1999.&amp;lt;/ref&amp;gt;. RUP is the most popular and extensively documented refinement of the [https://en.wikipedia.org/wiki/Unified_Process Unified Process], an iterative and incremental software development process framework. Other worth mentioning forms are the [https://en.wikipedia.org/wiki/OpenUP OpenUP] and [https://en.wikipedia.org/wiki/Agile_Unified_Process Agile Unified Process].&lt;br /&gt;
&lt;br /&gt;
== Process Overview ==&lt;br /&gt;
&lt;br /&gt;
[[File:RUP.png|450px|right|thumb| Figure 1. The iterative model graph shows how the process is structured along two dimensions]]&lt;br /&gt;
&lt;br /&gt;
The best possible way to describe the methodology is through a 2 - dimensional graph &amp;lt;ref name=&amp;quot;IBM (2005) Rational Unified Process&amp;quot;&amp;gt;IBM (2005) Rational Unified Process – Best Practices for Software Development Teams. Rational Software White paper. Rational&amp;lt;/ref&amp;gt;.&lt;br /&gt;
* The first dimension (horizontal axis) represents the &#039;&#039;&#039;dynamic aspect&#039;&#039;&#039; of the process. It expresses &#039;&#039;&#039;time&#039;&#039;&#039; in terms of &#039;&#039;&#039;phases&#039;&#039;&#039; and &#039;&#039;&#039;iterations&#039;&#039;&#039;. &lt;br /&gt;
* The second dimension (vertical axis) represents the &#039;&#039;&#039;static aspect&#039;&#039;&#039; of the process. It expresses &#039;&#039;&#039;workflows&#039;&#039;&#039; in terms of 6 core and 3 supporting &#039;&#039;&#039;disciplines&#039;&#039;&#039; (more on that on &amp;quot;Disciplines&amp;quot; section).&lt;br /&gt;
&lt;br /&gt;
=== Time Dimension - Phases and Iterations ===&lt;br /&gt;
When developing software, the project team goes through a multi-step process, from establishing a system&#039;s requirements to designing, implementing and finally maintaining the software with new releases. This is the software life cycle  &amp;lt;ref name=&amp;quot;IBM (2003) The Rational Unified Process®&amp;quot;&amp;gt;IBM (2003) The Rational Unified Process®, Version 2003.06.12.01, Rational Software Corporation.&amp;lt;/ref&amp;gt;. RUP delicately breaks the software life cycle down to four consecutive phases &amp;lt;ref name=&amp;quot;Philippe Kruchten&amp;quot;&amp;gt;A Rational Development Process, CrossTalk, 9 (7), STSC, Hill AFB, UT, pp.11-16.&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
* Inception phase&lt;br /&gt;
* Elaboration phase&lt;br /&gt;
* Construction phase&lt;br /&gt;
* Transition phase&lt;br /&gt;
&lt;br /&gt;
Depending on the project, each of these phases can consist of one to a number of &#039;&#039;&#039;iterations&#039;&#039;&#039;. An iteration is defined as a complete development loop, resulting in a new product release. All the phases include a well-defined milestone, in order to be completed. In the end of every phase, the development team can evaluate whether all the key goals have been achieved, all stakeholders have been considered and the actual expenditures correspond with the planned ones  &amp;lt;ref name=&amp;quot;Barry W. Boehm&amp;quot;&amp;gt;Barry W. Boehm, Anchoring the Software Process, IEEE Software, 13, 4, July 1996, pp. 73-82. &amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[File:RUP_phases.png|550px|right|thumb| Figure 2. The four phases and milestones of a project]]&lt;br /&gt;
==== Inception Phase ====&lt;br /&gt;
The first phase is the inception phase. The focus of this phase, is understanding the scope of the project and studying if is both worth doing and possible to do. All the internal and external entities that the system will interact with are identified and the nature of the interaction is well defined at a high level. For this reason, the inception phase is primarily significant for new development projects. &lt;br /&gt;
The expected outcome of the inception phase includes :&lt;br /&gt;
&lt;br /&gt;
* A vision document: The document states the general vision of the project including its key requirements, features and main constraints.&lt;br /&gt;
* An initial use-case model (10%-20% complete)&lt;br /&gt;
* An initial project glossary&lt;br /&gt;
* An initial business case, including the business context, success criteria and a financial forecast.&lt;br /&gt;
* An initial risk assessment&lt;br /&gt;
* A project plan (phases and iterations)&lt;br /&gt;
* A business model (if necessary)&lt;br /&gt;
* Prototypes&lt;br /&gt;
&lt;br /&gt;
At the end of the inception phase lies the first major project milestone; the &#039;&#039;&#039;Lifecycle Objective Milestone&#039;&#039;&#039;.&lt;br /&gt;
The inception phase has five evaluation criteria:&lt;br /&gt;
&lt;br /&gt;
* Stakeholder concurrence on scope definition and cost/schedule estimates.&lt;br /&gt;
* Depth and breadth of any prototype that was developed.&lt;br /&gt;
* Actual expenditures versus planned ones.&lt;br /&gt;
* Requirements understanding.&lt;br /&gt;
* Credibility of the cost/schedule estimates, risks and priorities.&lt;br /&gt;
&lt;br /&gt;
If for any reason the project fails to pass this milestone, it can either be completely cancelled or re-designed to successfully meet the criteria.&lt;br /&gt;
 &lt;br /&gt;
==== Elaboration Phase ====&lt;br /&gt;
The second phase is the elaboration phase. The focus of this phase, is establishing a baseline to the architecture of the system, further developing the project plan and analyzing the problem domain while trying to mitigate the highest risk elements. In other words, this is the phase where the project starts to take shape. One of the most important characteristics of this phase, is the production of a component-based architectural prototype. The purpose of this prototype, is to address the critical use-cases that were identified in the previous phase, and hopefully expose the highest technical risks of the project. The expected outcome of the elaboration phase includes:&lt;br /&gt;
&lt;br /&gt;
* A use-case model (at least 80% complete) which will be able to identify all the actors and use-cases.&lt;br /&gt;
* Supplementary requirements (if any).&lt;br /&gt;
* A clear description of the software architecture.&lt;br /&gt;
* An architectural prototype.&lt;br /&gt;
* A more detailed risk assessment and business case.&lt;br /&gt;
* A development plan for the overall project.&lt;br /&gt;
* A preliminary user manual (optional).&lt;br /&gt;
&lt;br /&gt;
At the end of the elaboration phase lies the second major project milestone; the &#039;&#039;&#039;Lifecycle Architecture Milestone&#039;&#039;&#039;.&lt;br /&gt;
The elaboration phase has six evaluation criteria:&lt;br /&gt;
&lt;br /&gt;
* Is the vision stable enough?&lt;br /&gt;
* Is the system architecture stable enough?&lt;br /&gt;
* Have all the major risks been successfully identified and resolved?&lt;br /&gt;
* Is the plan for the construction phase accurate enough?&lt;br /&gt;
* Do all the stakeholders share the opinion that the vision can be achieved by executing the current plan?&lt;br /&gt;
* Is the actual vs planned resource expenditure in acceptable levels?&lt;br /&gt;
&lt;br /&gt;
If the project fails to pass the milestone, there is still time to be re-designed or even cancelled. However, when the project moves to the next phase the associated operation risks raise significantly and changes become much more difficult.&lt;br /&gt;
&lt;br /&gt;
==== Construction Phase====&lt;br /&gt;
The third phase is the construction phase. The focus of this phase, is to develop and integrate all the remaining components and application features into the product. In other words this is the phase where the vision is finally translated into a final stable product, which is based on the architecture that was developed during the previous phases  &amp;lt;ref name=&amp;quot;KRUCHTEN, P. (2000)&amp;quot;&amp;gt;KRUCHTEN, P. (2000) The Rational Unified Process - An Introduction, Second Edition, Addison-Wesley.&amp;lt;/ref&amp;gt;. Most emphasize is given to resources, control and process management in order to fully optimize costs, schedules and quality &amp;lt;ref name=&amp;quot;IBM (2003) The Rational Unified Process®&amp;quot;&amp;gt;IBM (2003) The Rational Unified Process®, Version 2003.06.12.01, Rational Software Corporation.&amp;lt;/ref&amp;gt;. The existing prototype evolves via a number of iterations into a fully functional product that meets the stakeholders&#039; needs. The construction phase is usually the longest one of the project life cycle. The expected outcome of the construction phase includes:&lt;br /&gt;
&lt;br /&gt;
* First external release of the software.&lt;br /&gt;
* User manuals.&lt;br /&gt;
* A detailed description of the current release.&lt;br /&gt;
&lt;br /&gt;
At the end of the construction phase lies the third major project milestone; the &#039;&#039;&#039;Initial Operation Capability Milestone&#039;&#039;&#039;.&lt;br /&gt;
The construction phase has three evaluation criteria:&lt;br /&gt;
&lt;br /&gt;
* Is the software release stable enough to be given to the user community?&lt;br /&gt;
* Are all the stakeholders ready for the transition to the user community?&lt;br /&gt;
* Is the actual vs planned resource expenditure in acceptable levels?&lt;br /&gt;
&lt;br /&gt;
If the project fails to pass this milestone, transition may have to be postponed by one release.&lt;br /&gt;
&lt;br /&gt;
==== Transition Phase ====&lt;br /&gt;
The fourth and final phase is the transition phase. The focus of this phase is, as the word says, to transition the software product to the user community. It includes ensuring that the product has been developed to an acceptable quality level, by beta testing the software through the end users, and validating it against the stakeholders&#039; expectations. Once the product has been given for beta testing, a number of issues can arise, requiring the development of new releases (fixing bugs) and adding features that may have been postponed. The expected outcome of the transition phase includes:&lt;br /&gt;
&lt;br /&gt;
* Beta-testing to fix any major [https://en.wikipedia.org/wiki/Software_bug software bugs] and add any missing features.&lt;br /&gt;
* Conversion of operational databases&lt;br /&gt;
* Training of end users and maintainers.&lt;br /&gt;
* Marketing and distribution of the product.&lt;br /&gt;
&lt;br /&gt;
At the end of the transition phase lies the fourth and final major project milestone; the &#039;&#039;&#039;Product Release&#039;&#039;&#039;.&lt;br /&gt;
The transition phase has two evaluation criteria:&lt;br /&gt;
&lt;br /&gt;
* Are the end - users satisfied with the product?&lt;br /&gt;
* Is the actual vs planned resource expenditure in acceptable levels?&lt;br /&gt;
&lt;br /&gt;
==== Iterations ====&lt;br /&gt;
As stated before, every phase can consist of a number of iterations, depending on the project size and scope. RUP, in comparison to the traditional [https://en.wikipedia.org/wiki/Waterfall_model waterfall] approach, is heavily based on iterations. This gives a number of advantages and benefits to the project team, with the most important one being mitigating risks much more earlier in the project. Moreover, change is more manageable and there is normally a higher level of reuse. Finally, iterations ensure an overall high quality in the final product and that the project team can learn throughout the developing process &amp;lt;ref name=&amp;quot;KRUCHTEN, P.&amp;quot;&amp;gt; KRUCHTEN, P. A Rational Development Process, CrossTalk, 9 (7), STSC, Hill AFB, UT, pp.11-16.&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Workflow Dimension - Disciplines ===&lt;br /&gt;
&lt;br /&gt;
[[File:activities.png|350px|right|thumb| Figure 4. Individuals, Roles and Activities]]&lt;br /&gt;
[[File:workflows.png|350px|right|thumb| Figure 5. Example of a workflow]]&lt;br /&gt;
&lt;br /&gt;
A process describes &#039;&#039;&#039;who&#039;&#039;&#039; is doing &#039;&#039;&#039;what&#039;&#039;&#039;, &#039;&#039;&#039;how&#039;&#039;&#039; and &#039;&#039;&#039;when&#039;&#039;&#039;. RUP addresses those terms with four modelling elements; &#039;&#039;&#039;Roles&#039;&#039;&#039;, &#039;&#039;&#039;Activities&#039;&#039;&#039;, &#039;&#039;&#039;Artifacts&#039;&#039;&#039; and &#039;&#039;&#039;Workflows&#039;&#039;&#039; respectively  &amp;lt;ref name=&amp;quot;IBM (2005) Rational Unified Process&amp;quot;&amp;gt; IBM (2005) Rational Unified Process – Best Practices for Software Development Teams. Rational Software White paper. Rational. &amp;lt;/ref&amp;gt;. A &#039;&#039;&#039;role&#039;&#039;&#039;, formally addressed as a worker, describes the behavior and responsibilities of an individual or a group of individuals in order to produce an artifact. Throughout the development of a project, a person can play one or a number of roles. Some examples of roles are the system analyst, designer, tester. &#039;&#039;&#039;Activities&#039;&#039;&#039; are expressed through behaviors. An activity, is a job that a person performs through his role, as seen in Figure 4. The length of an activity may vary from a few hours to a number of days. Examples of activities are: Plan an operation - performed by the role of Project Manager or add a missing feature - performed by the role of a software developer. All activities produce a meaningful result, called an artifact. &#039;&#039;&#039;Artifacts&#039;&#039;&#039;, are the responsibilities of ones role or roles and express a piece of information that is produced, modified or even used by a process. They can act both as input or output of an activity. Examples of artifacts are the source code, the business case, the software architecture. The roles perform activities that can produce a sequence of artifacts, called &#039;&#039;&#039;workflows&#039;&#039;&#039;. Examples of workflows can be seen in Figure 5. &lt;br /&gt;
&lt;br /&gt;
RUP identifies nine core process workflows, called &#039;&#039;&#039;disciplines&#039;&#039;&#039;. Every discipline, addresses a set of activities and artifacts, based upon a set of skills that are common in an ICT project. These disciplines have the ability to arrange the activities and artifacts in such a way, to provide an understanding of the overall project from a waterfall perspective  &amp;lt;ref name=&amp;quot;RATIONALUNIVERSITY (2003) PRJ270&amp;quot;&amp;gt;RATIONALUNIVERSITY (2003) PRJ270: Essentials of Rational Unified Process - Student Manual, IBM Corporation. &amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
There are six core &amp;quot;engineering&amp;quot; disciplines:&lt;br /&gt;
* Business Modelling Discipline&lt;br /&gt;
* Requirements Discipline&lt;br /&gt;
* Analysis and Design Discipline&lt;br /&gt;
* Implementation Discipline&lt;br /&gt;
* Test Discipline&lt;br /&gt;
* Deployment Discipline&lt;br /&gt;
&lt;br /&gt;
And three core &amp;quot;supporting&amp;quot; disciplines:&lt;br /&gt;
* Project Management Discipline&lt;br /&gt;
* Configuration and Change Management Discipline&lt;br /&gt;
* Environment Discipline&lt;br /&gt;
&lt;br /&gt;
==== Business Modelling ====&lt;br /&gt;
&lt;br /&gt;
Miscommunication between the software engineering community and the business engineering community is one of the most common problems among most business engineering efforts. This means that the output from software development efforts is not correctly used as input to the business engineering and vice versa. The purpose of the Business Modelling discipline is to provide a common language between the two communities and create a direct coupling between software and business models. All business processes are documented using &amp;quot;use cases&amp;quot;. This assures that all stakeholders share the same understanding of the demanding organization.&lt;br /&gt;
&lt;br /&gt;
==== Requirements ====&lt;br /&gt;
The purpose of the requirements discipline is to describe in detail &#039;&#039;&#039;what&#039;&#039;&#039; the system should do. Based on that, a Vision document is created where required functionality and constraints are documented. Moreover, actors (end - users) and use cases (behaviors of the system) are identified. Use cases are described in detail and each description clearly shows how the system interacts with the actors. This way an agreement is established between the customers and the rest of the stakeholders regarding the system&#039;s capabilities, user-interface and the end user&#039;s needs.&lt;br /&gt;
&lt;br /&gt;
==== Analysis and Design ====&lt;br /&gt;
&lt;br /&gt;
The purpose of the Analysis and Design discipline it to investigate &#039;&#039;&#039;how&#039;&#039;&#039; the system requirements will be translated into a detailed implementation plan. The system needs to:&lt;br /&gt;
* Perform exactly as described in the use-case descriptions.&lt;br /&gt;
* Fulfill all requirements.&lt;br /&gt;
* Have a robust structure.&lt;br /&gt;
&lt;br /&gt;
Analysis and Design result in the creation of a &#039;&#039;&#039;design model&#039;&#039;&#039;  &amp;lt;ref name=&amp;quot;KRUCHTEN, P.&amp;quot;&amp;gt;KRUCHTEN, P. (2000) The Rational Unified Process - An Introduction, Second Edition, Addison-Wesley&amp;lt;/ref&amp;gt;. The design model is an abstraction of the system&#039;s architecture and acts as a guide of how the source code should be finally written and structured.&lt;br /&gt;
&lt;br /&gt;
==== Implementation ====&lt;br /&gt;
The purpose of the Implementation discipline is to:&lt;br /&gt;
&lt;br /&gt;
* Arrange the code into subsystems, organized in layers.&lt;br /&gt;
* Implement classes and objects in terms of components.&lt;br /&gt;
* Uni-test the developed components to ensure quality.&lt;br /&gt;
* Integrate the results into an executable system.&lt;br /&gt;
&lt;br /&gt;
The whole system can be realized as an implementation of various components. RUP enables the integration of those components, in a revolutionary way, making the system easier to maintain and increasing the possibilities for future re-use.&lt;br /&gt;
&lt;br /&gt;
==== Test ====&lt;br /&gt;
&lt;br /&gt;
In the implementation discipline, all the developed components were uni-tested individually and were integrated into the system. The purpose of the Test discipline is to assess the system as a whole and verify the product quality. It is a mechanism to verify the smooth interaction between the various components, their proper integration into the system and finally ensure that all requirements have been successfully implemented. All tests are carried out along 4 quality dimensions:&lt;br /&gt;
* Functionality.&lt;br /&gt;
* Reliability.&lt;br /&gt;
* Application Performance.&lt;br /&gt;
* System Performance.&lt;br /&gt;
&lt;br /&gt;
==== Deployment ====&lt;br /&gt;
&lt;br /&gt;
The purpose of the Deployment discipline is primarily to develop product releases and distribute the software to the end – users. More specifically the Deployment discipline focuses at:&lt;br /&gt;
&lt;br /&gt;
* Developing external software releases&lt;br /&gt;
* Distributing the software&lt;br /&gt;
* Installing the software&lt;br /&gt;
* Providing help to the end – users&lt;br /&gt;
* Creating an up-to-date user manual&lt;br /&gt;
* Conducting beta testing&lt;br /&gt;
&lt;br /&gt;
==== Project Management ====&lt;br /&gt;
&lt;br /&gt;
The purpose of the Project Management discipline, is to successfully balance competing objectives, manage and mitigate risks and finally handle any constraints on delivering the product. Project management, ideally provides:&lt;br /&gt;
&lt;br /&gt;
* A framework for managing software-intensive projects.&lt;br /&gt;
* A framework to successfully manage risks.&lt;br /&gt;
* A framework to plan, execute and monitor projects.&lt;br /&gt;
&lt;br /&gt;
While the discipline does not guarantee success, the odds of delivering successful software are greatly improved  &amp;lt;ref name=&amp;quot;Walker Royce&amp;quot;&amp;gt;Walker Royce, Software Project Management  A Unified Framework, Addison-Wesley, 1998. &amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==== Configuration and Change Management ====&lt;br /&gt;
&lt;br /&gt;
The purpose of the Configuration and Change Management Discipline is to control, maintain and configure all the various artifacts that are produced by the different actors that are working on a project. During the software development life cycle, artifacts are regularly updated (changed). In order to understand the current state of an artifact, it is very important to keep track of its location and history; what was the reason and who decided to change the artifact. The discipline helps create a framework that keeps track of all the project assets.&lt;br /&gt;
&lt;br /&gt;
==== Environment ====&lt;br /&gt;
&lt;br /&gt;
The purpose of the environment discipline, is to provide the development team with all the processes, tools and methods for supporting all developing activities. It is responsible for producing a Development Kit, able to provide guidelines and templates for customizing processes.&lt;br /&gt;
&lt;br /&gt;
== Why RUP - Best Practices ==&lt;br /&gt;
&lt;br /&gt;
RUP captures many of the “best practices” that are currently used in modern software development and more particularly in industry by successful organizations. The practices are:&lt;br /&gt;
&lt;br /&gt;
* Develop Software Iteratively&lt;br /&gt;
* Manage Requirements&lt;br /&gt;
* Use component-based architectures&lt;br /&gt;
* Visually model software&lt;br /&gt;
* Continuously verify software quality&lt;br /&gt;
* Control changes to software&lt;br /&gt;
&lt;br /&gt;
=== Develop Software iteratively ===&lt;br /&gt;
&lt;br /&gt;
Today’s high sophisticated software systems, consist of many and complex structures which make it nearly impossible to define the entire system from the very beginning, develop the entire solution and then test the product in the end. RUP uses an iterative approach that allows an increasing understanding of the problem and developing a step – by – step solution, over multiple iterations. Each iteration ends with an executable release, which enables continuous end - user involvement and feedback. As a result, the risks of the project are mitigated at an early stage and stakeholders are ensured that the project requirements are fulfilled.  &amp;lt;ref name=&amp;quot;Barry W. Boehm&amp;quot;&amp;gt;Barry W. Boehm, A Spiral Model of Software Development and Enhancement, Computer, May 1988, IEEE, pp.61-72 &amp;lt;/ref&amp;gt;  &amp;lt;ref name=&amp;quot;Barry W. Boehm 2&amp;quot;&amp;gt;Anchoring the Software Process, IEEE Software, 13, 4, July 1996, pp. 73-82.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Manage requirements ===&lt;br /&gt;
&lt;br /&gt;
The requirements of a system include the description of the services that the system is able to provide and its operational constraints. RUP documents, organizes and tracks required functionality and constraints and easily communicates business requirements. The use – cases that are used in the process are an excellent way to ensure that requirements are actually those elements that drive the design, implementation and testing of software, making it more likely that the final system fulfills the stakeholders needs.&lt;br /&gt;
&lt;br /&gt;
=== Use component-based architectures ===&lt;br /&gt;
&lt;br /&gt;
Component-based architecture makes the system dynamic; components are independent from the system and interact with other components through well-defined interfaces. Their in-dependency from the system, gives them a great flexibility meaning that they can easily be added, updated or totally replaced. RUP supports component-based software development by providing a systematic approach to defining an architecture using new and existing components.&lt;br /&gt;
&lt;br /&gt;
=== Visually model software ===&lt;br /&gt;
&lt;br /&gt;
A model is an abstraction of reality that can help better comprehend large and complex systems. Visual abstractions help the development team to easily communicate different aspects of the software and see how all the components fit together. RUP uses the [http://www.uml.org/ Unified Modelling Language (UML)] standard which is a graphical language for visualizing and constructing the artifacts of a software-intensive system.&lt;br /&gt;
&lt;br /&gt;
=== Continuously verify software quality ===&lt;br /&gt;
&lt;br /&gt;
In software development, quality should always be reviewed with respect to the requirements based on reliability, functionality , application and system performance. In RUP, quality verification and assessment is built into the process, inside all activities, including all stakeholders and is not treated as a separate activity, performed by a separate group.&lt;br /&gt;
&lt;br /&gt;
=== Control changes to software ===&lt;br /&gt;
&lt;br /&gt;
A software system is developed by a number of teams or individuals, using different platforms and at times being in different locations. As a result, it is essential to somehow make sure that all the changes made in the system are synchronized and constantly verified. RUP ensures that all the individuals working in the project are well informed about any changes and everything is in sync. The process describes how to control, track and monitor changes to enable successful iterative development.&lt;br /&gt;
&lt;br /&gt;
== Limitations ==&lt;br /&gt;
&lt;br /&gt;
While being a complete methodology in itself with an emphasis on accurate documentation and quickly resolving project associated risks, RUP comes with a number of limitations.&lt;br /&gt;
&lt;br /&gt;
* In order for team members to start developing software under this methodology, they need to be &#039;&#039;&#039;experts&#039;&#039;&#039; in their respective fields.&lt;br /&gt;
* The development process can easily become too complex to handle.&lt;br /&gt;
* When working with cutting - edge projects that highly utilize new technology, components will not be able to be reused. &lt;br /&gt;
* While in theory integration throughout the process of software development sounds like a good thing, when working with particularly complex projects with multiple development streams, issues and significant confusion may rise during the stages of testing.&lt;br /&gt;
&lt;br /&gt;
== Conclusion ==&lt;br /&gt;
&lt;br /&gt;
The Rational Unified Process, is an exemplary method for addressing and mitigating risks from the very early stages, by rapidly developing an initial version of the system (prototype) that describes its architecture. There are not fixed requirements from the beginning but rather allows refining requirements , while the project progresses. It expects and actually deals with change pretty well while its main focus is the quality of the product and the degree to which it satisfies its end - users, throughout the project life-cycle. However, while being a complete and well documented methodology, it should be stressed that remains a very complex one. In order to increase the likelihood of success, while adopting this methodology, all the project members need to be &#039;&#039;&#039;experts&#039;&#039;&#039; in their respective fields. The method can easily become too difficult to learn and most importantly too difficult to apply.&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Lessisv</name></author>
	</entry>
	<entry>
		<id>http://13.50.150.85/index.php?title=Rational_Unified_Process_(RUP)&amp;diff=14773</id>
		<title>Rational Unified Process (RUP)</title>
		<link rel="alternate" type="text/html" href="http://13.50.150.85/index.php?title=Rational_Unified_Process_(RUP)&amp;diff=14773"/>
		<updated>2015-09-26T13:01:07Z</updated>

		<summary type="html">&lt;p&gt;Lessisv: /* Develop Software iteratively */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The &#039;&#039;&#039;Rational Unified Process (RUP)&#039;&#039;&#039; is an iterative, &#039;&#039;&#039;software development methodology&#039;&#039;&#039;, firstly introduced by the [https://en.wikipedia.org/wiki/Rational_Software Rational Software Corporation] which was [http://www-03.ibm.com/press/us/en/pressrelease/314.wss acquired by IBM] in 2003. RUP is a disciplined approach to assign tasks within a development organization and software project teams. It was developed to ensure the production of &#039;&#039;&#039;high quality software&#039;&#039;&#039; by providing the development team with a set of &#039;&#039;&#039;guidelines, templates and tool mentors&#039;&#039;&#039;, for all the critical life-cycle activities within a project. This cluster of objects, form a knowledge base that is shared between all project team members. As a result, no matter what each member is working with (e.g testing, designing, managing), they all share a common language and view on how to develop software. Consequently, team productivity is boosted, in order to deliver software that can meet and exceed the needs and expectations of end-users, strictly following a predictable budget and schedule &amp;lt;ref name=&amp;quot;Ivar Jacobson, Grady Booch, and Jim Rumbaugh&amp;quot;&amp;gt;Ivar Jacobson, Grady Booch, and Jim Rumbaugh, Unified Software Development Process, Addison-Wesley, 1999.&amp;lt;/ref&amp;gt;. RUP is the most popular and extensively documented refinement of the [https://en.wikipedia.org/wiki/Unified_Process Unified Process], an iterative and incremental software development process framework. Other worth mentioning forms are the [https://en.wikipedia.org/wiki/OpenUP OpenUP] and [https://en.wikipedia.org/wiki/Agile_Unified_Process Agile Unified Process].&lt;br /&gt;
&lt;br /&gt;
== Process Overview ==&lt;br /&gt;
&lt;br /&gt;
[[File:RUP.png|450px|right|thumb| Figure 1. The iterative model graph shows how the process is structured along two dimensions]]&lt;br /&gt;
&lt;br /&gt;
The best possible way to describe the methodology is through a 2 - dimensional graph &amp;lt;ref name=&amp;quot;IBM (2005) Rational Unified Process&amp;quot;&amp;gt;IBM (2005) Rational Unified Process – Best Practices for Software Development Teams. Rational Software White paper. Rational&amp;lt;/ref&amp;gt;.&lt;br /&gt;
* The first dimension (horizontal axis) represents the &#039;&#039;&#039;dynamic aspect&#039;&#039;&#039; of the process. It expresses &#039;&#039;&#039;time&#039;&#039;&#039; in terms of &#039;&#039;&#039;phases&#039;&#039;&#039; and &#039;&#039;&#039;iterations&#039;&#039;&#039;. &lt;br /&gt;
* The second dimension (vertical axis) represents the &#039;&#039;&#039;static aspect&#039;&#039;&#039; of the process. It expresses &#039;&#039;&#039;workflows&#039;&#039;&#039; in terms of 6 core and 3 supporting &#039;&#039;&#039;disciplines&#039;&#039;&#039; (more on that on &amp;quot;Disciplines&amp;quot; section).&lt;br /&gt;
&lt;br /&gt;
=== Time Dimension - Phases and Iterations ===&lt;br /&gt;
When developing software, the project team goes through a multi-step process, from establishing a system&#039;s requirements to designing, implementing and finally maintaining the software with new releases. This is the software life cycle  &amp;lt;ref name=&amp;quot;IBM (2003) The Rational Unified Process®&amp;quot;&amp;gt;IBM (2003) The Rational Unified Process®, Version 2003.06.12.01, Rational Software Corporation.&amp;lt;/ref&amp;gt;. RUP delicately breaks the software life cycle down to four consecutive phases &amp;lt;ref name=&amp;quot;Philippe Kruchten&amp;quot;&amp;gt;A Rational Development Process, CrossTalk, 9 (7), STSC, Hill AFB, UT, pp.11-16.&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
* Inception phase&lt;br /&gt;
* Elaboration phase&lt;br /&gt;
* Construction phase&lt;br /&gt;
* Transition phase&lt;br /&gt;
&lt;br /&gt;
Depending on the project, each of these phases can consist of one to a number of &#039;&#039;&#039;iterations&#039;&#039;&#039;. An iteration is defined as a complete development loop, resulting in a new product release. All the phases include a well-defined milestone, in order to be completed. In the end of every phase, the development team can evaluate whether all the key goals have been achieved, all stakeholders have been considered and the actual expenditures correspond with the planned ones  &amp;lt;ref name=&amp;quot;Barry W. Boehm&amp;quot;&amp;gt;Barry W. Boehm, Anchoring the Software Process, IEEE Software, 13, 4, July 1996, pp. 73-82. &amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[File:RUP_phases.png|550px|right|thumb| Figure 2. The four phases and milestones of a project]]&lt;br /&gt;
==== Inception Phase ====&lt;br /&gt;
The first phase is the inception phase. The focus of this phase, is understanding the scope of the project and studying if is both worth doing and possible to do. All the internal and external entities that the system will interact with are identified and the nature of the interaction is well defined at a high level. For this reason, the inception phase is primarily significant for new development projects. &lt;br /&gt;
The expected outcome of the inception phase includes :&lt;br /&gt;
&lt;br /&gt;
* A vision document: The document states the general vision of the project including its key requirements, features and main constraints.&lt;br /&gt;
* An initial use-case model (10%-20% complete)&lt;br /&gt;
* An initial project glossary&lt;br /&gt;
* An initial business case, including the business context, success criteria and a financial forecast.&lt;br /&gt;
* An initial risk assessment&lt;br /&gt;
* A project plan (phases and iterations)&lt;br /&gt;
* A business model (if necessary)&lt;br /&gt;
* Prototypes&lt;br /&gt;
&lt;br /&gt;
At the end of the inception phase lies the first major project milestone; the &#039;&#039;&#039;Lifecycle Objective Milestone&#039;&#039;&#039;.&lt;br /&gt;
The inception phase has five evaluation criteria:&lt;br /&gt;
&lt;br /&gt;
* Stakeholder concurrence on scope definition and cost/schedule estimates.&lt;br /&gt;
* Depth and breadth of any prototype that was developed.&lt;br /&gt;
* Actual expenditures versus planned ones.&lt;br /&gt;
* Requirements understanding.&lt;br /&gt;
* Credibility of the cost/schedule estimates, risks and priorities.&lt;br /&gt;
&lt;br /&gt;
If for any reason the project fails to pass this milestone, it can either be completely cancelled or re-designed to successfully meet the criteria.&lt;br /&gt;
 &lt;br /&gt;
==== Elaboration Phase ====&lt;br /&gt;
The second phase is the elaboration phase. The focus of this phase, is establishing a baseline to the architecture of the system, further developing the project plan and analyzing the problem domain while trying to mitigate the highest risk elements. In other words, this is the phase where the project starts to take shape. One of the most important characteristics of this phase, is the production of a component-based architectural prototype. The purpose of this prototype, is to address the critical use-cases that were identified in the previous phase, and hopefully expose the highest technical risks of the project. The expected outcome of the elaboration phase includes:&lt;br /&gt;
&lt;br /&gt;
* A use-case model (at least 80% complete) which will be able to identify all the actors and use-cases.&lt;br /&gt;
* Supplementary requirements (if any).&lt;br /&gt;
* A clear description of the software architecture.&lt;br /&gt;
* An architectural prototype.&lt;br /&gt;
* A more detailed risk assessment and business case.&lt;br /&gt;
* A development plan for the overall project.&lt;br /&gt;
* A preliminary user manual (optional).&lt;br /&gt;
&lt;br /&gt;
At the end of the elaboration phase lies the second major project milestone; the &#039;&#039;&#039;Lifecycle Architecture Milestone&#039;&#039;&#039;.&lt;br /&gt;
The elaboration phase has six evaluation criteria:&lt;br /&gt;
&lt;br /&gt;
* Is the vision stable enough?&lt;br /&gt;
* Is the system architecture stable enough?&lt;br /&gt;
* Have all the major risks been successfully identified and resolved?&lt;br /&gt;
* Is the plan for the construction phase accurate enough?&lt;br /&gt;
* Do all the stakeholders share the opinion that the vision can be achieved by executing the current plan?&lt;br /&gt;
* Is the actual vs planned resource expenditure in acceptable levels?&lt;br /&gt;
&lt;br /&gt;
If the project fails to pass the milestone, there is still time to be re-designed or even cancelled. However, when the project moves to the next phase the associated operation risks raise significantly and changes become much more difficult.&lt;br /&gt;
&lt;br /&gt;
==== Construction Phase====&lt;br /&gt;
The third phase is the construction phase. The focus of this phase, is to develop and integrate all the remaining components and application features into the product. In other words this is the phase where the vision is finally translated into a final stable product, which is based on the architecture that was developed during the previous phases  &amp;lt;ref name=&amp;quot;KRUCHTEN, P. (2000)&amp;quot;&amp;gt;KRUCHTEN, P. (2000) The Rational Unified Process - An Introduction, Second Edition, Addison-Wesley.&amp;lt;/ref&amp;gt;. Most emphasize is given to resources, control and process management in order to fully optimize costs, schedules and quality &amp;lt;ref name=&amp;quot;IBM (2003) The Rational Unified Process®&amp;quot;&amp;gt;IBM (2003) The Rational Unified Process®, Version 2003.06.12.01, Rational Software Corporation.&amp;lt;/ref&amp;gt;. The existing prototype evolves via a number of iterations into a fully functional product that meets the stakeholders&#039; needs. The construction phase is usually the longest one of the project life cycle. The expected outcome of the construction phase includes:&lt;br /&gt;
&lt;br /&gt;
* First external release of the software.&lt;br /&gt;
* User manuals.&lt;br /&gt;
* A detailed description of the current release.&lt;br /&gt;
&lt;br /&gt;
At the end of the construction phase lies the third major project milestone; the &#039;&#039;&#039;Initial Operation Capability Milestone&#039;&#039;&#039;.&lt;br /&gt;
The construction phase has three evaluation criteria:&lt;br /&gt;
&lt;br /&gt;
* Is the software release stable enough to be given to the user community?&lt;br /&gt;
* Are all the stakeholders ready for the transition to the user community?&lt;br /&gt;
* Is the actual vs planned resource expenditure in acceptable levels?&lt;br /&gt;
&lt;br /&gt;
If the project fails to pass this milestone, transition may have to be postponed by one release.&lt;br /&gt;
&lt;br /&gt;
==== Transition Phase ====&lt;br /&gt;
The fourth and final phase is the transition phase. The focus of this phase is, as the word says, to transition the software product to the user community. It includes ensuring that the product has been developed to an acceptable quality level, by beta testing the software through the end users, and validating it against the stakeholders&#039; expectations. Once the product has been given for beta testing, a number of issues can arise, requiring the development of new releases (fixing bugs) and adding features that may have been postponed. The expected outcome of the transition phase includes:&lt;br /&gt;
&lt;br /&gt;
* Beta-testing to fix any major [https://en.wikipedia.org/wiki/Software_bug software bugs] and add any missing features.&lt;br /&gt;
* Conversion of operational databases&lt;br /&gt;
* Training of end users and maintainers.&lt;br /&gt;
* Marketing and distribution of the product.&lt;br /&gt;
&lt;br /&gt;
At the end of the transition phase lies the fourth and final major project milestone; the &#039;&#039;&#039;Product Release&#039;&#039;&#039;.&lt;br /&gt;
The transition phase has two evaluation criteria:&lt;br /&gt;
&lt;br /&gt;
* Are the end - users satisfied with the product?&lt;br /&gt;
* Is the actual vs planned resource expenditure in acceptable levels?&lt;br /&gt;
&lt;br /&gt;
==== Iterations ====&lt;br /&gt;
As stated before, every phase can consist of a number of iterations, depending on the project size and scope. RUP, in comparison to the traditional [https://en.wikipedia.org/wiki/Waterfall_model waterfall] approach, is heavily based on iterations. This gives a number of advantages and benefits to the project team, with the most important one being mitigating risks much more earlier in the project. Moreover, change is more manageable and there is normally a higher level of reuse. Finally, iterations ensure an overall high quality in the final product and that the project team can learn throughout the developing process &amp;lt;ref name=&amp;quot;KRUCHTEN, P.&amp;quot;&amp;gt; KRUCHTEN, P. A Rational Development Process, CrossTalk, 9 (7), STSC, Hill AFB, UT, pp.11-16.&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Workflow Dimension - Disciplines ===&lt;br /&gt;
&lt;br /&gt;
[[File:activities.png|350px|right|thumb| Figure 4. Individuals, Roles and Activities]]&lt;br /&gt;
[[File:workflows.png|350px|right|thumb| Figure 5. Example of a workflow]]&lt;br /&gt;
&lt;br /&gt;
A process describes &#039;&#039;&#039;who&#039;&#039;&#039; is doing &#039;&#039;&#039;what&#039;&#039;&#039;, &#039;&#039;&#039;how&#039;&#039;&#039; and &#039;&#039;&#039;when&#039;&#039;&#039;. RUP addresses those terms with four modelling elements; &#039;&#039;&#039;Roles&#039;&#039;&#039;, &#039;&#039;&#039;Activities&#039;&#039;&#039;, &#039;&#039;&#039;Artifacts&#039;&#039;&#039; and &#039;&#039;&#039;Workflows&#039;&#039;&#039; respectively  &amp;lt;ref name=&amp;quot;IBM (2005) Rational Unified Process&amp;quot;&amp;gt; IBM (2005) Rational Unified Process – Best Practices for Software Development Teams. Rational Software White paper. Rational. &amp;lt;/ref&amp;gt;. A &#039;&#039;&#039;role&#039;&#039;&#039;, formally addressed as a worker, describes the behavior and responsibilities of an individual or a group of individuals in order to produce an artifact. Throughout the development of a project, a person can play one or a number of roles. Some examples of roles are the system analyst, designer, tester. &#039;&#039;&#039;Activities&#039;&#039;&#039; are expressed through behaviors. An activity, is a job that a person performs through his role, as seen in Figure 4. The length of an activity may vary from a few hours to a number of days. Examples of activities are: Plan an operation - performed by the role of Project Manager or add a missing feature - performed by the role of a software developer. All activities produce a meaningful result, called an artifact. &#039;&#039;&#039;Artifacts&#039;&#039;&#039;, are the responsibilities of ones role or roles and express a piece of information that is produced, modified or even used by a process. They can act both as input or output of an activity. Examples of artifacts are the source code, the business case, the software architecture. The roles perform activities that can produce a sequence of artifacts, called &#039;&#039;&#039;workflows&#039;&#039;&#039;. Examples of workflows can be seen in Figure 5. &lt;br /&gt;
&lt;br /&gt;
RUP identifies nine core process workflows, called &#039;&#039;&#039;disciplines&#039;&#039;&#039;. Every discipline, addresses a set of activities and artifacts, based upon a set of skills that are common in an ICT project. These disciplines have the ability to arrange the activities and artifacts in such a way, to provide an understanding of the overall project from a waterfall perspective  &amp;lt;ref name=&amp;quot;RATIONALUNIVERSITY (2003) PRJ270&amp;quot;&amp;gt;RATIONALUNIVERSITY (2003) PRJ270: Essentials of Rational Unified Process - Student Manual, IBM Corporation. &amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
There are six core &amp;quot;engineering&amp;quot; disciplines:&lt;br /&gt;
* Business Modelling Discipline&lt;br /&gt;
* Requirements Discipline&lt;br /&gt;
* Analysis and Design Discipline&lt;br /&gt;
* Implementation Discipline&lt;br /&gt;
* Test Discipline&lt;br /&gt;
* Deployment Discipline&lt;br /&gt;
&lt;br /&gt;
And three core &amp;quot;supporting&amp;quot; disciplines:&lt;br /&gt;
* Project Management Discipline&lt;br /&gt;
* Configuration and Change Management Discipline&lt;br /&gt;
* Environment Discipline&lt;br /&gt;
&lt;br /&gt;
==== Business Modelling ====&lt;br /&gt;
&lt;br /&gt;
Miscommunication between the software engineering community and the business engineering community is one of the most common problems among most business engineering efforts. This means that the output from software development efforts is not correctly used as input to the business engineering and vice versa. The purpose of the Business Modelling discipline is to provide a common language between the two communities and create a direct coupling between software and business models. All business processes are documented using &amp;quot;use cases&amp;quot;. This assures that all stakeholders share the same understanding of the demanding organization.&lt;br /&gt;
&lt;br /&gt;
==== Requirements ====&lt;br /&gt;
The purpose of the requirements discipline is to describe in detail &#039;&#039;&#039;what&#039;&#039;&#039; the system should do. Based on that, a Vision document is created where required functionality and constraints are documented. Moreover, actors (end - users) and use cases (behaviors of the system) are identified. Use cases are described in detail and each description clearly shows how the system interacts with the actors. This way an agreement is established between the customers and the rest of the stakeholders regarding the system&#039;s capabilities, user-interface and the end user&#039;s needs.&lt;br /&gt;
&lt;br /&gt;
==== Analysis and Design ====&lt;br /&gt;
&lt;br /&gt;
The purpose of the Analysis and Design discipline it to investigate &#039;&#039;&#039;how&#039;&#039;&#039; the system requirements will be translated into a detailed implementation plan. The system needs to:&lt;br /&gt;
* Perform exactly as described in the use-case descriptions.&lt;br /&gt;
* Fulfill all requirements.&lt;br /&gt;
* Have a robust structure.&lt;br /&gt;
&lt;br /&gt;
Analysis and Design result in the creation of a &#039;&#039;&#039;design model&#039;&#039;&#039;  &amp;lt;ref name=&amp;quot;KRUCHTEN, P.&amp;quot;&amp;gt;KRUCHTEN, P. (2000) The Rational Unified Process - An Introduction, Second Edition, Addison-Wesley&amp;lt;/ref&amp;gt;. The design model is an abstraction of the system&#039;s architecture and acts as a guide of how the source code should be finally written and structured.&lt;br /&gt;
&lt;br /&gt;
==== Implementation ====&lt;br /&gt;
The purpose of the Implementation discipline is to:&lt;br /&gt;
&lt;br /&gt;
* Arrange the code into subsystems, organized in layers.&lt;br /&gt;
* Implement classes and objects in terms of components.&lt;br /&gt;
* Uni-test the developed components to ensure quality.&lt;br /&gt;
* Integrate the results into an executable system.&lt;br /&gt;
&lt;br /&gt;
The whole system can be realized as an implementation of various components. RUP enables the integration of those components, in a revolutionary way, making the system easier to maintain and increasing the possibilities for future re-use.&lt;br /&gt;
&lt;br /&gt;
==== Test ====&lt;br /&gt;
&lt;br /&gt;
In the implementation discipline, all the developed components were uni-tested individually and were integrated into the system. The purpose of the Test discipline is to assess the system as a whole and verify the product quality. It is a mechanism to verify the smooth interaction between the various components, their proper integration into the system and finally ensure that all requirements have been successfully implemented. All tests are carried out along 4 quality dimensions:&lt;br /&gt;
* Functionality.&lt;br /&gt;
* Reliability.&lt;br /&gt;
* Application Performance.&lt;br /&gt;
* System Performance.&lt;br /&gt;
&lt;br /&gt;
==== Deployment ====&lt;br /&gt;
&lt;br /&gt;
The purpose of the Deployment discipline is primarily to develop product releases and distribute the software to the end – users. More specifically the Deployment discipline focuses at:&lt;br /&gt;
&lt;br /&gt;
* Developing external software releases&lt;br /&gt;
* Distributing the software&lt;br /&gt;
* Installing the software&lt;br /&gt;
* Providing help to the end – users&lt;br /&gt;
* Creating an up-to-date user manual&lt;br /&gt;
* Conducting beta testing&lt;br /&gt;
&lt;br /&gt;
==== Project Management ====&lt;br /&gt;
&lt;br /&gt;
The purpose of the Project Management discipline, is to successfully balance competing objectives, manage and mitigate risks and finally handle any constraints on delivering the product. Project management, ideally provides:&lt;br /&gt;
&lt;br /&gt;
* A framework for managing software-intensive projects.&lt;br /&gt;
* A framework to successfully manage risks.&lt;br /&gt;
* A framework to plan, execute and monitor projects.&lt;br /&gt;
&lt;br /&gt;
While the discipline does not guarantee success, the odds of delivering successful software are greatly improved  &amp;lt;ref name=&amp;quot;Walker Royce&amp;quot;&amp;gt;Walker Royce, Software Project Management  A Unified Framework, Addison-Wesley, 1998. &amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==== Configuration and Change Management ====&lt;br /&gt;
&lt;br /&gt;
The purpose of the Configuration and Change Management Discipline is to control, maintain and configure all the various artifacts that are produced by the different actors that are working on a project. During the software development life cycle, artifacts are regularly updated (changed). In order to understand the current state of an artifact, it is very important to keep track of its location and history; what was the reason and who decided to change the artifact. The discipline helps create a framework that keeps track of all the project assets.&lt;br /&gt;
&lt;br /&gt;
==== Environment ====&lt;br /&gt;
&lt;br /&gt;
The purpose of the environment discipline, is to provide the development team with all the processes, tools and methods for supporting all developing activities. It is responsible for producing a Development Kit, able to provide guidelines and templates for customizing processes.&lt;br /&gt;
&lt;br /&gt;
== Why RUP - Best Practices ==&lt;br /&gt;
&lt;br /&gt;
RUP captures many of the “best practices” that are currently used in modern software development and more particularly in industry by successful organizations. The practices are:&lt;br /&gt;
&lt;br /&gt;
* Develop Software Iteratively&lt;br /&gt;
* Manage Requirements&lt;br /&gt;
* Use component-based architectures&lt;br /&gt;
* Visually model software&lt;br /&gt;
* Continuously verify software quality&lt;br /&gt;
* Control changes to software&lt;br /&gt;
&lt;br /&gt;
=== Develop Software iteratively ===&lt;br /&gt;
&lt;br /&gt;
Today’s high sophisticated software systems, consist of many and complex structures which make it nearly impossible to define the entire system from the very beginning, develop the entire solution and then test the product in the end. RUP uses an iterative approach that allows an increasing understanding of the problem and developing a step – by – step solution, over multiple iterations. Each iteration ends with an executable release, which enables continuous end - user involvement and feedback. As a result, the risks of the project are mitigated at an early stage and stakeholders are ensured that the project requirements are fulfilled.  &amp;lt;ref name=&amp;quot;Barry W. Boehm&amp;quot;&amp;gt;Barry W. Boehm, A Spiral Model of Software Development and Enhancement, Computer, May 1988, IEEE, pp.61-72 &amp;lt;/ref&amp;gt;  &amp;lt;ref name=&amp;quot;Barry W. Boehm&amp;quot;&amp;gt;Anchoring the Software Process, IEEE Software, 13, 4, July 1996, pp. 73-82.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Manage requirements ===&lt;br /&gt;
&lt;br /&gt;
The requirements of a system include the description of the services that the system is able to provide and its operational constraints. RUP documents, organizes and tracks required functionality and constraints and easily communicates business requirements. The use – cases that are used in the process are an excellent way to ensure that requirements are actually those elements that drive the design, implementation and testing of software, making it more likely that the final system fulfills the stakeholders needs.&lt;br /&gt;
&lt;br /&gt;
=== Use component-based architectures ===&lt;br /&gt;
&lt;br /&gt;
Component-based architecture makes the system dynamic; components are independent from the system and interact with other components through well-defined interfaces. Their in-dependency from the system, gives them a great flexibility meaning that they can easily be added, updated or totally replaced. RUP supports component-based software development by providing a systematic approach to defining an architecture using new and existing components.&lt;br /&gt;
&lt;br /&gt;
=== Visually model software ===&lt;br /&gt;
&lt;br /&gt;
A model is an abstraction of reality that can help better comprehend large and complex systems. Visual abstractions help the development team to easily communicate different aspects of the software and see how all the components fit together. RUP uses the [http://www.uml.org/ Unified Modelling Language (UML)] standard which is a graphical language for visualizing and constructing the artifacts of a software-intensive system.&lt;br /&gt;
&lt;br /&gt;
=== Continuously verify software quality ===&lt;br /&gt;
&lt;br /&gt;
In software development, quality should always be reviewed with respect to the requirements based on reliability, functionality , application and system performance. In RUP, quality verification and assessment is built into the process, inside all activities, including all stakeholders and is not treated as a separate activity, performed by a separate group.&lt;br /&gt;
&lt;br /&gt;
=== Control changes to software ===&lt;br /&gt;
&lt;br /&gt;
A software system is developed by a number of teams or individuals, using different platforms and at times being in different locations. As a result, it is essential to somehow make sure that all the changes made in the system are synchronized and constantly verified. RUP ensures that all the individuals working in the project are well informed about any changes and everything is in sync. The process describes how to control, track and monitor changes to enable successful iterative development.&lt;br /&gt;
&lt;br /&gt;
== Limitations ==&lt;br /&gt;
&lt;br /&gt;
While being a complete methodology in itself with an emphasis on accurate documentation and quickly resolving project associated risks, RUP comes with a number of limitations.&lt;br /&gt;
&lt;br /&gt;
* In order for team members to start developing software under this methodology, they need to be &#039;&#039;&#039;experts&#039;&#039;&#039; in their respective fields.&lt;br /&gt;
* The development process can easily become too complex to handle.&lt;br /&gt;
* When working with cutting - edge projects that highly utilize new technology, components will not be able to be reused. &lt;br /&gt;
* While in theory integration throughout the process of software development sounds like a good thing, when working with particularly complex projects with multiple development streams, issues and significant confusion may rise during the stages of testing.&lt;br /&gt;
&lt;br /&gt;
== Conclusion ==&lt;br /&gt;
&lt;br /&gt;
The Rational Unified Process, is an exemplary method for addressing and mitigating risks from the very early stages, by rapidly developing an initial version of the system (prototype) that describes its architecture. There are not fixed requirements from the beginning but rather allows refining requirements , while the project progresses. It expects and actually deals with change pretty well while its main focus is the quality of the product and the degree to which it satisfies its end - users, throughout the project life-cycle. However, while being a complete and well documented methodology, it should be stressed that remains a very complex one. In order to increase the likelihood of success, while adopting this methodology, all the project members need to be &#039;&#039;&#039;experts&#039;&#039;&#039; in their respective fields. The method can easily become too difficult to learn and most importantly too difficult to apply.&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Lessisv</name></author>
	</entry>
	<entry>
		<id>http://13.50.150.85/index.php?title=Rational_Unified_Process_(RUP)&amp;diff=14766</id>
		<title>Rational Unified Process (RUP)</title>
		<link rel="alternate" type="text/html" href="http://13.50.150.85/index.php?title=Rational_Unified_Process_(RUP)&amp;diff=14766"/>
		<updated>2015-09-26T12:55:47Z</updated>

		<summary type="html">&lt;p&gt;Lessisv: /* Analysis and Design */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The &#039;&#039;&#039;Rational Unified Process (RUP)&#039;&#039;&#039; is an iterative, &#039;&#039;&#039;software development methodology&#039;&#039;&#039;, firstly introduced by the [https://en.wikipedia.org/wiki/Rational_Software Rational Software Corporation] which was [http://www-03.ibm.com/press/us/en/pressrelease/314.wss acquired by IBM] in 2003. RUP is a disciplined approach to assign tasks within a development organization and software project teams. It was developed to ensure the production of &#039;&#039;&#039;high quality software&#039;&#039;&#039; by providing the development team with a set of &#039;&#039;&#039;guidelines, templates and tool mentors&#039;&#039;&#039;, for all the critical life-cycle activities within a project. This cluster of objects, form a knowledge base that is shared between all project team members. As a result, no matter what each member is working with (e.g testing, designing, managing), they all share a common language and view on how to develop software. Consequently, team productivity is boosted, in order to deliver software that can meet and exceed the needs and expectations of end-users, strictly following a predictable budget and schedule &amp;lt;ref name=&amp;quot;Ivar Jacobson, Grady Booch, and Jim Rumbaugh&amp;quot;&amp;gt;Ivar Jacobson, Grady Booch, and Jim Rumbaugh, Unified Software Development Process, Addison-Wesley, 1999.&amp;lt;/ref&amp;gt;. RUP is the most popular and extensively documented refinement of the [https://en.wikipedia.org/wiki/Unified_Process Unified Process], an iterative and incremental software development process framework. Other worth mentioning forms are the [https://en.wikipedia.org/wiki/OpenUP OpenUP] and [https://en.wikipedia.org/wiki/Agile_Unified_Process Agile Unified Process].&lt;br /&gt;
&lt;br /&gt;
== Process Overview ==&lt;br /&gt;
&lt;br /&gt;
[[File:RUP.png|450px|right|thumb| Figure 1. The iterative model graph shows how the process is structured along two dimensions]]&lt;br /&gt;
&lt;br /&gt;
The best possible way to describe the methodology is through a 2 - dimensional graph &amp;lt;ref name=&amp;quot;IBM (2005) Rational Unified Process&amp;quot;&amp;gt;IBM (2005) Rational Unified Process – Best Practices for Software Development Teams. Rational Software White paper. Rational&amp;lt;/ref&amp;gt;.&lt;br /&gt;
* The first dimension (horizontal axis) represents the &#039;&#039;&#039;dynamic aspect&#039;&#039;&#039; of the process. It expresses &#039;&#039;&#039;time&#039;&#039;&#039; in terms of &#039;&#039;&#039;phases&#039;&#039;&#039; and &#039;&#039;&#039;iterations&#039;&#039;&#039;. &lt;br /&gt;
* The second dimension (vertical axis) represents the &#039;&#039;&#039;static aspect&#039;&#039;&#039; of the process. It expresses &#039;&#039;&#039;workflows&#039;&#039;&#039; in terms of 6 core and 3 supporting &#039;&#039;&#039;disciplines&#039;&#039;&#039; (more on that on &amp;quot;Disciplines&amp;quot; section).&lt;br /&gt;
&lt;br /&gt;
=== Time Dimension - Phases and Iterations ===&lt;br /&gt;
When developing software, the project team goes through a multi-step process, from establishing a system&#039;s requirements to designing, implementing and finally maintaining the software with new releases. This is the software life cycle  &amp;lt;ref name=&amp;quot;IBM (2003) The Rational Unified Process®&amp;quot;&amp;gt;IBM (2003) The Rational Unified Process®, Version 2003.06.12.01, Rational Software Corporation.&amp;lt;/ref&amp;gt;. RUP delicately breaks the software life cycle down to four consecutive phases &amp;lt;ref name=&amp;quot;Philippe Kruchten&amp;quot;&amp;gt;A Rational Development Process, CrossTalk, 9 (7), STSC, Hill AFB, UT, pp.11-16.&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
* Inception phase&lt;br /&gt;
* Elaboration phase&lt;br /&gt;
* Construction phase&lt;br /&gt;
* Transition phase&lt;br /&gt;
&lt;br /&gt;
Depending on the project, each of these phases can consist of one to a number of &#039;&#039;&#039;iterations&#039;&#039;&#039;. An iteration is defined as a complete development loop, resulting in a new product release. All the phases include a well-defined milestone, in order to be completed. In the end of every phase, the development team can evaluate whether all the key goals have been achieved, all stakeholders have been considered and the actual expenditures correspond with the planned ones  &amp;lt;ref name=&amp;quot;Barry W. Boehm&amp;quot;&amp;gt;Barry W. Boehm, Anchoring the Software Process, IEEE Software, 13, 4, July 1996, pp. 73-82. &amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[File:RUP_phases.png|550px|right|thumb| Figure 2. The four phases and milestones of a project]]&lt;br /&gt;
==== Inception Phase ====&lt;br /&gt;
The first phase is the inception phase. The focus of this phase, is understanding the scope of the project and studying if is both worth doing and possible to do. All the internal and external entities that the system will interact with are identified and the nature of the interaction is well defined at a high level. For this reason, the inception phase is primarily significant for new development projects. &lt;br /&gt;
The expected outcome of the inception phase includes :&lt;br /&gt;
&lt;br /&gt;
* A vision document: The document states the general vision of the project including its key requirements, features and main constraints.&lt;br /&gt;
* An initial use-case model (10%-20% complete)&lt;br /&gt;
* An initial project glossary&lt;br /&gt;
* An initial business case, including the business context, success criteria and a financial forecast.&lt;br /&gt;
* An initial risk assessment&lt;br /&gt;
* A project plan (phases and iterations)&lt;br /&gt;
* A business model (if necessary)&lt;br /&gt;
* Prototypes&lt;br /&gt;
&lt;br /&gt;
At the end of the inception phase lies the first major project milestone; the &#039;&#039;&#039;Lifecycle Objective Milestone&#039;&#039;&#039;.&lt;br /&gt;
The inception phase has five evaluation criteria:&lt;br /&gt;
&lt;br /&gt;
* Stakeholder concurrence on scope definition and cost/schedule estimates.&lt;br /&gt;
* Depth and breadth of any prototype that was developed.&lt;br /&gt;
* Actual expenditures versus planned ones.&lt;br /&gt;
* Requirements understanding.&lt;br /&gt;
* Credibility of the cost/schedule estimates, risks and priorities.&lt;br /&gt;
&lt;br /&gt;
If for any reason the project fails to pass this milestone, it can either be completely cancelled or re-designed to successfully meet the criteria.&lt;br /&gt;
 &lt;br /&gt;
==== Elaboration Phase ====&lt;br /&gt;
The second phase is the elaboration phase. The focus of this phase, is establishing a baseline to the architecture of the system, further developing the project plan and analyzing the problem domain while trying to mitigate the highest risk elements. In other words, this is the phase where the project starts to take shape. One of the most important characteristics of this phase, is the production of a component-based architectural prototype. The purpose of this prototype, is to address the critical use-cases that were identified in the previous phase, and hopefully expose the highest technical risks of the project. The expected outcome of the elaboration phase includes:&lt;br /&gt;
&lt;br /&gt;
* A use-case model (at least 80% complete) which will be able to identify all the actors and use-cases.&lt;br /&gt;
* Supplementary requirements (if any).&lt;br /&gt;
* A clear description of the software architecture.&lt;br /&gt;
* An architectural prototype.&lt;br /&gt;
* A more detailed risk assessment and business case.&lt;br /&gt;
* A development plan for the overall project.&lt;br /&gt;
* A preliminary user manual (optional).&lt;br /&gt;
&lt;br /&gt;
At the end of the elaboration phase lies the second major project milestone; the &#039;&#039;&#039;Lifecycle Architecture Milestone&#039;&#039;&#039;.&lt;br /&gt;
The elaboration phase has six evaluation criteria:&lt;br /&gt;
&lt;br /&gt;
* Is the vision stable enough?&lt;br /&gt;
* Is the system architecture stable enough?&lt;br /&gt;
* Have all the major risks been successfully identified and resolved?&lt;br /&gt;
* Is the plan for the construction phase accurate enough?&lt;br /&gt;
* Do all the stakeholders share the opinion that the vision can be achieved by executing the current plan?&lt;br /&gt;
* Is the actual vs planned resource expenditure in acceptable levels?&lt;br /&gt;
&lt;br /&gt;
If the project fails to pass the milestone, there is still time to be re-designed or even cancelled. However, when the project moves to the next phase the associated operation risks raise significantly and changes become much more difficult.&lt;br /&gt;
&lt;br /&gt;
==== Construction Phase====&lt;br /&gt;
The third phase is the construction phase. The focus of this phase, is to develop and integrate all the remaining components and application features into the product. In other words this is the phase where the vision is finally translated into a final stable product, which is based on the architecture that was developed during the previous phases  &amp;lt;ref name=&amp;quot;KRUCHTEN, P. (2000)&amp;quot;&amp;gt;KRUCHTEN, P. (2000) The Rational Unified Process - An Introduction, Second Edition, Addison-Wesley.&amp;lt;/ref&amp;gt;. Most emphasize is given to resources, control and process management in order to fully optimize costs, schedules and quality &amp;lt;ref name=&amp;quot;IBM (2003) The Rational Unified Process®&amp;quot;&amp;gt;IBM (2003) The Rational Unified Process®, Version 2003.06.12.01, Rational Software Corporation.&amp;lt;/ref&amp;gt;. The existing prototype evolves via a number of iterations into a fully functional product that meets the stakeholders&#039; needs. The construction phase is usually the longest one of the project life cycle. The expected outcome of the construction phase includes:&lt;br /&gt;
&lt;br /&gt;
* First external release of the software.&lt;br /&gt;
* User manuals.&lt;br /&gt;
* A detailed description of the current release.&lt;br /&gt;
&lt;br /&gt;
At the end of the construction phase lies the third major project milestone; the &#039;&#039;&#039;Initial Operation Capability Milestone&#039;&#039;&#039;.&lt;br /&gt;
The construction phase has three evaluation criteria:&lt;br /&gt;
&lt;br /&gt;
* Is the software release stable enough to be given to the user community?&lt;br /&gt;
* Are all the stakeholders ready for the transition to the user community?&lt;br /&gt;
* Is the actual vs planned resource expenditure in acceptable levels?&lt;br /&gt;
&lt;br /&gt;
If the project fails to pass this milestone, transition may have to be postponed by one release.&lt;br /&gt;
&lt;br /&gt;
==== Transition Phase ====&lt;br /&gt;
The fourth and final phase is the transition phase. The focus of this phase is, as the word says, to transition the software product to the user community. It includes ensuring that the product has been developed to an acceptable quality level, by beta testing the software through the end users, and validating it against the stakeholders&#039; expectations. Once the product has been given for beta testing, a number of issues can arise, requiring the development of new releases (fixing bugs) and adding features that may have been postponed. The expected outcome of the transition phase includes:&lt;br /&gt;
&lt;br /&gt;
* Beta-testing to fix any major [https://en.wikipedia.org/wiki/Software_bug software bugs] and add any missing features.&lt;br /&gt;
* Conversion of operational databases&lt;br /&gt;
* Training of end users and maintainers.&lt;br /&gt;
* Marketing and distribution of the product.&lt;br /&gt;
&lt;br /&gt;
At the end of the transition phase lies the fourth and final major project milestone; the &#039;&#039;&#039;Product Release&#039;&#039;&#039;.&lt;br /&gt;
The transition phase has two evaluation criteria:&lt;br /&gt;
&lt;br /&gt;
* Are the end - users satisfied with the product?&lt;br /&gt;
* Is the actual vs planned resource expenditure in acceptable levels?&lt;br /&gt;
&lt;br /&gt;
==== Iterations ====&lt;br /&gt;
As stated before, every phase can consist of a number of iterations, depending on the project size and scope. RUP, in comparison to the traditional [https://en.wikipedia.org/wiki/Waterfall_model waterfall] approach, is heavily based on iterations. This gives a number of advantages and benefits to the project team, with the most important one being mitigating risks much more earlier in the project. Moreover, change is more manageable and there is normally a higher level of reuse. Finally, iterations ensure an overall high quality in the final product and that the project team can learn throughout the developing process &amp;lt;ref name=&amp;quot;KRUCHTEN, P.&amp;quot;&amp;gt; KRUCHTEN, P. A Rational Development Process, CrossTalk, 9 (7), STSC, Hill AFB, UT, pp.11-16.&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Workflow Dimension - Disciplines ===&lt;br /&gt;
&lt;br /&gt;
[[File:activities.png|350px|right|thumb| Figure 4. Individuals, Roles and Activities]]&lt;br /&gt;
[[File:workflows.png|350px|right|thumb| Figure 5. Example of a workflow]]&lt;br /&gt;
&lt;br /&gt;
A process describes &#039;&#039;&#039;who&#039;&#039;&#039; is doing &#039;&#039;&#039;what&#039;&#039;&#039;, &#039;&#039;&#039;how&#039;&#039;&#039; and &#039;&#039;&#039;when&#039;&#039;&#039;. RUP addresses those terms with four modelling elements; &#039;&#039;&#039;Roles&#039;&#039;&#039;, &#039;&#039;&#039;Activities&#039;&#039;&#039;, &#039;&#039;&#039;Artifacts&#039;&#039;&#039; and &#039;&#039;&#039;Workflows&#039;&#039;&#039; respectively  &amp;lt;ref name=&amp;quot;IBM (2005) Rational Unified Process&amp;quot;&amp;gt; IBM (2005) Rational Unified Process – Best Practices for Software Development Teams. Rational Software White paper. Rational. &amp;lt;/ref&amp;gt;. A &#039;&#039;&#039;role&#039;&#039;&#039;, formally addressed as a worker, describes the behavior and responsibilities of an individual or a group of individuals in order to produce an artifact. Throughout the development of a project, a person can play one or a number of roles. Some examples of roles are the system analyst, designer, tester. &#039;&#039;&#039;Activities&#039;&#039;&#039; are expressed through behaviors. An activity, is a job that a person performs through his role, as seen in Figure 4. The length of an activity may vary from a few hours to a number of days. Examples of activities are: Plan an operation - performed by the role of Project Manager or add a missing feature - performed by the role of a software developer. All activities produce a meaningful result, called an artifact. &#039;&#039;&#039;Artifacts&#039;&#039;&#039;, are the responsibilities of ones role or roles and express a piece of information that is produced, modified or even used by a process. They can act both as input or output of an activity. Examples of artifacts are the source code, the business case, the software architecture. The roles perform activities that can produce a sequence of artifacts, called &#039;&#039;&#039;workflows&#039;&#039;&#039;. Examples of workflows can be seen in Figure 5. &lt;br /&gt;
&lt;br /&gt;
RUP identifies nine core process workflows, called &#039;&#039;&#039;disciplines&#039;&#039;&#039;. Every discipline, addresses a set of activities and artifacts, based upon a set of skills that are common in an ICT project. These disciplines have the ability to arrange the activities and artifacts in such a way, to provide an understanding of the overall project from a waterfall perspective  &amp;lt;ref name=&amp;quot;RATIONALUNIVERSITY (2003) PRJ270&amp;quot;&amp;gt;RATIONALUNIVERSITY (2003) PRJ270: Essentials of Rational Unified Process - Student Manual, IBM Corporation. &amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
There are six core &amp;quot;engineering&amp;quot; disciplines:&lt;br /&gt;
* Business Modelling Discipline&lt;br /&gt;
* Requirements Discipline&lt;br /&gt;
* Analysis and Design Discipline&lt;br /&gt;
* Implementation Discipline&lt;br /&gt;
* Test Discipline&lt;br /&gt;
* Deployment Discipline&lt;br /&gt;
&lt;br /&gt;
And three core &amp;quot;supporting&amp;quot; disciplines:&lt;br /&gt;
* Project Management Discipline&lt;br /&gt;
* Configuration and Change Management Discipline&lt;br /&gt;
* Environment Discipline&lt;br /&gt;
&lt;br /&gt;
==== Business Modelling ====&lt;br /&gt;
&lt;br /&gt;
Miscommunication between the software engineering community and the business engineering community is one of the most common problems among most business engineering efforts. This means that the output from software development efforts is not correctly used as input to the business engineering and vice versa. The purpose of the Business Modelling discipline is to provide a common language between the two communities and create a direct coupling between software and business models. All business processes are documented using &amp;quot;use cases&amp;quot;. This assures that all stakeholders share the same understanding of the demanding organization.&lt;br /&gt;
&lt;br /&gt;
==== Requirements ====&lt;br /&gt;
The purpose of the requirements discipline is to describe in detail &#039;&#039;&#039;what&#039;&#039;&#039; the system should do. Based on that, a Vision document is created where required functionality and constraints are documented. Moreover, actors (end - users) and use cases (behaviors of the system) are identified. Use cases are described in detail and each description clearly shows how the system interacts with the actors. This way an agreement is established between the customers and the rest of the stakeholders regarding the system&#039;s capabilities, user-interface and the end user&#039;s needs.&lt;br /&gt;
&lt;br /&gt;
==== Analysis and Design ====&lt;br /&gt;
&lt;br /&gt;
The purpose of the Analysis and Design discipline it to investigate &#039;&#039;&#039;how&#039;&#039;&#039; the system requirements will be translated into a detailed implementation plan. The system needs to:&lt;br /&gt;
* Perform exactly as described in the use-case descriptions.&lt;br /&gt;
* Fulfill all requirements.&lt;br /&gt;
* Have a robust structure.&lt;br /&gt;
&lt;br /&gt;
Analysis and Design result in the creation of a &#039;&#039;&#039;design model&#039;&#039;&#039;  &amp;lt;ref name=&amp;quot;KRUCHTEN, P.&amp;quot;&amp;gt;KRUCHTEN, P. (2000) The Rational Unified Process - An Introduction, Second Edition, Addison-Wesley&amp;lt;/ref&amp;gt;. The design model is an abstraction of the system&#039;s architecture and acts as a guide of how the source code should be finally written and structured.&lt;br /&gt;
&lt;br /&gt;
==== Implementation ====&lt;br /&gt;
The purpose of the Implementation discipline is to:&lt;br /&gt;
&lt;br /&gt;
* Arrange the code into subsystems, organized in layers.&lt;br /&gt;
* Implement classes and objects in terms of components.&lt;br /&gt;
* Uni-test the developed components to ensure quality.&lt;br /&gt;
* Integrate the results into an executable system.&lt;br /&gt;
&lt;br /&gt;
The whole system can be realized as an implementation of various components. RUP enables the integration of those components, in a revolutionary way, making the system easier to maintain and increasing the possibilities for future re-use.&lt;br /&gt;
&lt;br /&gt;
==== Test ====&lt;br /&gt;
&lt;br /&gt;
In the implementation discipline, all the developed components were uni-tested individually and were integrated into the system. The purpose of the Test discipline is to assess the system as a whole and verify the product quality. It is a mechanism to verify the smooth interaction between the various components, their proper integration into the system and finally ensure that all requirements have been successfully implemented. All tests are carried out along 4 quality dimensions:&lt;br /&gt;
* Functionality.&lt;br /&gt;
* Reliability.&lt;br /&gt;
* Application Performance.&lt;br /&gt;
* System Performance.&lt;br /&gt;
&lt;br /&gt;
==== Deployment ====&lt;br /&gt;
&lt;br /&gt;
The purpose of the Deployment discipline is primarily to develop product releases and distribute the software to the end – users. More specifically the Deployment discipline focuses at:&lt;br /&gt;
&lt;br /&gt;
* Developing external software releases&lt;br /&gt;
* Distributing the software&lt;br /&gt;
* Installing the software&lt;br /&gt;
* Providing help to the end – users&lt;br /&gt;
* Creating an up-to-date user manual&lt;br /&gt;
* Conducting beta testing&lt;br /&gt;
&lt;br /&gt;
==== Project Management ====&lt;br /&gt;
&lt;br /&gt;
The purpose of the Project Management discipline, is to successfully balance competing objectives, manage and mitigate risks and finally handle any constraints on delivering the product. Project management, ideally provides:&lt;br /&gt;
&lt;br /&gt;
* A framework for managing software-intensive projects.&lt;br /&gt;
* A framework to successfully manage risks.&lt;br /&gt;
* A framework to plan, execute and monitor projects.&lt;br /&gt;
&lt;br /&gt;
While the discipline does not guarantee success, the odds of delivering successful software are greatly improved  &amp;lt;ref name=&amp;quot;Walker Royce&amp;quot;&amp;gt;Walker Royce, Software Project Management  A Unified Framework, Addison-Wesley, 1998. &amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==== Configuration and Change Management ====&lt;br /&gt;
&lt;br /&gt;
The purpose of the Configuration and Change Management Discipline is to control, maintain and configure all the various artifacts that are produced by the different actors that are working on a project. During the software development life cycle, artifacts are regularly updated (changed). In order to understand the current state of an artifact, it is very important to keep track of its location and history; what was the reason and who decided to change the artifact. The discipline helps create a framework that keeps track of all the project assets.&lt;br /&gt;
&lt;br /&gt;
==== Environment ====&lt;br /&gt;
&lt;br /&gt;
The purpose of the environment discipline, is to provide the development team with all the processes, tools and methods for supporting all developing activities. It is responsible for producing a Development Kit, able to provide guidelines and templates for customizing processes.&lt;br /&gt;
&lt;br /&gt;
== Why RUP - Best Practices ==&lt;br /&gt;
&lt;br /&gt;
RUP captures many of the “best practices” that are currently used in modern software development and more particularly in industry by successful organizations. The practices are:&lt;br /&gt;
&lt;br /&gt;
* Develop Software Iteratively&lt;br /&gt;
* Manage Requirements&lt;br /&gt;
* Use component-based architectures&lt;br /&gt;
* Visually model software&lt;br /&gt;
* Continuously verify software quality&lt;br /&gt;
* Control changes to software&lt;br /&gt;
&lt;br /&gt;
=== Develop Software iteratively ===&lt;br /&gt;
&lt;br /&gt;
Today’s high sophisticated software systems, consist of many and complex structures which make it nearly impossible to define the entire system from the very beginning, develop the entire solution and then test the product in the end. RUP uses an iterative approach that allows an increasing understanding of the problem and developing a step – by – step solution, over multiple iterations. Each iteration ends with an executable release, which enables continuous end - user involvement and feedback. As a result, the risks of the project are mitigated at an early stage and stakeholders are ensured that the project requirements are fulfilled.&lt;br /&gt;
&lt;br /&gt;
=== Manage requirements ===&lt;br /&gt;
&lt;br /&gt;
The requirements of a system include the description of the services that the system is able to provide and its operational constraints. RUP documents, organizes and tracks required functionality and constraints and easily communicates business requirements. The use – cases that are used in the process are an excellent way to ensure that requirements are actually those elements that drive the design, implementation and testing of software, making it more likely that the final system fulfills the stakeholders needs.&lt;br /&gt;
&lt;br /&gt;
=== Use component-based architectures ===&lt;br /&gt;
&lt;br /&gt;
Component-based architecture makes the system dynamic; components are independent from the system and interact with other components through well-defined interfaces. Their in-dependency from the system, gives them a great flexibility meaning that they can easily be added, updated or totally replaced. RUP supports component-based software development by providing a systematic approach to defining an architecture using new and existing components.&lt;br /&gt;
&lt;br /&gt;
=== Visually model software ===&lt;br /&gt;
&lt;br /&gt;
A model is an abstraction of reality that can help better comprehend large and complex systems. Visual abstractions help the development team to easily communicate different aspects of the software and see how all the components fit together. RUP uses the [http://www.uml.org/ Unified Modelling Language (UML)] standard which is a graphical language for visualizing and constructing the artifacts of a software-intensive system.&lt;br /&gt;
&lt;br /&gt;
=== Continuously verify software quality ===&lt;br /&gt;
&lt;br /&gt;
In software development, quality should always be reviewed with respect to the requirements based on reliability, functionality , application and system performance. In RUP, quality verification and assessment is built into the process, inside all activities, including all stakeholders and is not treated as a separate activity, performed by a separate group.&lt;br /&gt;
&lt;br /&gt;
=== Control changes to software ===&lt;br /&gt;
&lt;br /&gt;
A software system is developed by a number of teams or individuals, using different platforms and at times being in different locations. As a result, it is essential to somehow make sure that all the changes made in the system are synchronized and constantly verified. RUP ensures that all the individuals working in the project are well informed about any changes and everything is in sync. The process describes how to control, track and monitor changes to enable successful iterative development.&lt;br /&gt;
&lt;br /&gt;
== Limitations ==&lt;br /&gt;
&lt;br /&gt;
While being a complete methodology in itself with an emphasis on accurate documentation and quickly resolving project associated risks, RUP comes with a number of limitations.&lt;br /&gt;
&lt;br /&gt;
* In order for team members to start developing software under this methodology, they need to be &#039;&#039;&#039;experts&#039;&#039;&#039; in their respective fields.&lt;br /&gt;
* The development process can easily become too complex to handle.&lt;br /&gt;
* When working with cutting - edge projects that highly utilize new technology, components will not be able to be reused. &lt;br /&gt;
* While in theory integration throughout the process of software development sounds like a good thing, when working with particularly complex projects with multiple development streams, issues and significant confusion may rise during the stages of testing.&lt;br /&gt;
&lt;br /&gt;
== Conclusion ==&lt;br /&gt;
&lt;br /&gt;
The Rational Unified Process, is an exemplary method for addressing and mitigating risks from the very early stages, by rapidly developing an initial version of the system (prototype) that describes its architecture. There are not fixed requirements from the beginning but rather allows refining requirements , while the project progresses. It expects and actually deals with change pretty well while its main focus is the quality of the product and the degree to which it satisfies its end - users, throughout the project life-cycle. However, while being a complete and well documented methodology, it should be stressed that remains a very complex one. In order to increase the likelihood of success, while adopting this methodology, all the project members need to be &#039;&#039;&#039;experts&#039;&#039;&#039; in their respective fields. The method can easily become too difficult to learn and most importantly too difficult to apply.&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Lessisv</name></author>
	</entry>
	<entry>
		<id>http://13.50.150.85/index.php?title=Rational_Unified_Process_(RUP)&amp;diff=14757</id>
		<title>Rational Unified Process (RUP)</title>
		<link rel="alternate" type="text/html" href="http://13.50.150.85/index.php?title=Rational_Unified_Process_(RUP)&amp;diff=14757"/>
		<updated>2015-09-26T12:51:57Z</updated>

		<summary type="html">&lt;p&gt;Lessisv: /* Analysis and Design */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The &#039;&#039;&#039;Rational Unified Process (RUP)&#039;&#039;&#039; is an iterative, &#039;&#039;&#039;software development methodology&#039;&#039;&#039;, firstly introduced by the [https://en.wikipedia.org/wiki/Rational_Software Rational Software Corporation] which was [http://www-03.ibm.com/press/us/en/pressrelease/314.wss acquired by IBM] in 2003. RUP is a disciplined approach to assign tasks within a development organization and software project teams. It was developed to ensure the production of &#039;&#039;&#039;high quality software&#039;&#039;&#039; by providing the development team with a set of &#039;&#039;&#039;guidelines, templates and tool mentors&#039;&#039;&#039;, for all the critical life-cycle activities within a project. This cluster of objects, form a knowledge base that is shared between all project team members. As a result, no matter what each member is working with (e.g testing, designing, managing), they all share a common language and view on how to develop software. Consequently, team productivity is boosted, in order to deliver software that can meet and exceed the needs and expectations of end-users, strictly following a predictable budget and schedule &amp;lt;ref name=&amp;quot;Ivar Jacobson, Grady Booch, and Jim Rumbaugh&amp;quot;&amp;gt;Ivar Jacobson, Grady Booch, and Jim Rumbaugh, Unified Software Development Process, Addison-Wesley, 1999.&amp;lt;/ref&amp;gt;. RUP is the most popular and extensively documented refinement of the [https://en.wikipedia.org/wiki/Unified_Process Unified Process], an iterative and incremental software development process framework. Other worth mentioning forms are the [https://en.wikipedia.org/wiki/OpenUP OpenUP] and [https://en.wikipedia.org/wiki/Agile_Unified_Process Agile Unified Process].&lt;br /&gt;
&lt;br /&gt;
== Process Overview ==&lt;br /&gt;
&lt;br /&gt;
[[File:RUP.png|450px|right|thumb| Figure 1. The iterative model graph shows how the process is structured along two dimensions]]&lt;br /&gt;
&lt;br /&gt;
The best possible way to describe the methodology is through a 2 - dimensional graph &amp;lt;ref name=&amp;quot;IBM (2005) Rational Unified Process&amp;quot;&amp;gt;IBM (2005) Rational Unified Process – Best Practices for Software Development Teams. Rational Software White paper. Rational&amp;lt;/ref&amp;gt;.&lt;br /&gt;
* The first dimension (horizontal axis) represents the &#039;&#039;&#039;dynamic aspect&#039;&#039;&#039; of the process. It expresses &#039;&#039;&#039;time&#039;&#039;&#039; in terms of &#039;&#039;&#039;phases&#039;&#039;&#039; and &#039;&#039;&#039;iterations&#039;&#039;&#039;. &lt;br /&gt;
* The second dimension (vertical axis) represents the &#039;&#039;&#039;static aspect&#039;&#039;&#039; of the process. It expresses &#039;&#039;&#039;workflows&#039;&#039;&#039; in terms of 6 core and 3 supporting &#039;&#039;&#039;disciplines&#039;&#039;&#039; (more on that on &amp;quot;Disciplines&amp;quot; section).&lt;br /&gt;
&lt;br /&gt;
=== Time Dimension - Phases and Iterations ===&lt;br /&gt;
When developing software, the project team goes through a multi-step process, from establishing a system&#039;s requirements to designing, implementing and finally maintaining the software with new releases. This is the software life cycle  &amp;lt;ref name=&amp;quot;IBM (2003) The Rational Unified Process®&amp;quot;&amp;gt;IBM (2003) The Rational Unified Process®, Version 2003.06.12.01, Rational Software Corporation.&amp;lt;/ref&amp;gt;. RUP delicately breaks the software life cycle down to four consecutive phases &amp;lt;ref name=&amp;quot;Philippe Kruchten&amp;quot;&amp;gt;A Rational Development Process, CrossTalk, 9 (7), STSC, Hill AFB, UT, pp.11-16.&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
* Inception phase&lt;br /&gt;
* Elaboration phase&lt;br /&gt;
* Construction phase&lt;br /&gt;
* Transition phase&lt;br /&gt;
&lt;br /&gt;
Depending on the project, each of these phases can consist of one to a number of &#039;&#039;&#039;iterations&#039;&#039;&#039;. An iteration is defined as a complete development loop, resulting in a new product release. All the phases include a well-defined milestone, in order to be completed. In the end of every phase, the development team can evaluate whether all the key goals have been achieved, all stakeholders have been considered and the actual expenditures correspond with the planned ones  &amp;lt;ref name=&amp;quot;Barry W. Boehm&amp;quot;&amp;gt;Barry W. Boehm, Anchoring the Software Process, IEEE Software, 13, 4, July 1996, pp. 73-82. &amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[File:RUP_phases.png|550px|right|thumb| Figure 2. The four phases and milestones of a project]]&lt;br /&gt;
==== Inception Phase ====&lt;br /&gt;
The first phase is the inception phase. The focus of this phase, is understanding the scope of the project and studying if is both worth doing and possible to do. All the internal and external entities that the system will interact with are identified and the nature of the interaction is well defined at a high level. For this reason, the inception phase is primarily significant for new development projects. &lt;br /&gt;
The expected outcome of the inception phase includes :&lt;br /&gt;
&lt;br /&gt;
* A vision document: The document states the general vision of the project including its key requirements, features and main constraints.&lt;br /&gt;
* An initial use-case model (10%-20% complete)&lt;br /&gt;
* An initial project glossary&lt;br /&gt;
* An initial business case, including the business context, success criteria and a financial forecast.&lt;br /&gt;
* An initial risk assessment&lt;br /&gt;
* A project plan (phases and iterations)&lt;br /&gt;
* A business model (if necessary)&lt;br /&gt;
* Prototypes&lt;br /&gt;
&lt;br /&gt;
At the end of the inception phase lies the first major project milestone; the &#039;&#039;&#039;Lifecycle Objective Milestone&#039;&#039;&#039;.&lt;br /&gt;
The inception phase has five evaluation criteria:&lt;br /&gt;
&lt;br /&gt;
* Stakeholder concurrence on scope definition and cost/schedule estimates.&lt;br /&gt;
* Depth and breadth of any prototype that was developed.&lt;br /&gt;
* Actual expenditures versus planned ones.&lt;br /&gt;
* Requirements understanding.&lt;br /&gt;
* Credibility of the cost/schedule estimates, risks and priorities.&lt;br /&gt;
&lt;br /&gt;
If for any reason the project fails to pass this milestone, it can either be completely cancelled or re-designed to successfully meet the criteria.&lt;br /&gt;
 &lt;br /&gt;
==== Elaboration Phase ====&lt;br /&gt;
The second phase is the elaboration phase. The focus of this phase, is establishing a baseline to the architecture of the system, further developing the project plan and analyzing the problem domain while trying to mitigate the highest risk elements. In other words, this is the phase where the project starts to take shape. One of the most important characteristics of this phase, is the production of a component-based architectural prototype. The purpose of this prototype, is to address the critical use-cases that were identified in the previous phase, and hopefully expose the highest technical risks of the project. The expected outcome of the elaboration phase includes:&lt;br /&gt;
&lt;br /&gt;
* A use-case model (at least 80% complete) which will be able to identify all the actors and use-cases.&lt;br /&gt;
* Supplementary requirements (if any).&lt;br /&gt;
* A clear description of the software architecture.&lt;br /&gt;
* An architectural prototype.&lt;br /&gt;
* A more detailed risk assessment and business case.&lt;br /&gt;
* A development plan for the overall project.&lt;br /&gt;
* A preliminary user manual (optional).&lt;br /&gt;
&lt;br /&gt;
At the end of the elaboration phase lies the second major project milestone; the &#039;&#039;&#039;Lifecycle Architecture Milestone&#039;&#039;&#039;.&lt;br /&gt;
The elaboration phase has six evaluation criteria:&lt;br /&gt;
&lt;br /&gt;
* Is the vision stable enough?&lt;br /&gt;
* Is the system architecture stable enough?&lt;br /&gt;
* Have all the major risks been successfully identified and resolved?&lt;br /&gt;
* Is the plan for the construction phase accurate enough?&lt;br /&gt;
* Do all the stakeholders share the opinion that the vision can be achieved by executing the current plan?&lt;br /&gt;
* Is the actual vs planned resource expenditure in acceptable levels?&lt;br /&gt;
&lt;br /&gt;
If the project fails to pass the milestone, there is still time to be re-designed or even cancelled. However, when the project moves to the next phase the associated operation risks raise significantly and changes become much more difficult.&lt;br /&gt;
&lt;br /&gt;
==== Construction Phase====&lt;br /&gt;
The third phase is the construction phase. The focus of this phase, is to develop and integrate all the remaining components and application features into the product. In other words this is the phase where the vision is finally translated into a final stable product, which is based on the architecture that was developed during the previous phases  &amp;lt;ref name=&amp;quot;KRUCHTEN, P. (2000)&amp;quot;&amp;gt;KRUCHTEN, P. (2000) The Rational Unified Process - An Introduction, Second Edition, Addison-Wesley.&amp;lt;/ref&amp;gt;. Most emphasize is given to resources, control and process management in order to fully optimize costs, schedules and quality &amp;lt;ref name=&amp;quot;IBM (2003) The Rational Unified Process®&amp;quot;&amp;gt;IBM (2003) The Rational Unified Process®, Version 2003.06.12.01, Rational Software Corporation.&amp;lt;/ref&amp;gt;. The existing prototype evolves via a number of iterations into a fully functional product that meets the stakeholders&#039; needs. The construction phase is usually the longest one of the project life cycle. The expected outcome of the construction phase includes:&lt;br /&gt;
&lt;br /&gt;
* First external release of the software.&lt;br /&gt;
* User manuals.&lt;br /&gt;
* A detailed description of the current release.&lt;br /&gt;
&lt;br /&gt;
At the end of the construction phase lies the third major project milestone; the &#039;&#039;&#039;Initial Operation Capability Milestone&#039;&#039;&#039;.&lt;br /&gt;
The construction phase has three evaluation criteria:&lt;br /&gt;
&lt;br /&gt;
* Is the software release stable enough to be given to the user community?&lt;br /&gt;
* Are all the stakeholders ready for the transition to the user community?&lt;br /&gt;
* Is the actual vs planned resource expenditure in acceptable levels?&lt;br /&gt;
&lt;br /&gt;
If the project fails to pass this milestone, transition may have to be postponed by one release.&lt;br /&gt;
&lt;br /&gt;
==== Transition Phase ====&lt;br /&gt;
The fourth and final phase is the transition phase. The focus of this phase is, as the word says, to transition the software product to the user community. It includes ensuring that the product has been developed to an acceptable quality level, by beta testing the software through the end users, and validating it against the stakeholders&#039; expectations. Once the product has been given for beta testing, a number of issues can arise, requiring the development of new releases (fixing bugs) and adding features that may have been postponed. The expected outcome of the transition phase includes:&lt;br /&gt;
&lt;br /&gt;
* Beta-testing to fix any major [https://en.wikipedia.org/wiki/Software_bug software bugs] and add any missing features.&lt;br /&gt;
* Conversion of operational databases&lt;br /&gt;
* Training of end users and maintainers.&lt;br /&gt;
* Marketing and distribution of the product.&lt;br /&gt;
&lt;br /&gt;
At the end of the transition phase lies the fourth and final major project milestone; the &#039;&#039;&#039;Product Release&#039;&#039;&#039;.&lt;br /&gt;
The transition phase has two evaluation criteria:&lt;br /&gt;
&lt;br /&gt;
* Are the end - users satisfied with the product?&lt;br /&gt;
* Is the actual vs planned resource expenditure in acceptable levels?&lt;br /&gt;
&lt;br /&gt;
==== Iterations ====&lt;br /&gt;
As stated before, every phase can consist of a number of iterations, depending on the project size and scope. RUP, in comparison to the traditional [https://en.wikipedia.org/wiki/Waterfall_model waterfall] approach, is heavily based on iterations. This gives a number of advantages and benefits to the project team, with the most important one being mitigating risks much more earlier in the project. Moreover, change is more manageable and there is normally a higher level of reuse. Finally, iterations ensure an overall high quality in the final product and that the project team can learn throughout the developing process &amp;lt;ref name=&amp;quot;KRUCHTEN, P.&amp;quot;&amp;gt; KRUCHTEN, P. A Rational Development Process, CrossTalk, 9 (7), STSC, Hill AFB, UT, pp.11-16.&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Workflow Dimension - Disciplines ===&lt;br /&gt;
&lt;br /&gt;
[[File:activities.png|350px|right|thumb| Figure 4. Individuals, Roles and Activities]]&lt;br /&gt;
[[File:workflows.png|350px|right|thumb| Figure 5. Example of a workflow]]&lt;br /&gt;
&lt;br /&gt;
A process describes &#039;&#039;&#039;who&#039;&#039;&#039; is doing &#039;&#039;&#039;what&#039;&#039;&#039;, &#039;&#039;&#039;how&#039;&#039;&#039; and &#039;&#039;&#039;when&#039;&#039;&#039;. RUP addresses those terms with four modelling elements; &#039;&#039;&#039;Roles&#039;&#039;&#039;, &#039;&#039;&#039;Activities&#039;&#039;&#039;, &#039;&#039;&#039;Artifacts&#039;&#039;&#039; and &#039;&#039;&#039;Workflows&#039;&#039;&#039; respectively  &amp;lt;ref name=&amp;quot;IBM (2005) Rational Unified Process&amp;quot;&amp;gt; IBM (2005) Rational Unified Process – Best Practices for Software Development Teams. Rational Software White paper. Rational. &amp;lt;/ref&amp;gt;. A &#039;&#039;&#039;role&#039;&#039;&#039;, formally addressed as a worker, describes the behavior and responsibilities of an individual or a group of individuals in order to produce an artifact. Throughout the development of a project, a person can play one or a number of roles. Some examples of roles are the system analyst, designer, tester. &#039;&#039;&#039;Activities&#039;&#039;&#039; are expressed through behaviors. An activity, is a job that a person performs through his role, as seen in Figure 4. The length of an activity may vary from a few hours to a number of days. Examples of activities are: Plan an operation - performed by the role of Project Manager or add a missing feature - performed by the role of a software developer. All activities produce a meaningful result, called an artifact. &#039;&#039;&#039;Artifacts&#039;&#039;&#039;, are the responsibilities of ones role or roles and express a piece of information that is produced, modified or even used by a process. They can act both as input or output of an activity. Examples of artifacts are the source code, the business case, the software architecture. The roles perform activities that can produce a sequence of artifacts, called &#039;&#039;&#039;workflows&#039;&#039;&#039;. Examples of workflows can be seen in Figure 5. &lt;br /&gt;
&lt;br /&gt;
RUP identifies nine core process workflows, called &#039;&#039;&#039;disciplines&#039;&#039;&#039;. Every discipline, addresses a set of activities and artifacts, based upon a set of skills that are common in an ICT project. These disciplines have the ability to arrange the activities and artifacts in such a way, to provide an understanding of the overall project from a waterfall perspective  &amp;lt;ref name=&amp;quot;RATIONALUNIVERSITY (2003) PRJ270&amp;quot;&amp;gt;RATIONALUNIVERSITY (2003) PRJ270: Essentials of Rational Unified Process - Student Manual, IBM Corporation. &amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
There are six core &amp;quot;engineering&amp;quot; disciplines:&lt;br /&gt;
* Business Modelling Discipline&lt;br /&gt;
* Requirements Discipline&lt;br /&gt;
* Analysis and Design Discipline&lt;br /&gt;
* Implementation Discipline&lt;br /&gt;
* Test Discipline&lt;br /&gt;
* Deployment Discipline&lt;br /&gt;
&lt;br /&gt;
And three core &amp;quot;supporting&amp;quot; disciplines:&lt;br /&gt;
* Project Management Discipline&lt;br /&gt;
* Configuration and Change Management Discipline&lt;br /&gt;
* Environment Discipline&lt;br /&gt;
&lt;br /&gt;
==== Business Modelling ====&lt;br /&gt;
&lt;br /&gt;
Miscommunication between the software engineering community and the business engineering community is one of the most common problems among most business engineering efforts. This means that the output from software development efforts is not correctly used as input to the business engineering and vice versa. The purpose of the Business Modelling discipline is to provide a common language between the two communities and create a direct coupling between software and business models. All business processes are documented using &amp;quot;use cases&amp;quot;. This assures that all stakeholders share the same understanding of the demanding organization.&lt;br /&gt;
&lt;br /&gt;
==== Requirements ====&lt;br /&gt;
The purpose of the requirements discipline is to describe in detail &#039;&#039;&#039;what&#039;&#039;&#039; the system should do. Based on that, a Vision document is created where required functionality and constraints are documented. Moreover, actors (end - users) and use cases (behaviors of the system) are identified. Use cases are described in detail and each description clearly shows how the system interacts with the actors. This way an agreement is established between the customers and the rest of the stakeholders regarding the system&#039;s capabilities, user-interface and the end user&#039;s needs.&lt;br /&gt;
&lt;br /&gt;
==== Analysis and Design ====&lt;br /&gt;
&lt;br /&gt;
The purpose of the Analysis and Design discipline it to investigate &#039;&#039;&#039;how&#039;&#039;&#039; the system requirements will be translated into a detailed implementation plan. The system needs to:&lt;br /&gt;
* Perform exactly as described in the use-case descriptions.&lt;br /&gt;
* Fulfill all requirements.&lt;br /&gt;
* Have a robust structure.&lt;br /&gt;
&lt;br /&gt;
Analysis and Design result in the creation of a &#039;&#039;&#039;design model&#039;&#039;&#039;  &amp;lt;ref name=&amp;quot;IBM (2003) The Rational Unified Process®&amp;quot;&amp;gt;IBM (2003) The Rational Unified Process®, Version 2003.06.12.01, Rational Software Corporation.&amp;lt;/ref&amp;gt;. The design model is an abstraction of the system&#039;s architecture and acts as a guide of how the source code should be finally written and structured.&lt;br /&gt;
&lt;br /&gt;
==== Implementation ====&lt;br /&gt;
The purpose of the Implementation discipline is to:&lt;br /&gt;
&lt;br /&gt;
* Arrange the code into subsystems, organized in layers.&lt;br /&gt;
* Implement classes and objects in terms of components.&lt;br /&gt;
* Uni-test the developed components to ensure quality.&lt;br /&gt;
* Integrate the results into an executable system.&lt;br /&gt;
&lt;br /&gt;
The whole system can be realized as an implementation of various components. RUP enables the integration of those components, in a revolutionary way, making the system easier to maintain and increasing the possibilities for future re-use.&lt;br /&gt;
&lt;br /&gt;
==== Test ====&lt;br /&gt;
&lt;br /&gt;
In the implementation discipline, all the developed components were uni-tested individually and were integrated into the system. The purpose of the Test discipline is to assess the system as a whole and verify the product quality. It is a mechanism to verify the smooth interaction between the various components, their proper integration into the system and finally ensure that all requirements have been successfully implemented. All tests are carried out along 4 quality dimensions:&lt;br /&gt;
* Functionality.&lt;br /&gt;
* Reliability.&lt;br /&gt;
* Application Performance.&lt;br /&gt;
* System Performance.&lt;br /&gt;
&lt;br /&gt;
==== Deployment ====&lt;br /&gt;
&lt;br /&gt;
The purpose of the Deployment discipline is primarily to develop product releases and distribute the software to the end – users. More specifically the Deployment discipline focuses at:&lt;br /&gt;
&lt;br /&gt;
* Developing external software releases&lt;br /&gt;
* Distributing the software&lt;br /&gt;
* Installing the software&lt;br /&gt;
* Providing help to the end – users&lt;br /&gt;
* Creating an up-to-date user manual&lt;br /&gt;
* Conducting beta testing&lt;br /&gt;
&lt;br /&gt;
==== Project Management ====&lt;br /&gt;
&lt;br /&gt;
The purpose of the Project Management discipline, is to successfully balance competing objectives, manage and mitigate risks and finally handle any constraints on delivering the product. Project management, ideally provides:&lt;br /&gt;
&lt;br /&gt;
* A framework for managing software-intensive projects.&lt;br /&gt;
* A framework to successfully manage risks.&lt;br /&gt;
* A framework to plan, execute and monitor projects.&lt;br /&gt;
&lt;br /&gt;
While the discipline does not guarantee success, the odds of delivering successful software are greatly improved  &amp;lt;ref name=&amp;quot;Walker Royce&amp;quot;&amp;gt;Walker Royce, Software Project Management  A Unified Framework, Addison-Wesley, 1998. &amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==== Configuration and Change Management ====&lt;br /&gt;
&lt;br /&gt;
The purpose of the Configuration and Change Management Discipline is to control, maintain and configure all the various artifacts that are produced by the different actors that are working on a project. During the software development life cycle, artifacts are regularly updated (changed). In order to understand the current state of an artifact, it is very important to keep track of its location and history; what was the reason and who decided to change the artifact. The discipline helps create a framework that keeps track of all the project assets.&lt;br /&gt;
&lt;br /&gt;
==== Environment ====&lt;br /&gt;
&lt;br /&gt;
The purpose of the environment discipline, is to provide the development team with all the processes, tools and methods for supporting all developing activities. It is responsible for producing a Development Kit, able to provide guidelines and templates for customizing processes.&lt;br /&gt;
&lt;br /&gt;
== Why RUP - Best Practices ==&lt;br /&gt;
&lt;br /&gt;
RUP captures many of the “best practices” that are currently used in modern software development and more particularly in industry by successful organizations. The practices are:&lt;br /&gt;
&lt;br /&gt;
* Develop Software Iteratively&lt;br /&gt;
* Manage Requirements&lt;br /&gt;
* Use component-based architectures&lt;br /&gt;
* Visually model software&lt;br /&gt;
* Continuously verify software quality&lt;br /&gt;
* Control changes to software&lt;br /&gt;
&lt;br /&gt;
=== Develop Software iteratively ===&lt;br /&gt;
&lt;br /&gt;
Today’s high sophisticated software systems, consist of many and complex structures which make it nearly impossible to define the entire system from the very beginning, develop the entire solution and then test the product in the end. RUP uses an iterative approach that allows an increasing understanding of the problem and developing a step – by – step solution, over multiple iterations. Each iteration ends with an executable release, which enables continuous end - user involvement and feedback. As a result, the risks of the project are mitigated at an early stage and stakeholders are ensured that the project requirements are fulfilled.&lt;br /&gt;
&lt;br /&gt;
=== Manage requirements ===&lt;br /&gt;
&lt;br /&gt;
The requirements of a system include the description of the services that the system is able to provide and its operational constraints. RUP documents, organizes and tracks required functionality and constraints and easily communicates business requirements. The use – cases that are used in the process are an excellent way to ensure that requirements are actually those elements that drive the design, implementation and testing of software, making it more likely that the final system fulfills the stakeholders needs.&lt;br /&gt;
&lt;br /&gt;
=== Use component-based architectures ===&lt;br /&gt;
&lt;br /&gt;
Component-based architecture makes the system dynamic; components are independent from the system and interact with other components through well-defined interfaces. Their in-dependency from the system, gives them a great flexibility meaning that they can easily be added, updated or totally replaced. RUP supports component-based software development by providing a systematic approach to defining an architecture using new and existing components.&lt;br /&gt;
&lt;br /&gt;
=== Visually model software ===&lt;br /&gt;
&lt;br /&gt;
A model is an abstraction of reality that can help better comprehend large and complex systems. Visual abstractions help the development team to easily communicate different aspects of the software and see how all the components fit together. RUP uses the [http://www.uml.org/ Unified Modelling Language (UML)] standard which is a graphical language for visualizing and constructing the artifacts of a software-intensive system.&lt;br /&gt;
&lt;br /&gt;
=== Continuously verify software quality ===&lt;br /&gt;
&lt;br /&gt;
In software development, quality should always be reviewed with respect to the requirements based on reliability, functionality , application and system performance. In RUP, quality verification and assessment is built into the process, inside all activities, including all stakeholders and is not treated as a separate activity, performed by a separate group.&lt;br /&gt;
&lt;br /&gt;
=== Control changes to software ===&lt;br /&gt;
&lt;br /&gt;
A software system is developed by a number of teams or individuals, using different platforms and at times being in different locations. As a result, it is essential to somehow make sure that all the changes made in the system are synchronized and constantly verified. RUP ensures that all the individuals working in the project are well informed about any changes and everything is in sync. The process describes how to control, track and monitor changes to enable successful iterative development.&lt;br /&gt;
&lt;br /&gt;
== Limitations ==&lt;br /&gt;
&lt;br /&gt;
While being a complete methodology in itself with an emphasis on accurate documentation and quickly resolving project associated risks, RUP comes with a number of limitations.&lt;br /&gt;
&lt;br /&gt;
* In order for team members to start developing software under this methodology, they need to be &#039;&#039;&#039;experts&#039;&#039;&#039; in their respective fields.&lt;br /&gt;
* The development process can easily become too complex to handle.&lt;br /&gt;
* When working with cutting - edge projects that highly utilize new technology, components will not be able to be reused. &lt;br /&gt;
* While in theory integration throughout the process of software development sounds like a good thing, when working with particularly complex projects with multiple development streams, issues and significant confusion may rise during the stages of testing.&lt;br /&gt;
&lt;br /&gt;
== Conclusion ==&lt;br /&gt;
&lt;br /&gt;
The Rational Unified Process, is an exemplary method for addressing and mitigating risks from the very early stages, by rapidly developing an initial version of the system (prototype) that describes its architecture. There are not fixed requirements from the beginning but rather allows refining requirements , while the project progresses. It expects and actually deals with change pretty well while its main focus is the quality of the product and the degree to which it satisfies its end - users, throughout the project life-cycle. However, while being a complete and well documented methodology, it should be stressed that remains a very complex one. In order to increase the likelihood of success, while adopting this methodology, all the project members need to be &#039;&#039;&#039;experts&#039;&#039;&#039; in their respective fields. The method can easily become too difficult to learn and most importantly too difficult to apply.&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Lessisv</name></author>
	</entry>
	<entry>
		<id>http://13.50.150.85/index.php?title=Rational_Unified_Process_(RUP)&amp;diff=14745</id>
		<title>Rational Unified Process (RUP)</title>
		<link rel="alternate" type="text/html" href="http://13.50.150.85/index.php?title=Rational_Unified_Process_(RUP)&amp;diff=14745"/>
		<updated>2015-09-26T12:40:55Z</updated>

		<summary type="html">&lt;p&gt;Lessisv: /* Workflow Dimension - Disciplines */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The &#039;&#039;&#039;Rational Unified Process (RUP)&#039;&#039;&#039; is an iterative, &#039;&#039;&#039;software development methodology&#039;&#039;&#039;, firstly introduced by the [https://en.wikipedia.org/wiki/Rational_Software Rational Software Corporation] which was [http://www-03.ibm.com/press/us/en/pressrelease/314.wss acquired by IBM] in 2003. RUP is a disciplined approach to assign tasks within a development organization and software project teams. It was developed to ensure the production of &#039;&#039;&#039;high quality software&#039;&#039;&#039; by providing the development team with a set of &#039;&#039;&#039;guidelines, templates and tool mentors&#039;&#039;&#039;, for all the critical life-cycle activities within a project. This cluster of objects, form a knowledge base that is shared between all project team members. As a result, no matter what each member is working with (e.g testing, designing, managing), they all share a common language and view on how to develop software. Consequently, team productivity is boosted, in order to deliver software that can meet and exceed the needs and expectations of end-users, strictly following a predictable budget and schedule &amp;lt;ref name=&amp;quot;Ivar Jacobson, Grady Booch, and Jim Rumbaugh&amp;quot;&amp;gt;Ivar Jacobson, Grady Booch, and Jim Rumbaugh, Unified Software Development Process, Addison-Wesley, 1999.&amp;lt;/ref&amp;gt;. RUP is the most popular and extensively documented refinement of the [https://en.wikipedia.org/wiki/Unified_Process Unified Process], an iterative and incremental software development process framework. Other worth mentioning forms are the [https://en.wikipedia.org/wiki/OpenUP OpenUP] and [https://en.wikipedia.org/wiki/Agile_Unified_Process Agile Unified Process].&lt;br /&gt;
&lt;br /&gt;
== Process Overview ==&lt;br /&gt;
&lt;br /&gt;
[[File:RUP.png|450px|right|thumb| Figure 1. The iterative model graph shows how the process is structured along two dimensions]]&lt;br /&gt;
&lt;br /&gt;
The best possible way to describe the methodology is through a 2 - dimensional graph &amp;lt;ref name=&amp;quot;IBM (2005) Rational Unified Process&amp;quot;&amp;gt;IBM (2005) Rational Unified Process – Best Practices for Software Development Teams. Rational Software White paper. Rational&amp;lt;/ref&amp;gt;.&lt;br /&gt;
* The first dimension (horizontal axis) represents the &#039;&#039;&#039;dynamic aspect&#039;&#039;&#039; of the process. It expresses &#039;&#039;&#039;time&#039;&#039;&#039; in terms of &#039;&#039;&#039;phases&#039;&#039;&#039; and &#039;&#039;&#039;iterations&#039;&#039;&#039;. &lt;br /&gt;
* The second dimension (vertical axis) represents the &#039;&#039;&#039;static aspect&#039;&#039;&#039; of the process. It expresses &#039;&#039;&#039;workflows&#039;&#039;&#039; in terms of 6 core and 3 supporting &#039;&#039;&#039;disciplines&#039;&#039;&#039; (more on that on &amp;quot;Disciplines&amp;quot; section).&lt;br /&gt;
&lt;br /&gt;
=== Time Dimension - Phases and Iterations ===&lt;br /&gt;
When developing software, the project team goes through a multi-step process, from establishing a system&#039;s requirements to designing, implementing and finally maintaining the software with new releases. This is the software life cycle  &amp;lt;ref name=&amp;quot;IBM (2003) The Rational Unified Process®&amp;quot;&amp;gt;IBM (2003) The Rational Unified Process®, Version 2003.06.12.01, Rational Software Corporation.&amp;lt;/ref&amp;gt;. RUP delicately breaks the software life cycle down to four consecutive phases &amp;lt;ref name=&amp;quot;Philippe Kruchten&amp;quot;&amp;gt;A Rational Development Process, CrossTalk, 9 (7), STSC, Hill AFB, UT, pp.11-16.&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
* Inception phase&lt;br /&gt;
* Elaboration phase&lt;br /&gt;
* Construction phase&lt;br /&gt;
* Transition phase&lt;br /&gt;
&lt;br /&gt;
Depending on the project, each of these phases can consist of one to a number of &#039;&#039;&#039;iterations&#039;&#039;&#039;. An iteration is defined as a complete development loop, resulting in a new product release. All the phases include a well-defined milestone, in order to be completed. In the end of every phase, the development team can evaluate whether all the key goals have been achieved, all stakeholders have been considered and the actual expenditures correspond with the planned ones  &amp;lt;ref name=&amp;quot;Barry W. Boehm&amp;quot;&amp;gt;Barry W. Boehm, Anchoring the Software Process, IEEE Software, 13, 4, July 1996, pp. 73-82. &amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[File:RUP_phases.png|550px|right|thumb| Figure 2. The four phases and milestones of a project]]&lt;br /&gt;
==== Inception Phase ====&lt;br /&gt;
The first phase is the inception phase. The focus of this phase, is understanding the scope of the project and studying if is both worth doing and possible to do. All the internal and external entities that the system will interact with are identified and the nature of the interaction is well defined at a high level. For this reason, the inception phase is primarily significant for new development projects. &lt;br /&gt;
The expected outcome of the inception phase includes :&lt;br /&gt;
&lt;br /&gt;
* A vision document: The document states the general vision of the project including its key requirements, features and main constraints.&lt;br /&gt;
* An initial use-case model (10%-20% complete)&lt;br /&gt;
* An initial project glossary&lt;br /&gt;
* An initial business case, including the business context, success criteria and a financial forecast.&lt;br /&gt;
* An initial risk assessment&lt;br /&gt;
* A project plan (phases and iterations)&lt;br /&gt;
* A business model (if necessary)&lt;br /&gt;
* Prototypes&lt;br /&gt;
&lt;br /&gt;
At the end of the inception phase lies the first major project milestone; the &#039;&#039;&#039;Lifecycle Objective Milestone&#039;&#039;&#039;.&lt;br /&gt;
The inception phase has five evaluation criteria:&lt;br /&gt;
&lt;br /&gt;
* Stakeholder concurrence on scope definition and cost/schedule estimates.&lt;br /&gt;
* Depth and breadth of any prototype that was developed.&lt;br /&gt;
* Actual expenditures versus planned ones.&lt;br /&gt;
* Requirements understanding.&lt;br /&gt;
* Credibility of the cost/schedule estimates, risks and priorities.&lt;br /&gt;
&lt;br /&gt;
If for any reason the project fails to pass this milestone, it can either be completely cancelled or re-designed to successfully meet the criteria.&lt;br /&gt;
 &lt;br /&gt;
==== Elaboration Phase ====&lt;br /&gt;
The second phase is the elaboration phase. The focus of this phase, is establishing a baseline to the architecture of the system, further developing the project plan and analyzing the problem domain while trying to mitigate the highest risk elements. In other words, this is the phase where the project starts to take shape. One of the most important characteristics of this phase, is the production of a component-based architectural prototype. The purpose of this prototype, is to address the critical use-cases that were identified in the previous phase, and hopefully expose the highest technical risks of the project. The expected outcome of the elaboration phase includes:&lt;br /&gt;
&lt;br /&gt;
* A use-case model (at least 80% complete) which will be able to identify all the actors and use-cases.&lt;br /&gt;
* Supplementary requirements (if any).&lt;br /&gt;
* A clear description of the software architecture.&lt;br /&gt;
* An architectural prototype.&lt;br /&gt;
* A more detailed risk assessment and business case.&lt;br /&gt;
* A development plan for the overall project.&lt;br /&gt;
* A preliminary user manual (optional).&lt;br /&gt;
&lt;br /&gt;
At the end of the elaboration phase lies the second major project milestone; the &#039;&#039;&#039;Lifecycle Architecture Milestone&#039;&#039;&#039;.&lt;br /&gt;
The elaboration phase has six evaluation criteria:&lt;br /&gt;
&lt;br /&gt;
* Is the vision stable enough?&lt;br /&gt;
* Is the system architecture stable enough?&lt;br /&gt;
* Have all the major risks been successfully identified and resolved?&lt;br /&gt;
* Is the plan for the construction phase accurate enough?&lt;br /&gt;
* Do all the stakeholders share the opinion that the vision can be achieved by executing the current plan?&lt;br /&gt;
* Is the actual vs planned resource expenditure in acceptable levels?&lt;br /&gt;
&lt;br /&gt;
If the project fails to pass the milestone, there is still time to be re-designed or even cancelled. However, when the project moves to the next phase the associated operation risks raise significantly and changes become much more difficult.&lt;br /&gt;
&lt;br /&gt;
==== Construction Phase====&lt;br /&gt;
The third phase is the construction phase. The focus of this phase, is to develop and integrate all the remaining components and application features into the product. In other words this is the phase where the vision is finally translated into a final stable product, which is based on the architecture that was developed during the previous phases  &amp;lt;ref name=&amp;quot;KRUCHTEN, P. (2000)&amp;quot;&amp;gt;KRUCHTEN, P. (2000) The Rational Unified Process - An Introduction, Second Edition, Addison-Wesley.&amp;lt;/ref&amp;gt;. Most emphasize is given to resources, control and process management in order to fully optimize costs, schedules and quality &amp;lt;ref name=&amp;quot;IBM (2003) The Rational Unified Process®&amp;quot;&amp;gt;IBM (2003) The Rational Unified Process®, Version 2003.06.12.01, Rational Software Corporation.&amp;lt;/ref&amp;gt;. The existing prototype evolves via a number of iterations into a fully functional product that meets the stakeholders&#039; needs. The construction phase is usually the longest one of the project life cycle. The expected outcome of the construction phase includes:&lt;br /&gt;
&lt;br /&gt;
* First external release of the software.&lt;br /&gt;
* User manuals.&lt;br /&gt;
* A detailed description of the current release.&lt;br /&gt;
&lt;br /&gt;
At the end of the construction phase lies the third major project milestone; the &#039;&#039;&#039;Initial Operation Capability Milestone&#039;&#039;&#039;.&lt;br /&gt;
The construction phase has three evaluation criteria:&lt;br /&gt;
&lt;br /&gt;
* Is the software release stable enough to be given to the user community?&lt;br /&gt;
* Are all the stakeholders ready for the transition to the user community?&lt;br /&gt;
* Is the actual vs planned resource expenditure in acceptable levels?&lt;br /&gt;
&lt;br /&gt;
If the project fails to pass this milestone, transition may have to be postponed by one release.&lt;br /&gt;
&lt;br /&gt;
==== Transition Phase ====&lt;br /&gt;
The fourth and final phase is the transition phase. The focus of this phase is, as the word says, to transition the software product to the user community. It includes ensuring that the product has been developed to an acceptable quality level, by beta testing the software through the end users, and validating it against the stakeholders&#039; expectations. Once the product has been given for beta testing, a number of issues can arise, requiring the development of new releases (fixing bugs) and adding features that may have been postponed. The expected outcome of the transition phase includes:&lt;br /&gt;
&lt;br /&gt;
* Beta-testing to fix any major [https://en.wikipedia.org/wiki/Software_bug software bugs] and add any missing features.&lt;br /&gt;
* Conversion of operational databases&lt;br /&gt;
* Training of end users and maintainers.&lt;br /&gt;
* Marketing and distribution of the product.&lt;br /&gt;
&lt;br /&gt;
At the end of the transition phase lies the fourth and final major project milestone; the &#039;&#039;&#039;Product Release&#039;&#039;&#039;.&lt;br /&gt;
The transition phase has two evaluation criteria:&lt;br /&gt;
&lt;br /&gt;
* Are the end - users satisfied with the product?&lt;br /&gt;
* Is the actual vs planned resource expenditure in acceptable levels?&lt;br /&gt;
&lt;br /&gt;
==== Iterations ====&lt;br /&gt;
As stated before, every phase can consist of a number of iterations, depending on the project size and scope. RUP, in comparison to the traditional [https://en.wikipedia.org/wiki/Waterfall_model waterfall] approach, is heavily based on iterations. This gives a number of advantages and benefits to the project team, with the most important one being mitigating risks much more earlier in the project. Moreover, change is more manageable and there is normally a higher level of reuse. Finally, iterations ensure an overall high quality in the final product and that the project team can learn throughout the developing process &amp;lt;ref name=&amp;quot;KRUCHTEN, P.&amp;quot;&amp;gt; KRUCHTEN, P. A Rational Development Process, CrossTalk, 9 (7), STSC, Hill AFB, UT, pp.11-16.&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Workflow Dimension - Disciplines ===&lt;br /&gt;
&lt;br /&gt;
[[File:activities.png|350px|right|thumb| Figure 4. Individuals, Roles and Activities]]&lt;br /&gt;
[[File:workflows.png|350px|right|thumb| Figure 5. Example of a workflow]]&lt;br /&gt;
&lt;br /&gt;
A process describes &#039;&#039;&#039;who&#039;&#039;&#039; is doing &#039;&#039;&#039;what&#039;&#039;&#039;, &#039;&#039;&#039;how&#039;&#039;&#039; and &#039;&#039;&#039;when&#039;&#039;&#039;. RUP addresses those terms with four modelling elements; &#039;&#039;&#039;Roles&#039;&#039;&#039;, &#039;&#039;&#039;Activities&#039;&#039;&#039;, &#039;&#039;&#039;Artifacts&#039;&#039;&#039; and &#039;&#039;&#039;Workflows&#039;&#039;&#039; respectively  &amp;lt;ref name=&amp;quot;IBM (2005) Rational Unified Process&amp;quot;&amp;gt; IBM (2005) Rational Unified Process – Best Practices for Software Development Teams. Rational Software White paper. Rational. &amp;lt;/ref&amp;gt;. A &#039;&#039;&#039;role&#039;&#039;&#039;, formally addressed as a worker, describes the behavior and responsibilities of an individual or a group of individuals in order to produce an artifact. Throughout the development of a project, a person can play one or a number of roles. Some examples of roles are the system analyst, designer, tester. &#039;&#039;&#039;Activities&#039;&#039;&#039; are expressed through behaviors. An activity, is a job that a person performs through his role, as seen in Figure 4. The length of an activity may vary from a few hours to a number of days. Examples of activities are: Plan an operation - performed by the role of Project Manager or add a missing feature - performed by the role of a software developer. All activities produce a meaningful result, called an artifact. &#039;&#039;&#039;Artifacts&#039;&#039;&#039;, are the responsibilities of ones role or roles and express a piece of information that is produced, modified or even used by a process. They can act both as input or output of an activity. Examples of artifacts are the source code, the business case, the software architecture. The roles perform activities that can produce a sequence of artifacts, called &#039;&#039;&#039;workflows&#039;&#039;&#039;. Examples of workflows can be seen in Figure 5. &lt;br /&gt;
&lt;br /&gt;
RUP identifies nine core process workflows, called &#039;&#039;&#039;disciplines&#039;&#039;&#039;. Every discipline, addresses a set of activities and artifacts, based upon a set of skills that are common in an ICT project. These disciplines have the ability to arrange the activities and artifacts in such a way, to provide an understanding of the overall project from a waterfall perspective  &amp;lt;ref name=&amp;quot;RATIONALUNIVERSITY (2003) PRJ270&amp;quot;&amp;gt;RATIONALUNIVERSITY (2003) PRJ270: Essentials of Rational Unified Process - Student Manual, IBM Corporation. &amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
There are six core &amp;quot;engineering&amp;quot; disciplines:&lt;br /&gt;
* Business Modelling Discipline&lt;br /&gt;
* Requirements Discipline&lt;br /&gt;
* Analysis and Design Discipline&lt;br /&gt;
* Implementation Discipline&lt;br /&gt;
* Test Discipline&lt;br /&gt;
* Deployment Discipline&lt;br /&gt;
&lt;br /&gt;
And three core &amp;quot;supporting&amp;quot; disciplines:&lt;br /&gt;
* Project Management Discipline&lt;br /&gt;
* Configuration and Change Management Discipline&lt;br /&gt;
* Environment Discipline&lt;br /&gt;
&lt;br /&gt;
==== Business Modelling ====&lt;br /&gt;
&lt;br /&gt;
Miscommunication between the software engineering community and the business engineering community is one of the most common problems among most business engineering efforts. This means that the output from software development efforts is not correctly used as input to the business engineering and vice versa. The purpose of the Business Modelling discipline is to provide a common language between the two communities and create a direct coupling between software and business models. All business processes are documented using &amp;quot;use cases&amp;quot;. This assures that all stakeholders share the same understanding of the demanding organization.&lt;br /&gt;
&lt;br /&gt;
==== Requirements ====&lt;br /&gt;
The purpose of the requirements discipline is to describe in detail &#039;&#039;&#039;what&#039;&#039;&#039; the system should do. Based on that, a Vision document is created where required functionality and constraints are documented. Moreover, actors (end - users) and use cases (behaviors of the system) are identified. Use cases are described in detail and each description clearly shows how the system interacts with the actors. This way an agreement is established between the customers and the rest of the stakeholders regarding the system&#039;s capabilities, user-interface and the end user&#039;s needs.&lt;br /&gt;
&lt;br /&gt;
==== Analysis and Design ====&lt;br /&gt;
&lt;br /&gt;
The purpose of the Analysis and Design discipline it to investigate &#039;&#039;&#039;how&#039;&#039;&#039; the system requirements will be translated into a detailed implementation plan. The system needs to:&lt;br /&gt;
* Perform exactly as described in the use-case descriptions.&lt;br /&gt;
* Fulfill all requirements.&lt;br /&gt;
* Have a robust structure.&lt;br /&gt;
&lt;br /&gt;
Analysis and Design result in the creation of a &#039;&#039;&#039;design model&#039;&#039;&#039;. The design model is an abstraction of the system&#039;s architecture and acts as a guide of how the source code should be finally written and structured.&lt;br /&gt;
&lt;br /&gt;
==== Implementation ====&lt;br /&gt;
The purpose of the Implementation discipline is to:&lt;br /&gt;
&lt;br /&gt;
* Arrange the code into subsystems, organized in layers.&lt;br /&gt;
* Implement classes and objects in terms of components.&lt;br /&gt;
* Uni-test the developed components to ensure quality.&lt;br /&gt;
* Integrate the results into an executable system.&lt;br /&gt;
&lt;br /&gt;
The whole system can be realized as an implementation of various components. RUP enables the integration of those components, in a revolutionary way, making the system easier to maintain and increasing the possibilities for future re-use.&lt;br /&gt;
&lt;br /&gt;
==== Test ====&lt;br /&gt;
&lt;br /&gt;
In the implementation discipline, all the developed components were uni-tested individually and were integrated into the system. The purpose of the Test discipline is to assess the system as a whole and verify the product quality. It is a mechanism to verify the smooth interaction between the various components, their proper integration into the system and finally ensure that all requirements have been successfully implemented. All tests are carried out along 4 quality dimensions:&lt;br /&gt;
* Functionality.&lt;br /&gt;
* Reliability.&lt;br /&gt;
* Application Performance.&lt;br /&gt;
* System Performance.&lt;br /&gt;
&lt;br /&gt;
==== Deployment ====&lt;br /&gt;
&lt;br /&gt;
The purpose of the Deployment discipline is primarily to develop product releases and distribute the software to the end – users. More specifically the Deployment discipline focuses at:&lt;br /&gt;
&lt;br /&gt;
* Developing external software releases&lt;br /&gt;
* Distributing the software&lt;br /&gt;
* Installing the software&lt;br /&gt;
* Providing help to the end – users&lt;br /&gt;
* Creating an up-to-date user manual&lt;br /&gt;
* Conducting beta testing&lt;br /&gt;
&lt;br /&gt;
==== Project Management ====&lt;br /&gt;
&lt;br /&gt;
The purpose of the Project Management discipline, is to successfully balance competing objectives, manage and mitigate risks and finally handle any constraints on delivering the product. Project management, ideally provides:&lt;br /&gt;
&lt;br /&gt;
* A framework for managing software-intensive projects.&lt;br /&gt;
* A framework to successfully manage risks.&lt;br /&gt;
* A framework to plan, execute and monitor projects.&lt;br /&gt;
&lt;br /&gt;
While the discipline does not guarantee success, the odds of delivering successful software are greatly improved  &amp;lt;ref name=&amp;quot;Walker Royce&amp;quot;&amp;gt;Walker Royce, Software Project Management  A Unified Framework, Addison-Wesley, 1998. &amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==== Configuration and Change Management ====&lt;br /&gt;
&lt;br /&gt;
The purpose of the Configuration and Change Management Discipline is to control, maintain and configure all the various artifacts that are produced by the different actors that are working on a project. During the software development life cycle, artifacts are regularly updated (changed). In order to understand the current state of an artifact, it is very important to keep track of its location and history; what was the reason and who decided to change the artifact. The discipline helps create a framework that keeps track of all the project assets.&lt;br /&gt;
&lt;br /&gt;
==== Environment ====&lt;br /&gt;
&lt;br /&gt;
The purpose of the environment discipline, is to provide the development team with all the processes, tools and methods for supporting all developing activities. It is responsible for producing a Development Kit, able to provide guidelines and templates for customizing processes.&lt;br /&gt;
&lt;br /&gt;
== Why RUP - Best Practices ==&lt;br /&gt;
&lt;br /&gt;
RUP captures many of the “best practices” that are currently used in modern software development and more particularly in industry by successful organizations. The practices are:&lt;br /&gt;
&lt;br /&gt;
* Develop Software Iteratively&lt;br /&gt;
* Manage Requirements&lt;br /&gt;
* Use component-based architectures&lt;br /&gt;
* Visually model software&lt;br /&gt;
* Continuously verify software quality&lt;br /&gt;
* Control changes to software&lt;br /&gt;
&lt;br /&gt;
=== Develop Software iteratively ===&lt;br /&gt;
&lt;br /&gt;
Today’s high sophisticated software systems, consist of many and complex structures which make it nearly impossible to define the entire system from the very beginning, develop the entire solution and then test the product in the end. RUP uses an iterative approach that allows an increasing understanding of the problem and developing a step – by – step solution, over multiple iterations. Each iteration ends with an executable release, which enables continuous end - user involvement and feedback. As a result, the risks of the project are mitigated at an early stage and stakeholders are ensured that the project requirements are fulfilled.&lt;br /&gt;
&lt;br /&gt;
=== Manage requirements ===&lt;br /&gt;
&lt;br /&gt;
The requirements of a system include the description of the services that the system is able to provide and its operational constraints. RUP documents, organizes and tracks required functionality and constraints and easily communicates business requirements. The use – cases that are used in the process are an excellent way to ensure that requirements are actually those elements that drive the design, implementation and testing of software, making it more likely that the final system fulfills the stakeholders needs.&lt;br /&gt;
&lt;br /&gt;
=== Use component-based architectures ===&lt;br /&gt;
&lt;br /&gt;
Component-based architecture makes the system dynamic; components are independent from the system and interact with other components through well-defined interfaces. Their in-dependency from the system, gives them a great flexibility meaning that they can easily be added, updated or totally replaced. RUP supports component-based software development by providing a systematic approach to defining an architecture using new and existing components.&lt;br /&gt;
&lt;br /&gt;
=== Visually model software ===&lt;br /&gt;
&lt;br /&gt;
A model is an abstraction of reality that can help better comprehend large and complex systems. Visual abstractions help the development team to easily communicate different aspects of the software and see how all the components fit together. RUP uses the [http://www.uml.org/ Unified Modelling Language (UML)] standard which is a graphical language for visualizing and constructing the artifacts of a software-intensive system.&lt;br /&gt;
&lt;br /&gt;
=== Continuously verify software quality ===&lt;br /&gt;
&lt;br /&gt;
In software development, quality should always be reviewed with respect to the requirements based on reliability, functionality , application and system performance. In RUP, quality verification and assessment is built into the process, inside all activities, including all stakeholders and is not treated as a separate activity, performed by a separate group.&lt;br /&gt;
&lt;br /&gt;
=== Control changes to software ===&lt;br /&gt;
&lt;br /&gt;
A software system is developed by a number of teams or individuals, using different platforms and at times being in different locations. As a result, it is essential to somehow make sure that all the changes made in the system are synchronized and constantly verified. RUP ensures that all the individuals working in the project are well informed about any changes and everything is in sync. The process describes how to control, track and monitor changes to enable successful iterative development.&lt;br /&gt;
&lt;br /&gt;
== Limitations ==&lt;br /&gt;
&lt;br /&gt;
While being a complete methodology in itself with an emphasis on accurate documentation and quickly resolving project associated risks, RUP comes with a number of limitations.&lt;br /&gt;
&lt;br /&gt;
* In order for team members to start developing software under this methodology, they need to be &#039;&#039;&#039;experts&#039;&#039;&#039; in their respective fields.&lt;br /&gt;
* The development process can easily become too complex to handle.&lt;br /&gt;
* When working with cutting - edge projects that highly utilize new technology, components will not be able to be reused. &lt;br /&gt;
* While in theory integration throughout the process of software development sounds like a good thing, when working with particularly complex projects with multiple development streams, issues and significant confusion may rise during the stages of testing.&lt;br /&gt;
&lt;br /&gt;
== Conclusion ==&lt;br /&gt;
&lt;br /&gt;
The Rational Unified Process, is an exemplary method for addressing and mitigating risks from the very early stages, by rapidly developing an initial version of the system (prototype) that describes its architecture. There are not fixed requirements from the beginning but rather allows refining requirements , while the project progresses. It expects and actually deals with change pretty well while its main focus is the quality of the product and the degree to which it satisfies its end - users, throughout the project life-cycle. However, while being a complete and well documented methodology, it should be stressed that remains a very complex one. In order to increase the likelihood of success, while adopting this methodology, all the project members need to be &#039;&#039;&#039;experts&#039;&#039;&#039; in their respective fields. The method can easily become too difficult to learn and most importantly too difficult to apply.&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Lessisv</name></author>
	</entry>
	<entry>
		<id>http://13.50.150.85/index.php?title=Rational_Unified_Process_(RUP)&amp;diff=14744</id>
		<title>Rational Unified Process (RUP)</title>
		<link rel="alternate" type="text/html" href="http://13.50.150.85/index.php?title=Rational_Unified_Process_(RUP)&amp;diff=14744"/>
		<updated>2015-09-26T12:39:09Z</updated>

		<summary type="html">&lt;p&gt;Lessisv: /* Workflow Dimension - Disciplines */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The &#039;&#039;&#039;Rational Unified Process (RUP)&#039;&#039;&#039; is an iterative, &#039;&#039;&#039;software development methodology&#039;&#039;&#039;, firstly introduced by the [https://en.wikipedia.org/wiki/Rational_Software Rational Software Corporation] which was [http://www-03.ibm.com/press/us/en/pressrelease/314.wss acquired by IBM] in 2003. RUP is a disciplined approach to assign tasks within a development organization and software project teams. It was developed to ensure the production of &#039;&#039;&#039;high quality software&#039;&#039;&#039; by providing the development team with a set of &#039;&#039;&#039;guidelines, templates and tool mentors&#039;&#039;&#039;, for all the critical life-cycle activities within a project. This cluster of objects, form a knowledge base that is shared between all project team members. As a result, no matter what each member is working with (e.g testing, designing, managing), they all share a common language and view on how to develop software. Consequently, team productivity is boosted, in order to deliver software that can meet and exceed the needs and expectations of end-users, strictly following a predictable budget and schedule &amp;lt;ref name=&amp;quot;Ivar Jacobson, Grady Booch, and Jim Rumbaugh&amp;quot;&amp;gt;Ivar Jacobson, Grady Booch, and Jim Rumbaugh, Unified Software Development Process, Addison-Wesley, 1999.&amp;lt;/ref&amp;gt;. RUP is the most popular and extensively documented refinement of the [https://en.wikipedia.org/wiki/Unified_Process Unified Process], an iterative and incremental software development process framework. Other worth mentioning forms are the [https://en.wikipedia.org/wiki/OpenUP OpenUP] and [https://en.wikipedia.org/wiki/Agile_Unified_Process Agile Unified Process].&lt;br /&gt;
&lt;br /&gt;
== Process Overview ==&lt;br /&gt;
&lt;br /&gt;
[[File:RUP.png|450px|right|thumb| Figure 1. The iterative model graph shows how the process is structured along two dimensions]]&lt;br /&gt;
&lt;br /&gt;
The best possible way to describe the methodology is through a 2 - dimensional graph &amp;lt;ref name=&amp;quot;IBM (2005) Rational Unified Process&amp;quot;&amp;gt;IBM (2005) Rational Unified Process – Best Practices for Software Development Teams. Rational Software White paper. Rational&amp;lt;/ref&amp;gt;.&lt;br /&gt;
* The first dimension (horizontal axis) represents the &#039;&#039;&#039;dynamic aspect&#039;&#039;&#039; of the process. It expresses &#039;&#039;&#039;time&#039;&#039;&#039; in terms of &#039;&#039;&#039;phases&#039;&#039;&#039; and &#039;&#039;&#039;iterations&#039;&#039;&#039;. &lt;br /&gt;
* The second dimension (vertical axis) represents the &#039;&#039;&#039;static aspect&#039;&#039;&#039; of the process. It expresses &#039;&#039;&#039;workflows&#039;&#039;&#039; in terms of 6 core and 3 supporting &#039;&#039;&#039;disciplines&#039;&#039;&#039; (more on that on &amp;quot;Disciplines&amp;quot; section).&lt;br /&gt;
&lt;br /&gt;
=== Time Dimension - Phases and Iterations ===&lt;br /&gt;
When developing software, the project team goes through a multi-step process, from establishing a system&#039;s requirements to designing, implementing and finally maintaining the software with new releases. This is the software life cycle  &amp;lt;ref name=&amp;quot;IBM (2003) The Rational Unified Process®&amp;quot;&amp;gt;IBM (2003) The Rational Unified Process®, Version 2003.06.12.01, Rational Software Corporation.&amp;lt;/ref&amp;gt;. RUP delicately breaks the software life cycle down to four consecutive phases &amp;lt;ref name=&amp;quot;Philippe Kruchten&amp;quot;&amp;gt;A Rational Development Process, CrossTalk, 9 (7), STSC, Hill AFB, UT, pp.11-16.&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
* Inception phase&lt;br /&gt;
* Elaboration phase&lt;br /&gt;
* Construction phase&lt;br /&gt;
* Transition phase&lt;br /&gt;
&lt;br /&gt;
Depending on the project, each of these phases can consist of one to a number of &#039;&#039;&#039;iterations&#039;&#039;&#039;. An iteration is defined as a complete development loop, resulting in a new product release. All the phases include a well-defined milestone, in order to be completed. In the end of every phase, the development team can evaluate whether all the key goals have been achieved, all stakeholders have been considered and the actual expenditures correspond with the planned ones  &amp;lt;ref name=&amp;quot;Barry W. Boehm&amp;quot;&amp;gt;Barry W. Boehm, Anchoring the Software Process, IEEE Software, 13, 4, July 1996, pp. 73-82. &amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[File:RUP_phases.png|550px|right|thumb| Figure 2. The four phases and milestones of a project]]&lt;br /&gt;
==== Inception Phase ====&lt;br /&gt;
The first phase is the inception phase. The focus of this phase, is understanding the scope of the project and studying if is both worth doing and possible to do. All the internal and external entities that the system will interact with are identified and the nature of the interaction is well defined at a high level. For this reason, the inception phase is primarily significant for new development projects. &lt;br /&gt;
The expected outcome of the inception phase includes :&lt;br /&gt;
&lt;br /&gt;
* A vision document: The document states the general vision of the project including its key requirements, features and main constraints.&lt;br /&gt;
* An initial use-case model (10%-20% complete)&lt;br /&gt;
* An initial project glossary&lt;br /&gt;
* An initial business case, including the business context, success criteria and a financial forecast.&lt;br /&gt;
* An initial risk assessment&lt;br /&gt;
* A project plan (phases and iterations)&lt;br /&gt;
* A business model (if necessary)&lt;br /&gt;
* Prototypes&lt;br /&gt;
&lt;br /&gt;
At the end of the inception phase lies the first major project milestone; the &#039;&#039;&#039;Lifecycle Objective Milestone&#039;&#039;&#039;.&lt;br /&gt;
The inception phase has five evaluation criteria:&lt;br /&gt;
&lt;br /&gt;
* Stakeholder concurrence on scope definition and cost/schedule estimates.&lt;br /&gt;
* Depth and breadth of any prototype that was developed.&lt;br /&gt;
* Actual expenditures versus planned ones.&lt;br /&gt;
* Requirements understanding.&lt;br /&gt;
* Credibility of the cost/schedule estimates, risks and priorities.&lt;br /&gt;
&lt;br /&gt;
If for any reason the project fails to pass this milestone, it can either be completely cancelled or re-designed to successfully meet the criteria.&lt;br /&gt;
 &lt;br /&gt;
==== Elaboration Phase ====&lt;br /&gt;
The second phase is the elaboration phase. The focus of this phase, is establishing a baseline to the architecture of the system, further developing the project plan and analyzing the problem domain while trying to mitigate the highest risk elements. In other words, this is the phase where the project starts to take shape. One of the most important characteristics of this phase, is the production of a component-based architectural prototype. The purpose of this prototype, is to address the critical use-cases that were identified in the previous phase, and hopefully expose the highest technical risks of the project. The expected outcome of the elaboration phase includes:&lt;br /&gt;
&lt;br /&gt;
* A use-case model (at least 80% complete) which will be able to identify all the actors and use-cases.&lt;br /&gt;
* Supplementary requirements (if any).&lt;br /&gt;
* A clear description of the software architecture.&lt;br /&gt;
* An architectural prototype.&lt;br /&gt;
* A more detailed risk assessment and business case.&lt;br /&gt;
* A development plan for the overall project.&lt;br /&gt;
* A preliminary user manual (optional).&lt;br /&gt;
&lt;br /&gt;
At the end of the elaboration phase lies the second major project milestone; the &#039;&#039;&#039;Lifecycle Architecture Milestone&#039;&#039;&#039;.&lt;br /&gt;
The elaboration phase has six evaluation criteria:&lt;br /&gt;
&lt;br /&gt;
* Is the vision stable enough?&lt;br /&gt;
* Is the system architecture stable enough?&lt;br /&gt;
* Have all the major risks been successfully identified and resolved?&lt;br /&gt;
* Is the plan for the construction phase accurate enough?&lt;br /&gt;
* Do all the stakeholders share the opinion that the vision can be achieved by executing the current plan?&lt;br /&gt;
* Is the actual vs planned resource expenditure in acceptable levels?&lt;br /&gt;
&lt;br /&gt;
If the project fails to pass the milestone, there is still time to be re-designed or even cancelled. However, when the project moves to the next phase the associated operation risks raise significantly and changes become much more difficult.&lt;br /&gt;
&lt;br /&gt;
==== Construction Phase====&lt;br /&gt;
The third phase is the construction phase. The focus of this phase, is to develop and integrate all the remaining components and application features into the product. In other words this is the phase where the vision is finally translated into a final stable product, which is based on the architecture that was developed during the previous phases  &amp;lt;ref name=&amp;quot;KRUCHTEN, P. (2000)&amp;quot;&amp;gt;KRUCHTEN, P. (2000) The Rational Unified Process - An Introduction, Second Edition, Addison-Wesley.&amp;lt;/ref&amp;gt;. Most emphasize is given to resources, control and process management in order to fully optimize costs, schedules and quality &amp;lt;ref name=&amp;quot;IBM (2003) The Rational Unified Process®&amp;quot;&amp;gt;IBM (2003) The Rational Unified Process®, Version 2003.06.12.01, Rational Software Corporation.&amp;lt;/ref&amp;gt;. The existing prototype evolves via a number of iterations into a fully functional product that meets the stakeholders&#039; needs. The construction phase is usually the longest one of the project life cycle. The expected outcome of the construction phase includes:&lt;br /&gt;
&lt;br /&gt;
* First external release of the software.&lt;br /&gt;
* User manuals.&lt;br /&gt;
* A detailed description of the current release.&lt;br /&gt;
&lt;br /&gt;
At the end of the construction phase lies the third major project milestone; the &#039;&#039;&#039;Initial Operation Capability Milestone&#039;&#039;&#039;.&lt;br /&gt;
The construction phase has three evaluation criteria:&lt;br /&gt;
&lt;br /&gt;
* Is the software release stable enough to be given to the user community?&lt;br /&gt;
* Are all the stakeholders ready for the transition to the user community?&lt;br /&gt;
* Is the actual vs planned resource expenditure in acceptable levels?&lt;br /&gt;
&lt;br /&gt;
If the project fails to pass this milestone, transition may have to be postponed by one release.&lt;br /&gt;
&lt;br /&gt;
==== Transition Phase ====&lt;br /&gt;
The fourth and final phase is the transition phase. The focus of this phase is, as the word says, to transition the software product to the user community. It includes ensuring that the product has been developed to an acceptable quality level, by beta testing the software through the end users, and validating it against the stakeholders&#039; expectations. Once the product has been given for beta testing, a number of issues can arise, requiring the development of new releases (fixing bugs) and adding features that may have been postponed. The expected outcome of the transition phase includes:&lt;br /&gt;
&lt;br /&gt;
* Beta-testing to fix any major [https://en.wikipedia.org/wiki/Software_bug software bugs] and add any missing features.&lt;br /&gt;
* Conversion of operational databases&lt;br /&gt;
* Training of end users and maintainers.&lt;br /&gt;
* Marketing and distribution of the product.&lt;br /&gt;
&lt;br /&gt;
At the end of the transition phase lies the fourth and final major project milestone; the &#039;&#039;&#039;Product Release&#039;&#039;&#039;.&lt;br /&gt;
The transition phase has two evaluation criteria:&lt;br /&gt;
&lt;br /&gt;
* Are the end - users satisfied with the product?&lt;br /&gt;
* Is the actual vs planned resource expenditure in acceptable levels?&lt;br /&gt;
&lt;br /&gt;
==== Iterations ====&lt;br /&gt;
As stated before, every phase can consist of a number of iterations, depending on the project size and scope. RUP, in comparison to the traditional [https://en.wikipedia.org/wiki/Waterfall_model waterfall] approach, is heavily based on iterations. This gives a number of advantages and benefits to the project team, with the most important one being mitigating risks much more earlier in the project. Moreover, change is more manageable and there is normally a higher level of reuse. Finally, iterations ensure an overall high quality in the final product and that the project team can learn throughout the developing process &amp;lt;ref name=&amp;quot;KRUCHTEN, P.&amp;quot;&amp;gt; KRUCHTEN, P. A Rational Development Process, CrossTalk, 9 (7), STSC, Hill AFB, UT, pp.11-16.&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Workflow Dimension - Disciplines ===&lt;br /&gt;
&lt;br /&gt;
[[File:activities.png|350px|right|thumb| Figure 4. Individuals, Roles and Activities]]&lt;br /&gt;
[[File:workflows.png|350px|right|thumb| Figure 5. Example of a workflow]]&lt;br /&gt;
&lt;br /&gt;
A process describes &#039;&#039;&#039;who&#039;&#039;&#039; is doing &#039;&#039;&#039;what&#039;&#039;&#039;, &#039;&#039;&#039;how&#039;&#039;&#039; and &#039;&#039;&#039;when&#039;&#039;&#039;. RUP addresses those terms with four modelling elements; &#039;&#039;&#039;Roles&#039;&#039;&#039;, &#039;&#039;&#039;Activities&#039;&#039;&#039;, &#039;&#039;&#039;Artifacts&#039;&#039;&#039; and &#039;&#039;&#039;Workflows&#039;&#039;&#039; respectively  &amp;lt;ref name=&amp;quot;IBM (2005) Rational Unified Process&amp;quot;&amp;gt; IBM (2005) Rational Unified Process – Best Practices for Software Development Teams. Rational Software White paper. Rational. &amp;lt;/ref&amp;gt;. A &#039;&#039;&#039;role&#039;&#039;&#039;, formally addressed as a worker, describes the behavior and responsibilities of an individual or a group of individuals in order to produce an artifact. Throughout the development of a project, a person can play one or a number of roles. Some examples of roles are the system analyst, designer, tester. &#039;&#039;&#039;Activities&#039;&#039;&#039; are expressed through behaviors. An activity, is a job that a person performs through his role, as seen in Figure 4. The length of an activity may vary from a few hours to a number of days. Examples of activities are: Plan an operation - performed by the role of Project Manager or add a missing feature - performed by the role of a software developer. All activities produce a meaningful result, called an artifact. &#039;&#039;&#039;Artifacts&#039;&#039;&#039;, are the responsibilities of ones role or roles and express a piece of information that is produced, modified or even used by a process. They can act both as input or output of an activity. Examples of artifacts are the source code, the business case, the software architecture. The roles perform activities that can produce a sequence of artifacts, called &#039;&#039;&#039;workflows&#039;&#039;&#039;. Examples of workflows can be seen in Figure 5. &lt;br /&gt;
&lt;br /&gt;
RUP identifies nine core process workflows, called &#039;&#039;&#039;disciplines&#039;&#039;&#039;. Every discipline, addresses a set of activities and artifacts, based upon a set of skills that are common in an ICT project. These disciplines have the ability to arrange the activities and artifacts in such a way, to provide an understanding of the overall project from a waterfall perspective.&lt;br /&gt;
&lt;br /&gt;
There are six core &amp;quot;engineering&amp;quot; disciplines:&lt;br /&gt;
* Business Modelling Discipline&lt;br /&gt;
* Requirements Discipline&lt;br /&gt;
* Analysis and Design Discipline&lt;br /&gt;
* Implementation Discipline&lt;br /&gt;
* Test Discipline&lt;br /&gt;
* Deployment Discipline&lt;br /&gt;
&lt;br /&gt;
And three core &amp;quot;supporting&amp;quot; disciplines:&lt;br /&gt;
* Project Management Discipline&lt;br /&gt;
* Configuration and Change Management Discipline&lt;br /&gt;
* Environment Discipline&lt;br /&gt;
&lt;br /&gt;
==== Business Modelling ====&lt;br /&gt;
&lt;br /&gt;
Miscommunication between the software engineering community and the business engineering community is one of the most common problems among most business engineering efforts. This means that the output from software development efforts is not correctly used as input to the business engineering and vice versa. The purpose of the Business Modelling discipline is to provide a common language between the two communities and create a direct coupling between software and business models. All business processes are documented using &amp;quot;use cases&amp;quot;. This assures that all stakeholders share the same understanding of the demanding organization.&lt;br /&gt;
&lt;br /&gt;
==== Requirements ====&lt;br /&gt;
The purpose of the requirements discipline is to describe in detail &#039;&#039;&#039;what&#039;&#039;&#039; the system should do. Based on that, a Vision document is created where required functionality and constraints are documented. Moreover, actors (end - users) and use cases (behaviors of the system) are identified. Use cases are described in detail and each description clearly shows how the system interacts with the actors. This way an agreement is established between the customers and the rest of the stakeholders regarding the system&#039;s capabilities, user-interface and the end user&#039;s needs.&lt;br /&gt;
&lt;br /&gt;
==== Analysis and Design ====&lt;br /&gt;
&lt;br /&gt;
The purpose of the Analysis and Design discipline it to investigate &#039;&#039;&#039;how&#039;&#039;&#039; the system requirements will be translated into a detailed implementation plan. The system needs to:&lt;br /&gt;
* Perform exactly as described in the use-case descriptions.&lt;br /&gt;
* Fulfill all requirements.&lt;br /&gt;
* Have a robust structure.&lt;br /&gt;
&lt;br /&gt;
Analysis and Design result in the creation of a &#039;&#039;&#039;design model&#039;&#039;&#039;. The design model is an abstraction of the system&#039;s architecture and acts as a guide of how the source code should be finally written and structured.&lt;br /&gt;
&lt;br /&gt;
==== Implementation ====&lt;br /&gt;
The purpose of the Implementation discipline is to:&lt;br /&gt;
&lt;br /&gt;
* Arrange the code into subsystems, organized in layers.&lt;br /&gt;
* Implement classes and objects in terms of components.&lt;br /&gt;
* Uni-test the developed components to ensure quality.&lt;br /&gt;
* Integrate the results into an executable system.&lt;br /&gt;
&lt;br /&gt;
The whole system can be realized as an implementation of various components. RUP enables the integration of those components, in a revolutionary way, making the system easier to maintain and increasing the possibilities for future re-use.&lt;br /&gt;
&lt;br /&gt;
==== Test ====&lt;br /&gt;
&lt;br /&gt;
In the implementation discipline, all the developed components were uni-tested individually and were integrated into the system. The purpose of the Test discipline is to assess the system as a whole and verify the product quality. It is a mechanism to verify the smooth interaction between the various components, their proper integration into the system and finally ensure that all requirements have been successfully implemented. All tests are carried out along 4 quality dimensions:&lt;br /&gt;
* Functionality.&lt;br /&gt;
* Reliability.&lt;br /&gt;
* Application Performance.&lt;br /&gt;
* System Performance.&lt;br /&gt;
&lt;br /&gt;
==== Deployment ====&lt;br /&gt;
&lt;br /&gt;
The purpose of the Deployment discipline is primarily to develop product releases and distribute the software to the end – users. More specifically the Deployment discipline focuses at:&lt;br /&gt;
&lt;br /&gt;
* Developing external software releases&lt;br /&gt;
* Distributing the software&lt;br /&gt;
* Installing the software&lt;br /&gt;
* Providing help to the end – users&lt;br /&gt;
* Creating an up-to-date user manual&lt;br /&gt;
* Conducting beta testing&lt;br /&gt;
&lt;br /&gt;
==== Project Management ====&lt;br /&gt;
&lt;br /&gt;
The purpose of the Project Management discipline, is to successfully balance competing objectives, manage and mitigate risks and finally handle any constraints on delivering the product. Project management, ideally provides:&lt;br /&gt;
&lt;br /&gt;
* A framework for managing software-intensive projects.&lt;br /&gt;
* A framework to successfully manage risks.&lt;br /&gt;
* A framework to plan, execute and monitor projects.&lt;br /&gt;
&lt;br /&gt;
While the discipline does not guarantee success, the odds of delivering successful software are greatly improved  &amp;lt;ref name=&amp;quot;Walker Royce&amp;quot;&amp;gt;Walker Royce, Software Project Management  A Unified Framework, Addison-Wesley, 1998. &amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==== Configuration and Change Management ====&lt;br /&gt;
&lt;br /&gt;
The purpose of the Configuration and Change Management Discipline is to control, maintain and configure all the various artifacts that are produced by the different actors that are working on a project. During the software development life cycle, artifacts are regularly updated (changed). In order to understand the current state of an artifact, it is very important to keep track of its location and history; what was the reason and who decided to change the artifact. The discipline helps create a framework that keeps track of all the project assets.&lt;br /&gt;
&lt;br /&gt;
==== Environment ====&lt;br /&gt;
&lt;br /&gt;
The purpose of the environment discipline, is to provide the development team with all the processes, tools and methods for supporting all developing activities. It is responsible for producing a Development Kit, able to provide guidelines and templates for customizing processes.&lt;br /&gt;
&lt;br /&gt;
== Why RUP - Best Practices ==&lt;br /&gt;
&lt;br /&gt;
RUP captures many of the “best practices” that are currently used in modern software development and more particularly in industry by successful organizations. The practices are:&lt;br /&gt;
&lt;br /&gt;
* Develop Software Iteratively&lt;br /&gt;
* Manage Requirements&lt;br /&gt;
* Use component-based architectures&lt;br /&gt;
* Visually model software&lt;br /&gt;
* Continuously verify software quality&lt;br /&gt;
* Control changes to software&lt;br /&gt;
&lt;br /&gt;
=== Develop Software iteratively ===&lt;br /&gt;
&lt;br /&gt;
Today’s high sophisticated software systems, consist of many and complex structures which make it nearly impossible to define the entire system from the very beginning, develop the entire solution and then test the product in the end. RUP uses an iterative approach that allows an increasing understanding of the problem and developing a step – by – step solution, over multiple iterations. Each iteration ends with an executable release, which enables continuous end - user involvement and feedback. As a result, the risks of the project are mitigated at an early stage and stakeholders are ensured that the project requirements are fulfilled.&lt;br /&gt;
&lt;br /&gt;
=== Manage requirements ===&lt;br /&gt;
&lt;br /&gt;
The requirements of a system include the description of the services that the system is able to provide and its operational constraints. RUP documents, organizes and tracks required functionality and constraints and easily communicates business requirements. The use – cases that are used in the process are an excellent way to ensure that requirements are actually those elements that drive the design, implementation and testing of software, making it more likely that the final system fulfills the stakeholders needs.&lt;br /&gt;
&lt;br /&gt;
=== Use component-based architectures ===&lt;br /&gt;
&lt;br /&gt;
Component-based architecture makes the system dynamic; components are independent from the system and interact with other components through well-defined interfaces. Their in-dependency from the system, gives them a great flexibility meaning that they can easily be added, updated or totally replaced. RUP supports component-based software development by providing a systematic approach to defining an architecture using new and existing components.&lt;br /&gt;
&lt;br /&gt;
=== Visually model software ===&lt;br /&gt;
&lt;br /&gt;
A model is an abstraction of reality that can help better comprehend large and complex systems. Visual abstractions help the development team to easily communicate different aspects of the software and see how all the components fit together. RUP uses the [http://www.uml.org/ Unified Modelling Language (UML)] standard which is a graphical language for visualizing and constructing the artifacts of a software-intensive system.&lt;br /&gt;
&lt;br /&gt;
=== Continuously verify software quality ===&lt;br /&gt;
&lt;br /&gt;
In software development, quality should always be reviewed with respect to the requirements based on reliability, functionality , application and system performance. In RUP, quality verification and assessment is built into the process, inside all activities, including all stakeholders and is not treated as a separate activity, performed by a separate group.&lt;br /&gt;
&lt;br /&gt;
=== Control changes to software ===&lt;br /&gt;
&lt;br /&gt;
A software system is developed by a number of teams or individuals, using different platforms and at times being in different locations. As a result, it is essential to somehow make sure that all the changes made in the system are synchronized and constantly verified. RUP ensures that all the individuals working in the project are well informed about any changes and everything is in sync. The process describes how to control, track and monitor changes to enable successful iterative development.&lt;br /&gt;
&lt;br /&gt;
== Limitations ==&lt;br /&gt;
&lt;br /&gt;
While being a complete methodology in itself with an emphasis on accurate documentation and quickly resolving project associated risks, RUP comes with a number of limitations.&lt;br /&gt;
&lt;br /&gt;
* In order for team members to start developing software under this methodology, they need to be &#039;&#039;&#039;experts&#039;&#039;&#039; in their respective fields.&lt;br /&gt;
* The development process can easily become too complex to handle.&lt;br /&gt;
* When working with cutting - edge projects that highly utilize new technology, components will not be able to be reused. &lt;br /&gt;
* While in theory integration throughout the process of software development sounds like a good thing, when working with particularly complex projects with multiple development streams, issues and significant confusion may rise during the stages of testing.&lt;br /&gt;
&lt;br /&gt;
== Conclusion ==&lt;br /&gt;
&lt;br /&gt;
The Rational Unified Process, is an exemplary method for addressing and mitigating risks from the very early stages, by rapidly developing an initial version of the system (prototype) that describes its architecture. There are not fixed requirements from the beginning but rather allows refining requirements , while the project progresses. It expects and actually deals with change pretty well while its main focus is the quality of the product and the degree to which it satisfies its end - users, throughout the project life-cycle. However, while being a complete and well documented methodology, it should be stressed that remains a very complex one. In order to increase the likelihood of success, while adopting this methodology, all the project members need to be &#039;&#039;&#039;experts&#039;&#039;&#039; in their respective fields. The method can easily become too difficult to learn and most importantly too difficult to apply.&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Lessisv</name></author>
	</entry>
	<entry>
		<id>http://13.50.150.85/index.php?title=Rational_Unified_Process_(RUP)&amp;diff=14742</id>
		<title>Rational Unified Process (RUP)</title>
		<link rel="alternate" type="text/html" href="http://13.50.150.85/index.php?title=Rational_Unified_Process_(RUP)&amp;diff=14742"/>
		<updated>2015-09-26T12:34:02Z</updated>

		<summary type="html">&lt;p&gt;Lessisv: /* Project Management */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The &#039;&#039;&#039;Rational Unified Process (RUP)&#039;&#039;&#039; is an iterative, &#039;&#039;&#039;software development methodology&#039;&#039;&#039;, firstly introduced by the [https://en.wikipedia.org/wiki/Rational_Software Rational Software Corporation] which was [http://www-03.ibm.com/press/us/en/pressrelease/314.wss acquired by IBM] in 2003. RUP is a disciplined approach to assign tasks within a development organization and software project teams. It was developed to ensure the production of &#039;&#039;&#039;high quality software&#039;&#039;&#039; by providing the development team with a set of &#039;&#039;&#039;guidelines, templates and tool mentors&#039;&#039;&#039;, for all the critical life-cycle activities within a project. This cluster of objects, form a knowledge base that is shared between all project team members. As a result, no matter what each member is working with (e.g testing, designing, managing), they all share a common language and view on how to develop software. Consequently, team productivity is boosted, in order to deliver software that can meet and exceed the needs and expectations of end-users, strictly following a predictable budget and schedule &amp;lt;ref name=&amp;quot;Ivar Jacobson, Grady Booch, and Jim Rumbaugh&amp;quot;&amp;gt;Ivar Jacobson, Grady Booch, and Jim Rumbaugh, Unified Software Development Process, Addison-Wesley, 1999.&amp;lt;/ref&amp;gt;. RUP is the most popular and extensively documented refinement of the [https://en.wikipedia.org/wiki/Unified_Process Unified Process], an iterative and incremental software development process framework. Other worth mentioning forms are the [https://en.wikipedia.org/wiki/OpenUP OpenUP] and [https://en.wikipedia.org/wiki/Agile_Unified_Process Agile Unified Process].&lt;br /&gt;
&lt;br /&gt;
== Process Overview ==&lt;br /&gt;
&lt;br /&gt;
[[File:RUP.png|450px|right|thumb| Figure 1. The iterative model graph shows how the process is structured along two dimensions]]&lt;br /&gt;
&lt;br /&gt;
The best possible way to describe the methodology is through a 2 - dimensional graph &amp;lt;ref name=&amp;quot;IBM (2005) Rational Unified Process&amp;quot;&amp;gt;IBM (2005) Rational Unified Process – Best Practices for Software Development Teams. Rational Software White paper. Rational&amp;lt;/ref&amp;gt;.&lt;br /&gt;
* The first dimension (horizontal axis) represents the &#039;&#039;&#039;dynamic aspect&#039;&#039;&#039; of the process. It expresses &#039;&#039;&#039;time&#039;&#039;&#039; in terms of &#039;&#039;&#039;phases&#039;&#039;&#039; and &#039;&#039;&#039;iterations&#039;&#039;&#039;. &lt;br /&gt;
* The second dimension (vertical axis) represents the &#039;&#039;&#039;static aspect&#039;&#039;&#039; of the process. It expresses &#039;&#039;&#039;workflows&#039;&#039;&#039; in terms of 6 core and 3 supporting &#039;&#039;&#039;disciplines&#039;&#039;&#039; (more on that on &amp;quot;Disciplines&amp;quot; section).&lt;br /&gt;
&lt;br /&gt;
=== Time Dimension - Phases and Iterations ===&lt;br /&gt;
When developing software, the project team goes through a multi-step process, from establishing a system&#039;s requirements to designing, implementing and finally maintaining the software with new releases. This is the software life cycle  &amp;lt;ref name=&amp;quot;IBM (2003) The Rational Unified Process®&amp;quot;&amp;gt;IBM (2003) The Rational Unified Process®, Version 2003.06.12.01, Rational Software Corporation.&amp;lt;/ref&amp;gt;. RUP delicately breaks the software life cycle down to four consecutive phases &amp;lt;ref name=&amp;quot;Philippe Kruchten&amp;quot;&amp;gt;A Rational Development Process, CrossTalk, 9 (7), STSC, Hill AFB, UT, pp.11-16.&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
* Inception phase&lt;br /&gt;
* Elaboration phase&lt;br /&gt;
* Construction phase&lt;br /&gt;
* Transition phase&lt;br /&gt;
&lt;br /&gt;
Depending on the project, each of these phases can consist of one to a number of &#039;&#039;&#039;iterations&#039;&#039;&#039;. An iteration is defined as a complete development loop, resulting in a new product release. All the phases include a well-defined milestone, in order to be completed. In the end of every phase, the development team can evaluate whether all the key goals have been achieved, all stakeholders have been considered and the actual expenditures correspond with the planned ones  &amp;lt;ref name=&amp;quot;Barry W. Boehm&amp;quot;&amp;gt;Barry W. Boehm, Anchoring the Software Process, IEEE Software, 13, 4, July 1996, pp. 73-82. &amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[File:RUP_phases.png|550px|right|thumb| Figure 2. The four phases and milestones of a project]]&lt;br /&gt;
==== Inception Phase ====&lt;br /&gt;
The first phase is the inception phase. The focus of this phase, is understanding the scope of the project and studying if is both worth doing and possible to do. All the internal and external entities that the system will interact with are identified and the nature of the interaction is well defined at a high level. For this reason, the inception phase is primarily significant for new development projects. &lt;br /&gt;
The expected outcome of the inception phase includes :&lt;br /&gt;
&lt;br /&gt;
* A vision document: The document states the general vision of the project including its key requirements, features and main constraints.&lt;br /&gt;
* An initial use-case model (10%-20% complete)&lt;br /&gt;
* An initial project glossary&lt;br /&gt;
* An initial business case, including the business context, success criteria and a financial forecast.&lt;br /&gt;
* An initial risk assessment&lt;br /&gt;
* A project plan (phases and iterations)&lt;br /&gt;
* A business model (if necessary)&lt;br /&gt;
* Prototypes&lt;br /&gt;
&lt;br /&gt;
At the end of the inception phase lies the first major project milestone; the &#039;&#039;&#039;Lifecycle Objective Milestone&#039;&#039;&#039;.&lt;br /&gt;
The inception phase has five evaluation criteria:&lt;br /&gt;
&lt;br /&gt;
* Stakeholder concurrence on scope definition and cost/schedule estimates.&lt;br /&gt;
* Depth and breadth of any prototype that was developed.&lt;br /&gt;
* Actual expenditures versus planned ones.&lt;br /&gt;
* Requirements understanding.&lt;br /&gt;
* Credibility of the cost/schedule estimates, risks and priorities.&lt;br /&gt;
&lt;br /&gt;
If for any reason the project fails to pass this milestone, it can either be completely cancelled or re-designed to successfully meet the criteria.&lt;br /&gt;
 &lt;br /&gt;
==== Elaboration Phase ====&lt;br /&gt;
The second phase is the elaboration phase. The focus of this phase, is establishing a baseline to the architecture of the system, further developing the project plan and analyzing the problem domain while trying to mitigate the highest risk elements. In other words, this is the phase where the project starts to take shape. One of the most important characteristics of this phase, is the production of a component-based architectural prototype. The purpose of this prototype, is to address the critical use-cases that were identified in the previous phase, and hopefully expose the highest technical risks of the project. The expected outcome of the elaboration phase includes:&lt;br /&gt;
&lt;br /&gt;
* A use-case model (at least 80% complete) which will be able to identify all the actors and use-cases.&lt;br /&gt;
* Supplementary requirements (if any).&lt;br /&gt;
* A clear description of the software architecture.&lt;br /&gt;
* An architectural prototype.&lt;br /&gt;
* A more detailed risk assessment and business case.&lt;br /&gt;
* A development plan for the overall project.&lt;br /&gt;
* A preliminary user manual (optional).&lt;br /&gt;
&lt;br /&gt;
At the end of the elaboration phase lies the second major project milestone; the &#039;&#039;&#039;Lifecycle Architecture Milestone&#039;&#039;&#039;.&lt;br /&gt;
The elaboration phase has six evaluation criteria:&lt;br /&gt;
&lt;br /&gt;
* Is the vision stable enough?&lt;br /&gt;
* Is the system architecture stable enough?&lt;br /&gt;
* Have all the major risks been successfully identified and resolved?&lt;br /&gt;
* Is the plan for the construction phase accurate enough?&lt;br /&gt;
* Do all the stakeholders share the opinion that the vision can be achieved by executing the current plan?&lt;br /&gt;
* Is the actual vs planned resource expenditure in acceptable levels?&lt;br /&gt;
&lt;br /&gt;
If the project fails to pass the milestone, there is still time to be re-designed or even cancelled. However, when the project moves to the next phase the associated operation risks raise significantly and changes become much more difficult.&lt;br /&gt;
&lt;br /&gt;
==== Construction Phase====&lt;br /&gt;
The third phase is the construction phase. The focus of this phase, is to develop and integrate all the remaining components and application features into the product. In other words this is the phase where the vision is finally translated into a final stable product, which is based on the architecture that was developed during the previous phases  &amp;lt;ref name=&amp;quot;KRUCHTEN, P. (2000)&amp;quot;&amp;gt;KRUCHTEN, P. (2000) The Rational Unified Process - An Introduction, Second Edition, Addison-Wesley.&amp;lt;/ref&amp;gt;. Most emphasize is given to resources, control and process management in order to fully optimize costs, schedules and quality &amp;lt;ref name=&amp;quot;IBM (2003) The Rational Unified Process®&amp;quot;&amp;gt;IBM (2003) The Rational Unified Process®, Version 2003.06.12.01, Rational Software Corporation.&amp;lt;/ref&amp;gt;. The existing prototype evolves via a number of iterations into a fully functional product that meets the stakeholders&#039; needs. The construction phase is usually the longest one of the project life cycle. The expected outcome of the construction phase includes:&lt;br /&gt;
&lt;br /&gt;
* First external release of the software.&lt;br /&gt;
* User manuals.&lt;br /&gt;
* A detailed description of the current release.&lt;br /&gt;
&lt;br /&gt;
At the end of the construction phase lies the third major project milestone; the &#039;&#039;&#039;Initial Operation Capability Milestone&#039;&#039;&#039;.&lt;br /&gt;
The construction phase has three evaluation criteria:&lt;br /&gt;
&lt;br /&gt;
* Is the software release stable enough to be given to the user community?&lt;br /&gt;
* Are all the stakeholders ready for the transition to the user community?&lt;br /&gt;
* Is the actual vs planned resource expenditure in acceptable levels?&lt;br /&gt;
&lt;br /&gt;
If the project fails to pass this milestone, transition may have to be postponed by one release.&lt;br /&gt;
&lt;br /&gt;
==== Transition Phase ====&lt;br /&gt;
The fourth and final phase is the transition phase. The focus of this phase is, as the word says, to transition the software product to the user community. It includes ensuring that the product has been developed to an acceptable quality level, by beta testing the software through the end users, and validating it against the stakeholders&#039; expectations. Once the product has been given for beta testing, a number of issues can arise, requiring the development of new releases (fixing bugs) and adding features that may have been postponed. The expected outcome of the transition phase includes:&lt;br /&gt;
&lt;br /&gt;
* Beta-testing to fix any major [https://en.wikipedia.org/wiki/Software_bug software bugs] and add any missing features.&lt;br /&gt;
* Conversion of operational databases&lt;br /&gt;
* Training of end users and maintainers.&lt;br /&gt;
* Marketing and distribution of the product.&lt;br /&gt;
&lt;br /&gt;
At the end of the transition phase lies the fourth and final major project milestone; the &#039;&#039;&#039;Product Release&#039;&#039;&#039;.&lt;br /&gt;
The transition phase has two evaluation criteria:&lt;br /&gt;
&lt;br /&gt;
* Are the end - users satisfied with the product?&lt;br /&gt;
* Is the actual vs planned resource expenditure in acceptable levels?&lt;br /&gt;
&lt;br /&gt;
==== Iterations ====&lt;br /&gt;
As stated before, every phase can consist of a number of iterations, depending on the project size and scope. RUP, in comparison to the traditional [https://en.wikipedia.org/wiki/Waterfall_model waterfall] approach, is heavily based on iterations. This gives a number of advantages and benefits to the project team, with the most important one being mitigating risks much more earlier in the project. Moreover, change is more manageable and there is normally a higher level of reuse. Finally, iterations ensure an overall high quality in the final product and that the project team can learn throughout the developing process &amp;lt;ref name=&amp;quot;KRUCHTEN, P.&amp;quot;&amp;gt; KRUCHTEN, P. A Rational Development Process, CrossTalk, 9 (7), STSC, Hill AFB, UT, pp.11-16.&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Workflow Dimension - Disciplines ===&lt;br /&gt;
&lt;br /&gt;
[[File:activities.png|350px|right|thumb| Figure 4. Individuals, Roles and Activities]]&lt;br /&gt;
[[File:workflows.png|350px|right|thumb| Figure 5. Example of a workflow]]&lt;br /&gt;
&lt;br /&gt;
A process describes &#039;&#039;&#039;who&#039;&#039;&#039; is doing &#039;&#039;&#039;what&#039;&#039;&#039;, &#039;&#039;&#039;how&#039;&#039;&#039; and &#039;&#039;&#039;when&#039;&#039;&#039;. RUP addresses those terms with four modelling elements; &#039;&#039;&#039;Roles&#039;&#039;&#039;, &#039;&#039;&#039;Activities&#039;&#039;&#039;, &#039;&#039;&#039;Artifacts&#039;&#039;&#039; and &#039;&#039;&#039;Workflows&#039;&#039;&#039; respectively. A &#039;&#039;&#039;role&#039;&#039;&#039;, formally addressed as a worker, describes the behavior and responsibilities of an individual or a group of individuals in order to produce an artifact. Throughout the development of a project, a person can play one or a number of roles. Some examples of roles are the system analyst, designer, tester. &#039;&#039;&#039;Activities&#039;&#039;&#039; are expressed through behaviors. An activity, is a job that a person performs through his role, as seen in Figure 4. The length of an activity may vary from a few hours to a number of days. Examples of activities are: Plan an operation - performed by the role of Project Manager or add a missing feature - performed by the role of a software developer. All activities produce a meaningful result, called an artifact. &#039;&#039;&#039;Artifacts&#039;&#039;&#039;, are the responsibilities of ones role or roles and express a piece of information that is produced, modified or even used by a process. They can act both as input or output of an activity. Examples of artifacts are the source code, the business case, the software architecture. The roles perform activities that can produce a sequence of artifacts, called &#039;&#039;&#039;workflows&#039;&#039;&#039;. Examples of workflows can be seen in Figure 5. &lt;br /&gt;
&lt;br /&gt;
RUP identifies nine core process workflows, called &#039;&#039;&#039;disciplines&#039;&#039;&#039;. Every discipline, addresses a set of activities and artifacts, based upon a set of skills that are common in an ICT project. These disciplines have the ability to arrange the activities and artifacts in such a way, to provide an understanding of the overall project from a waterfall perspective.&lt;br /&gt;
&lt;br /&gt;
There are six core &amp;quot;engineering&amp;quot; disciplines:&lt;br /&gt;
* Business Modelling Discipline&lt;br /&gt;
* Requirements Discipline&lt;br /&gt;
* Analysis and Design Discipline&lt;br /&gt;
* Implementation Discipline&lt;br /&gt;
* Test Discipline&lt;br /&gt;
* Deployment Discipline&lt;br /&gt;
&lt;br /&gt;
And three core &amp;quot;supporting&amp;quot; disciplines:&lt;br /&gt;
* Project Management Discipline&lt;br /&gt;
* Configuration and Change Management Discipline&lt;br /&gt;
* Environment Discipline&lt;br /&gt;
&lt;br /&gt;
==== Business Modelling ====&lt;br /&gt;
&lt;br /&gt;
Miscommunication between the software engineering community and the business engineering community is one of the most common problems among most business engineering efforts. This means that the output from software development efforts is not correctly used as input to the business engineering and vice versa. The purpose of the Business Modelling discipline is to provide a common language between the two communities and create a direct coupling between software and business models. All business processes are documented using &amp;quot;use cases&amp;quot;. This assures that all stakeholders share the same understanding of the demanding organization.&lt;br /&gt;
&lt;br /&gt;
==== Requirements ====&lt;br /&gt;
The purpose of the requirements discipline is to describe in detail &#039;&#039;&#039;what&#039;&#039;&#039; the system should do. Based on that, a Vision document is created where required functionality and constraints are documented. Moreover, actors (end - users) and use cases (behaviors of the system) are identified. Use cases are described in detail and each description clearly shows how the system interacts with the actors. This way an agreement is established between the customers and the rest of the stakeholders regarding the system&#039;s capabilities, user-interface and the end user&#039;s needs.&lt;br /&gt;
&lt;br /&gt;
==== Analysis and Design ====&lt;br /&gt;
&lt;br /&gt;
The purpose of the Analysis and Design discipline it to investigate &#039;&#039;&#039;how&#039;&#039;&#039; the system requirements will be translated into a detailed implementation plan. The system needs to:&lt;br /&gt;
* Perform exactly as described in the use-case descriptions.&lt;br /&gt;
* Fulfill all requirements.&lt;br /&gt;
* Have a robust structure.&lt;br /&gt;
&lt;br /&gt;
Analysis and Design result in the creation of a &#039;&#039;&#039;design model&#039;&#039;&#039;. The design model is an abstraction of the system&#039;s architecture and acts as a guide of how the source code should be finally written and structured.&lt;br /&gt;
&lt;br /&gt;
==== Implementation ====&lt;br /&gt;
The purpose of the Implementation discipline is to:&lt;br /&gt;
&lt;br /&gt;
* Arrange the code into subsystems, organized in layers.&lt;br /&gt;
* Implement classes and objects in terms of components.&lt;br /&gt;
* Uni-test the developed components to ensure quality.&lt;br /&gt;
* Integrate the results into an executable system.&lt;br /&gt;
&lt;br /&gt;
The whole system can be realized as an implementation of various components. RUP enables the integration of those components, in a revolutionary way, making the system easier to maintain and increasing the possibilities for future re-use.&lt;br /&gt;
&lt;br /&gt;
==== Test ====&lt;br /&gt;
&lt;br /&gt;
In the implementation discipline, all the developed components were uni-tested individually and were integrated into the system. The purpose of the Test discipline is to assess the system as a whole and verify the product quality. It is a mechanism to verify the smooth interaction between the various components, their proper integration into the system and finally ensure that all requirements have been successfully implemented. All tests are carried out along 4 quality dimensions:&lt;br /&gt;
* Functionality.&lt;br /&gt;
* Reliability.&lt;br /&gt;
* Application Performance.&lt;br /&gt;
* System Performance.&lt;br /&gt;
&lt;br /&gt;
==== Deployment ====&lt;br /&gt;
&lt;br /&gt;
The purpose of the Deployment discipline is primarily to develop product releases and distribute the software to the end – users. More specifically the Deployment discipline focuses at:&lt;br /&gt;
&lt;br /&gt;
* Developing external software releases&lt;br /&gt;
* Distributing the software&lt;br /&gt;
* Installing the software&lt;br /&gt;
* Providing help to the end – users&lt;br /&gt;
* Creating an up-to-date user manual&lt;br /&gt;
* Conducting beta testing&lt;br /&gt;
&lt;br /&gt;
==== Project Management ====&lt;br /&gt;
&lt;br /&gt;
The purpose of the Project Management discipline, is to successfully balance competing objectives, manage and mitigate risks and finally handle any constraints on delivering the product. Project management, ideally provides:&lt;br /&gt;
&lt;br /&gt;
* A framework for managing software-intensive projects.&lt;br /&gt;
* A framework to successfully manage risks.&lt;br /&gt;
* A framework to plan, execute and monitor projects.&lt;br /&gt;
&lt;br /&gt;
While the discipline does not guarantee success, the odds of delivering successful software are greatly improved  &amp;lt;ref name=&amp;quot;Walker Royce&amp;quot;&amp;gt;Walker Royce, Software Project Management  A Unified Framework, Addison-Wesley, 1998. &amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==== Configuration and Change Management ====&lt;br /&gt;
&lt;br /&gt;
The purpose of the Configuration and Change Management Discipline is to control, maintain and configure all the various artifacts that are produced by the different actors that are working on a project. During the software development life cycle, artifacts are regularly updated (changed). In order to understand the current state of an artifact, it is very important to keep track of its location and history; what was the reason and who decided to change the artifact. The discipline helps create a framework that keeps track of all the project assets.&lt;br /&gt;
&lt;br /&gt;
==== Environment ====&lt;br /&gt;
&lt;br /&gt;
The purpose of the environment discipline, is to provide the development team with all the processes, tools and methods for supporting all developing activities. It is responsible for producing a Development Kit, able to provide guidelines and templates for customizing processes.&lt;br /&gt;
&lt;br /&gt;
== Why RUP - Best Practices ==&lt;br /&gt;
&lt;br /&gt;
RUP captures many of the “best practices” that are currently used in modern software development and more particularly in industry by successful organizations. The practices are:&lt;br /&gt;
&lt;br /&gt;
* Develop Software Iteratively&lt;br /&gt;
* Manage Requirements&lt;br /&gt;
* Use component-based architectures&lt;br /&gt;
* Visually model software&lt;br /&gt;
* Continuously verify software quality&lt;br /&gt;
* Control changes to software&lt;br /&gt;
&lt;br /&gt;
=== Develop Software iteratively ===&lt;br /&gt;
&lt;br /&gt;
Today’s high sophisticated software systems, consist of many and complex structures which make it nearly impossible to define the entire system from the very beginning, develop the entire solution and then test the product in the end. RUP uses an iterative approach that allows an increasing understanding of the problem and developing a step – by – step solution, over multiple iterations. Each iteration ends with an executable release, which enables continuous end - user involvement and feedback. As a result, the risks of the project are mitigated at an early stage and stakeholders are ensured that the project requirements are fulfilled.&lt;br /&gt;
&lt;br /&gt;
=== Manage requirements ===&lt;br /&gt;
&lt;br /&gt;
The requirements of a system include the description of the services that the system is able to provide and its operational constraints. RUP documents, organizes and tracks required functionality and constraints and easily communicates business requirements. The use – cases that are used in the process are an excellent way to ensure that requirements are actually those elements that drive the design, implementation and testing of software, making it more likely that the final system fulfills the stakeholders needs.&lt;br /&gt;
&lt;br /&gt;
=== Use component-based architectures ===&lt;br /&gt;
&lt;br /&gt;
Component-based architecture makes the system dynamic; components are independent from the system and interact with other components through well-defined interfaces. Their in-dependency from the system, gives them a great flexibility meaning that they can easily be added, updated or totally replaced. RUP supports component-based software development by providing a systematic approach to defining an architecture using new and existing components.&lt;br /&gt;
&lt;br /&gt;
=== Visually model software ===&lt;br /&gt;
&lt;br /&gt;
A model is an abstraction of reality that can help better comprehend large and complex systems. Visual abstractions help the development team to easily communicate different aspects of the software and see how all the components fit together. RUP uses the [http://www.uml.org/ Unified Modelling Language (UML)] standard which is a graphical language for visualizing and constructing the artifacts of a software-intensive system.&lt;br /&gt;
&lt;br /&gt;
=== Continuously verify software quality ===&lt;br /&gt;
&lt;br /&gt;
In software development, quality should always be reviewed with respect to the requirements based on reliability, functionality , application and system performance. In RUP, quality verification and assessment is built into the process, inside all activities, including all stakeholders and is not treated as a separate activity, performed by a separate group.&lt;br /&gt;
&lt;br /&gt;
=== Control changes to software ===&lt;br /&gt;
&lt;br /&gt;
A software system is developed by a number of teams or individuals, using different platforms and at times being in different locations. As a result, it is essential to somehow make sure that all the changes made in the system are synchronized and constantly verified. RUP ensures that all the individuals working in the project are well informed about any changes and everything is in sync. The process describes how to control, track and monitor changes to enable successful iterative development.&lt;br /&gt;
&lt;br /&gt;
== Limitations ==&lt;br /&gt;
&lt;br /&gt;
While being a complete methodology in itself with an emphasis on accurate documentation and quickly resolving project associated risks, RUP comes with a number of limitations.&lt;br /&gt;
&lt;br /&gt;
* In order for team members to start developing software under this methodology, they need to be &#039;&#039;&#039;experts&#039;&#039;&#039; in their respective fields.&lt;br /&gt;
* The development process can easily become too complex to handle.&lt;br /&gt;
* When working with cutting - edge projects that highly utilize new technology, components will not be able to be reused. &lt;br /&gt;
* While in theory integration throughout the process of software development sounds like a good thing, when working with particularly complex projects with multiple development streams, issues and significant confusion may rise during the stages of testing.&lt;br /&gt;
&lt;br /&gt;
== Conclusion ==&lt;br /&gt;
&lt;br /&gt;
The Rational Unified Process, is an exemplary method for addressing and mitigating risks from the very early stages, by rapidly developing an initial version of the system (prototype) that describes its architecture. There are not fixed requirements from the beginning but rather allows refining requirements , while the project progresses. It expects and actually deals with change pretty well while its main focus is the quality of the product and the degree to which it satisfies its end - users, throughout the project life-cycle. However, while being a complete and well documented methodology, it should be stressed that remains a very complex one. In order to increase the likelihood of success, while adopting this methodology, all the project members need to be &#039;&#039;&#039;experts&#039;&#039;&#039; in their respective fields. The method can easily become too difficult to learn and most importantly too difficult to apply.&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Lessisv</name></author>
	</entry>
	<entry>
		<id>http://13.50.150.85/index.php?title=Rational_Unified_Process_(RUP)&amp;diff=14740</id>
		<title>Rational Unified Process (RUP)</title>
		<link rel="alternate" type="text/html" href="http://13.50.150.85/index.php?title=Rational_Unified_Process_(RUP)&amp;diff=14740"/>
		<updated>2015-09-26T12:32:07Z</updated>

		<summary type="html">&lt;p&gt;Lessisv: /* Iterations */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The &#039;&#039;&#039;Rational Unified Process (RUP)&#039;&#039;&#039; is an iterative, &#039;&#039;&#039;software development methodology&#039;&#039;&#039;, firstly introduced by the [https://en.wikipedia.org/wiki/Rational_Software Rational Software Corporation] which was [http://www-03.ibm.com/press/us/en/pressrelease/314.wss acquired by IBM] in 2003. RUP is a disciplined approach to assign tasks within a development organization and software project teams. It was developed to ensure the production of &#039;&#039;&#039;high quality software&#039;&#039;&#039; by providing the development team with a set of &#039;&#039;&#039;guidelines, templates and tool mentors&#039;&#039;&#039;, for all the critical life-cycle activities within a project. This cluster of objects, form a knowledge base that is shared between all project team members. As a result, no matter what each member is working with (e.g testing, designing, managing), they all share a common language and view on how to develop software. Consequently, team productivity is boosted, in order to deliver software that can meet and exceed the needs and expectations of end-users, strictly following a predictable budget and schedule &amp;lt;ref name=&amp;quot;Ivar Jacobson, Grady Booch, and Jim Rumbaugh&amp;quot;&amp;gt;Ivar Jacobson, Grady Booch, and Jim Rumbaugh, Unified Software Development Process, Addison-Wesley, 1999.&amp;lt;/ref&amp;gt;. RUP is the most popular and extensively documented refinement of the [https://en.wikipedia.org/wiki/Unified_Process Unified Process], an iterative and incremental software development process framework. Other worth mentioning forms are the [https://en.wikipedia.org/wiki/OpenUP OpenUP] and [https://en.wikipedia.org/wiki/Agile_Unified_Process Agile Unified Process].&lt;br /&gt;
&lt;br /&gt;
== Process Overview ==&lt;br /&gt;
&lt;br /&gt;
[[File:RUP.png|450px|right|thumb| Figure 1. The iterative model graph shows how the process is structured along two dimensions]]&lt;br /&gt;
&lt;br /&gt;
The best possible way to describe the methodology is through a 2 - dimensional graph &amp;lt;ref name=&amp;quot;IBM (2005) Rational Unified Process&amp;quot;&amp;gt;IBM (2005) Rational Unified Process – Best Practices for Software Development Teams. Rational Software White paper. Rational&amp;lt;/ref&amp;gt;.&lt;br /&gt;
* The first dimension (horizontal axis) represents the &#039;&#039;&#039;dynamic aspect&#039;&#039;&#039; of the process. It expresses &#039;&#039;&#039;time&#039;&#039;&#039; in terms of &#039;&#039;&#039;phases&#039;&#039;&#039; and &#039;&#039;&#039;iterations&#039;&#039;&#039;. &lt;br /&gt;
* The second dimension (vertical axis) represents the &#039;&#039;&#039;static aspect&#039;&#039;&#039; of the process. It expresses &#039;&#039;&#039;workflows&#039;&#039;&#039; in terms of 6 core and 3 supporting &#039;&#039;&#039;disciplines&#039;&#039;&#039; (more on that on &amp;quot;Disciplines&amp;quot; section).&lt;br /&gt;
&lt;br /&gt;
=== Time Dimension - Phases and Iterations ===&lt;br /&gt;
When developing software, the project team goes through a multi-step process, from establishing a system&#039;s requirements to designing, implementing and finally maintaining the software with new releases. This is the software life cycle  &amp;lt;ref name=&amp;quot;IBM (2003) The Rational Unified Process®&amp;quot;&amp;gt;IBM (2003) The Rational Unified Process®, Version 2003.06.12.01, Rational Software Corporation.&amp;lt;/ref&amp;gt;. RUP delicately breaks the software life cycle down to four consecutive phases &amp;lt;ref name=&amp;quot;Philippe Kruchten&amp;quot;&amp;gt;A Rational Development Process, CrossTalk, 9 (7), STSC, Hill AFB, UT, pp.11-16.&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
* Inception phase&lt;br /&gt;
* Elaboration phase&lt;br /&gt;
* Construction phase&lt;br /&gt;
* Transition phase&lt;br /&gt;
&lt;br /&gt;
Depending on the project, each of these phases can consist of one to a number of &#039;&#039;&#039;iterations&#039;&#039;&#039;. An iteration is defined as a complete development loop, resulting in a new product release. All the phases include a well-defined milestone, in order to be completed. In the end of every phase, the development team can evaluate whether all the key goals have been achieved, all stakeholders have been considered and the actual expenditures correspond with the planned ones  &amp;lt;ref name=&amp;quot;Barry W. Boehm&amp;quot;&amp;gt;Barry W. Boehm, Anchoring the Software Process, IEEE Software, 13, 4, July 1996, pp. 73-82. &amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[File:RUP_phases.png|550px|right|thumb| Figure 2. The four phases and milestones of a project]]&lt;br /&gt;
==== Inception Phase ====&lt;br /&gt;
The first phase is the inception phase. The focus of this phase, is understanding the scope of the project and studying if is both worth doing and possible to do. All the internal and external entities that the system will interact with are identified and the nature of the interaction is well defined at a high level. For this reason, the inception phase is primarily significant for new development projects. &lt;br /&gt;
The expected outcome of the inception phase includes :&lt;br /&gt;
&lt;br /&gt;
* A vision document: The document states the general vision of the project including its key requirements, features and main constraints.&lt;br /&gt;
* An initial use-case model (10%-20% complete)&lt;br /&gt;
* An initial project glossary&lt;br /&gt;
* An initial business case, including the business context, success criteria and a financial forecast.&lt;br /&gt;
* An initial risk assessment&lt;br /&gt;
* A project plan (phases and iterations)&lt;br /&gt;
* A business model (if necessary)&lt;br /&gt;
* Prototypes&lt;br /&gt;
&lt;br /&gt;
At the end of the inception phase lies the first major project milestone; the &#039;&#039;&#039;Lifecycle Objective Milestone&#039;&#039;&#039;.&lt;br /&gt;
The inception phase has five evaluation criteria:&lt;br /&gt;
&lt;br /&gt;
* Stakeholder concurrence on scope definition and cost/schedule estimates.&lt;br /&gt;
* Depth and breadth of any prototype that was developed.&lt;br /&gt;
* Actual expenditures versus planned ones.&lt;br /&gt;
* Requirements understanding.&lt;br /&gt;
* Credibility of the cost/schedule estimates, risks and priorities.&lt;br /&gt;
&lt;br /&gt;
If for any reason the project fails to pass this milestone, it can either be completely cancelled or re-designed to successfully meet the criteria.&lt;br /&gt;
 &lt;br /&gt;
==== Elaboration Phase ====&lt;br /&gt;
The second phase is the elaboration phase. The focus of this phase, is establishing a baseline to the architecture of the system, further developing the project plan and analyzing the problem domain while trying to mitigate the highest risk elements. In other words, this is the phase where the project starts to take shape. One of the most important characteristics of this phase, is the production of a component-based architectural prototype. The purpose of this prototype, is to address the critical use-cases that were identified in the previous phase, and hopefully expose the highest technical risks of the project. The expected outcome of the elaboration phase includes:&lt;br /&gt;
&lt;br /&gt;
* A use-case model (at least 80% complete) which will be able to identify all the actors and use-cases.&lt;br /&gt;
* Supplementary requirements (if any).&lt;br /&gt;
* A clear description of the software architecture.&lt;br /&gt;
* An architectural prototype.&lt;br /&gt;
* A more detailed risk assessment and business case.&lt;br /&gt;
* A development plan for the overall project.&lt;br /&gt;
* A preliminary user manual (optional).&lt;br /&gt;
&lt;br /&gt;
At the end of the elaboration phase lies the second major project milestone; the &#039;&#039;&#039;Lifecycle Architecture Milestone&#039;&#039;&#039;.&lt;br /&gt;
The elaboration phase has six evaluation criteria:&lt;br /&gt;
&lt;br /&gt;
* Is the vision stable enough?&lt;br /&gt;
* Is the system architecture stable enough?&lt;br /&gt;
* Have all the major risks been successfully identified and resolved?&lt;br /&gt;
* Is the plan for the construction phase accurate enough?&lt;br /&gt;
* Do all the stakeholders share the opinion that the vision can be achieved by executing the current plan?&lt;br /&gt;
* Is the actual vs planned resource expenditure in acceptable levels?&lt;br /&gt;
&lt;br /&gt;
If the project fails to pass the milestone, there is still time to be re-designed or even cancelled. However, when the project moves to the next phase the associated operation risks raise significantly and changes become much more difficult.&lt;br /&gt;
&lt;br /&gt;
==== Construction Phase====&lt;br /&gt;
The third phase is the construction phase. The focus of this phase, is to develop and integrate all the remaining components and application features into the product. In other words this is the phase where the vision is finally translated into a final stable product, which is based on the architecture that was developed during the previous phases  &amp;lt;ref name=&amp;quot;KRUCHTEN, P. (2000)&amp;quot;&amp;gt;KRUCHTEN, P. (2000) The Rational Unified Process - An Introduction, Second Edition, Addison-Wesley.&amp;lt;/ref&amp;gt;. Most emphasize is given to resources, control and process management in order to fully optimize costs, schedules and quality &amp;lt;ref name=&amp;quot;IBM (2003) The Rational Unified Process®&amp;quot;&amp;gt;IBM (2003) The Rational Unified Process®, Version 2003.06.12.01, Rational Software Corporation.&amp;lt;/ref&amp;gt;. The existing prototype evolves via a number of iterations into a fully functional product that meets the stakeholders&#039; needs. The construction phase is usually the longest one of the project life cycle. The expected outcome of the construction phase includes:&lt;br /&gt;
&lt;br /&gt;
* First external release of the software.&lt;br /&gt;
* User manuals.&lt;br /&gt;
* A detailed description of the current release.&lt;br /&gt;
&lt;br /&gt;
At the end of the construction phase lies the third major project milestone; the &#039;&#039;&#039;Initial Operation Capability Milestone&#039;&#039;&#039;.&lt;br /&gt;
The construction phase has three evaluation criteria:&lt;br /&gt;
&lt;br /&gt;
* Is the software release stable enough to be given to the user community?&lt;br /&gt;
* Are all the stakeholders ready for the transition to the user community?&lt;br /&gt;
* Is the actual vs planned resource expenditure in acceptable levels?&lt;br /&gt;
&lt;br /&gt;
If the project fails to pass this milestone, transition may have to be postponed by one release.&lt;br /&gt;
&lt;br /&gt;
==== Transition Phase ====&lt;br /&gt;
The fourth and final phase is the transition phase. The focus of this phase is, as the word says, to transition the software product to the user community. It includes ensuring that the product has been developed to an acceptable quality level, by beta testing the software through the end users, and validating it against the stakeholders&#039; expectations. Once the product has been given for beta testing, a number of issues can arise, requiring the development of new releases (fixing bugs) and adding features that may have been postponed. The expected outcome of the transition phase includes:&lt;br /&gt;
&lt;br /&gt;
* Beta-testing to fix any major [https://en.wikipedia.org/wiki/Software_bug software bugs] and add any missing features.&lt;br /&gt;
* Conversion of operational databases&lt;br /&gt;
* Training of end users and maintainers.&lt;br /&gt;
* Marketing and distribution of the product.&lt;br /&gt;
&lt;br /&gt;
At the end of the transition phase lies the fourth and final major project milestone; the &#039;&#039;&#039;Product Release&#039;&#039;&#039;.&lt;br /&gt;
The transition phase has two evaluation criteria:&lt;br /&gt;
&lt;br /&gt;
* Are the end - users satisfied with the product?&lt;br /&gt;
* Is the actual vs planned resource expenditure in acceptable levels?&lt;br /&gt;
&lt;br /&gt;
==== Iterations ====&lt;br /&gt;
As stated before, every phase can consist of a number of iterations, depending on the project size and scope. RUP, in comparison to the traditional [https://en.wikipedia.org/wiki/Waterfall_model waterfall] approach, is heavily based on iterations. This gives a number of advantages and benefits to the project team, with the most important one being mitigating risks much more earlier in the project. Moreover, change is more manageable and there is normally a higher level of reuse. Finally, iterations ensure an overall high quality in the final product and that the project team can learn throughout the developing process &amp;lt;ref name=&amp;quot;KRUCHTEN, P.&amp;quot;&amp;gt; KRUCHTEN, P. A Rational Development Process, CrossTalk, 9 (7), STSC, Hill AFB, UT, pp.11-16.&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Workflow Dimension - Disciplines ===&lt;br /&gt;
&lt;br /&gt;
[[File:activities.png|350px|right|thumb| Figure 4. Individuals, Roles and Activities]]&lt;br /&gt;
[[File:workflows.png|350px|right|thumb| Figure 5. Example of a workflow]]&lt;br /&gt;
&lt;br /&gt;
A process describes &#039;&#039;&#039;who&#039;&#039;&#039; is doing &#039;&#039;&#039;what&#039;&#039;&#039;, &#039;&#039;&#039;how&#039;&#039;&#039; and &#039;&#039;&#039;when&#039;&#039;&#039;. RUP addresses those terms with four modelling elements; &#039;&#039;&#039;Roles&#039;&#039;&#039;, &#039;&#039;&#039;Activities&#039;&#039;&#039;, &#039;&#039;&#039;Artifacts&#039;&#039;&#039; and &#039;&#039;&#039;Workflows&#039;&#039;&#039; respectively. A &#039;&#039;&#039;role&#039;&#039;&#039;, formally addressed as a worker, describes the behavior and responsibilities of an individual or a group of individuals in order to produce an artifact. Throughout the development of a project, a person can play one or a number of roles. Some examples of roles are the system analyst, designer, tester. &#039;&#039;&#039;Activities&#039;&#039;&#039; are expressed through behaviors. An activity, is a job that a person performs through his role, as seen in Figure 4. The length of an activity may vary from a few hours to a number of days. Examples of activities are: Plan an operation - performed by the role of Project Manager or add a missing feature - performed by the role of a software developer. All activities produce a meaningful result, called an artifact. &#039;&#039;&#039;Artifacts&#039;&#039;&#039;, are the responsibilities of ones role or roles and express a piece of information that is produced, modified or even used by a process. They can act both as input or output of an activity. Examples of artifacts are the source code, the business case, the software architecture. The roles perform activities that can produce a sequence of artifacts, called &#039;&#039;&#039;workflows&#039;&#039;&#039;. Examples of workflows can be seen in Figure 5. &lt;br /&gt;
&lt;br /&gt;
RUP identifies nine core process workflows, called &#039;&#039;&#039;disciplines&#039;&#039;&#039;. Every discipline, addresses a set of activities and artifacts, based upon a set of skills that are common in an ICT project. These disciplines have the ability to arrange the activities and artifacts in such a way, to provide an understanding of the overall project from a waterfall perspective.&lt;br /&gt;
&lt;br /&gt;
There are six core &amp;quot;engineering&amp;quot; disciplines:&lt;br /&gt;
* Business Modelling Discipline&lt;br /&gt;
* Requirements Discipline&lt;br /&gt;
* Analysis and Design Discipline&lt;br /&gt;
* Implementation Discipline&lt;br /&gt;
* Test Discipline&lt;br /&gt;
* Deployment Discipline&lt;br /&gt;
&lt;br /&gt;
And three core &amp;quot;supporting&amp;quot; disciplines:&lt;br /&gt;
* Project Management Discipline&lt;br /&gt;
* Configuration and Change Management Discipline&lt;br /&gt;
* Environment Discipline&lt;br /&gt;
&lt;br /&gt;
==== Business Modelling ====&lt;br /&gt;
&lt;br /&gt;
Miscommunication between the software engineering community and the business engineering community is one of the most common problems among most business engineering efforts. This means that the output from software development efforts is not correctly used as input to the business engineering and vice versa. The purpose of the Business Modelling discipline is to provide a common language between the two communities and create a direct coupling between software and business models. All business processes are documented using &amp;quot;use cases&amp;quot;. This assures that all stakeholders share the same understanding of the demanding organization.&lt;br /&gt;
&lt;br /&gt;
==== Requirements ====&lt;br /&gt;
The purpose of the requirements discipline is to describe in detail &#039;&#039;&#039;what&#039;&#039;&#039; the system should do. Based on that, a Vision document is created where required functionality and constraints are documented. Moreover, actors (end - users) and use cases (behaviors of the system) are identified. Use cases are described in detail and each description clearly shows how the system interacts with the actors. This way an agreement is established between the customers and the rest of the stakeholders regarding the system&#039;s capabilities, user-interface and the end user&#039;s needs.&lt;br /&gt;
&lt;br /&gt;
==== Analysis and Design ====&lt;br /&gt;
&lt;br /&gt;
The purpose of the Analysis and Design discipline it to investigate &#039;&#039;&#039;how&#039;&#039;&#039; the system requirements will be translated into a detailed implementation plan. The system needs to:&lt;br /&gt;
* Perform exactly as described in the use-case descriptions.&lt;br /&gt;
* Fulfill all requirements.&lt;br /&gt;
* Have a robust structure.&lt;br /&gt;
&lt;br /&gt;
Analysis and Design result in the creation of a &#039;&#039;&#039;design model&#039;&#039;&#039;. The design model is an abstraction of the system&#039;s architecture and acts as a guide of how the source code should be finally written and structured.&lt;br /&gt;
&lt;br /&gt;
==== Implementation ====&lt;br /&gt;
The purpose of the Implementation discipline is to:&lt;br /&gt;
&lt;br /&gt;
* Arrange the code into subsystems, organized in layers.&lt;br /&gt;
* Implement classes and objects in terms of components.&lt;br /&gt;
* Uni-test the developed components to ensure quality.&lt;br /&gt;
* Integrate the results into an executable system.&lt;br /&gt;
&lt;br /&gt;
The whole system can be realized as an implementation of various components. RUP enables the integration of those components, in a revolutionary way, making the system easier to maintain and increasing the possibilities for future re-use.&lt;br /&gt;
&lt;br /&gt;
==== Test ====&lt;br /&gt;
&lt;br /&gt;
In the implementation discipline, all the developed components were uni-tested individually and were integrated into the system. The purpose of the Test discipline is to assess the system as a whole and verify the product quality. It is a mechanism to verify the smooth interaction between the various components, their proper integration into the system and finally ensure that all requirements have been successfully implemented. All tests are carried out along 4 quality dimensions:&lt;br /&gt;
* Functionality.&lt;br /&gt;
* Reliability.&lt;br /&gt;
* Application Performance.&lt;br /&gt;
* System Performance.&lt;br /&gt;
&lt;br /&gt;
==== Deployment ====&lt;br /&gt;
&lt;br /&gt;
The purpose of the Deployment discipline is primarily to develop product releases and distribute the software to the end – users. More specifically the Deployment discipline focuses at:&lt;br /&gt;
&lt;br /&gt;
* Developing external software releases&lt;br /&gt;
* Distributing the software&lt;br /&gt;
* Installing the software&lt;br /&gt;
* Providing help to the end – users&lt;br /&gt;
* Creating an up-to-date user manual&lt;br /&gt;
* Conducting beta testing&lt;br /&gt;
&lt;br /&gt;
==== Project Management ====&lt;br /&gt;
&lt;br /&gt;
The purpose of the Project Management discipline, is to successfully balance competing objectives, manage and mitigate risks and finally handle any constraints on delivering the product. Project management, ideally provides:&lt;br /&gt;
&lt;br /&gt;
* A framework for managing software-intensive projects.&lt;br /&gt;
* A framework to successfully manage risks.&lt;br /&gt;
* A framework to plan, execute and monitor projects.&lt;br /&gt;
&lt;br /&gt;
While the discipline does not guarantee success, the odds of delivering successful software are greatly improved.&lt;br /&gt;
&lt;br /&gt;
==== Configuration and Change Management ====&lt;br /&gt;
&lt;br /&gt;
The purpose of the Configuration and Change Management Discipline is to control, maintain and configure all the various artifacts that are produced by the different actors that are working on a project. During the software development life cycle, artifacts are regularly updated (changed). In order to understand the current state of an artifact, it is very important to keep track of its location and history; what was the reason and who decided to change the artifact. The discipline helps create a framework that keeps track of all the project assets.&lt;br /&gt;
&lt;br /&gt;
==== Environment ====&lt;br /&gt;
&lt;br /&gt;
The purpose of the environment discipline, is to provide the development team with all the processes, tools and methods for supporting all developing activities. It is responsible for producing a Development Kit, able to provide guidelines and templates for customizing processes.&lt;br /&gt;
&lt;br /&gt;
== Why RUP - Best Practices ==&lt;br /&gt;
&lt;br /&gt;
RUP captures many of the “best practices” that are currently used in modern software development and more particularly in industry by successful organizations. The practices are:&lt;br /&gt;
&lt;br /&gt;
* Develop Software Iteratively&lt;br /&gt;
* Manage Requirements&lt;br /&gt;
* Use component-based architectures&lt;br /&gt;
* Visually model software&lt;br /&gt;
* Continuously verify software quality&lt;br /&gt;
* Control changes to software&lt;br /&gt;
&lt;br /&gt;
=== Develop Software iteratively ===&lt;br /&gt;
&lt;br /&gt;
Today’s high sophisticated software systems, consist of many and complex structures which make it nearly impossible to define the entire system from the very beginning, develop the entire solution and then test the product in the end. RUP uses an iterative approach that allows an increasing understanding of the problem and developing a step – by – step solution, over multiple iterations. Each iteration ends with an executable release, which enables continuous end - user involvement and feedback. As a result, the risks of the project are mitigated at an early stage and stakeholders are ensured that the project requirements are fulfilled.&lt;br /&gt;
&lt;br /&gt;
=== Manage requirements ===&lt;br /&gt;
&lt;br /&gt;
The requirements of a system include the description of the services that the system is able to provide and its operational constraints. RUP documents, organizes and tracks required functionality and constraints and easily communicates business requirements. The use – cases that are used in the process are an excellent way to ensure that requirements are actually those elements that drive the design, implementation and testing of software, making it more likely that the final system fulfills the stakeholders needs.&lt;br /&gt;
&lt;br /&gt;
=== Use component-based architectures ===&lt;br /&gt;
&lt;br /&gt;
Component-based architecture makes the system dynamic; components are independent from the system and interact with other components through well-defined interfaces. Their in-dependency from the system, gives them a great flexibility meaning that they can easily be added, updated or totally replaced. RUP supports component-based software development by providing a systematic approach to defining an architecture using new and existing components.&lt;br /&gt;
&lt;br /&gt;
=== Visually model software ===&lt;br /&gt;
&lt;br /&gt;
A model is an abstraction of reality that can help better comprehend large and complex systems. Visual abstractions help the development team to easily communicate different aspects of the software and see how all the components fit together. RUP uses the [http://www.uml.org/ Unified Modelling Language (UML)] standard which is a graphical language for visualizing and constructing the artifacts of a software-intensive system.&lt;br /&gt;
&lt;br /&gt;
=== Continuously verify software quality ===&lt;br /&gt;
&lt;br /&gt;
In software development, quality should always be reviewed with respect to the requirements based on reliability, functionality , application and system performance. In RUP, quality verification and assessment is built into the process, inside all activities, including all stakeholders and is not treated as a separate activity, performed by a separate group.&lt;br /&gt;
&lt;br /&gt;
=== Control changes to software ===&lt;br /&gt;
&lt;br /&gt;
A software system is developed by a number of teams or individuals, using different platforms and at times being in different locations. As a result, it is essential to somehow make sure that all the changes made in the system are synchronized and constantly verified. RUP ensures that all the individuals working in the project are well informed about any changes and everything is in sync. The process describes how to control, track and monitor changes to enable successful iterative development.&lt;br /&gt;
&lt;br /&gt;
== Limitations ==&lt;br /&gt;
&lt;br /&gt;
While being a complete methodology in itself with an emphasis on accurate documentation and quickly resolving project associated risks, RUP comes with a number of limitations.&lt;br /&gt;
&lt;br /&gt;
* In order for team members to start developing software under this methodology, they need to be &#039;&#039;&#039;experts&#039;&#039;&#039; in their respective fields.&lt;br /&gt;
* The development process can easily become too complex to handle.&lt;br /&gt;
* When working with cutting - edge projects that highly utilize new technology, components will not be able to be reused. &lt;br /&gt;
* While in theory integration throughout the process of software development sounds like a good thing, when working with particularly complex projects with multiple development streams, issues and significant confusion may rise during the stages of testing.&lt;br /&gt;
&lt;br /&gt;
== Conclusion ==&lt;br /&gt;
&lt;br /&gt;
The Rational Unified Process, is an exemplary method for addressing and mitigating risks from the very early stages, by rapidly developing an initial version of the system (prototype) that describes its architecture. There are not fixed requirements from the beginning but rather allows refining requirements , while the project progresses. It expects and actually deals with change pretty well while its main focus is the quality of the product and the degree to which it satisfies its end - users, throughout the project life-cycle. However, while being a complete and well documented methodology, it should be stressed that remains a very complex one. In order to increase the likelihood of success, while adopting this methodology, all the project members need to be &#039;&#039;&#039;experts&#039;&#039;&#039; in their respective fields. The method can easily become too difficult to learn and most importantly too difficult to apply.&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Lessisv</name></author>
	</entry>
	<entry>
		<id>http://13.50.150.85/index.php?title=Rational_Unified_Process_(RUP)&amp;diff=14739</id>
		<title>Rational Unified Process (RUP)</title>
		<link rel="alternate" type="text/html" href="http://13.50.150.85/index.php?title=Rational_Unified_Process_(RUP)&amp;diff=14739"/>
		<updated>2015-09-26T12:31:06Z</updated>

		<summary type="html">&lt;p&gt;Lessisv: /* Iterations */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The &#039;&#039;&#039;Rational Unified Process (RUP)&#039;&#039;&#039; is an iterative, &#039;&#039;&#039;software development methodology&#039;&#039;&#039;, firstly introduced by the [https://en.wikipedia.org/wiki/Rational_Software Rational Software Corporation] which was [http://www-03.ibm.com/press/us/en/pressrelease/314.wss acquired by IBM] in 2003. RUP is a disciplined approach to assign tasks within a development organization and software project teams. It was developed to ensure the production of &#039;&#039;&#039;high quality software&#039;&#039;&#039; by providing the development team with a set of &#039;&#039;&#039;guidelines, templates and tool mentors&#039;&#039;&#039;, for all the critical life-cycle activities within a project. This cluster of objects, form a knowledge base that is shared between all project team members. As a result, no matter what each member is working with (e.g testing, designing, managing), they all share a common language and view on how to develop software. Consequently, team productivity is boosted, in order to deliver software that can meet and exceed the needs and expectations of end-users, strictly following a predictable budget and schedule &amp;lt;ref name=&amp;quot;Ivar Jacobson, Grady Booch, and Jim Rumbaugh&amp;quot;&amp;gt;Ivar Jacobson, Grady Booch, and Jim Rumbaugh, Unified Software Development Process, Addison-Wesley, 1999.&amp;lt;/ref&amp;gt;. RUP is the most popular and extensively documented refinement of the [https://en.wikipedia.org/wiki/Unified_Process Unified Process], an iterative and incremental software development process framework. Other worth mentioning forms are the [https://en.wikipedia.org/wiki/OpenUP OpenUP] and [https://en.wikipedia.org/wiki/Agile_Unified_Process Agile Unified Process].&lt;br /&gt;
&lt;br /&gt;
== Process Overview ==&lt;br /&gt;
&lt;br /&gt;
[[File:RUP.png|450px|right|thumb| Figure 1. The iterative model graph shows how the process is structured along two dimensions]]&lt;br /&gt;
&lt;br /&gt;
The best possible way to describe the methodology is through a 2 - dimensional graph &amp;lt;ref name=&amp;quot;IBM (2005) Rational Unified Process&amp;quot;&amp;gt;IBM (2005) Rational Unified Process – Best Practices for Software Development Teams. Rational Software White paper. Rational&amp;lt;/ref&amp;gt;.&lt;br /&gt;
* The first dimension (horizontal axis) represents the &#039;&#039;&#039;dynamic aspect&#039;&#039;&#039; of the process. It expresses &#039;&#039;&#039;time&#039;&#039;&#039; in terms of &#039;&#039;&#039;phases&#039;&#039;&#039; and &#039;&#039;&#039;iterations&#039;&#039;&#039;. &lt;br /&gt;
* The second dimension (vertical axis) represents the &#039;&#039;&#039;static aspect&#039;&#039;&#039; of the process. It expresses &#039;&#039;&#039;workflows&#039;&#039;&#039; in terms of 6 core and 3 supporting &#039;&#039;&#039;disciplines&#039;&#039;&#039; (more on that on &amp;quot;Disciplines&amp;quot; section).&lt;br /&gt;
&lt;br /&gt;
=== Time Dimension - Phases and Iterations ===&lt;br /&gt;
When developing software, the project team goes through a multi-step process, from establishing a system&#039;s requirements to designing, implementing and finally maintaining the software with new releases. This is the software life cycle  &amp;lt;ref name=&amp;quot;IBM (2003) The Rational Unified Process®&amp;quot;&amp;gt;IBM (2003) The Rational Unified Process®, Version 2003.06.12.01, Rational Software Corporation.&amp;lt;/ref&amp;gt;. RUP delicately breaks the software life cycle down to four consecutive phases &amp;lt;ref name=&amp;quot;Philippe Kruchten&amp;quot;&amp;gt;A Rational Development Process, CrossTalk, 9 (7), STSC, Hill AFB, UT, pp.11-16.&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
* Inception phase&lt;br /&gt;
* Elaboration phase&lt;br /&gt;
* Construction phase&lt;br /&gt;
* Transition phase&lt;br /&gt;
&lt;br /&gt;
Depending on the project, each of these phases can consist of one to a number of &#039;&#039;&#039;iterations&#039;&#039;&#039;. An iteration is defined as a complete development loop, resulting in a new product release. All the phases include a well-defined milestone, in order to be completed. In the end of every phase, the development team can evaluate whether all the key goals have been achieved, all stakeholders have been considered and the actual expenditures correspond with the planned ones  &amp;lt;ref name=&amp;quot;Barry W. Boehm&amp;quot;&amp;gt;Barry W. Boehm, Anchoring the Software Process, IEEE Software, 13, 4, July 1996, pp. 73-82. &amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[File:RUP_phases.png|550px|right|thumb| Figure 2. The four phases and milestones of a project]]&lt;br /&gt;
==== Inception Phase ====&lt;br /&gt;
The first phase is the inception phase. The focus of this phase, is understanding the scope of the project and studying if is both worth doing and possible to do. All the internal and external entities that the system will interact with are identified and the nature of the interaction is well defined at a high level. For this reason, the inception phase is primarily significant for new development projects. &lt;br /&gt;
The expected outcome of the inception phase includes :&lt;br /&gt;
&lt;br /&gt;
* A vision document: The document states the general vision of the project including its key requirements, features and main constraints.&lt;br /&gt;
* An initial use-case model (10%-20% complete)&lt;br /&gt;
* An initial project glossary&lt;br /&gt;
* An initial business case, including the business context, success criteria and a financial forecast.&lt;br /&gt;
* An initial risk assessment&lt;br /&gt;
* A project plan (phases and iterations)&lt;br /&gt;
* A business model (if necessary)&lt;br /&gt;
* Prototypes&lt;br /&gt;
&lt;br /&gt;
At the end of the inception phase lies the first major project milestone; the &#039;&#039;&#039;Lifecycle Objective Milestone&#039;&#039;&#039;.&lt;br /&gt;
The inception phase has five evaluation criteria:&lt;br /&gt;
&lt;br /&gt;
* Stakeholder concurrence on scope definition and cost/schedule estimates.&lt;br /&gt;
* Depth and breadth of any prototype that was developed.&lt;br /&gt;
* Actual expenditures versus planned ones.&lt;br /&gt;
* Requirements understanding.&lt;br /&gt;
* Credibility of the cost/schedule estimates, risks and priorities.&lt;br /&gt;
&lt;br /&gt;
If for any reason the project fails to pass this milestone, it can either be completely cancelled or re-designed to successfully meet the criteria.&lt;br /&gt;
 &lt;br /&gt;
==== Elaboration Phase ====&lt;br /&gt;
The second phase is the elaboration phase. The focus of this phase, is establishing a baseline to the architecture of the system, further developing the project plan and analyzing the problem domain while trying to mitigate the highest risk elements. In other words, this is the phase where the project starts to take shape. One of the most important characteristics of this phase, is the production of a component-based architectural prototype. The purpose of this prototype, is to address the critical use-cases that were identified in the previous phase, and hopefully expose the highest technical risks of the project. The expected outcome of the elaboration phase includes:&lt;br /&gt;
&lt;br /&gt;
* A use-case model (at least 80% complete) which will be able to identify all the actors and use-cases.&lt;br /&gt;
* Supplementary requirements (if any).&lt;br /&gt;
* A clear description of the software architecture.&lt;br /&gt;
* An architectural prototype.&lt;br /&gt;
* A more detailed risk assessment and business case.&lt;br /&gt;
* A development plan for the overall project.&lt;br /&gt;
* A preliminary user manual (optional).&lt;br /&gt;
&lt;br /&gt;
At the end of the elaboration phase lies the second major project milestone; the &#039;&#039;&#039;Lifecycle Architecture Milestone&#039;&#039;&#039;.&lt;br /&gt;
The elaboration phase has six evaluation criteria:&lt;br /&gt;
&lt;br /&gt;
* Is the vision stable enough?&lt;br /&gt;
* Is the system architecture stable enough?&lt;br /&gt;
* Have all the major risks been successfully identified and resolved?&lt;br /&gt;
* Is the plan for the construction phase accurate enough?&lt;br /&gt;
* Do all the stakeholders share the opinion that the vision can be achieved by executing the current plan?&lt;br /&gt;
* Is the actual vs planned resource expenditure in acceptable levels?&lt;br /&gt;
&lt;br /&gt;
If the project fails to pass the milestone, there is still time to be re-designed or even cancelled. However, when the project moves to the next phase the associated operation risks raise significantly and changes become much more difficult.&lt;br /&gt;
&lt;br /&gt;
==== Construction Phase====&lt;br /&gt;
The third phase is the construction phase. The focus of this phase, is to develop and integrate all the remaining components and application features into the product. In other words this is the phase where the vision is finally translated into a final stable product, which is based on the architecture that was developed during the previous phases  &amp;lt;ref name=&amp;quot;KRUCHTEN, P. (2000)&amp;quot;&amp;gt;KRUCHTEN, P. (2000) The Rational Unified Process - An Introduction, Second Edition, Addison-Wesley.&amp;lt;/ref&amp;gt;. Most emphasize is given to resources, control and process management in order to fully optimize costs, schedules and quality &amp;lt;ref name=&amp;quot;IBM (2003) The Rational Unified Process®&amp;quot;&amp;gt;IBM (2003) The Rational Unified Process®, Version 2003.06.12.01, Rational Software Corporation.&amp;lt;/ref&amp;gt;. The existing prototype evolves via a number of iterations into a fully functional product that meets the stakeholders&#039; needs. The construction phase is usually the longest one of the project life cycle. The expected outcome of the construction phase includes:&lt;br /&gt;
&lt;br /&gt;
* First external release of the software.&lt;br /&gt;
* User manuals.&lt;br /&gt;
* A detailed description of the current release.&lt;br /&gt;
&lt;br /&gt;
At the end of the construction phase lies the third major project milestone; the &#039;&#039;&#039;Initial Operation Capability Milestone&#039;&#039;&#039;.&lt;br /&gt;
The construction phase has three evaluation criteria:&lt;br /&gt;
&lt;br /&gt;
* Is the software release stable enough to be given to the user community?&lt;br /&gt;
* Are all the stakeholders ready for the transition to the user community?&lt;br /&gt;
* Is the actual vs planned resource expenditure in acceptable levels?&lt;br /&gt;
&lt;br /&gt;
If the project fails to pass this milestone, transition may have to be postponed by one release.&lt;br /&gt;
&lt;br /&gt;
==== Transition Phase ====&lt;br /&gt;
The fourth and final phase is the transition phase. The focus of this phase is, as the word says, to transition the software product to the user community. It includes ensuring that the product has been developed to an acceptable quality level, by beta testing the software through the end users, and validating it against the stakeholders&#039; expectations. Once the product has been given for beta testing, a number of issues can arise, requiring the development of new releases (fixing bugs) and adding features that may have been postponed. The expected outcome of the transition phase includes:&lt;br /&gt;
&lt;br /&gt;
* Beta-testing to fix any major [https://en.wikipedia.org/wiki/Software_bug software bugs] and add any missing features.&lt;br /&gt;
* Conversion of operational databases&lt;br /&gt;
* Training of end users and maintainers.&lt;br /&gt;
* Marketing and distribution of the product.&lt;br /&gt;
&lt;br /&gt;
At the end of the transition phase lies the fourth and final major project milestone; the &#039;&#039;&#039;Product Release&#039;&#039;&#039;.&lt;br /&gt;
The transition phase has two evaluation criteria:&lt;br /&gt;
&lt;br /&gt;
* Are the end - users satisfied with the product?&lt;br /&gt;
* Is the actual vs planned resource expenditure in acceptable levels?&lt;br /&gt;
&lt;br /&gt;
==== Iterations ====&lt;br /&gt;
As stated before, every phase can consist of a number of iterations, depending on the project size and scope. RUP, in comparison to the traditional [https://en.wikipedia.org/wiki/Waterfall_model waterfall] approach, is heavily based on iterations. This gives a number of advantages and benefits to the project team, with the most important one being mitigating risks much more earlier in the project. Moreover, change is more manageable and there is normally a higher level of reuse. Finally, iterations ensure an overall high quality in the final product and that the project team can learn throughout the developing process &amp;lt;ref name=&amp;quot;KRUCHTEN, P.&amp;quot;&amp;gt; KRUCHTEN,P. A Rational Development Process, CrossTalk, 9 (7), STSC, Hill AFB, UT, pp.11-16.&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Workflow Dimension - Disciplines ===&lt;br /&gt;
&lt;br /&gt;
[[File:activities.png|350px|right|thumb| Figure 4. Individuals, Roles and Activities]]&lt;br /&gt;
[[File:workflows.png|350px|right|thumb| Figure 5. Example of a workflow]]&lt;br /&gt;
&lt;br /&gt;
A process describes &#039;&#039;&#039;who&#039;&#039;&#039; is doing &#039;&#039;&#039;what&#039;&#039;&#039;, &#039;&#039;&#039;how&#039;&#039;&#039; and &#039;&#039;&#039;when&#039;&#039;&#039;. RUP addresses those terms with four modelling elements; &#039;&#039;&#039;Roles&#039;&#039;&#039;, &#039;&#039;&#039;Activities&#039;&#039;&#039;, &#039;&#039;&#039;Artifacts&#039;&#039;&#039; and &#039;&#039;&#039;Workflows&#039;&#039;&#039; respectively. A &#039;&#039;&#039;role&#039;&#039;&#039;, formally addressed as a worker, describes the behavior and responsibilities of an individual or a group of individuals in order to produce an artifact. Throughout the development of a project, a person can play one or a number of roles. Some examples of roles are the system analyst, designer, tester. &#039;&#039;&#039;Activities&#039;&#039;&#039; are expressed through behaviors. An activity, is a job that a person performs through his role, as seen in Figure 4. The length of an activity may vary from a few hours to a number of days. Examples of activities are: Plan an operation - performed by the role of Project Manager or add a missing feature - performed by the role of a software developer. All activities produce a meaningful result, called an artifact. &#039;&#039;&#039;Artifacts&#039;&#039;&#039;, are the responsibilities of ones role or roles and express a piece of information that is produced, modified or even used by a process. They can act both as input or output of an activity. Examples of artifacts are the source code, the business case, the software architecture. The roles perform activities that can produce a sequence of artifacts, called &#039;&#039;&#039;workflows&#039;&#039;&#039;. Examples of workflows can be seen in Figure 5. &lt;br /&gt;
&lt;br /&gt;
RUP identifies nine core process workflows, called &#039;&#039;&#039;disciplines&#039;&#039;&#039;. Every discipline, addresses a set of activities and artifacts, based upon a set of skills that are common in an ICT project. These disciplines have the ability to arrange the activities and artifacts in such a way, to provide an understanding of the overall project from a waterfall perspective.&lt;br /&gt;
&lt;br /&gt;
There are six core &amp;quot;engineering&amp;quot; disciplines:&lt;br /&gt;
* Business Modelling Discipline&lt;br /&gt;
* Requirements Discipline&lt;br /&gt;
* Analysis and Design Discipline&lt;br /&gt;
* Implementation Discipline&lt;br /&gt;
* Test Discipline&lt;br /&gt;
* Deployment Discipline&lt;br /&gt;
&lt;br /&gt;
And three core &amp;quot;supporting&amp;quot; disciplines:&lt;br /&gt;
* Project Management Discipline&lt;br /&gt;
* Configuration and Change Management Discipline&lt;br /&gt;
* Environment Discipline&lt;br /&gt;
&lt;br /&gt;
==== Business Modelling ====&lt;br /&gt;
&lt;br /&gt;
Miscommunication between the software engineering community and the business engineering community is one of the most common problems among most business engineering efforts. This means that the output from software development efforts is not correctly used as input to the business engineering and vice versa. The purpose of the Business Modelling discipline is to provide a common language between the two communities and create a direct coupling between software and business models. All business processes are documented using &amp;quot;use cases&amp;quot;. This assures that all stakeholders share the same understanding of the demanding organization.&lt;br /&gt;
&lt;br /&gt;
==== Requirements ====&lt;br /&gt;
The purpose of the requirements discipline is to describe in detail &#039;&#039;&#039;what&#039;&#039;&#039; the system should do. Based on that, a Vision document is created where required functionality and constraints are documented. Moreover, actors (end - users) and use cases (behaviors of the system) are identified. Use cases are described in detail and each description clearly shows how the system interacts with the actors. This way an agreement is established between the customers and the rest of the stakeholders regarding the system&#039;s capabilities, user-interface and the end user&#039;s needs.&lt;br /&gt;
&lt;br /&gt;
==== Analysis and Design ====&lt;br /&gt;
&lt;br /&gt;
The purpose of the Analysis and Design discipline it to investigate &#039;&#039;&#039;how&#039;&#039;&#039; the system requirements will be translated into a detailed implementation plan. The system needs to:&lt;br /&gt;
* Perform exactly as described in the use-case descriptions.&lt;br /&gt;
* Fulfill all requirements.&lt;br /&gt;
* Have a robust structure.&lt;br /&gt;
&lt;br /&gt;
Analysis and Design result in the creation of a &#039;&#039;&#039;design model&#039;&#039;&#039;. The design model is an abstraction of the system&#039;s architecture and acts as a guide of how the source code should be finally written and structured.&lt;br /&gt;
&lt;br /&gt;
==== Implementation ====&lt;br /&gt;
The purpose of the Implementation discipline is to:&lt;br /&gt;
&lt;br /&gt;
* Arrange the code into subsystems, organized in layers.&lt;br /&gt;
* Implement classes and objects in terms of components.&lt;br /&gt;
* Uni-test the developed components to ensure quality.&lt;br /&gt;
* Integrate the results into an executable system.&lt;br /&gt;
&lt;br /&gt;
The whole system can be realized as an implementation of various components. RUP enables the integration of those components, in a revolutionary way, making the system easier to maintain and increasing the possibilities for future re-use.&lt;br /&gt;
&lt;br /&gt;
==== Test ====&lt;br /&gt;
&lt;br /&gt;
In the implementation discipline, all the developed components were uni-tested individually and were integrated into the system. The purpose of the Test discipline is to assess the system as a whole and verify the product quality. It is a mechanism to verify the smooth interaction between the various components, their proper integration into the system and finally ensure that all requirements have been successfully implemented. All tests are carried out along 4 quality dimensions:&lt;br /&gt;
* Functionality.&lt;br /&gt;
* Reliability.&lt;br /&gt;
* Application Performance.&lt;br /&gt;
* System Performance.&lt;br /&gt;
&lt;br /&gt;
==== Deployment ====&lt;br /&gt;
&lt;br /&gt;
The purpose of the Deployment discipline is primarily to develop product releases and distribute the software to the end – users. More specifically the Deployment discipline focuses at:&lt;br /&gt;
&lt;br /&gt;
* Developing external software releases&lt;br /&gt;
* Distributing the software&lt;br /&gt;
* Installing the software&lt;br /&gt;
* Providing help to the end – users&lt;br /&gt;
* Creating an up-to-date user manual&lt;br /&gt;
* Conducting beta testing&lt;br /&gt;
&lt;br /&gt;
==== Project Management ====&lt;br /&gt;
&lt;br /&gt;
The purpose of the Project Management discipline, is to successfully balance competing objectives, manage and mitigate risks and finally handle any constraints on delivering the product. Project management, ideally provides:&lt;br /&gt;
&lt;br /&gt;
* A framework for managing software-intensive projects.&lt;br /&gt;
* A framework to successfully manage risks.&lt;br /&gt;
* A framework to plan, execute and monitor projects.&lt;br /&gt;
&lt;br /&gt;
While the discipline does not guarantee success, the odds of delivering successful software are greatly improved.&lt;br /&gt;
&lt;br /&gt;
==== Configuration and Change Management ====&lt;br /&gt;
&lt;br /&gt;
The purpose of the Configuration and Change Management Discipline is to control, maintain and configure all the various artifacts that are produced by the different actors that are working on a project. During the software development life cycle, artifacts are regularly updated (changed). In order to understand the current state of an artifact, it is very important to keep track of its location and history; what was the reason and who decided to change the artifact. The discipline helps create a framework that keeps track of all the project assets.&lt;br /&gt;
&lt;br /&gt;
==== Environment ====&lt;br /&gt;
&lt;br /&gt;
The purpose of the environment discipline, is to provide the development team with all the processes, tools and methods for supporting all developing activities. It is responsible for producing a Development Kit, able to provide guidelines and templates for customizing processes.&lt;br /&gt;
&lt;br /&gt;
== Why RUP - Best Practices ==&lt;br /&gt;
&lt;br /&gt;
RUP captures many of the “best practices” that are currently used in modern software development and more particularly in industry by successful organizations. The practices are:&lt;br /&gt;
&lt;br /&gt;
* Develop Software Iteratively&lt;br /&gt;
* Manage Requirements&lt;br /&gt;
* Use component-based architectures&lt;br /&gt;
* Visually model software&lt;br /&gt;
* Continuously verify software quality&lt;br /&gt;
* Control changes to software&lt;br /&gt;
&lt;br /&gt;
=== Develop Software iteratively ===&lt;br /&gt;
&lt;br /&gt;
Today’s high sophisticated software systems, consist of many and complex structures which make it nearly impossible to define the entire system from the very beginning, develop the entire solution and then test the product in the end. RUP uses an iterative approach that allows an increasing understanding of the problem and developing a step – by – step solution, over multiple iterations. Each iteration ends with an executable release, which enables continuous end - user involvement and feedback. As a result, the risks of the project are mitigated at an early stage and stakeholders are ensured that the project requirements are fulfilled.&lt;br /&gt;
&lt;br /&gt;
=== Manage requirements ===&lt;br /&gt;
&lt;br /&gt;
The requirements of a system include the description of the services that the system is able to provide and its operational constraints. RUP documents, organizes and tracks required functionality and constraints and easily communicates business requirements. The use – cases that are used in the process are an excellent way to ensure that requirements are actually those elements that drive the design, implementation and testing of software, making it more likely that the final system fulfills the stakeholders needs.&lt;br /&gt;
&lt;br /&gt;
=== Use component-based architectures ===&lt;br /&gt;
&lt;br /&gt;
Component-based architecture makes the system dynamic; components are independent from the system and interact with other components through well-defined interfaces. Their in-dependency from the system, gives them a great flexibility meaning that they can easily be added, updated or totally replaced. RUP supports component-based software development by providing a systematic approach to defining an architecture using new and existing components.&lt;br /&gt;
&lt;br /&gt;
=== Visually model software ===&lt;br /&gt;
&lt;br /&gt;
A model is an abstraction of reality that can help better comprehend large and complex systems. Visual abstractions help the development team to easily communicate different aspects of the software and see how all the components fit together. RUP uses the [http://www.uml.org/ Unified Modelling Language (UML)] standard which is a graphical language for visualizing and constructing the artifacts of a software-intensive system.&lt;br /&gt;
&lt;br /&gt;
=== Continuously verify software quality ===&lt;br /&gt;
&lt;br /&gt;
In software development, quality should always be reviewed with respect to the requirements based on reliability, functionality , application and system performance. In RUP, quality verification and assessment is built into the process, inside all activities, including all stakeholders and is not treated as a separate activity, performed by a separate group.&lt;br /&gt;
&lt;br /&gt;
=== Control changes to software ===&lt;br /&gt;
&lt;br /&gt;
A software system is developed by a number of teams or individuals, using different platforms and at times being in different locations. As a result, it is essential to somehow make sure that all the changes made in the system are synchronized and constantly verified. RUP ensures that all the individuals working in the project are well informed about any changes and everything is in sync. The process describes how to control, track and monitor changes to enable successful iterative development.&lt;br /&gt;
&lt;br /&gt;
== Limitations ==&lt;br /&gt;
&lt;br /&gt;
While being a complete methodology in itself with an emphasis on accurate documentation and quickly resolving project associated risks, RUP comes with a number of limitations.&lt;br /&gt;
&lt;br /&gt;
* In order for team members to start developing software under this methodology, they need to be &#039;&#039;&#039;experts&#039;&#039;&#039; in their respective fields.&lt;br /&gt;
* The development process can easily become too complex to handle.&lt;br /&gt;
* When working with cutting - edge projects that highly utilize new technology, components will not be able to be reused. &lt;br /&gt;
* While in theory integration throughout the process of software development sounds like a good thing, when working with particularly complex projects with multiple development streams, issues and significant confusion may rise during the stages of testing.&lt;br /&gt;
&lt;br /&gt;
== Conclusion ==&lt;br /&gt;
&lt;br /&gt;
The Rational Unified Process, is an exemplary method for addressing and mitigating risks from the very early stages, by rapidly developing an initial version of the system (prototype) that describes its architecture. There are not fixed requirements from the beginning but rather allows refining requirements , while the project progresses. It expects and actually deals with change pretty well while its main focus is the quality of the product and the degree to which it satisfies its end - users, throughout the project life-cycle. However, while being a complete and well documented methodology, it should be stressed that remains a very complex one. In order to increase the likelihood of success, while adopting this methodology, all the project members need to be &#039;&#039;&#039;experts&#039;&#039;&#039; in their respective fields. The method can easily become too difficult to learn and most importantly too difficult to apply.&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Lessisv</name></author>
	</entry>
	<entry>
		<id>http://13.50.150.85/index.php?title=Rational_Unified_Process_(RUP)&amp;diff=14738</id>
		<title>Rational Unified Process (RUP)</title>
		<link rel="alternate" type="text/html" href="http://13.50.150.85/index.php?title=Rational_Unified_Process_(RUP)&amp;diff=14738"/>
		<updated>2015-09-26T12:30:25Z</updated>

		<summary type="html">&lt;p&gt;Lessisv: /* Iterations */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The &#039;&#039;&#039;Rational Unified Process (RUP)&#039;&#039;&#039; is an iterative, &#039;&#039;&#039;software development methodology&#039;&#039;&#039;, firstly introduced by the [https://en.wikipedia.org/wiki/Rational_Software Rational Software Corporation] which was [http://www-03.ibm.com/press/us/en/pressrelease/314.wss acquired by IBM] in 2003. RUP is a disciplined approach to assign tasks within a development organization and software project teams. It was developed to ensure the production of &#039;&#039;&#039;high quality software&#039;&#039;&#039; by providing the development team with a set of &#039;&#039;&#039;guidelines, templates and tool mentors&#039;&#039;&#039;, for all the critical life-cycle activities within a project. This cluster of objects, form a knowledge base that is shared between all project team members. As a result, no matter what each member is working with (e.g testing, designing, managing), they all share a common language and view on how to develop software. Consequently, team productivity is boosted, in order to deliver software that can meet and exceed the needs and expectations of end-users, strictly following a predictable budget and schedule &amp;lt;ref name=&amp;quot;Ivar Jacobson, Grady Booch, and Jim Rumbaugh&amp;quot;&amp;gt;Ivar Jacobson, Grady Booch, and Jim Rumbaugh, Unified Software Development Process, Addison-Wesley, 1999.&amp;lt;/ref&amp;gt;. RUP is the most popular and extensively documented refinement of the [https://en.wikipedia.org/wiki/Unified_Process Unified Process], an iterative and incremental software development process framework. Other worth mentioning forms are the [https://en.wikipedia.org/wiki/OpenUP OpenUP] and [https://en.wikipedia.org/wiki/Agile_Unified_Process Agile Unified Process].&lt;br /&gt;
&lt;br /&gt;
== Process Overview ==&lt;br /&gt;
&lt;br /&gt;
[[File:RUP.png|450px|right|thumb| Figure 1. The iterative model graph shows how the process is structured along two dimensions]]&lt;br /&gt;
&lt;br /&gt;
The best possible way to describe the methodology is through a 2 - dimensional graph &amp;lt;ref name=&amp;quot;IBM (2005) Rational Unified Process&amp;quot;&amp;gt;IBM (2005) Rational Unified Process – Best Practices for Software Development Teams. Rational Software White paper. Rational&amp;lt;/ref&amp;gt;.&lt;br /&gt;
* The first dimension (horizontal axis) represents the &#039;&#039;&#039;dynamic aspect&#039;&#039;&#039; of the process. It expresses &#039;&#039;&#039;time&#039;&#039;&#039; in terms of &#039;&#039;&#039;phases&#039;&#039;&#039; and &#039;&#039;&#039;iterations&#039;&#039;&#039;. &lt;br /&gt;
* The second dimension (vertical axis) represents the &#039;&#039;&#039;static aspect&#039;&#039;&#039; of the process. It expresses &#039;&#039;&#039;workflows&#039;&#039;&#039; in terms of 6 core and 3 supporting &#039;&#039;&#039;disciplines&#039;&#039;&#039; (more on that on &amp;quot;Disciplines&amp;quot; section).&lt;br /&gt;
&lt;br /&gt;
=== Time Dimension - Phases and Iterations ===&lt;br /&gt;
When developing software, the project team goes through a multi-step process, from establishing a system&#039;s requirements to designing, implementing and finally maintaining the software with new releases. This is the software life cycle  &amp;lt;ref name=&amp;quot;IBM (2003) The Rational Unified Process®&amp;quot;&amp;gt;IBM (2003) The Rational Unified Process®, Version 2003.06.12.01, Rational Software Corporation.&amp;lt;/ref&amp;gt;. RUP delicately breaks the software life cycle down to four consecutive phases &amp;lt;ref name=&amp;quot;Philippe Kruchten&amp;quot;&amp;gt;A Rational Development Process, CrossTalk, 9 (7), STSC, Hill AFB, UT, pp.11-16.&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
* Inception phase&lt;br /&gt;
* Elaboration phase&lt;br /&gt;
* Construction phase&lt;br /&gt;
* Transition phase&lt;br /&gt;
&lt;br /&gt;
Depending on the project, each of these phases can consist of one to a number of &#039;&#039;&#039;iterations&#039;&#039;&#039;. An iteration is defined as a complete development loop, resulting in a new product release. All the phases include a well-defined milestone, in order to be completed. In the end of every phase, the development team can evaluate whether all the key goals have been achieved, all stakeholders have been considered and the actual expenditures correspond with the planned ones  &amp;lt;ref name=&amp;quot;Barry W. Boehm&amp;quot;&amp;gt;Barry W. Boehm, Anchoring the Software Process, IEEE Software, 13, 4, July 1996, pp. 73-82. &amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[File:RUP_phases.png|550px|right|thumb| Figure 2. The four phases and milestones of a project]]&lt;br /&gt;
==== Inception Phase ====&lt;br /&gt;
The first phase is the inception phase. The focus of this phase, is understanding the scope of the project and studying if is both worth doing and possible to do. All the internal and external entities that the system will interact with are identified and the nature of the interaction is well defined at a high level. For this reason, the inception phase is primarily significant for new development projects. &lt;br /&gt;
The expected outcome of the inception phase includes :&lt;br /&gt;
&lt;br /&gt;
* A vision document: The document states the general vision of the project including its key requirements, features and main constraints.&lt;br /&gt;
* An initial use-case model (10%-20% complete)&lt;br /&gt;
* An initial project glossary&lt;br /&gt;
* An initial business case, including the business context, success criteria and a financial forecast.&lt;br /&gt;
* An initial risk assessment&lt;br /&gt;
* A project plan (phases and iterations)&lt;br /&gt;
* A business model (if necessary)&lt;br /&gt;
* Prototypes&lt;br /&gt;
&lt;br /&gt;
At the end of the inception phase lies the first major project milestone; the &#039;&#039;&#039;Lifecycle Objective Milestone&#039;&#039;&#039;.&lt;br /&gt;
The inception phase has five evaluation criteria:&lt;br /&gt;
&lt;br /&gt;
* Stakeholder concurrence on scope definition and cost/schedule estimates.&lt;br /&gt;
* Depth and breadth of any prototype that was developed.&lt;br /&gt;
* Actual expenditures versus planned ones.&lt;br /&gt;
* Requirements understanding.&lt;br /&gt;
* Credibility of the cost/schedule estimates, risks and priorities.&lt;br /&gt;
&lt;br /&gt;
If for any reason the project fails to pass this milestone, it can either be completely cancelled or re-designed to successfully meet the criteria.&lt;br /&gt;
 &lt;br /&gt;
==== Elaboration Phase ====&lt;br /&gt;
The second phase is the elaboration phase. The focus of this phase, is establishing a baseline to the architecture of the system, further developing the project plan and analyzing the problem domain while trying to mitigate the highest risk elements. In other words, this is the phase where the project starts to take shape. One of the most important characteristics of this phase, is the production of a component-based architectural prototype. The purpose of this prototype, is to address the critical use-cases that were identified in the previous phase, and hopefully expose the highest technical risks of the project. The expected outcome of the elaboration phase includes:&lt;br /&gt;
&lt;br /&gt;
* A use-case model (at least 80% complete) which will be able to identify all the actors and use-cases.&lt;br /&gt;
* Supplementary requirements (if any).&lt;br /&gt;
* A clear description of the software architecture.&lt;br /&gt;
* An architectural prototype.&lt;br /&gt;
* A more detailed risk assessment and business case.&lt;br /&gt;
* A development plan for the overall project.&lt;br /&gt;
* A preliminary user manual (optional).&lt;br /&gt;
&lt;br /&gt;
At the end of the elaboration phase lies the second major project milestone; the &#039;&#039;&#039;Lifecycle Architecture Milestone&#039;&#039;&#039;.&lt;br /&gt;
The elaboration phase has six evaluation criteria:&lt;br /&gt;
&lt;br /&gt;
* Is the vision stable enough?&lt;br /&gt;
* Is the system architecture stable enough?&lt;br /&gt;
* Have all the major risks been successfully identified and resolved?&lt;br /&gt;
* Is the plan for the construction phase accurate enough?&lt;br /&gt;
* Do all the stakeholders share the opinion that the vision can be achieved by executing the current plan?&lt;br /&gt;
* Is the actual vs planned resource expenditure in acceptable levels?&lt;br /&gt;
&lt;br /&gt;
If the project fails to pass the milestone, there is still time to be re-designed or even cancelled. However, when the project moves to the next phase the associated operation risks raise significantly and changes become much more difficult.&lt;br /&gt;
&lt;br /&gt;
==== Construction Phase====&lt;br /&gt;
The third phase is the construction phase. The focus of this phase, is to develop and integrate all the remaining components and application features into the product. In other words this is the phase where the vision is finally translated into a final stable product, which is based on the architecture that was developed during the previous phases  &amp;lt;ref name=&amp;quot;KRUCHTEN, P. (2000)&amp;quot;&amp;gt;KRUCHTEN, P. (2000) The Rational Unified Process - An Introduction, Second Edition, Addison-Wesley.&amp;lt;/ref&amp;gt;. Most emphasize is given to resources, control and process management in order to fully optimize costs, schedules and quality &amp;lt;ref name=&amp;quot;IBM (2003) The Rational Unified Process®&amp;quot;&amp;gt;IBM (2003) The Rational Unified Process®, Version 2003.06.12.01, Rational Software Corporation.&amp;lt;/ref&amp;gt;. The existing prototype evolves via a number of iterations into a fully functional product that meets the stakeholders&#039; needs. The construction phase is usually the longest one of the project life cycle. The expected outcome of the construction phase includes:&lt;br /&gt;
&lt;br /&gt;
* First external release of the software.&lt;br /&gt;
* User manuals.&lt;br /&gt;
* A detailed description of the current release.&lt;br /&gt;
&lt;br /&gt;
At the end of the construction phase lies the third major project milestone; the &#039;&#039;&#039;Initial Operation Capability Milestone&#039;&#039;&#039;.&lt;br /&gt;
The construction phase has three evaluation criteria:&lt;br /&gt;
&lt;br /&gt;
* Is the software release stable enough to be given to the user community?&lt;br /&gt;
* Are all the stakeholders ready for the transition to the user community?&lt;br /&gt;
* Is the actual vs planned resource expenditure in acceptable levels?&lt;br /&gt;
&lt;br /&gt;
If the project fails to pass this milestone, transition may have to be postponed by one release.&lt;br /&gt;
&lt;br /&gt;
==== Transition Phase ====&lt;br /&gt;
The fourth and final phase is the transition phase. The focus of this phase is, as the word says, to transition the software product to the user community. It includes ensuring that the product has been developed to an acceptable quality level, by beta testing the software through the end users, and validating it against the stakeholders&#039; expectations. Once the product has been given for beta testing, a number of issues can arise, requiring the development of new releases (fixing bugs) and adding features that may have been postponed. The expected outcome of the transition phase includes:&lt;br /&gt;
&lt;br /&gt;
* Beta-testing to fix any major [https://en.wikipedia.org/wiki/Software_bug software bugs] and add any missing features.&lt;br /&gt;
* Conversion of operational databases&lt;br /&gt;
* Training of end users and maintainers.&lt;br /&gt;
* Marketing and distribution of the product.&lt;br /&gt;
&lt;br /&gt;
At the end of the transition phase lies the fourth and final major project milestone; the &#039;&#039;&#039;Product Release&#039;&#039;&#039;.&lt;br /&gt;
The transition phase has two evaluation criteria:&lt;br /&gt;
&lt;br /&gt;
* Are the end - users satisfied with the product?&lt;br /&gt;
* Is the actual vs planned resource expenditure in acceptable levels?&lt;br /&gt;
&lt;br /&gt;
==== Iterations ====&lt;br /&gt;
As stated before, every phase can consist of a number of iterations, depending on the project size and scope. RUP, in comparison to the traditional [https://en.wikipedia.org/wiki/Waterfall_model waterfall] approach, is heavily based on iterations. This gives a number of advantages and benefits to the project team, with the most important one being mitigating risks much more earlier in the project. Moreover, change is more manageable and there is normally a higher level of reuse. Finally, iterations ensure an overall high quality in the final product and that the project team can learn throughout the developing process &amp;lt;ref name=&amp;quot;KRUCHTEN,P.&amp;quot;&amp;gt; KRUCHTEN,P. A Rational Development Process, CrossTalk, 9 (7), STSC, Hill AFB, UT, pp.11-16.&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Workflow Dimension - Disciplines ===&lt;br /&gt;
&lt;br /&gt;
[[File:activities.png|350px|right|thumb| Figure 4. Individuals, Roles and Activities]]&lt;br /&gt;
[[File:workflows.png|350px|right|thumb| Figure 5. Example of a workflow]]&lt;br /&gt;
&lt;br /&gt;
A process describes &#039;&#039;&#039;who&#039;&#039;&#039; is doing &#039;&#039;&#039;what&#039;&#039;&#039;, &#039;&#039;&#039;how&#039;&#039;&#039; and &#039;&#039;&#039;when&#039;&#039;&#039;. RUP addresses those terms with four modelling elements; &#039;&#039;&#039;Roles&#039;&#039;&#039;, &#039;&#039;&#039;Activities&#039;&#039;&#039;, &#039;&#039;&#039;Artifacts&#039;&#039;&#039; and &#039;&#039;&#039;Workflows&#039;&#039;&#039; respectively. A &#039;&#039;&#039;role&#039;&#039;&#039;, formally addressed as a worker, describes the behavior and responsibilities of an individual or a group of individuals in order to produce an artifact. Throughout the development of a project, a person can play one or a number of roles. Some examples of roles are the system analyst, designer, tester. &#039;&#039;&#039;Activities&#039;&#039;&#039; are expressed through behaviors. An activity, is a job that a person performs through his role, as seen in Figure 4. The length of an activity may vary from a few hours to a number of days. Examples of activities are: Plan an operation - performed by the role of Project Manager or add a missing feature - performed by the role of a software developer. All activities produce a meaningful result, called an artifact. &#039;&#039;&#039;Artifacts&#039;&#039;&#039;, are the responsibilities of ones role or roles and express a piece of information that is produced, modified or even used by a process. They can act both as input or output of an activity. Examples of artifacts are the source code, the business case, the software architecture. The roles perform activities that can produce a sequence of artifacts, called &#039;&#039;&#039;workflows&#039;&#039;&#039;. Examples of workflows can be seen in Figure 5. &lt;br /&gt;
&lt;br /&gt;
RUP identifies nine core process workflows, called &#039;&#039;&#039;disciplines&#039;&#039;&#039;. Every discipline, addresses a set of activities and artifacts, based upon a set of skills that are common in an ICT project. These disciplines have the ability to arrange the activities and artifacts in such a way, to provide an understanding of the overall project from a waterfall perspective.&lt;br /&gt;
&lt;br /&gt;
There are six core &amp;quot;engineering&amp;quot; disciplines:&lt;br /&gt;
* Business Modelling Discipline&lt;br /&gt;
* Requirements Discipline&lt;br /&gt;
* Analysis and Design Discipline&lt;br /&gt;
* Implementation Discipline&lt;br /&gt;
* Test Discipline&lt;br /&gt;
* Deployment Discipline&lt;br /&gt;
&lt;br /&gt;
And three core &amp;quot;supporting&amp;quot; disciplines:&lt;br /&gt;
* Project Management Discipline&lt;br /&gt;
* Configuration and Change Management Discipline&lt;br /&gt;
* Environment Discipline&lt;br /&gt;
&lt;br /&gt;
==== Business Modelling ====&lt;br /&gt;
&lt;br /&gt;
Miscommunication between the software engineering community and the business engineering community is one of the most common problems among most business engineering efforts. This means that the output from software development efforts is not correctly used as input to the business engineering and vice versa. The purpose of the Business Modelling discipline is to provide a common language between the two communities and create a direct coupling between software and business models. All business processes are documented using &amp;quot;use cases&amp;quot;. This assures that all stakeholders share the same understanding of the demanding organization.&lt;br /&gt;
&lt;br /&gt;
==== Requirements ====&lt;br /&gt;
The purpose of the requirements discipline is to describe in detail &#039;&#039;&#039;what&#039;&#039;&#039; the system should do. Based on that, a Vision document is created where required functionality and constraints are documented. Moreover, actors (end - users) and use cases (behaviors of the system) are identified. Use cases are described in detail and each description clearly shows how the system interacts with the actors. This way an agreement is established between the customers and the rest of the stakeholders regarding the system&#039;s capabilities, user-interface and the end user&#039;s needs.&lt;br /&gt;
&lt;br /&gt;
==== Analysis and Design ====&lt;br /&gt;
&lt;br /&gt;
The purpose of the Analysis and Design discipline it to investigate &#039;&#039;&#039;how&#039;&#039;&#039; the system requirements will be translated into a detailed implementation plan. The system needs to:&lt;br /&gt;
* Perform exactly as described in the use-case descriptions.&lt;br /&gt;
* Fulfill all requirements.&lt;br /&gt;
* Have a robust structure.&lt;br /&gt;
&lt;br /&gt;
Analysis and Design result in the creation of a &#039;&#039;&#039;design model&#039;&#039;&#039;. The design model is an abstraction of the system&#039;s architecture and acts as a guide of how the source code should be finally written and structured.&lt;br /&gt;
&lt;br /&gt;
==== Implementation ====&lt;br /&gt;
The purpose of the Implementation discipline is to:&lt;br /&gt;
&lt;br /&gt;
* Arrange the code into subsystems, organized in layers.&lt;br /&gt;
* Implement classes and objects in terms of components.&lt;br /&gt;
* Uni-test the developed components to ensure quality.&lt;br /&gt;
* Integrate the results into an executable system.&lt;br /&gt;
&lt;br /&gt;
The whole system can be realized as an implementation of various components. RUP enables the integration of those components, in a revolutionary way, making the system easier to maintain and increasing the possibilities for future re-use.&lt;br /&gt;
&lt;br /&gt;
==== Test ====&lt;br /&gt;
&lt;br /&gt;
In the implementation discipline, all the developed components were uni-tested individually and were integrated into the system. The purpose of the Test discipline is to assess the system as a whole and verify the product quality. It is a mechanism to verify the smooth interaction between the various components, their proper integration into the system and finally ensure that all requirements have been successfully implemented. All tests are carried out along 4 quality dimensions:&lt;br /&gt;
* Functionality.&lt;br /&gt;
* Reliability.&lt;br /&gt;
* Application Performance.&lt;br /&gt;
* System Performance.&lt;br /&gt;
&lt;br /&gt;
==== Deployment ====&lt;br /&gt;
&lt;br /&gt;
The purpose of the Deployment discipline is primarily to develop product releases and distribute the software to the end – users. More specifically the Deployment discipline focuses at:&lt;br /&gt;
&lt;br /&gt;
* Developing external software releases&lt;br /&gt;
* Distributing the software&lt;br /&gt;
* Installing the software&lt;br /&gt;
* Providing help to the end – users&lt;br /&gt;
* Creating an up-to-date user manual&lt;br /&gt;
* Conducting beta testing&lt;br /&gt;
&lt;br /&gt;
==== Project Management ====&lt;br /&gt;
&lt;br /&gt;
The purpose of the Project Management discipline, is to successfully balance competing objectives, manage and mitigate risks and finally handle any constraints on delivering the product. Project management, ideally provides:&lt;br /&gt;
&lt;br /&gt;
* A framework for managing software-intensive projects.&lt;br /&gt;
* A framework to successfully manage risks.&lt;br /&gt;
* A framework to plan, execute and monitor projects.&lt;br /&gt;
&lt;br /&gt;
While the discipline does not guarantee success, the odds of delivering successful software are greatly improved.&lt;br /&gt;
&lt;br /&gt;
==== Configuration and Change Management ====&lt;br /&gt;
&lt;br /&gt;
The purpose of the Configuration and Change Management Discipline is to control, maintain and configure all the various artifacts that are produced by the different actors that are working on a project. During the software development life cycle, artifacts are regularly updated (changed). In order to understand the current state of an artifact, it is very important to keep track of its location and history; what was the reason and who decided to change the artifact. The discipline helps create a framework that keeps track of all the project assets.&lt;br /&gt;
&lt;br /&gt;
==== Environment ====&lt;br /&gt;
&lt;br /&gt;
The purpose of the environment discipline, is to provide the development team with all the processes, tools and methods for supporting all developing activities. It is responsible for producing a Development Kit, able to provide guidelines and templates for customizing processes.&lt;br /&gt;
&lt;br /&gt;
== Why RUP - Best Practices ==&lt;br /&gt;
&lt;br /&gt;
RUP captures many of the “best practices” that are currently used in modern software development and more particularly in industry by successful organizations. The practices are:&lt;br /&gt;
&lt;br /&gt;
* Develop Software Iteratively&lt;br /&gt;
* Manage Requirements&lt;br /&gt;
* Use component-based architectures&lt;br /&gt;
* Visually model software&lt;br /&gt;
* Continuously verify software quality&lt;br /&gt;
* Control changes to software&lt;br /&gt;
&lt;br /&gt;
=== Develop Software iteratively ===&lt;br /&gt;
&lt;br /&gt;
Today’s high sophisticated software systems, consist of many and complex structures which make it nearly impossible to define the entire system from the very beginning, develop the entire solution and then test the product in the end. RUP uses an iterative approach that allows an increasing understanding of the problem and developing a step – by – step solution, over multiple iterations. Each iteration ends with an executable release, which enables continuous end - user involvement and feedback. As a result, the risks of the project are mitigated at an early stage and stakeholders are ensured that the project requirements are fulfilled.&lt;br /&gt;
&lt;br /&gt;
=== Manage requirements ===&lt;br /&gt;
&lt;br /&gt;
The requirements of a system include the description of the services that the system is able to provide and its operational constraints. RUP documents, organizes and tracks required functionality and constraints and easily communicates business requirements. The use – cases that are used in the process are an excellent way to ensure that requirements are actually those elements that drive the design, implementation and testing of software, making it more likely that the final system fulfills the stakeholders needs.&lt;br /&gt;
&lt;br /&gt;
=== Use component-based architectures ===&lt;br /&gt;
&lt;br /&gt;
Component-based architecture makes the system dynamic; components are independent from the system and interact with other components through well-defined interfaces. Their in-dependency from the system, gives them a great flexibility meaning that they can easily be added, updated or totally replaced. RUP supports component-based software development by providing a systematic approach to defining an architecture using new and existing components.&lt;br /&gt;
&lt;br /&gt;
=== Visually model software ===&lt;br /&gt;
&lt;br /&gt;
A model is an abstraction of reality that can help better comprehend large and complex systems. Visual abstractions help the development team to easily communicate different aspects of the software and see how all the components fit together. RUP uses the [http://www.uml.org/ Unified Modelling Language (UML)] standard which is a graphical language for visualizing and constructing the artifacts of a software-intensive system.&lt;br /&gt;
&lt;br /&gt;
=== Continuously verify software quality ===&lt;br /&gt;
&lt;br /&gt;
In software development, quality should always be reviewed with respect to the requirements based on reliability, functionality , application and system performance. In RUP, quality verification and assessment is built into the process, inside all activities, including all stakeholders and is not treated as a separate activity, performed by a separate group.&lt;br /&gt;
&lt;br /&gt;
=== Control changes to software ===&lt;br /&gt;
&lt;br /&gt;
A software system is developed by a number of teams or individuals, using different platforms and at times being in different locations. As a result, it is essential to somehow make sure that all the changes made in the system are synchronized and constantly verified. RUP ensures that all the individuals working in the project are well informed about any changes and everything is in sync. The process describes how to control, track and monitor changes to enable successful iterative development.&lt;br /&gt;
&lt;br /&gt;
== Limitations ==&lt;br /&gt;
&lt;br /&gt;
While being a complete methodology in itself with an emphasis on accurate documentation and quickly resolving project associated risks, RUP comes with a number of limitations.&lt;br /&gt;
&lt;br /&gt;
* In order for team members to start developing software under this methodology, they need to be &#039;&#039;&#039;experts&#039;&#039;&#039; in their respective fields.&lt;br /&gt;
* The development process can easily become too complex to handle.&lt;br /&gt;
* When working with cutting - edge projects that highly utilize new technology, components will not be able to be reused. &lt;br /&gt;
* While in theory integration throughout the process of software development sounds like a good thing, when working with particularly complex projects with multiple development streams, issues and significant confusion may rise during the stages of testing.&lt;br /&gt;
&lt;br /&gt;
== Conclusion ==&lt;br /&gt;
&lt;br /&gt;
The Rational Unified Process, is an exemplary method for addressing and mitigating risks from the very early stages, by rapidly developing an initial version of the system (prototype) that describes its architecture. There are not fixed requirements from the beginning but rather allows refining requirements , while the project progresses. It expects and actually deals with change pretty well while its main focus is the quality of the product and the degree to which it satisfies its end - users, throughout the project life-cycle. However, while being a complete and well documented methodology, it should be stressed that remains a very complex one. In order to increase the likelihood of success, while adopting this methodology, all the project members need to be &#039;&#039;&#039;experts&#039;&#039;&#039; in their respective fields. The method can easily become too difficult to learn and most importantly too difficult to apply.&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Lessisv</name></author>
	</entry>
	<entry>
		<id>http://13.50.150.85/index.php?title=Rational_Unified_Process_(RUP)&amp;diff=14737</id>
		<title>Rational Unified Process (RUP)</title>
		<link rel="alternate" type="text/html" href="http://13.50.150.85/index.php?title=Rational_Unified_Process_(RUP)&amp;diff=14737"/>
		<updated>2015-09-26T12:26:23Z</updated>

		<summary type="html">&lt;p&gt;Lessisv: /* Construction Phase */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The &#039;&#039;&#039;Rational Unified Process (RUP)&#039;&#039;&#039; is an iterative, &#039;&#039;&#039;software development methodology&#039;&#039;&#039;, firstly introduced by the [https://en.wikipedia.org/wiki/Rational_Software Rational Software Corporation] which was [http://www-03.ibm.com/press/us/en/pressrelease/314.wss acquired by IBM] in 2003. RUP is a disciplined approach to assign tasks within a development organization and software project teams. It was developed to ensure the production of &#039;&#039;&#039;high quality software&#039;&#039;&#039; by providing the development team with a set of &#039;&#039;&#039;guidelines, templates and tool mentors&#039;&#039;&#039;, for all the critical life-cycle activities within a project. This cluster of objects, form a knowledge base that is shared between all project team members. As a result, no matter what each member is working with (e.g testing, designing, managing), they all share a common language and view on how to develop software. Consequently, team productivity is boosted, in order to deliver software that can meet and exceed the needs and expectations of end-users, strictly following a predictable budget and schedule &amp;lt;ref name=&amp;quot;Ivar Jacobson, Grady Booch, and Jim Rumbaugh&amp;quot;&amp;gt;Ivar Jacobson, Grady Booch, and Jim Rumbaugh, Unified Software Development Process, Addison-Wesley, 1999.&amp;lt;/ref&amp;gt;. RUP is the most popular and extensively documented refinement of the [https://en.wikipedia.org/wiki/Unified_Process Unified Process], an iterative and incremental software development process framework. Other worth mentioning forms are the [https://en.wikipedia.org/wiki/OpenUP OpenUP] and [https://en.wikipedia.org/wiki/Agile_Unified_Process Agile Unified Process].&lt;br /&gt;
&lt;br /&gt;
== Process Overview ==&lt;br /&gt;
&lt;br /&gt;
[[File:RUP.png|450px|right|thumb| Figure 1. The iterative model graph shows how the process is structured along two dimensions]]&lt;br /&gt;
&lt;br /&gt;
The best possible way to describe the methodology is through a 2 - dimensional graph &amp;lt;ref name=&amp;quot;IBM (2005) Rational Unified Process&amp;quot;&amp;gt;IBM (2005) Rational Unified Process – Best Practices for Software Development Teams. Rational Software White paper. Rational&amp;lt;/ref&amp;gt;.&lt;br /&gt;
* The first dimension (horizontal axis) represents the &#039;&#039;&#039;dynamic aspect&#039;&#039;&#039; of the process. It expresses &#039;&#039;&#039;time&#039;&#039;&#039; in terms of &#039;&#039;&#039;phases&#039;&#039;&#039; and &#039;&#039;&#039;iterations&#039;&#039;&#039;. &lt;br /&gt;
* The second dimension (vertical axis) represents the &#039;&#039;&#039;static aspect&#039;&#039;&#039; of the process. It expresses &#039;&#039;&#039;workflows&#039;&#039;&#039; in terms of 6 core and 3 supporting &#039;&#039;&#039;disciplines&#039;&#039;&#039; (more on that on &amp;quot;Disciplines&amp;quot; section).&lt;br /&gt;
&lt;br /&gt;
=== Time Dimension - Phases and Iterations ===&lt;br /&gt;
When developing software, the project team goes through a multi-step process, from establishing a system&#039;s requirements to designing, implementing and finally maintaining the software with new releases. This is the software life cycle  &amp;lt;ref name=&amp;quot;IBM (2003) The Rational Unified Process®&amp;quot;&amp;gt;IBM (2003) The Rational Unified Process®, Version 2003.06.12.01, Rational Software Corporation.&amp;lt;/ref&amp;gt;. RUP delicately breaks the software life cycle down to four consecutive phases &amp;lt;ref name=&amp;quot;Philippe Kruchten&amp;quot;&amp;gt;A Rational Development Process, CrossTalk, 9 (7), STSC, Hill AFB, UT, pp.11-16.&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
* Inception phase&lt;br /&gt;
* Elaboration phase&lt;br /&gt;
* Construction phase&lt;br /&gt;
* Transition phase&lt;br /&gt;
&lt;br /&gt;
Depending on the project, each of these phases can consist of one to a number of &#039;&#039;&#039;iterations&#039;&#039;&#039;. An iteration is defined as a complete development loop, resulting in a new product release. All the phases include a well-defined milestone, in order to be completed. In the end of every phase, the development team can evaluate whether all the key goals have been achieved, all stakeholders have been considered and the actual expenditures correspond with the planned ones  &amp;lt;ref name=&amp;quot;Barry W. Boehm&amp;quot;&amp;gt;Barry W. Boehm, Anchoring the Software Process, IEEE Software, 13, 4, July 1996, pp. 73-82. &amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[File:RUP_phases.png|550px|right|thumb| Figure 2. The four phases and milestones of a project]]&lt;br /&gt;
==== Inception Phase ====&lt;br /&gt;
The first phase is the inception phase. The focus of this phase, is understanding the scope of the project and studying if is both worth doing and possible to do. All the internal and external entities that the system will interact with are identified and the nature of the interaction is well defined at a high level. For this reason, the inception phase is primarily significant for new development projects. &lt;br /&gt;
The expected outcome of the inception phase includes :&lt;br /&gt;
&lt;br /&gt;
* A vision document: The document states the general vision of the project including its key requirements, features and main constraints.&lt;br /&gt;
* An initial use-case model (10%-20% complete)&lt;br /&gt;
* An initial project glossary&lt;br /&gt;
* An initial business case, including the business context, success criteria and a financial forecast.&lt;br /&gt;
* An initial risk assessment&lt;br /&gt;
* A project plan (phases and iterations)&lt;br /&gt;
* A business model (if necessary)&lt;br /&gt;
* Prototypes&lt;br /&gt;
&lt;br /&gt;
At the end of the inception phase lies the first major project milestone; the &#039;&#039;&#039;Lifecycle Objective Milestone&#039;&#039;&#039;.&lt;br /&gt;
The inception phase has five evaluation criteria:&lt;br /&gt;
&lt;br /&gt;
* Stakeholder concurrence on scope definition and cost/schedule estimates.&lt;br /&gt;
* Depth and breadth of any prototype that was developed.&lt;br /&gt;
* Actual expenditures versus planned ones.&lt;br /&gt;
* Requirements understanding.&lt;br /&gt;
* Credibility of the cost/schedule estimates, risks and priorities.&lt;br /&gt;
&lt;br /&gt;
If for any reason the project fails to pass this milestone, it can either be completely cancelled or re-designed to successfully meet the criteria.&lt;br /&gt;
 &lt;br /&gt;
==== Elaboration Phase ====&lt;br /&gt;
The second phase is the elaboration phase. The focus of this phase, is establishing a baseline to the architecture of the system, further developing the project plan and analyzing the problem domain while trying to mitigate the highest risk elements. In other words, this is the phase where the project starts to take shape. One of the most important characteristics of this phase, is the production of a component-based architectural prototype. The purpose of this prototype, is to address the critical use-cases that were identified in the previous phase, and hopefully expose the highest technical risks of the project. The expected outcome of the elaboration phase includes:&lt;br /&gt;
&lt;br /&gt;
* A use-case model (at least 80% complete) which will be able to identify all the actors and use-cases.&lt;br /&gt;
* Supplementary requirements (if any).&lt;br /&gt;
* A clear description of the software architecture.&lt;br /&gt;
* An architectural prototype.&lt;br /&gt;
* A more detailed risk assessment and business case.&lt;br /&gt;
* A development plan for the overall project.&lt;br /&gt;
* A preliminary user manual (optional).&lt;br /&gt;
&lt;br /&gt;
At the end of the elaboration phase lies the second major project milestone; the &#039;&#039;&#039;Lifecycle Architecture Milestone&#039;&#039;&#039;.&lt;br /&gt;
The elaboration phase has six evaluation criteria:&lt;br /&gt;
&lt;br /&gt;
* Is the vision stable enough?&lt;br /&gt;
* Is the system architecture stable enough?&lt;br /&gt;
* Have all the major risks been successfully identified and resolved?&lt;br /&gt;
* Is the plan for the construction phase accurate enough?&lt;br /&gt;
* Do all the stakeholders share the opinion that the vision can be achieved by executing the current plan?&lt;br /&gt;
* Is the actual vs planned resource expenditure in acceptable levels?&lt;br /&gt;
&lt;br /&gt;
If the project fails to pass the milestone, there is still time to be re-designed or even cancelled. However, when the project moves to the next phase the associated operation risks raise significantly and changes become much more difficult.&lt;br /&gt;
&lt;br /&gt;
==== Construction Phase====&lt;br /&gt;
The third phase is the construction phase. The focus of this phase, is to develop and integrate all the remaining components and application features into the product. In other words this is the phase where the vision is finally translated into a final stable product, which is based on the architecture that was developed during the previous phases  &amp;lt;ref name=&amp;quot;KRUCHTEN, P. (2000)&amp;quot;&amp;gt;KRUCHTEN, P. (2000) The Rational Unified Process - An Introduction, Second Edition, Addison-Wesley.&amp;lt;/ref&amp;gt;. Most emphasize is given to resources, control and process management in order to fully optimize costs, schedules and quality &amp;lt;ref name=&amp;quot;IBM (2003) The Rational Unified Process®&amp;quot;&amp;gt;IBM (2003) The Rational Unified Process®, Version 2003.06.12.01, Rational Software Corporation.&amp;lt;/ref&amp;gt;. The existing prototype evolves via a number of iterations into a fully functional product that meets the stakeholders&#039; needs. The construction phase is usually the longest one of the project life cycle. The expected outcome of the construction phase includes:&lt;br /&gt;
&lt;br /&gt;
* First external release of the software.&lt;br /&gt;
* User manuals.&lt;br /&gt;
* A detailed description of the current release.&lt;br /&gt;
&lt;br /&gt;
At the end of the construction phase lies the third major project milestone; the &#039;&#039;&#039;Initial Operation Capability Milestone&#039;&#039;&#039;.&lt;br /&gt;
The construction phase has three evaluation criteria:&lt;br /&gt;
&lt;br /&gt;
* Is the software release stable enough to be given to the user community?&lt;br /&gt;
* Are all the stakeholders ready for the transition to the user community?&lt;br /&gt;
* Is the actual vs planned resource expenditure in acceptable levels?&lt;br /&gt;
&lt;br /&gt;
If the project fails to pass this milestone, transition may have to be postponed by one release.&lt;br /&gt;
&lt;br /&gt;
==== Transition Phase ====&lt;br /&gt;
The fourth and final phase is the transition phase. The focus of this phase is, as the word says, to transition the software product to the user community. It includes ensuring that the product has been developed to an acceptable quality level, by beta testing the software through the end users, and validating it against the stakeholders&#039; expectations. Once the product has been given for beta testing, a number of issues can arise, requiring the development of new releases (fixing bugs) and adding features that may have been postponed. The expected outcome of the transition phase includes:&lt;br /&gt;
&lt;br /&gt;
* Beta-testing to fix any major [https://en.wikipedia.org/wiki/Software_bug software bugs] and add any missing features.&lt;br /&gt;
* Conversion of operational databases&lt;br /&gt;
* Training of end users and maintainers.&lt;br /&gt;
* Marketing and distribution of the product.&lt;br /&gt;
&lt;br /&gt;
At the end of the transition phase lies the fourth and final major project milestone; the &#039;&#039;&#039;Product Release&#039;&#039;&#039;.&lt;br /&gt;
The transition phase has two evaluation criteria:&lt;br /&gt;
&lt;br /&gt;
* Are the end - users satisfied with the product?&lt;br /&gt;
* Is the actual vs planned resource expenditure in acceptable levels?&lt;br /&gt;
&lt;br /&gt;
==== Iterations ====&lt;br /&gt;
As stated before, every phase can consist of a number of iterations, depending on the project size and scope. RUP, in comparison to the traditional [https://en.wikipedia.org/wiki/Waterfall_model waterfall] approach, is heavily based on iterations. This gives a number of advantages and benefits to the project team, with the most important one being mitigating risks much more earlier in the project. Moreover, change is more manageable and there is normally a higher level of reuse. Finally, iterations ensure an overall high quality in the final product and that the project team can learn throughout the developing process.&lt;br /&gt;
&lt;br /&gt;
=== Workflow Dimension - Disciplines ===&lt;br /&gt;
&lt;br /&gt;
[[File:activities.png|350px|right|thumb| Figure 4. Individuals, Roles and Activities]]&lt;br /&gt;
[[File:workflows.png|350px|right|thumb| Figure 5. Example of a workflow]]&lt;br /&gt;
&lt;br /&gt;
A process describes &#039;&#039;&#039;who&#039;&#039;&#039; is doing &#039;&#039;&#039;what&#039;&#039;&#039;, &#039;&#039;&#039;how&#039;&#039;&#039; and &#039;&#039;&#039;when&#039;&#039;&#039;. RUP addresses those terms with four modelling elements; &#039;&#039;&#039;Roles&#039;&#039;&#039;, &#039;&#039;&#039;Activities&#039;&#039;&#039;, &#039;&#039;&#039;Artifacts&#039;&#039;&#039; and &#039;&#039;&#039;Workflows&#039;&#039;&#039; respectively. A &#039;&#039;&#039;role&#039;&#039;&#039;, formally addressed as a worker, describes the behavior and responsibilities of an individual or a group of individuals in order to produce an artifact. Throughout the development of a project, a person can play one or a number of roles. Some examples of roles are the system analyst, designer, tester. &#039;&#039;&#039;Activities&#039;&#039;&#039; are expressed through behaviors. An activity, is a job that a person performs through his role, as seen in Figure 4. The length of an activity may vary from a few hours to a number of days. Examples of activities are: Plan an operation - performed by the role of Project Manager or add a missing feature - performed by the role of a software developer. All activities produce a meaningful result, called an artifact. &#039;&#039;&#039;Artifacts&#039;&#039;&#039;, are the responsibilities of ones role or roles and express a piece of information that is produced, modified or even used by a process. They can act both as input or output of an activity. Examples of artifacts are the source code, the business case, the software architecture. The roles perform activities that can produce a sequence of artifacts, called &#039;&#039;&#039;workflows&#039;&#039;&#039;. Examples of workflows can be seen in Figure 5. &lt;br /&gt;
&lt;br /&gt;
RUP identifies nine core process workflows, called &#039;&#039;&#039;disciplines&#039;&#039;&#039;. Every discipline, addresses a set of activities and artifacts, based upon a set of skills that are common in an ICT project. These disciplines have the ability to arrange the activities and artifacts in such a way, to provide an understanding of the overall project from a waterfall perspective.&lt;br /&gt;
&lt;br /&gt;
There are six core &amp;quot;engineering&amp;quot; disciplines:&lt;br /&gt;
* Business Modelling Discipline&lt;br /&gt;
* Requirements Discipline&lt;br /&gt;
* Analysis and Design Discipline&lt;br /&gt;
* Implementation Discipline&lt;br /&gt;
* Test Discipline&lt;br /&gt;
* Deployment Discipline&lt;br /&gt;
&lt;br /&gt;
And three core &amp;quot;supporting&amp;quot; disciplines:&lt;br /&gt;
* Project Management Discipline&lt;br /&gt;
* Configuration and Change Management Discipline&lt;br /&gt;
* Environment Discipline&lt;br /&gt;
&lt;br /&gt;
==== Business Modelling ====&lt;br /&gt;
&lt;br /&gt;
Miscommunication between the software engineering community and the business engineering community is one of the most common problems among most business engineering efforts. This means that the output from software development efforts is not correctly used as input to the business engineering and vice versa. The purpose of the Business Modelling discipline is to provide a common language between the two communities and create a direct coupling between software and business models. All business processes are documented using &amp;quot;use cases&amp;quot;. This assures that all stakeholders share the same understanding of the demanding organization.&lt;br /&gt;
&lt;br /&gt;
==== Requirements ====&lt;br /&gt;
The purpose of the requirements discipline is to describe in detail &#039;&#039;&#039;what&#039;&#039;&#039; the system should do. Based on that, a Vision document is created where required functionality and constraints are documented. Moreover, actors (end - users) and use cases (behaviors of the system) are identified. Use cases are described in detail and each description clearly shows how the system interacts with the actors. This way an agreement is established between the customers and the rest of the stakeholders regarding the system&#039;s capabilities, user-interface and the end user&#039;s needs.&lt;br /&gt;
&lt;br /&gt;
==== Analysis and Design ====&lt;br /&gt;
&lt;br /&gt;
The purpose of the Analysis and Design discipline it to investigate &#039;&#039;&#039;how&#039;&#039;&#039; the system requirements will be translated into a detailed implementation plan. The system needs to:&lt;br /&gt;
* Perform exactly as described in the use-case descriptions.&lt;br /&gt;
* Fulfill all requirements.&lt;br /&gt;
* Have a robust structure.&lt;br /&gt;
&lt;br /&gt;
Analysis and Design result in the creation of a &#039;&#039;&#039;design model&#039;&#039;&#039;. The design model is an abstraction of the system&#039;s architecture and acts as a guide of how the source code should be finally written and structured.&lt;br /&gt;
&lt;br /&gt;
==== Implementation ====&lt;br /&gt;
The purpose of the Implementation discipline is to:&lt;br /&gt;
&lt;br /&gt;
* Arrange the code into subsystems, organized in layers.&lt;br /&gt;
* Implement classes and objects in terms of components.&lt;br /&gt;
* Uni-test the developed components to ensure quality.&lt;br /&gt;
* Integrate the results into an executable system.&lt;br /&gt;
&lt;br /&gt;
The whole system can be realized as an implementation of various components. RUP enables the integration of those components, in a revolutionary way, making the system easier to maintain and increasing the possibilities for future re-use.&lt;br /&gt;
&lt;br /&gt;
==== Test ====&lt;br /&gt;
&lt;br /&gt;
In the implementation discipline, all the developed components were uni-tested individually and were integrated into the system. The purpose of the Test discipline is to assess the system as a whole and verify the product quality. It is a mechanism to verify the smooth interaction between the various components, their proper integration into the system and finally ensure that all requirements have been successfully implemented. All tests are carried out along 4 quality dimensions:&lt;br /&gt;
* Functionality.&lt;br /&gt;
* Reliability.&lt;br /&gt;
* Application Performance.&lt;br /&gt;
* System Performance.&lt;br /&gt;
&lt;br /&gt;
==== Deployment ====&lt;br /&gt;
&lt;br /&gt;
The purpose of the Deployment discipline is primarily to develop product releases and distribute the software to the end – users. More specifically the Deployment discipline focuses at:&lt;br /&gt;
&lt;br /&gt;
* Developing external software releases&lt;br /&gt;
* Distributing the software&lt;br /&gt;
* Installing the software&lt;br /&gt;
* Providing help to the end – users&lt;br /&gt;
* Creating an up-to-date user manual&lt;br /&gt;
* Conducting beta testing&lt;br /&gt;
&lt;br /&gt;
==== Project Management ====&lt;br /&gt;
&lt;br /&gt;
The purpose of the Project Management discipline, is to successfully balance competing objectives, manage and mitigate risks and finally handle any constraints on delivering the product. Project management, ideally provides:&lt;br /&gt;
&lt;br /&gt;
* A framework for managing software-intensive projects.&lt;br /&gt;
* A framework to successfully manage risks.&lt;br /&gt;
* A framework to plan, execute and monitor projects.&lt;br /&gt;
&lt;br /&gt;
While the discipline does not guarantee success, the odds of delivering successful software are greatly improved.&lt;br /&gt;
&lt;br /&gt;
==== Configuration and Change Management ====&lt;br /&gt;
&lt;br /&gt;
The purpose of the Configuration and Change Management Discipline is to control, maintain and configure all the various artifacts that are produced by the different actors that are working on a project. During the software development life cycle, artifacts are regularly updated (changed). In order to understand the current state of an artifact, it is very important to keep track of its location and history; what was the reason and who decided to change the artifact. The discipline helps create a framework that keeps track of all the project assets.&lt;br /&gt;
&lt;br /&gt;
==== Environment ====&lt;br /&gt;
&lt;br /&gt;
The purpose of the environment discipline, is to provide the development team with all the processes, tools and methods for supporting all developing activities. It is responsible for producing a Development Kit, able to provide guidelines and templates for customizing processes.&lt;br /&gt;
&lt;br /&gt;
== Why RUP - Best Practices ==&lt;br /&gt;
&lt;br /&gt;
RUP captures many of the “best practices” that are currently used in modern software development and more particularly in industry by successful organizations. The practices are:&lt;br /&gt;
&lt;br /&gt;
* Develop Software Iteratively&lt;br /&gt;
* Manage Requirements&lt;br /&gt;
* Use component-based architectures&lt;br /&gt;
* Visually model software&lt;br /&gt;
* Continuously verify software quality&lt;br /&gt;
* Control changes to software&lt;br /&gt;
&lt;br /&gt;
=== Develop Software iteratively ===&lt;br /&gt;
&lt;br /&gt;
Today’s high sophisticated software systems, consist of many and complex structures which make it nearly impossible to define the entire system from the very beginning, develop the entire solution and then test the product in the end. RUP uses an iterative approach that allows an increasing understanding of the problem and developing a step – by – step solution, over multiple iterations. Each iteration ends with an executable release, which enables continuous end - user involvement and feedback. As a result, the risks of the project are mitigated at an early stage and stakeholders are ensured that the project requirements are fulfilled.&lt;br /&gt;
&lt;br /&gt;
=== Manage requirements ===&lt;br /&gt;
&lt;br /&gt;
The requirements of a system include the description of the services that the system is able to provide and its operational constraints. RUP documents, organizes and tracks required functionality and constraints and easily communicates business requirements. The use – cases that are used in the process are an excellent way to ensure that requirements are actually those elements that drive the design, implementation and testing of software, making it more likely that the final system fulfills the stakeholders needs.&lt;br /&gt;
&lt;br /&gt;
=== Use component-based architectures ===&lt;br /&gt;
&lt;br /&gt;
Component-based architecture makes the system dynamic; components are independent from the system and interact with other components through well-defined interfaces. Their in-dependency from the system, gives them a great flexibility meaning that they can easily be added, updated or totally replaced. RUP supports component-based software development by providing a systematic approach to defining an architecture using new and existing components.&lt;br /&gt;
&lt;br /&gt;
=== Visually model software ===&lt;br /&gt;
&lt;br /&gt;
A model is an abstraction of reality that can help better comprehend large and complex systems. Visual abstractions help the development team to easily communicate different aspects of the software and see how all the components fit together. RUP uses the [http://www.uml.org/ Unified Modelling Language (UML)] standard which is a graphical language for visualizing and constructing the artifacts of a software-intensive system.&lt;br /&gt;
&lt;br /&gt;
=== Continuously verify software quality ===&lt;br /&gt;
&lt;br /&gt;
In software development, quality should always be reviewed with respect to the requirements based on reliability, functionality , application and system performance. In RUP, quality verification and assessment is built into the process, inside all activities, including all stakeholders and is not treated as a separate activity, performed by a separate group.&lt;br /&gt;
&lt;br /&gt;
=== Control changes to software ===&lt;br /&gt;
&lt;br /&gt;
A software system is developed by a number of teams or individuals, using different platforms and at times being in different locations. As a result, it is essential to somehow make sure that all the changes made in the system are synchronized and constantly verified. RUP ensures that all the individuals working in the project are well informed about any changes and everything is in sync. The process describes how to control, track and monitor changes to enable successful iterative development.&lt;br /&gt;
&lt;br /&gt;
== Limitations ==&lt;br /&gt;
&lt;br /&gt;
While being a complete methodology in itself with an emphasis on accurate documentation and quickly resolving project associated risks, RUP comes with a number of limitations.&lt;br /&gt;
&lt;br /&gt;
* In order for team members to start developing software under this methodology, they need to be &#039;&#039;&#039;experts&#039;&#039;&#039; in their respective fields.&lt;br /&gt;
* The development process can easily become too complex to handle.&lt;br /&gt;
* When working with cutting - edge projects that highly utilize new technology, components will not be able to be reused. &lt;br /&gt;
* While in theory integration throughout the process of software development sounds like a good thing, when working with particularly complex projects with multiple development streams, issues and significant confusion may rise during the stages of testing.&lt;br /&gt;
&lt;br /&gt;
== Conclusion ==&lt;br /&gt;
&lt;br /&gt;
The Rational Unified Process, is an exemplary method for addressing and mitigating risks from the very early stages, by rapidly developing an initial version of the system (prototype) that describes its architecture. There are not fixed requirements from the beginning but rather allows refining requirements , while the project progresses. It expects and actually deals with change pretty well while its main focus is the quality of the product and the degree to which it satisfies its end - users, throughout the project life-cycle. However, while being a complete and well documented methodology, it should be stressed that remains a very complex one. In order to increase the likelihood of success, while adopting this methodology, all the project members need to be &#039;&#039;&#039;experts&#039;&#039;&#039; in their respective fields. The method can easily become too difficult to learn and most importantly too difficult to apply.&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Lessisv</name></author>
	</entry>
	<entry>
		<id>http://13.50.150.85/index.php?title=Rational_Unified_Process_(RUP)&amp;diff=14736</id>
		<title>Rational Unified Process (RUP)</title>
		<link rel="alternate" type="text/html" href="http://13.50.150.85/index.php?title=Rational_Unified_Process_(RUP)&amp;diff=14736"/>
		<updated>2015-09-26T12:23:51Z</updated>

		<summary type="html">&lt;p&gt;Lessisv: /* Construction Phase */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The &#039;&#039;&#039;Rational Unified Process (RUP)&#039;&#039;&#039; is an iterative, &#039;&#039;&#039;software development methodology&#039;&#039;&#039;, firstly introduced by the [https://en.wikipedia.org/wiki/Rational_Software Rational Software Corporation] which was [http://www-03.ibm.com/press/us/en/pressrelease/314.wss acquired by IBM] in 2003. RUP is a disciplined approach to assign tasks within a development organization and software project teams. It was developed to ensure the production of &#039;&#039;&#039;high quality software&#039;&#039;&#039; by providing the development team with a set of &#039;&#039;&#039;guidelines, templates and tool mentors&#039;&#039;&#039;, for all the critical life-cycle activities within a project. This cluster of objects, form a knowledge base that is shared between all project team members. As a result, no matter what each member is working with (e.g testing, designing, managing), they all share a common language and view on how to develop software. Consequently, team productivity is boosted, in order to deliver software that can meet and exceed the needs and expectations of end-users, strictly following a predictable budget and schedule &amp;lt;ref name=&amp;quot;Ivar Jacobson, Grady Booch, and Jim Rumbaugh&amp;quot;&amp;gt;Ivar Jacobson, Grady Booch, and Jim Rumbaugh, Unified Software Development Process, Addison-Wesley, 1999.&amp;lt;/ref&amp;gt;. RUP is the most popular and extensively documented refinement of the [https://en.wikipedia.org/wiki/Unified_Process Unified Process], an iterative and incremental software development process framework. Other worth mentioning forms are the [https://en.wikipedia.org/wiki/OpenUP OpenUP] and [https://en.wikipedia.org/wiki/Agile_Unified_Process Agile Unified Process].&lt;br /&gt;
&lt;br /&gt;
== Process Overview ==&lt;br /&gt;
&lt;br /&gt;
[[File:RUP.png|450px|right|thumb| Figure 1. The iterative model graph shows how the process is structured along two dimensions]]&lt;br /&gt;
&lt;br /&gt;
The best possible way to describe the methodology is through a 2 - dimensional graph &amp;lt;ref name=&amp;quot;IBM (2005) Rational Unified Process&amp;quot;&amp;gt;IBM (2005) Rational Unified Process – Best Practices for Software Development Teams. Rational Software White paper. Rational&amp;lt;/ref&amp;gt;.&lt;br /&gt;
* The first dimension (horizontal axis) represents the &#039;&#039;&#039;dynamic aspect&#039;&#039;&#039; of the process. It expresses &#039;&#039;&#039;time&#039;&#039;&#039; in terms of &#039;&#039;&#039;phases&#039;&#039;&#039; and &#039;&#039;&#039;iterations&#039;&#039;&#039;. &lt;br /&gt;
* The second dimension (vertical axis) represents the &#039;&#039;&#039;static aspect&#039;&#039;&#039; of the process. It expresses &#039;&#039;&#039;workflows&#039;&#039;&#039; in terms of 6 core and 3 supporting &#039;&#039;&#039;disciplines&#039;&#039;&#039; (more on that on &amp;quot;Disciplines&amp;quot; section).&lt;br /&gt;
&lt;br /&gt;
=== Time Dimension - Phases and Iterations ===&lt;br /&gt;
When developing software, the project team goes through a multi-step process, from establishing a system&#039;s requirements to designing, implementing and finally maintaining the software with new releases. This is the software life cycle  &amp;lt;ref name=&amp;quot;IBM (2003) The Rational Unified Process®&amp;quot;&amp;gt;IBM (2003) The Rational Unified Process®, Version 2003.06.12.01, Rational Software Corporation.&amp;lt;/ref&amp;gt;. RUP delicately breaks the software life cycle down to four consecutive phases &amp;lt;ref name=&amp;quot;Philippe Kruchten&amp;quot;&amp;gt;A Rational Development Process, CrossTalk, 9 (7), STSC, Hill AFB, UT, pp.11-16.&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
* Inception phase&lt;br /&gt;
* Elaboration phase&lt;br /&gt;
* Construction phase&lt;br /&gt;
* Transition phase&lt;br /&gt;
&lt;br /&gt;
Depending on the project, each of these phases can consist of one to a number of &#039;&#039;&#039;iterations&#039;&#039;&#039;. An iteration is defined as a complete development loop, resulting in a new product release. All the phases include a well-defined milestone, in order to be completed. In the end of every phase, the development team can evaluate whether all the key goals have been achieved, all stakeholders have been considered and the actual expenditures correspond with the planned ones  &amp;lt;ref name=&amp;quot;Barry W. Boehm&amp;quot;&amp;gt;Barry W. Boehm, Anchoring the Software Process, IEEE Software, 13, 4, July 1996, pp. 73-82. &amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[File:RUP_phases.png|550px|right|thumb| Figure 2. The four phases and milestones of a project]]&lt;br /&gt;
==== Inception Phase ====&lt;br /&gt;
The first phase is the inception phase. The focus of this phase, is understanding the scope of the project and studying if is both worth doing and possible to do. All the internal and external entities that the system will interact with are identified and the nature of the interaction is well defined at a high level. For this reason, the inception phase is primarily significant for new development projects. &lt;br /&gt;
The expected outcome of the inception phase includes :&lt;br /&gt;
&lt;br /&gt;
* A vision document: The document states the general vision of the project including its key requirements, features and main constraints.&lt;br /&gt;
* An initial use-case model (10%-20% complete)&lt;br /&gt;
* An initial project glossary&lt;br /&gt;
* An initial business case, including the business context, success criteria and a financial forecast.&lt;br /&gt;
* An initial risk assessment&lt;br /&gt;
* A project plan (phases and iterations)&lt;br /&gt;
* A business model (if necessary)&lt;br /&gt;
* Prototypes&lt;br /&gt;
&lt;br /&gt;
At the end of the inception phase lies the first major project milestone; the &#039;&#039;&#039;Lifecycle Objective Milestone&#039;&#039;&#039;.&lt;br /&gt;
The inception phase has five evaluation criteria:&lt;br /&gt;
&lt;br /&gt;
* Stakeholder concurrence on scope definition and cost/schedule estimates.&lt;br /&gt;
* Depth and breadth of any prototype that was developed.&lt;br /&gt;
* Actual expenditures versus planned ones.&lt;br /&gt;
* Requirements understanding.&lt;br /&gt;
* Credibility of the cost/schedule estimates, risks and priorities.&lt;br /&gt;
&lt;br /&gt;
If for any reason the project fails to pass this milestone, it can either be completely cancelled or re-designed to successfully meet the criteria.&lt;br /&gt;
 &lt;br /&gt;
==== Elaboration Phase ====&lt;br /&gt;
The second phase is the elaboration phase. The focus of this phase, is establishing a baseline to the architecture of the system, further developing the project plan and analyzing the problem domain while trying to mitigate the highest risk elements. In other words, this is the phase where the project starts to take shape. One of the most important characteristics of this phase, is the production of a component-based architectural prototype. The purpose of this prototype, is to address the critical use-cases that were identified in the previous phase, and hopefully expose the highest technical risks of the project. The expected outcome of the elaboration phase includes:&lt;br /&gt;
&lt;br /&gt;
* A use-case model (at least 80% complete) which will be able to identify all the actors and use-cases.&lt;br /&gt;
* Supplementary requirements (if any).&lt;br /&gt;
* A clear description of the software architecture.&lt;br /&gt;
* An architectural prototype.&lt;br /&gt;
* A more detailed risk assessment and business case.&lt;br /&gt;
* A development plan for the overall project.&lt;br /&gt;
* A preliminary user manual (optional).&lt;br /&gt;
&lt;br /&gt;
At the end of the elaboration phase lies the second major project milestone; the &#039;&#039;&#039;Lifecycle Architecture Milestone&#039;&#039;&#039;.&lt;br /&gt;
The elaboration phase has six evaluation criteria:&lt;br /&gt;
&lt;br /&gt;
* Is the vision stable enough?&lt;br /&gt;
* Is the system architecture stable enough?&lt;br /&gt;
* Have all the major risks been successfully identified and resolved?&lt;br /&gt;
* Is the plan for the construction phase accurate enough?&lt;br /&gt;
* Do all the stakeholders share the opinion that the vision can be achieved by executing the current plan?&lt;br /&gt;
* Is the actual vs planned resource expenditure in acceptable levels?&lt;br /&gt;
&lt;br /&gt;
If the project fails to pass the milestone, there is still time to be re-designed or even cancelled. However, when the project moves to the next phase the associated operation risks raise significantly and changes become much more difficult.&lt;br /&gt;
&lt;br /&gt;
==== Construction Phase====&lt;br /&gt;
The third phase is the construction phase. The focus of this phase, is to develop and integrate all the remaining components and application features into the product. In other words this is the phase where the vision is finally translated into a final stable product, which is based on the architecture that was developed during the previous phases  &amp;lt;ref name=&amp;quot;KRUCHTEN, P. (2000)&amp;quot;&amp;gt;KRUCHTEN, P. (2000) The Rational Unified Process - An Introduction, Second Edition, Addison-Wesley.&amp;lt;/ref&amp;gt;. Most emphasize is given to resources, control and process management in order to fully optimize costs, schedules and quality. The existing prototype evolves via a number of iterations into a fully functional product that meets the stakeholders&#039; needs. The construction phase is usually the longest one of the project life cycle. The expected outcome of the construction phase includes:&lt;br /&gt;
&lt;br /&gt;
* First external release of the software.&lt;br /&gt;
* User manuals.&lt;br /&gt;
* A detailed description of the current release.&lt;br /&gt;
&lt;br /&gt;
At the end of the construction phase lies the third major project milestone; the &#039;&#039;&#039;Initial Operation Capability Milestone&#039;&#039;&#039;.&lt;br /&gt;
The construction phase has three evaluation criteria:&lt;br /&gt;
&lt;br /&gt;
* Is the software release stable enough to be given to the user community?&lt;br /&gt;
* Are all the stakeholders ready for the transition to the user community?&lt;br /&gt;
* Is the actual vs planned resource expenditure in acceptable levels?&lt;br /&gt;
&lt;br /&gt;
If the project fails to pass this milestone, transition may have to be postponed by one release.&lt;br /&gt;
&lt;br /&gt;
==== Transition Phase ====&lt;br /&gt;
The fourth and final phase is the transition phase. The focus of this phase is, as the word says, to transition the software product to the user community. It includes ensuring that the product has been developed to an acceptable quality level, by beta testing the software through the end users, and validating it against the stakeholders&#039; expectations. Once the product has been given for beta testing, a number of issues can arise, requiring the development of new releases (fixing bugs) and adding features that may have been postponed. The expected outcome of the transition phase includes:&lt;br /&gt;
&lt;br /&gt;
* Beta-testing to fix any major [https://en.wikipedia.org/wiki/Software_bug software bugs] and add any missing features.&lt;br /&gt;
* Conversion of operational databases&lt;br /&gt;
* Training of end users and maintainers.&lt;br /&gt;
* Marketing and distribution of the product.&lt;br /&gt;
&lt;br /&gt;
At the end of the transition phase lies the fourth and final major project milestone; the &#039;&#039;&#039;Product Release&#039;&#039;&#039;.&lt;br /&gt;
The transition phase has two evaluation criteria:&lt;br /&gt;
&lt;br /&gt;
* Are the end - users satisfied with the product?&lt;br /&gt;
* Is the actual vs planned resource expenditure in acceptable levels?&lt;br /&gt;
&lt;br /&gt;
==== Iterations ====&lt;br /&gt;
As stated before, every phase can consist of a number of iterations, depending on the project size and scope. RUP, in comparison to the traditional [https://en.wikipedia.org/wiki/Waterfall_model waterfall] approach, is heavily based on iterations. This gives a number of advantages and benefits to the project team, with the most important one being mitigating risks much more earlier in the project. Moreover, change is more manageable and there is normally a higher level of reuse. Finally, iterations ensure an overall high quality in the final product and that the project team can learn throughout the developing process.&lt;br /&gt;
&lt;br /&gt;
=== Workflow Dimension - Disciplines ===&lt;br /&gt;
&lt;br /&gt;
[[File:activities.png|350px|right|thumb| Figure 4. Individuals, Roles and Activities]]&lt;br /&gt;
[[File:workflows.png|350px|right|thumb| Figure 5. Example of a workflow]]&lt;br /&gt;
&lt;br /&gt;
A process describes &#039;&#039;&#039;who&#039;&#039;&#039; is doing &#039;&#039;&#039;what&#039;&#039;&#039;, &#039;&#039;&#039;how&#039;&#039;&#039; and &#039;&#039;&#039;when&#039;&#039;&#039;. RUP addresses those terms with four modelling elements; &#039;&#039;&#039;Roles&#039;&#039;&#039;, &#039;&#039;&#039;Activities&#039;&#039;&#039;, &#039;&#039;&#039;Artifacts&#039;&#039;&#039; and &#039;&#039;&#039;Workflows&#039;&#039;&#039; respectively. A &#039;&#039;&#039;role&#039;&#039;&#039;, formally addressed as a worker, describes the behavior and responsibilities of an individual or a group of individuals in order to produce an artifact. Throughout the development of a project, a person can play one or a number of roles. Some examples of roles are the system analyst, designer, tester. &#039;&#039;&#039;Activities&#039;&#039;&#039; are expressed through behaviors. An activity, is a job that a person performs through his role, as seen in Figure 4. The length of an activity may vary from a few hours to a number of days. Examples of activities are: Plan an operation - performed by the role of Project Manager or add a missing feature - performed by the role of a software developer. All activities produce a meaningful result, called an artifact. &#039;&#039;&#039;Artifacts&#039;&#039;&#039;, are the responsibilities of ones role or roles and express a piece of information that is produced, modified or even used by a process. They can act both as input or output of an activity. Examples of artifacts are the source code, the business case, the software architecture. The roles perform activities that can produce a sequence of artifacts, called &#039;&#039;&#039;workflows&#039;&#039;&#039;. Examples of workflows can be seen in Figure 5. &lt;br /&gt;
&lt;br /&gt;
RUP identifies nine core process workflows, called &#039;&#039;&#039;disciplines&#039;&#039;&#039;. Every discipline, addresses a set of activities and artifacts, based upon a set of skills that are common in an ICT project. These disciplines have the ability to arrange the activities and artifacts in such a way, to provide an understanding of the overall project from a waterfall perspective.&lt;br /&gt;
&lt;br /&gt;
There are six core &amp;quot;engineering&amp;quot; disciplines:&lt;br /&gt;
* Business Modelling Discipline&lt;br /&gt;
* Requirements Discipline&lt;br /&gt;
* Analysis and Design Discipline&lt;br /&gt;
* Implementation Discipline&lt;br /&gt;
* Test Discipline&lt;br /&gt;
* Deployment Discipline&lt;br /&gt;
&lt;br /&gt;
And three core &amp;quot;supporting&amp;quot; disciplines:&lt;br /&gt;
* Project Management Discipline&lt;br /&gt;
* Configuration and Change Management Discipline&lt;br /&gt;
* Environment Discipline&lt;br /&gt;
&lt;br /&gt;
==== Business Modelling ====&lt;br /&gt;
&lt;br /&gt;
Miscommunication between the software engineering community and the business engineering community is one of the most common problems among most business engineering efforts. This means that the output from software development efforts is not correctly used as input to the business engineering and vice versa. The purpose of the Business Modelling discipline is to provide a common language between the two communities and create a direct coupling between software and business models. All business processes are documented using &amp;quot;use cases&amp;quot;. This assures that all stakeholders share the same understanding of the demanding organization.&lt;br /&gt;
&lt;br /&gt;
==== Requirements ====&lt;br /&gt;
The purpose of the requirements discipline is to describe in detail &#039;&#039;&#039;what&#039;&#039;&#039; the system should do. Based on that, a Vision document is created where required functionality and constraints are documented. Moreover, actors (end - users) and use cases (behaviors of the system) are identified. Use cases are described in detail and each description clearly shows how the system interacts with the actors. This way an agreement is established between the customers and the rest of the stakeholders regarding the system&#039;s capabilities, user-interface and the end user&#039;s needs.&lt;br /&gt;
&lt;br /&gt;
==== Analysis and Design ====&lt;br /&gt;
&lt;br /&gt;
The purpose of the Analysis and Design discipline it to investigate &#039;&#039;&#039;how&#039;&#039;&#039; the system requirements will be translated into a detailed implementation plan. The system needs to:&lt;br /&gt;
* Perform exactly as described in the use-case descriptions.&lt;br /&gt;
* Fulfill all requirements.&lt;br /&gt;
* Have a robust structure.&lt;br /&gt;
&lt;br /&gt;
Analysis and Design result in the creation of a &#039;&#039;&#039;design model&#039;&#039;&#039;. The design model is an abstraction of the system&#039;s architecture and acts as a guide of how the source code should be finally written and structured.&lt;br /&gt;
&lt;br /&gt;
==== Implementation ====&lt;br /&gt;
The purpose of the Implementation discipline is to:&lt;br /&gt;
&lt;br /&gt;
* Arrange the code into subsystems, organized in layers.&lt;br /&gt;
* Implement classes and objects in terms of components.&lt;br /&gt;
* Uni-test the developed components to ensure quality.&lt;br /&gt;
* Integrate the results into an executable system.&lt;br /&gt;
&lt;br /&gt;
The whole system can be realized as an implementation of various components. RUP enables the integration of those components, in a revolutionary way, making the system easier to maintain and increasing the possibilities for future re-use.&lt;br /&gt;
&lt;br /&gt;
==== Test ====&lt;br /&gt;
&lt;br /&gt;
In the implementation discipline, all the developed components were uni-tested individually and were integrated into the system. The purpose of the Test discipline is to assess the system as a whole and verify the product quality. It is a mechanism to verify the smooth interaction between the various components, their proper integration into the system and finally ensure that all requirements have been successfully implemented. All tests are carried out along 4 quality dimensions:&lt;br /&gt;
* Functionality.&lt;br /&gt;
* Reliability.&lt;br /&gt;
* Application Performance.&lt;br /&gt;
* System Performance.&lt;br /&gt;
&lt;br /&gt;
==== Deployment ====&lt;br /&gt;
&lt;br /&gt;
The purpose of the Deployment discipline is primarily to develop product releases and distribute the software to the end – users. More specifically the Deployment discipline focuses at:&lt;br /&gt;
&lt;br /&gt;
* Developing external software releases&lt;br /&gt;
* Distributing the software&lt;br /&gt;
* Installing the software&lt;br /&gt;
* Providing help to the end – users&lt;br /&gt;
* Creating an up-to-date user manual&lt;br /&gt;
* Conducting beta testing&lt;br /&gt;
&lt;br /&gt;
==== Project Management ====&lt;br /&gt;
&lt;br /&gt;
The purpose of the Project Management discipline, is to successfully balance competing objectives, manage and mitigate risks and finally handle any constraints on delivering the product. Project management, ideally provides:&lt;br /&gt;
&lt;br /&gt;
* A framework for managing software-intensive projects.&lt;br /&gt;
* A framework to successfully manage risks.&lt;br /&gt;
* A framework to plan, execute and monitor projects.&lt;br /&gt;
&lt;br /&gt;
While the discipline does not guarantee success, the odds of delivering successful software are greatly improved.&lt;br /&gt;
&lt;br /&gt;
==== Configuration and Change Management ====&lt;br /&gt;
&lt;br /&gt;
The purpose of the Configuration and Change Management Discipline is to control, maintain and configure all the various artifacts that are produced by the different actors that are working on a project. During the software development life cycle, artifacts are regularly updated (changed). In order to understand the current state of an artifact, it is very important to keep track of its location and history; what was the reason and who decided to change the artifact. The discipline helps create a framework that keeps track of all the project assets.&lt;br /&gt;
&lt;br /&gt;
==== Environment ====&lt;br /&gt;
&lt;br /&gt;
The purpose of the environment discipline, is to provide the development team with all the processes, tools and methods for supporting all developing activities. It is responsible for producing a Development Kit, able to provide guidelines and templates for customizing processes.&lt;br /&gt;
&lt;br /&gt;
== Why RUP - Best Practices ==&lt;br /&gt;
&lt;br /&gt;
RUP captures many of the “best practices” that are currently used in modern software development and more particularly in industry by successful organizations. The practices are:&lt;br /&gt;
&lt;br /&gt;
* Develop Software Iteratively&lt;br /&gt;
* Manage Requirements&lt;br /&gt;
* Use component-based architectures&lt;br /&gt;
* Visually model software&lt;br /&gt;
* Continuously verify software quality&lt;br /&gt;
* Control changes to software&lt;br /&gt;
&lt;br /&gt;
=== Develop Software iteratively ===&lt;br /&gt;
&lt;br /&gt;
Today’s high sophisticated software systems, consist of many and complex structures which make it nearly impossible to define the entire system from the very beginning, develop the entire solution and then test the product in the end. RUP uses an iterative approach that allows an increasing understanding of the problem and developing a step – by – step solution, over multiple iterations. Each iteration ends with an executable release, which enables continuous end - user involvement and feedback. As a result, the risks of the project are mitigated at an early stage and stakeholders are ensured that the project requirements are fulfilled.&lt;br /&gt;
&lt;br /&gt;
=== Manage requirements ===&lt;br /&gt;
&lt;br /&gt;
The requirements of a system include the description of the services that the system is able to provide and its operational constraints. RUP documents, organizes and tracks required functionality and constraints and easily communicates business requirements. The use – cases that are used in the process are an excellent way to ensure that requirements are actually those elements that drive the design, implementation and testing of software, making it more likely that the final system fulfills the stakeholders needs.&lt;br /&gt;
&lt;br /&gt;
=== Use component-based architectures ===&lt;br /&gt;
&lt;br /&gt;
Component-based architecture makes the system dynamic; components are independent from the system and interact with other components through well-defined interfaces. Their in-dependency from the system, gives them a great flexibility meaning that they can easily be added, updated or totally replaced. RUP supports component-based software development by providing a systematic approach to defining an architecture using new and existing components.&lt;br /&gt;
&lt;br /&gt;
=== Visually model software ===&lt;br /&gt;
&lt;br /&gt;
A model is an abstraction of reality that can help better comprehend large and complex systems. Visual abstractions help the development team to easily communicate different aspects of the software and see how all the components fit together. RUP uses the [http://www.uml.org/ Unified Modelling Language (UML)] standard which is a graphical language for visualizing and constructing the artifacts of a software-intensive system.&lt;br /&gt;
&lt;br /&gt;
=== Continuously verify software quality ===&lt;br /&gt;
&lt;br /&gt;
In software development, quality should always be reviewed with respect to the requirements based on reliability, functionality , application and system performance. In RUP, quality verification and assessment is built into the process, inside all activities, including all stakeholders and is not treated as a separate activity, performed by a separate group.&lt;br /&gt;
&lt;br /&gt;
=== Control changes to software ===&lt;br /&gt;
&lt;br /&gt;
A software system is developed by a number of teams or individuals, using different platforms and at times being in different locations. As a result, it is essential to somehow make sure that all the changes made in the system are synchronized and constantly verified. RUP ensures that all the individuals working in the project are well informed about any changes and everything is in sync. The process describes how to control, track and monitor changes to enable successful iterative development.&lt;br /&gt;
&lt;br /&gt;
== Limitations ==&lt;br /&gt;
&lt;br /&gt;
While being a complete methodology in itself with an emphasis on accurate documentation and quickly resolving project associated risks, RUP comes with a number of limitations.&lt;br /&gt;
&lt;br /&gt;
* In order for team members to start developing software under this methodology, they need to be &#039;&#039;&#039;experts&#039;&#039;&#039; in their respective fields.&lt;br /&gt;
* The development process can easily become too complex to handle.&lt;br /&gt;
* When working with cutting - edge projects that highly utilize new technology, components will not be able to be reused. &lt;br /&gt;
* While in theory integration throughout the process of software development sounds like a good thing, when working with particularly complex projects with multiple development streams, issues and significant confusion may rise during the stages of testing.&lt;br /&gt;
&lt;br /&gt;
== Conclusion ==&lt;br /&gt;
&lt;br /&gt;
The Rational Unified Process, is an exemplary method for addressing and mitigating risks from the very early stages, by rapidly developing an initial version of the system (prototype) that describes its architecture. There are not fixed requirements from the beginning but rather allows refining requirements , while the project progresses. It expects and actually deals with change pretty well while its main focus is the quality of the product and the degree to which it satisfies its end - users, throughout the project life-cycle. However, while being a complete and well documented methodology, it should be stressed that remains a very complex one. In order to increase the likelihood of success, while adopting this methodology, all the project members need to be &#039;&#039;&#039;experts&#039;&#039;&#039; in their respective fields. The method can easily become too difficult to learn and most importantly too difficult to apply.&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Lessisv</name></author>
	</entry>
	<entry>
		<id>http://13.50.150.85/index.php?title=Rational_Unified_Process_(RUP)&amp;diff=14734</id>
		<title>Rational Unified Process (RUP)</title>
		<link rel="alternate" type="text/html" href="http://13.50.150.85/index.php?title=Rational_Unified_Process_(RUP)&amp;diff=14734"/>
		<updated>2015-09-26T12:17:58Z</updated>

		<summary type="html">&lt;p&gt;Lessisv: /* Time Dimension - Phases and Iterations */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The &#039;&#039;&#039;Rational Unified Process (RUP)&#039;&#039;&#039; is an iterative, &#039;&#039;&#039;software development methodology&#039;&#039;&#039;, firstly introduced by the [https://en.wikipedia.org/wiki/Rational_Software Rational Software Corporation] which was [http://www-03.ibm.com/press/us/en/pressrelease/314.wss acquired by IBM] in 2003. RUP is a disciplined approach to assign tasks within a development organization and software project teams. It was developed to ensure the production of &#039;&#039;&#039;high quality software&#039;&#039;&#039; by providing the development team with a set of &#039;&#039;&#039;guidelines, templates and tool mentors&#039;&#039;&#039;, for all the critical life-cycle activities within a project. This cluster of objects, form a knowledge base that is shared between all project team members. As a result, no matter what each member is working with (e.g testing, designing, managing), they all share a common language and view on how to develop software. Consequently, team productivity is boosted, in order to deliver software that can meet and exceed the needs and expectations of end-users, strictly following a predictable budget and schedule &amp;lt;ref name=&amp;quot;Ivar Jacobson, Grady Booch, and Jim Rumbaugh&amp;quot;&amp;gt;Ivar Jacobson, Grady Booch, and Jim Rumbaugh, Unified Software Development Process, Addison-Wesley, 1999.&amp;lt;/ref&amp;gt;. RUP is the most popular and extensively documented refinement of the [https://en.wikipedia.org/wiki/Unified_Process Unified Process], an iterative and incremental software development process framework. Other worth mentioning forms are the [https://en.wikipedia.org/wiki/OpenUP OpenUP] and [https://en.wikipedia.org/wiki/Agile_Unified_Process Agile Unified Process].&lt;br /&gt;
&lt;br /&gt;
== Process Overview ==&lt;br /&gt;
&lt;br /&gt;
[[File:RUP.png|450px|right|thumb| Figure 1. The iterative model graph shows how the process is structured along two dimensions]]&lt;br /&gt;
&lt;br /&gt;
The best possible way to describe the methodology is through a 2 - dimensional graph &amp;lt;ref name=&amp;quot;IBM (2005) Rational Unified Process&amp;quot;&amp;gt;IBM (2005) Rational Unified Process – Best Practices for Software Development Teams. Rational Software White paper. Rational&amp;lt;/ref&amp;gt;.&lt;br /&gt;
* The first dimension (horizontal axis) represents the &#039;&#039;&#039;dynamic aspect&#039;&#039;&#039; of the process. It expresses &#039;&#039;&#039;time&#039;&#039;&#039; in terms of &#039;&#039;&#039;phases&#039;&#039;&#039; and &#039;&#039;&#039;iterations&#039;&#039;&#039;. &lt;br /&gt;
* The second dimension (vertical axis) represents the &#039;&#039;&#039;static aspect&#039;&#039;&#039; of the process. It expresses &#039;&#039;&#039;workflows&#039;&#039;&#039; in terms of 6 core and 3 supporting &#039;&#039;&#039;disciplines&#039;&#039;&#039; (more on that on &amp;quot;Disciplines&amp;quot; section).&lt;br /&gt;
&lt;br /&gt;
=== Time Dimension - Phases and Iterations ===&lt;br /&gt;
When developing software, the project team goes through a multi-step process, from establishing a system&#039;s requirements to designing, implementing and finally maintaining the software with new releases. This is the software life cycle  &amp;lt;ref name=&amp;quot;IBM (2003) The Rational Unified Process®&amp;quot;&amp;gt;IBM (2003) The Rational Unified Process®, Version 2003.06.12.01, Rational Software Corporation.&amp;lt;/ref&amp;gt;. RUP delicately breaks the software life cycle down to four consecutive phases &amp;lt;ref name=&amp;quot;Philippe Kruchten&amp;quot;&amp;gt;A Rational Development Process, CrossTalk, 9 (7), STSC, Hill AFB, UT, pp.11-16.&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
* Inception phase&lt;br /&gt;
* Elaboration phase&lt;br /&gt;
* Construction phase&lt;br /&gt;
* Transition phase&lt;br /&gt;
&lt;br /&gt;
Depending on the project, each of these phases can consist of one to a number of &#039;&#039;&#039;iterations&#039;&#039;&#039;. An iteration is defined as a complete development loop, resulting in a new product release. All the phases include a well-defined milestone, in order to be completed. In the end of every phase, the development team can evaluate whether all the key goals have been achieved, all stakeholders have been considered and the actual expenditures correspond with the planned ones  &amp;lt;ref name=&amp;quot;Barry W. Boehm&amp;quot;&amp;gt;Barry W. Boehm, Anchoring the Software Process, IEEE Software, 13, 4, July 1996, pp. 73-82. &amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[File:RUP_phases.png|550px|right|thumb| Figure 2. The four phases and milestones of a project]]&lt;br /&gt;
==== Inception Phase ====&lt;br /&gt;
The first phase is the inception phase. The focus of this phase, is understanding the scope of the project and studying if is both worth doing and possible to do. All the internal and external entities that the system will interact with are identified and the nature of the interaction is well defined at a high level. For this reason, the inception phase is primarily significant for new development projects. &lt;br /&gt;
The expected outcome of the inception phase includes :&lt;br /&gt;
&lt;br /&gt;
* A vision document: The document states the general vision of the project including its key requirements, features and main constraints.&lt;br /&gt;
* An initial use-case model (10%-20% complete)&lt;br /&gt;
* An initial project glossary&lt;br /&gt;
* An initial business case, including the business context, success criteria and a financial forecast.&lt;br /&gt;
* An initial risk assessment&lt;br /&gt;
* A project plan (phases and iterations)&lt;br /&gt;
* A business model (if necessary)&lt;br /&gt;
* Prototypes&lt;br /&gt;
&lt;br /&gt;
At the end of the inception phase lies the first major project milestone; the &#039;&#039;&#039;Lifecycle Objective Milestone&#039;&#039;&#039;.&lt;br /&gt;
The inception phase has five evaluation criteria:&lt;br /&gt;
&lt;br /&gt;
* Stakeholder concurrence on scope definition and cost/schedule estimates.&lt;br /&gt;
* Depth and breadth of any prototype that was developed.&lt;br /&gt;
* Actual expenditures versus planned ones.&lt;br /&gt;
* Requirements understanding.&lt;br /&gt;
* Credibility of the cost/schedule estimates, risks and priorities.&lt;br /&gt;
&lt;br /&gt;
If for any reason the project fails to pass this milestone, it can either be completely cancelled or re-designed to successfully meet the criteria.&lt;br /&gt;
 &lt;br /&gt;
==== Elaboration Phase ====&lt;br /&gt;
The second phase is the elaboration phase. The focus of this phase, is establishing a baseline to the architecture of the system, further developing the project plan and analyzing the problem domain while trying to mitigate the highest risk elements. In other words, this is the phase where the project starts to take shape. One of the most important characteristics of this phase, is the production of a component-based architectural prototype. The purpose of this prototype, is to address the critical use-cases that were identified in the previous phase, and hopefully expose the highest technical risks of the project. The expected outcome of the elaboration phase includes:&lt;br /&gt;
&lt;br /&gt;
* A use-case model (at least 80% complete) which will be able to identify all the actors and use-cases.&lt;br /&gt;
* Supplementary requirements (if any).&lt;br /&gt;
* A clear description of the software architecture.&lt;br /&gt;
* An architectural prototype.&lt;br /&gt;
* A more detailed risk assessment and business case.&lt;br /&gt;
* A development plan for the overall project.&lt;br /&gt;
* A preliminary user manual (optional).&lt;br /&gt;
&lt;br /&gt;
At the end of the elaboration phase lies the second major project milestone; the &#039;&#039;&#039;Lifecycle Architecture Milestone&#039;&#039;&#039;.&lt;br /&gt;
The elaboration phase has six evaluation criteria:&lt;br /&gt;
&lt;br /&gt;
* Is the vision stable enough?&lt;br /&gt;
* Is the system architecture stable enough?&lt;br /&gt;
* Have all the major risks been successfully identified and resolved?&lt;br /&gt;
* Is the plan for the construction phase accurate enough?&lt;br /&gt;
* Do all the stakeholders share the opinion that the vision can be achieved by executing the current plan?&lt;br /&gt;
* Is the actual vs planned resource expenditure in acceptable levels?&lt;br /&gt;
&lt;br /&gt;
If the project fails to pass the milestone, there is still time to be re-designed or even cancelled. However, when the project moves to the next phase the associated operation risks raise significantly and changes become much more difficult.&lt;br /&gt;
&lt;br /&gt;
==== Construction Phase====&lt;br /&gt;
The third phase is the construction phase. The focus of this phase, is to develop and integrate all the remaining components and application features into the product. In other words this is the phase where the vision is finally translated into a final stable product, which is based on the architecture that was developed during the previous phases. Most emphasize is given to resources, control and process management in order to fully optimize costs, schedules and quality. The existing prototype evolves via a number of iterations into a fully functional product that meets the stakeholders&#039; needs. The construction phase is usually the longest one of the project life cycle. The expected outcome of the construction phase includes:&lt;br /&gt;
&lt;br /&gt;
* First external release of the software.&lt;br /&gt;
* User manuals.&lt;br /&gt;
* A detailed description of the current release.&lt;br /&gt;
&lt;br /&gt;
At the end of the construction phase lies the third major project milestone; the &#039;&#039;&#039;Initial Operation Capability Milestone&#039;&#039;&#039;.&lt;br /&gt;
The construction phase has three evaluation criteria:&lt;br /&gt;
&lt;br /&gt;
* Is the software release stable enough to be given to the user community?&lt;br /&gt;
* Are all the stakeholders ready for the transition to the user community?&lt;br /&gt;
* Is the actual vs planned resource expenditure in acceptable levels?&lt;br /&gt;
&lt;br /&gt;
If the project fails to pass this milestone, transition may have to be postponed by one release.&lt;br /&gt;
&lt;br /&gt;
==== Transition Phase ====&lt;br /&gt;
The fourth and final phase is the transition phase. The focus of this phase is, as the word says, to transition the software product to the user community. It includes ensuring that the product has been developed to an acceptable quality level, by beta testing the software through the end users, and validating it against the stakeholders&#039; expectations. Once the product has been given for beta testing, a number of issues can arise, requiring the development of new releases (fixing bugs) and adding features that may have been postponed. The expected outcome of the transition phase includes:&lt;br /&gt;
&lt;br /&gt;
* Beta-testing to fix any major [https://en.wikipedia.org/wiki/Software_bug software bugs] and add any missing features.&lt;br /&gt;
* Conversion of operational databases&lt;br /&gt;
* Training of end users and maintainers.&lt;br /&gt;
* Marketing and distribution of the product.&lt;br /&gt;
&lt;br /&gt;
At the end of the transition phase lies the fourth and final major project milestone; the &#039;&#039;&#039;Product Release&#039;&#039;&#039;.&lt;br /&gt;
The transition phase has two evaluation criteria:&lt;br /&gt;
&lt;br /&gt;
* Are the end - users satisfied with the product?&lt;br /&gt;
* Is the actual vs planned resource expenditure in acceptable levels?&lt;br /&gt;
&lt;br /&gt;
==== Iterations ====&lt;br /&gt;
As stated before, every phase can consist of a number of iterations, depending on the project size and scope. RUP, in comparison to the traditional [https://en.wikipedia.org/wiki/Waterfall_model waterfall] approach, is heavily based on iterations. This gives a number of advantages and benefits to the project team, with the most important one being mitigating risks much more earlier in the project. Moreover, change is more manageable and there is normally a higher level of reuse. Finally, iterations ensure an overall high quality in the final product and that the project team can learn throughout the developing process.&lt;br /&gt;
&lt;br /&gt;
=== Workflow Dimension - Disciplines ===&lt;br /&gt;
&lt;br /&gt;
[[File:activities.png|350px|right|thumb| Figure 4. Individuals, Roles and Activities]]&lt;br /&gt;
[[File:workflows.png|350px|right|thumb| Figure 5. Example of a workflow]]&lt;br /&gt;
&lt;br /&gt;
A process describes &#039;&#039;&#039;who&#039;&#039;&#039; is doing &#039;&#039;&#039;what&#039;&#039;&#039;, &#039;&#039;&#039;how&#039;&#039;&#039; and &#039;&#039;&#039;when&#039;&#039;&#039;. RUP addresses those terms with four modelling elements; &#039;&#039;&#039;Roles&#039;&#039;&#039;, &#039;&#039;&#039;Activities&#039;&#039;&#039;, &#039;&#039;&#039;Artifacts&#039;&#039;&#039; and &#039;&#039;&#039;Workflows&#039;&#039;&#039; respectively. A &#039;&#039;&#039;role&#039;&#039;&#039;, formally addressed as a worker, describes the behavior and responsibilities of an individual or a group of individuals in order to produce an artifact. Throughout the development of a project, a person can play one or a number of roles. Some examples of roles are the system analyst, designer, tester. &#039;&#039;&#039;Activities&#039;&#039;&#039; are expressed through behaviors. An activity, is a job that a person performs through his role, as seen in Figure 4. The length of an activity may vary from a few hours to a number of days. Examples of activities are: Plan an operation - performed by the role of Project Manager or add a missing feature - performed by the role of a software developer. All activities produce a meaningful result, called an artifact. &#039;&#039;&#039;Artifacts&#039;&#039;&#039;, are the responsibilities of ones role or roles and express a piece of information that is produced, modified or even used by a process. They can act both as input or output of an activity. Examples of artifacts are the source code, the business case, the software architecture. The roles perform activities that can produce a sequence of artifacts, called &#039;&#039;&#039;workflows&#039;&#039;&#039;. Examples of workflows can be seen in Figure 5. &lt;br /&gt;
&lt;br /&gt;
RUP identifies nine core process workflows, called &#039;&#039;&#039;disciplines&#039;&#039;&#039;. Every discipline, addresses a set of activities and artifacts, based upon a set of skills that are common in an ICT project. These disciplines have the ability to arrange the activities and artifacts in such a way, to provide an understanding of the overall project from a waterfall perspective.&lt;br /&gt;
&lt;br /&gt;
There are six core &amp;quot;engineering&amp;quot; disciplines:&lt;br /&gt;
* Business Modelling Discipline&lt;br /&gt;
* Requirements Discipline&lt;br /&gt;
* Analysis and Design Discipline&lt;br /&gt;
* Implementation Discipline&lt;br /&gt;
* Test Discipline&lt;br /&gt;
* Deployment Discipline&lt;br /&gt;
&lt;br /&gt;
And three core &amp;quot;supporting&amp;quot; disciplines:&lt;br /&gt;
* Project Management Discipline&lt;br /&gt;
* Configuration and Change Management Discipline&lt;br /&gt;
* Environment Discipline&lt;br /&gt;
&lt;br /&gt;
==== Business Modelling ====&lt;br /&gt;
&lt;br /&gt;
Miscommunication between the software engineering community and the business engineering community is one of the most common problems among most business engineering efforts. This means that the output from software development efforts is not correctly used as input to the business engineering and vice versa. The purpose of the Business Modelling discipline is to provide a common language between the two communities and create a direct coupling between software and business models. All business processes are documented using &amp;quot;use cases&amp;quot;. This assures that all stakeholders share the same understanding of the demanding organization.&lt;br /&gt;
&lt;br /&gt;
==== Requirements ====&lt;br /&gt;
The purpose of the requirements discipline is to describe in detail &#039;&#039;&#039;what&#039;&#039;&#039; the system should do. Based on that, a Vision document is created where required functionality and constraints are documented. Moreover, actors (end - users) and use cases (behaviors of the system) are identified. Use cases are described in detail and each description clearly shows how the system interacts with the actors. This way an agreement is established between the customers and the rest of the stakeholders regarding the system&#039;s capabilities, user-interface and the end user&#039;s needs.&lt;br /&gt;
&lt;br /&gt;
==== Analysis and Design ====&lt;br /&gt;
&lt;br /&gt;
The purpose of the Analysis and Design discipline it to investigate &#039;&#039;&#039;how&#039;&#039;&#039; the system requirements will be translated into a detailed implementation plan. The system needs to:&lt;br /&gt;
* Perform exactly as described in the use-case descriptions.&lt;br /&gt;
* Fulfill all requirements.&lt;br /&gt;
* Have a robust structure.&lt;br /&gt;
&lt;br /&gt;
Analysis and Design result in the creation of a &#039;&#039;&#039;design model&#039;&#039;&#039;. The design model is an abstraction of the system&#039;s architecture and acts as a guide of how the source code should be finally written and structured.&lt;br /&gt;
&lt;br /&gt;
==== Implementation ====&lt;br /&gt;
The purpose of the Implementation discipline is to:&lt;br /&gt;
&lt;br /&gt;
* Arrange the code into subsystems, organized in layers.&lt;br /&gt;
* Implement classes and objects in terms of components.&lt;br /&gt;
* Uni-test the developed components to ensure quality.&lt;br /&gt;
* Integrate the results into an executable system.&lt;br /&gt;
&lt;br /&gt;
The whole system can be realized as an implementation of various components. RUP enables the integration of those components, in a revolutionary way, making the system easier to maintain and increasing the possibilities for future re-use.&lt;br /&gt;
&lt;br /&gt;
==== Test ====&lt;br /&gt;
&lt;br /&gt;
In the implementation discipline, all the developed components were uni-tested individually and were integrated into the system. The purpose of the Test discipline is to assess the system as a whole and verify the product quality. It is a mechanism to verify the smooth interaction between the various components, their proper integration into the system and finally ensure that all requirements have been successfully implemented. All tests are carried out along 4 quality dimensions:&lt;br /&gt;
* Functionality.&lt;br /&gt;
* Reliability.&lt;br /&gt;
* Application Performance.&lt;br /&gt;
* System Performance.&lt;br /&gt;
&lt;br /&gt;
==== Deployment ====&lt;br /&gt;
&lt;br /&gt;
The purpose of the Deployment discipline is primarily to develop product releases and distribute the software to the end – users. More specifically the Deployment discipline focuses at:&lt;br /&gt;
&lt;br /&gt;
* Developing external software releases&lt;br /&gt;
* Distributing the software&lt;br /&gt;
* Installing the software&lt;br /&gt;
* Providing help to the end – users&lt;br /&gt;
* Creating an up-to-date user manual&lt;br /&gt;
* Conducting beta testing&lt;br /&gt;
&lt;br /&gt;
==== Project Management ====&lt;br /&gt;
&lt;br /&gt;
The purpose of the Project Management discipline, is to successfully balance competing objectives, manage and mitigate risks and finally handle any constraints on delivering the product. Project management, ideally provides:&lt;br /&gt;
&lt;br /&gt;
* A framework for managing software-intensive projects.&lt;br /&gt;
* A framework to successfully manage risks.&lt;br /&gt;
* A framework to plan, execute and monitor projects.&lt;br /&gt;
&lt;br /&gt;
While the discipline does not guarantee success, the odds of delivering successful software are greatly improved.&lt;br /&gt;
&lt;br /&gt;
==== Configuration and Change Management ====&lt;br /&gt;
&lt;br /&gt;
The purpose of the Configuration and Change Management Discipline is to control, maintain and configure all the various artifacts that are produced by the different actors that are working on a project. During the software development life cycle, artifacts are regularly updated (changed). In order to understand the current state of an artifact, it is very important to keep track of its location and history; what was the reason and who decided to change the artifact. The discipline helps create a framework that keeps track of all the project assets.&lt;br /&gt;
&lt;br /&gt;
==== Environment ====&lt;br /&gt;
&lt;br /&gt;
The purpose of the environment discipline, is to provide the development team with all the processes, tools and methods for supporting all developing activities. It is responsible for producing a Development Kit, able to provide guidelines and templates for customizing processes.&lt;br /&gt;
&lt;br /&gt;
== Why RUP - Best Practices ==&lt;br /&gt;
&lt;br /&gt;
RUP captures many of the “best practices” that are currently used in modern software development and more particularly in industry by successful organizations. The practices are:&lt;br /&gt;
&lt;br /&gt;
* Develop Software Iteratively&lt;br /&gt;
* Manage Requirements&lt;br /&gt;
* Use component-based architectures&lt;br /&gt;
* Visually model software&lt;br /&gt;
* Continuously verify software quality&lt;br /&gt;
* Control changes to software&lt;br /&gt;
&lt;br /&gt;
=== Develop Software iteratively ===&lt;br /&gt;
&lt;br /&gt;
Today’s high sophisticated software systems, consist of many and complex structures which make it nearly impossible to define the entire system from the very beginning, develop the entire solution and then test the product in the end. RUP uses an iterative approach that allows an increasing understanding of the problem and developing a step – by – step solution, over multiple iterations. Each iteration ends with an executable release, which enables continuous end - user involvement and feedback. As a result, the risks of the project are mitigated at an early stage and stakeholders are ensured that the project requirements are fulfilled.&lt;br /&gt;
&lt;br /&gt;
=== Manage requirements ===&lt;br /&gt;
&lt;br /&gt;
The requirements of a system include the description of the services that the system is able to provide and its operational constraints. RUP documents, organizes and tracks required functionality and constraints and easily communicates business requirements. The use – cases that are used in the process are an excellent way to ensure that requirements are actually those elements that drive the design, implementation and testing of software, making it more likely that the final system fulfills the stakeholders needs.&lt;br /&gt;
&lt;br /&gt;
=== Use component-based architectures ===&lt;br /&gt;
&lt;br /&gt;
Component-based architecture makes the system dynamic; components are independent from the system and interact with other components through well-defined interfaces. Their in-dependency from the system, gives them a great flexibility meaning that they can easily be added, updated or totally replaced. RUP supports component-based software development by providing a systematic approach to defining an architecture using new and existing components.&lt;br /&gt;
&lt;br /&gt;
=== Visually model software ===&lt;br /&gt;
&lt;br /&gt;
A model is an abstraction of reality that can help better comprehend large and complex systems. Visual abstractions help the development team to easily communicate different aspects of the software and see how all the components fit together. RUP uses the [http://www.uml.org/ Unified Modelling Language (UML)] standard which is a graphical language for visualizing and constructing the artifacts of a software-intensive system.&lt;br /&gt;
&lt;br /&gt;
=== Continuously verify software quality ===&lt;br /&gt;
&lt;br /&gt;
In software development, quality should always be reviewed with respect to the requirements based on reliability, functionality , application and system performance. In RUP, quality verification and assessment is built into the process, inside all activities, including all stakeholders and is not treated as a separate activity, performed by a separate group.&lt;br /&gt;
&lt;br /&gt;
=== Control changes to software ===&lt;br /&gt;
&lt;br /&gt;
A software system is developed by a number of teams or individuals, using different platforms and at times being in different locations. As a result, it is essential to somehow make sure that all the changes made in the system are synchronized and constantly verified. RUP ensures that all the individuals working in the project are well informed about any changes and everything is in sync. The process describes how to control, track and monitor changes to enable successful iterative development.&lt;br /&gt;
&lt;br /&gt;
== Limitations ==&lt;br /&gt;
&lt;br /&gt;
While being a complete methodology in itself with an emphasis on accurate documentation and quickly resolving project associated risks, RUP comes with a number of limitations.&lt;br /&gt;
&lt;br /&gt;
* In order for team members to start developing software under this methodology, they need to be &#039;&#039;&#039;experts&#039;&#039;&#039; in their respective fields.&lt;br /&gt;
* The development process can easily become too complex to handle.&lt;br /&gt;
* When working with cutting - edge projects that highly utilize new technology, components will not be able to be reused. &lt;br /&gt;
* While in theory integration throughout the process of software development sounds like a good thing, when working with particularly complex projects with multiple development streams, issues and significant confusion may rise during the stages of testing.&lt;br /&gt;
&lt;br /&gt;
== Conclusion ==&lt;br /&gt;
&lt;br /&gt;
The Rational Unified Process, is an exemplary method for addressing and mitigating risks from the very early stages, by rapidly developing an initial version of the system (prototype) that describes its architecture. There are not fixed requirements from the beginning but rather allows refining requirements , while the project progresses. It expects and actually deals with change pretty well while its main focus is the quality of the product and the degree to which it satisfies its end - users, throughout the project life-cycle. However, while being a complete and well documented methodology, it should be stressed that remains a very complex one. In order to increase the likelihood of success, while adopting this methodology, all the project members need to be &#039;&#039;&#039;experts&#039;&#039;&#039; in their respective fields. The method can easily become too difficult to learn and most importantly too difficult to apply.&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Lessisv</name></author>
	</entry>
	<entry>
		<id>http://13.50.150.85/index.php?title=Rational_Unified_Process_(RUP)&amp;diff=14731</id>
		<title>Rational Unified Process (RUP)</title>
		<link rel="alternate" type="text/html" href="http://13.50.150.85/index.php?title=Rational_Unified_Process_(RUP)&amp;diff=14731"/>
		<updated>2015-09-26T12:15:21Z</updated>

		<summary type="html">&lt;p&gt;Lessisv: /* Process Overview */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The &#039;&#039;&#039;Rational Unified Process (RUP)&#039;&#039;&#039; is an iterative, &#039;&#039;&#039;software development methodology&#039;&#039;&#039;, firstly introduced by the [https://en.wikipedia.org/wiki/Rational_Software Rational Software Corporation] which was [http://www-03.ibm.com/press/us/en/pressrelease/314.wss acquired by IBM] in 2003. RUP is a disciplined approach to assign tasks within a development organization and software project teams. It was developed to ensure the production of &#039;&#039;&#039;high quality software&#039;&#039;&#039; by providing the development team with a set of &#039;&#039;&#039;guidelines, templates and tool mentors&#039;&#039;&#039;, for all the critical life-cycle activities within a project. This cluster of objects, form a knowledge base that is shared between all project team members. As a result, no matter what each member is working with (e.g testing, designing, managing), they all share a common language and view on how to develop software. Consequently, team productivity is boosted, in order to deliver software that can meet and exceed the needs and expectations of end-users, strictly following a predictable budget and schedule &amp;lt;ref name=&amp;quot;Ivar Jacobson, Grady Booch, and Jim Rumbaugh&amp;quot;&amp;gt;Ivar Jacobson, Grady Booch, and Jim Rumbaugh, Unified Software Development Process, Addison-Wesley, 1999.&amp;lt;/ref&amp;gt;. RUP is the most popular and extensively documented refinement of the [https://en.wikipedia.org/wiki/Unified_Process Unified Process], an iterative and incremental software development process framework. Other worth mentioning forms are the [https://en.wikipedia.org/wiki/OpenUP OpenUP] and [https://en.wikipedia.org/wiki/Agile_Unified_Process Agile Unified Process].&lt;br /&gt;
&lt;br /&gt;
== Process Overview ==&lt;br /&gt;
&lt;br /&gt;
[[File:RUP.png|450px|right|thumb| Figure 1. The iterative model graph shows how the process is structured along two dimensions]]&lt;br /&gt;
&lt;br /&gt;
The best possible way to describe the methodology is through a 2 - dimensional graph &amp;lt;ref name=&amp;quot;IBM (2005) Rational Unified Process&amp;quot;&amp;gt;IBM (2005) Rational Unified Process – Best Practices for Software Development Teams. Rational Software White paper. Rational&amp;lt;/ref&amp;gt;.&lt;br /&gt;
* The first dimension (horizontal axis) represents the &#039;&#039;&#039;dynamic aspect&#039;&#039;&#039; of the process. It expresses &#039;&#039;&#039;time&#039;&#039;&#039; in terms of &#039;&#039;&#039;phases&#039;&#039;&#039; and &#039;&#039;&#039;iterations&#039;&#039;&#039;. &lt;br /&gt;
* The second dimension (vertical axis) represents the &#039;&#039;&#039;static aspect&#039;&#039;&#039; of the process. It expresses &#039;&#039;&#039;workflows&#039;&#039;&#039; in terms of 6 core and 3 supporting &#039;&#039;&#039;disciplines&#039;&#039;&#039; (more on that on &amp;quot;Disciplines&amp;quot; section).&lt;br /&gt;
&lt;br /&gt;
=== Time Dimension - Phases and Iterations ===&lt;br /&gt;
When developing software, the project team goes through a multi-step process, from establishing a system&#039;s requirements to designing, implementing and finally maintaining the software with new releases. This is the software life cycle. RUP delicately breaks the software life cycle down to four consecutive phases &amp;lt;ref name=&amp;quot;Philippe Kruchten&amp;quot;&amp;gt;A Rational Development Process, CrossTalk, 9 (7), STSC, Hill AFB, UT, pp.11-16.&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
* Inception phase&lt;br /&gt;
* Elaboration phase&lt;br /&gt;
* Construction phase&lt;br /&gt;
* Transition phase&lt;br /&gt;
&lt;br /&gt;
Depending on the project, each of these phases can consist of one to a number of &#039;&#039;&#039;iterations&#039;&#039;&#039;. An iteration is defined as a complete development loop, resulting in a new product release. All the phases include a well-defined milestone, in order to be completed. In the end of every phase, the development team can evaluate whether all the key goals have been achieved, all stakeholders have been considered and the actual expenditures correspond with the planned ones  &amp;lt;ref name=&amp;quot;Barry W. Boehm&amp;quot;&amp;gt;Barry W. Boehm, Anchoring the Software Process, IEEE Software, 13, 4, July 1996, pp. 73-82. &amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[File:RUP_phases.png|550px|right|thumb| Figure 2. The four phases and milestones of a project]]&lt;br /&gt;
==== Inception Phase ====&lt;br /&gt;
The first phase is the inception phase. The focus of this phase, is understanding the scope of the project and studying if is both worth doing and possible to do. All the internal and external entities that the system will interact with are identified and the nature of the interaction is well defined at a high level. For this reason, the inception phase is primarily significant for new development projects. &lt;br /&gt;
The expected outcome of the inception phase includes :&lt;br /&gt;
&lt;br /&gt;
* A vision document: The document states the general vision of the project including its key requirements, features and main constraints.&lt;br /&gt;
* An initial use-case model (10%-20% complete)&lt;br /&gt;
* An initial project glossary&lt;br /&gt;
* An initial business case, including the business context, success criteria and a financial forecast.&lt;br /&gt;
* An initial risk assessment&lt;br /&gt;
* A project plan (phases and iterations)&lt;br /&gt;
* A business model (if necessary)&lt;br /&gt;
* Prototypes&lt;br /&gt;
&lt;br /&gt;
At the end of the inception phase lies the first major project milestone; the &#039;&#039;&#039;Lifecycle Objective Milestone&#039;&#039;&#039;.&lt;br /&gt;
The inception phase has five evaluation criteria:&lt;br /&gt;
&lt;br /&gt;
* Stakeholder concurrence on scope definition and cost/schedule estimates.&lt;br /&gt;
* Depth and breadth of any prototype that was developed.&lt;br /&gt;
* Actual expenditures versus planned ones.&lt;br /&gt;
* Requirements understanding.&lt;br /&gt;
* Credibility of the cost/schedule estimates, risks and priorities.&lt;br /&gt;
&lt;br /&gt;
If for any reason the project fails to pass this milestone, it can either be completely cancelled or re-designed to successfully meet the criteria.&lt;br /&gt;
 &lt;br /&gt;
==== Elaboration Phase ====&lt;br /&gt;
The second phase is the elaboration phase. The focus of this phase, is establishing a baseline to the architecture of the system, further developing the project plan and analyzing the problem domain while trying to mitigate the highest risk elements. In other words, this is the phase where the project starts to take shape. One of the most important characteristics of this phase, is the production of a component-based architectural prototype. The purpose of this prototype, is to address the critical use-cases that were identified in the previous phase, and hopefully expose the highest technical risks of the project. The expected outcome of the elaboration phase includes:&lt;br /&gt;
&lt;br /&gt;
* A use-case model (at least 80% complete) which will be able to identify all the actors and use-cases.&lt;br /&gt;
* Supplementary requirements (if any).&lt;br /&gt;
* A clear description of the software architecture.&lt;br /&gt;
* An architectural prototype.&lt;br /&gt;
* A more detailed risk assessment and business case.&lt;br /&gt;
* A development plan for the overall project.&lt;br /&gt;
* A preliminary user manual (optional).&lt;br /&gt;
&lt;br /&gt;
At the end of the elaboration phase lies the second major project milestone; the &#039;&#039;&#039;Lifecycle Architecture Milestone&#039;&#039;&#039;.&lt;br /&gt;
The elaboration phase has six evaluation criteria:&lt;br /&gt;
&lt;br /&gt;
* Is the vision stable enough?&lt;br /&gt;
* Is the system architecture stable enough?&lt;br /&gt;
* Have all the major risks been successfully identified and resolved?&lt;br /&gt;
* Is the plan for the construction phase accurate enough?&lt;br /&gt;
* Do all the stakeholders share the opinion that the vision can be achieved by executing the current plan?&lt;br /&gt;
* Is the actual vs planned resource expenditure in acceptable levels?&lt;br /&gt;
&lt;br /&gt;
If the project fails to pass the milestone, there is still time to be re-designed or even cancelled. However, when the project moves to the next phase the associated operation risks raise significantly and changes become much more difficult.&lt;br /&gt;
&lt;br /&gt;
==== Construction Phase====&lt;br /&gt;
The third phase is the construction phase. The focus of this phase, is to develop and integrate all the remaining components and application features into the product. In other words this is the phase where the vision is finally translated into a final stable product, which is based on the architecture that was developed during the previous phases. Most emphasize is given to resources, control and process management in order to fully optimize costs, schedules and quality. The existing prototype evolves via a number of iterations into a fully functional product that meets the stakeholders&#039; needs. The construction phase is usually the longest one of the project life cycle. The expected outcome of the construction phase includes:&lt;br /&gt;
&lt;br /&gt;
* First external release of the software.&lt;br /&gt;
* User manuals.&lt;br /&gt;
* A detailed description of the current release.&lt;br /&gt;
&lt;br /&gt;
At the end of the construction phase lies the third major project milestone; the &#039;&#039;&#039;Initial Operation Capability Milestone&#039;&#039;&#039;.&lt;br /&gt;
The construction phase has three evaluation criteria:&lt;br /&gt;
&lt;br /&gt;
* Is the software release stable enough to be given to the user community?&lt;br /&gt;
* Are all the stakeholders ready for the transition to the user community?&lt;br /&gt;
* Is the actual vs planned resource expenditure in acceptable levels?&lt;br /&gt;
&lt;br /&gt;
If the project fails to pass this milestone, transition may have to be postponed by one release.&lt;br /&gt;
&lt;br /&gt;
==== Transition Phase ====&lt;br /&gt;
The fourth and final phase is the transition phase. The focus of this phase is, as the word says, to transition the software product to the user community. It includes ensuring that the product has been developed to an acceptable quality level, by beta testing the software through the end users, and validating it against the stakeholders&#039; expectations. Once the product has been given for beta testing, a number of issues can arise, requiring the development of new releases (fixing bugs) and adding features that may have been postponed. The expected outcome of the transition phase includes:&lt;br /&gt;
&lt;br /&gt;
* Beta-testing to fix any major [https://en.wikipedia.org/wiki/Software_bug software bugs] and add any missing features.&lt;br /&gt;
* Conversion of operational databases&lt;br /&gt;
* Training of end users and maintainers.&lt;br /&gt;
* Marketing and distribution of the product.&lt;br /&gt;
&lt;br /&gt;
At the end of the transition phase lies the fourth and final major project milestone; the &#039;&#039;&#039;Product Release&#039;&#039;&#039;.&lt;br /&gt;
The transition phase has two evaluation criteria:&lt;br /&gt;
&lt;br /&gt;
* Are the end - users satisfied with the product?&lt;br /&gt;
* Is the actual vs planned resource expenditure in acceptable levels?&lt;br /&gt;
&lt;br /&gt;
==== Iterations ====&lt;br /&gt;
As stated before, every phase can consist of a number of iterations, depending on the project size and scope. RUP, in comparison to the traditional [https://en.wikipedia.org/wiki/Waterfall_model waterfall] approach, is heavily based on iterations. This gives a number of advantages and benefits to the project team, with the most important one being mitigating risks much more earlier in the project. Moreover, change is more manageable and there is normally a higher level of reuse. Finally, iterations ensure an overall high quality in the final product and that the project team can learn throughout the developing process.&lt;br /&gt;
&lt;br /&gt;
=== Workflow Dimension - Disciplines ===&lt;br /&gt;
&lt;br /&gt;
[[File:activities.png|350px|right|thumb| Figure 4. Individuals, Roles and Activities]]&lt;br /&gt;
[[File:workflows.png|350px|right|thumb| Figure 5. Example of a workflow]]&lt;br /&gt;
&lt;br /&gt;
A process describes &#039;&#039;&#039;who&#039;&#039;&#039; is doing &#039;&#039;&#039;what&#039;&#039;&#039;, &#039;&#039;&#039;how&#039;&#039;&#039; and &#039;&#039;&#039;when&#039;&#039;&#039;. RUP addresses those terms with four modelling elements; &#039;&#039;&#039;Roles&#039;&#039;&#039;, &#039;&#039;&#039;Activities&#039;&#039;&#039;, &#039;&#039;&#039;Artifacts&#039;&#039;&#039; and &#039;&#039;&#039;Workflows&#039;&#039;&#039; respectively. A &#039;&#039;&#039;role&#039;&#039;&#039;, formally addressed as a worker, describes the behavior and responsibilities of an individual or a group of individuals in order to produce an artifact. Throughout the development of a project, a person can play one or a number of roles. Some examples of roles are the system analyst, designer, tester. &#039;&#039;&#039;Activities&#039;&#039;&#039; are expressed through behaviors. An activity, is a job that a person performs through his role, as seen in Figure 4. The length of an activity may vary from a few hours to a number of days. Examples of activities are: Plan an operation - performed by the role of Project Manager or add a missing feature - performed by the role of a software developer. All activities produce a meaningful result, called an artifact. &#039;&#039;&#039;Artifacts&#039;&#039;&#039;, are the responsibilities of ones role or roles and express a piece of information that is produced, modified or even used by a process. They can act both as input or output of an activity. Examples of artifacts are the source code, the business case, the software architecture. The roles perform activities that can produce a sequence of artifacts, called &#039;&#039;&#039;workflows&#039;&#039;&#039;. Examples of workflows can be seen in Figure 5. &lt;br /&gt;
&lt;br /&gt;
RUP identifies nine core process workflows, called &#039;&#039;&#039;disciplines&#039;&#039;&#039;. Every discipline, addresses a set of activities and artifacts, based upon a set of skills that are common in an ICT project. These disciplines have the ability to arrange the activities and artifacts in such a way, to provide an understanding of the overall project from a waterfall perspective.&lt;br /&gt;
&lt;br /&gt;
There are six core &amp;quot;engineering&amp;quot; disciplines:&lt;br /&gt;
* Business Modelling Discipline&lt;br /&gt;
* Requirements Discipline&lt;br /&gt;
* Analysis and Design Discipline&lt;br /&gt;
* Implementation Discipline&lt;br /&gt;
* Test Discipline&lt;br /&gt;
* Deployment Discipline&lt;br /&gt;
&lt;br /&gt;
And three core &amp;quot;supporting&amp;quot; disciplines:&lt;br /&gt;
* Project Management Discipline&lt;br /&gt;
* Configuration and Change Management Discipline&lt;br /&gt;
* Environment Discipline&lt;br /&gt;
&lt;br /&gt;
==== Business Modelling ====&lt;br /&gt;
&lt;br /&gt;
Miscommunication between the software engineering community and the business engineering community is one of the most common problems among most business engineering efforts. This means that the output from software development efforts is not correctly used as input to the business engineering and vice versa. The purpose of the Business Modelling discipline is to provide a common language between the two communities and create a direct coupling between software and business models. All business processes are documented using &amp;quot;use cases&amp;quot;. This assures that all stakeholders share the same understanding of the demanding organization.&lt;br /&gt;
&lt;br /&gt;
==== Requirements ====&lt;br /&gt;
The purpose of the requirements discipline is to describe in detail &#039;&#039;&#039;what&#039;&#039;&#039; the system should do. Based on that, a Vision document is created where required functionality and constraints are documented. Moreover, actors (end - users) and use cases (behaviors of the system) are identified. Use cases are described in detail and each description clearly shows how the system interacts with the actors. This way an agreement is established between the customers and the rest of the stakeholders regarding the system&#039;s capabilities, user-interface and the end user&#039;s needs.&lt;br /&gt;
&lt;br /&gt;
==== Analysis and Design ====&lt;br /&gt;
&lt;br /&gt;
The purpose of the Analysis and Design discipline it to investigate &#039;&#039;&#039;how&#039;&#039;&#039; the system requirements will be translated into a detailed implementation plan. The system needs to:&lt;br /&gt;
* Perform exactly as described in the use-case descriptions.&lt;br /&gt;
* Fulfill all requirements.&lt;br /&gt;
* Have a robust structure.&lt;br /&gt;
&lt;br /&gt;
Analysis and Design result in the creation of a &#039;&#039;&#039;design model&#039;&#039;&#039;. The design model is an abstraction of the system&#039;s architecture and acts as a guide of how the source code should be finally written and structured.&lt;br /&gt;
&lt;br /&gt;
==== Implementation ====&lt;br /&gt;
The purpose of the Implementation discipline is to:&lt;br /&gt;
&lt;br /&gt;
* Arrange the code into subsystems, organized in layers.&lt;br /&gt;
* Implement classes and objects in terms of components.&lt;br /&gt;
* Uni-test the developed components to ensure quality.&lt;br /&gt;
* Integrate the results into an executable system.&lt;br /&gt;
&lt;br /&gt;
The whole system can be realized as an implementation of various components. RUP enables the integration of those components, in a revolutionary way, making the system easier to maintain and increasing the possibilities for future re-use.&lt;br /&gt;
&lt;br /&gt;
==== Test ====&lt;br /&gt;
&lt;br /&gt;
In the implementation discipline, all the developed components were uni-tested individually and were integrated into the system. The purpose of the Test discipline is to assess the system as a whole and verify the product quality. It is a mechanism to verify the smooth interaction between the various components, their proper integration into the system and finally ensure that all requirements have been successfully implemented. All tests are carried out along 4 quality dimensions:&lt;br /&gt;
* Functionality.&lt;br /&gt;
* Reliability.&lt;br /&gt;
* Application Performance.&lt;br /&gt;
* System Performance.&lt;br /&gt;
&lt;br /&gt;
==== Deployment ====&lt;br /&gt;
&lt;br /&gt;
The purpose of the Deployment discipline is primarily to develop product releases and distribute the software to the end – users. More specifically the Deployment discipline focuses at:&lt;br /&gt;
&lt;br /&gt;
* Developing external software releases&lt;br /&gt;
* Distributing the software&lt;br /&gt;
* Installing the software&lt;br /&gt;
* Providing help to the end – users&lt;br /&gt;
* Creating an up-to-date user manual&lt;br /&gt;
* Conducting beta testing&lt;br /&gt;
&lt;br /&gt;
==== Project Management ====&lt;br /&gt;
&lt;br /&gt;
The purpose of the Project Management discipline, is to successfully balance competing objectives, manage and mitigate risks and finally handle any constraints on delivering the product. Project management, ideally provides:&lt;br /&gt;
&lt;br /&gt;
* A framework for managing software-intensive projects.&lt;br /&gt;
* A framework to successfully manage risks.&lt;br /&gt;
* A framework to plan, execute and monitor projects.&lt;br /&gt;
&lt;br /&gt;
While the discipline does not guarantee success, the odds of delivering successful software are greatly improved.&lt;br /&gt;
&lt;br /&gt;
==== Configuration and Change Management ====&lt;br /&gt;
&lt;br /&gt;
The purpose of the Configuration and Change Management Discipline is to control, maintain and configure all the various artifacts that are produced by the different actors that are working on a project. During the software development life cycle, artifacts are regularly updated (changed). In order to understand the current state of an artifact, it is very important to keep track of its location and history; what was the reason and who decided to change the artifact. The discipline helps create a framework that keeps track of all the project assets.&lt;br /&gt;
&lt;br /&gt;
==== Environment ====&lt;br /&gt;
&lt;br /&gt;
The purpose of the environment discipline, is to provide the development team with all the processes, tools and methods for supporting all developing activities. It is responsible for producing a Development Kit, able to provide guidelines and templates for customizing processes.&lt;br /&gt;
&lt;br /&gt;
== Why RUP - Best Practices ==&lt;br /&gt;
&lt;br /&gt;
RUP captures many of the “best practices” that are currently used in modern software development and more particularly in industry by successful organizations. The practices are:&lt;br /&gt;
&lt;br /&gt;
* Develop Software Iteratively&lt;br /&gt;
* Manage Requirements&lt;br /&gt;
* Use component-based architectures&lt;br /&gt;
* Visually model software&lt;br /&gt;
* Continuously verify software quality&lt;br /&gt;
* Control changes to software&lt;br /&gt;
&lt;br /&gt;
=== Develop Software iteratively ===&lt;br /&gt;
&lt;br /&gt;
Today’s high sophisticated software systems, consist of many and complex structures which make it nearly impossible to define the entire system from the very beginning, develop the entire solution and then test the product in the end. RUP uses an iterative approach that allows an increasing understanding of the problem and developing a step – by – step solution, over multiple iterations. Each iteration ends with an executable release, which enables continuous end - user involvement and feedback. As a result, the risks of the project are mitigated at an early stage and stakeholders are ensured that the project requirements are fulfilled.&lt;br /&gt;
&lt;br /&gt;
=== Manage requirements ===&lt;br /&gt;
&lt;br /&gt;
The requirements of a system include the description of the services that the system is able to provide and its operational constraints. RUP documents, organizes and tracks required functionality and constraints and easily communicates business requirements. The use – cases that are used in the process are an excellent way to ensure that requirements are actually those elements that drive the design, implementation and testing of software, making it more likely that the final system fulfills the stakeholders needs.&lt;br /&gt;
&lt;br /&gt;
=== Use component-based architectures ===&lt;br /&gt;
&lt;br /&gt;
Component-based architecture makes the system dynamic; components are independent from the system and interact with other components through well-defined interfaces. Their in-dependency from the system, gives them a great flexibility meaning that they can easily be added, updated or totally replaced. RUP supports component-based software development by providing a systematic approach to defining an architecture using new and existing components.&lt;br /&gt;
&lt;br /&gt;
=== Visually model software ===&lt;br /&gt;
&lt;br /&gt;
A model is an abstraction of reality that can help better comprehend large and complex systems. Visual abstractions help the development team to easily communicate different aspects of the software and see how all the components fit together. RUP uses the [http://www.uml.org/ Unified Modelling Language (UML)] standard which is a graphical language for visualizing and constructing the artifacts of a software-intensive system.&lt;br /&gt;
&lt;br /&gt;
=== Continuously verify software quality ===&lt;br /&gt;
&lt;br /&gt;
In software development, quality should always be reviewed with respect to the requirements based on reliability, functionality , application and system performance. In RUP, quality verification and assessment is built into the process, inside all activities, including all stakeholders and is not treated as a separate activity, performed by a separate group.&lt;br /&gt;
&lt;br /&gt;
=== Control changes to software ===&lt;br /&gt;
&lt;br /&gt;
A software system is developed by a number of teams or individuals, using different platforms and at times being in different locations. As a result, it is essential to somehow make sure that all the changes made in the system are synchronized and constantly verified. RUP ensures that all the individuals working in the project are well informed about any changes and everything is in sync. The process describes how to control, track and monitor changes to enable successful iterative development.&lt;br /&gt;
&lt;br /&gt;
== Limitations ==&lt;br /&gt;
&lt;br /&gt;
While being a complete methodology in itself with an emphasis on accurate documentation and quickly resolving project associated risks, RUP comes with a number of limitations.&lt;br /&gt;
&lt;br /&gt;
* In order for team members to start developing software under this methodology, they need to be &#039;&#039;&#039;experts&#039;&#039;&#039; in their respective fields.&lt;br /&gt;
* The development process can easily become too complex to handle.&lt;br /&gt;
* When working with cutting - edge projects that highly utilize new technology, components will not be able to be reused. &lt;br /&gt;
* While in theory integration throughout the process of software development sounds like a good thing, when working with particularly complex projects with multiple development streams, issues and significant confusion may rise during the stages of testing.&lt;br /&gt;
&lt;br /&gt;
== Conclusion ==&lt;br /&gt;
&lt;br /&gt;
The Rational Unified Process, is an exemplary method for addressing and mitigating risks from the very early stages, by rapidly developing an initial version of the system (prototype) that describes its architecture. There are not fixed requirements from the beginning but rather allows refining requirements , while the project progresses. It expects and actually deals with change pretty well while its main focus is the quality of the product and the degree to which it satisfies its end - users, throughout the project life-cycle. However, while being a complete and well documented methodology, it should be stressed that remains a very complex one. In order to increase the likelihood of success, while adopting this methodology, all the project members need to be &#039;&#039;&#039;experts&#039;&#039;&#039; in their respective fields. The method can easily become too difficult to learn and most importantly too difficult to apply.&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Lessisv</name></author>
	</entry>
	<entry>
		<id>http://13.50.150.85/index.php?title=Rational_Unified_Process_(RUP)&amp;diff=14729</id>
		<title>Rational Unified Process (RUP)</title>
		<link rel="alternate" type="text/html" href="http://13.50.150.85/index.php?title=Rational_Unified_Process_(RUP)&amp;diff=14729"/>
		<updated>2015-09-26T12:11:56Z</updated>

		<summary type="html">&lt;p&gt;Lessisv: /* Process Overview */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The &#039;&#039;&#039;Rational Unified Process (RUP)&#039;&#039;&#039; is an iterative, &#039;&#039;&#039;software development methodology&#039;&#039;&#039;, firstly introduced by the [https://en.wikipedia.org/wiki/Rational_Software Rational Software Corporation] which was [http://www-03.ibm.com/press/us/en/pressrelease/314.wss acquired by IBM] in 2003. RUP is a disciplined approach to assign tasks within a development organization and software project teams. It was developed to ensure the production of &#039;&#039;&#039;high quality software&#039;&#039;&#039; by providing the development team with a set of &#039;&#039;&#039;guidelines, templates and tool mentors&#039;&#039;&#039;, for all the critical life-cycle activities within a project. This cluster of objects, form a knowledge base that is shared between all project team members. As a result, no matter what each member is working with (e.g testing, designing, managing), they all share a common language and view on how to develop software. Consequently, team productivity is boosted, in order to deliver software that can meet and exceed the needs and expectations of end-users, strictly following a predictable budget and schedule &amp;lt;ref name=&amp;quot;Ivar Jacobson, Grady Booch, and Jim Rumbaugh&amp;quot;&amp;gt;Ivar Jacobson, Grady Booch, and Jim Rumbaugh, Unified Software Development Process, Addison-Wesley, 1999.&amp;lt;/ref&amp;gt;. RUP is the most popular and extensively documented refinement of the [https://en.wikipedia.org/wiki/Unified_Process Unified Process], an iterative and incremental software development process framework. Other worth mentioning forms are the [https://en.wikipedia.org/wiki/OpenUP OpenUP] and [https://en.wikipedia.org/wiki/Agile_Unified_Process Agile Unified Process].&lt;br /&gt;
&lt;br /&gt;
== Process Overview ==&lt;br /&gt;
&lt;br /&gt;
[[File:RUP.png|450px|right|thumb| Figure 1. The iterative model graph shows how the process is structured along two dimensions]]&lt;br /&gt;
&lt;br /&gt;
The best possible way to describe the methodology is through a 2 - dimensional graph.&lt;br /&gt;
* The first dimension (horizontal axis) represents the &#039;&#039;&#039;dynamic aspect&#039;&#039;&#039; of the process. It expresses &#039;&#039;&#039;time&#039;&#039;&#039; in terms of &#039;&#039;&#039;phases&#039;&#039;&#039; and &#039;&#039;&#039;iterations&#039;&#039;&#039;. &lt;br /&gt;
* The second dimension (vertical axis) represents the &#039;&#039;&#039;static aspect&#039;&#039;&#039; of the process. It expresses &#039;&#039;&#039;workflows&#039;&#039;&#039; in terms of 6 core and 3 supporting &#039;&#039;&#039;disciplines&#039;&#039;&#039; (more on that on &amp;quot;Disciplines&amp;quot; section).&lt;br /&gt;
&lt;br /&gt;
=== Time Dimension - Phases and Iterations ===&lt;br /&gt;
When developing software, the project team goes through a multi-step process, from establishing a system&#039;s requirements to designing, implementing and finally maintaining the software with new releases. This is the software life cycle. RUP delicately breaks the software life cycle down to four consecutive phases &amp;lt;ref name=&amp;quot;Philippe Kruchten&amp;quot;&amp;gt;A Rational Development Process, CrossTalk, 9 (7), STSC, Hill AFB, UT, pp.11-16.&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
* Inception phase&lt;br /&gt;
* Elaboration phase&lt;br /&gt;
* Construction phase&lt;br /&gt;
* Transition phase&lt;br /&gt;
&lt;br /&gt;
Depending on the project, each of these phases can consist of one to a number of &#039;&#039;&#039;iterations&#039;&#039;&#039;. An iteration is defined as a complete development loop, resulting in a new product release. All the phases include a well-defined milestone, in order to be completed. In the end of every phase, the development team can evaluate whether all the key goals have been achieved, all stakeholders have been considered and the actual expenditures correspond with the planned ones  &amp;lt;ref name=&amp;quot;Barry W. Boehm&amp;quot;&amp;gt;Barry W. Boehm, Anchoring the Software Process, IEEE Software, 13, 4, July 1996, pp. 73-82. &amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[File:RUP_phases.png|550px|right|thumb| Figure 2. The four phases and milestones of a project]]&lt;br /&gt;
==== Inception Phase ====&lt;br /&gt;
The first phase is the inception phase. The focus of this phase, is understanding the scope of the project and studying if is both worth doing and possible to do. All the internal and external entities that the system will interact with are identified and the nature of the interaction is well defined at a high level. For this reason, the inception phase is primarily significant for new development projects. &lt;br /&gt;
The expected outcome of the inception phase includes :&lt;br /&gt;
&lt;br /&gt;
* A vision document: The document states the general vision of the project including its key requirements, features and main constraints.&lt;br /&gt;
* An initial use-case model (10%-20% complete)&lt;br /&gt;
* An initial project glossary&lt;br /&gt;
* An initial business case, including the business context, success criteria and a financial forecast.&lt;br /&gt;
* An initial risk assessment&lt;br /&gt;
* A project plan (phases and iterations)&lt;br /&gt;
* A business model (if necessary)&lt;br /&gt;
* Prototypes&lt;br /&gt;
&lt;br /&gt;
At the end of the inception phase lies the first major project milestone; the &#039;&#039;&#039;Lifecycle Objective Milestone&#039;&#039;&#039;.&lt;br /&gt;
The inception phase has five evaluation criteria:&lt;br /&gt;
&lt;br /&gt;
* Stakeholder concurrence on scope definition and cost/schedule estimates.&lt;br /&gt;
* Depth and breadth of any prototype that was developed.&lt;br /&gt;
* Actual expenditures versus planned ones.&lt;br /&gt;
* Requirements understanding.&lt;br /&gt;
* Credibility of the cost/schedule estimates, risks and priorities.&lt;br /&gt;
&lt;br /&gt;
If for any reason the project fails to pass this milestone, it can either be completely cancelled or re-designed to successfully meet the criteria.&lt;br /&gt;
 &lt;br /&gt;
==== Elaboration Phase ====&lt;br /&gt;
The second phase is the elaboration phase. The focus of this phase, is establishing a baseline to the architecture of the system, further developing the project plan and analyzing the problem domain while trying to mitigate the highest risk elements. In other words, this is the phase where the project starts to take shape. One of the most important characteristics of this phase, is the production of a component-based architectural prototype. The purpose of this prototype, is to address the critical use-cases that were identified in the previous phase, and hopefully expose the highest technical risks of the project. The expected outcome of the elaboration phase includes:&lt;br /&gt;
&lt;br /&gt;
* A use-case model (at least 80% complete) which will be able to identify all the actors and use-cases.&lt;br /&gt;
* Supplementary requirements (if any).&lt;br /&gt;
* A clear description of the software architecture.&lt;br /&gt;
* An architectural prototype.&lt;br /&gt;
* A more detailed risk assessment and business case.&lt;br /&gt;
* A development plan for the overall project.&lt;br /&gt;
* A preliminary user manual (optional).&lt;br /&gt;
&lt;br /&gt;
At the end of the elaboration phase lies the second major project milestone; the &#039;&#039;&#039;Lifecycle Architecture Milestone&#039;&#039;&#039;.&lt;br /&gt;
The elaboration phase has six evaluation criteria:&lt;br /&gt;
&lt;br /&gt;
* Is the vision stable enough?&lt;br /&gt;
* Is the system architecture stable enough?&lt;br /&gt;
* Have all the major risks been successfully identified and resolved?&lt;br /&gt;
* Is the plan for the construction phase accurate enough?&lt;br /&gt;
* Do all the stakeholders share the opinion that the vision can be achieved by executing the current plan?&lt;br /&gt;
* Is the actual vs planned resource expenditure in acceptable levels?&lt;br /&gt;
&lt;br /&gt;
If the project fails to pass the milestone, there is still time to be re-designed or even cancelled. However, when the project moves to the next phase the associated operation risks raise significantly and changes become much more difficult.&lt;br /&gt;
&lt;br /&gt;
==== Construction Phase====&lt;br /&gt;
The third phase is the construction phase. The focus of this phase, is to develop and integrate all the remaining components and application features into the product. In other words this is the phase where the vision is finally translated into a final stable product, which is based on the architecture that was developed during the previous phases. Most emphasize is given to resources, control and process management in order to fully optimize costs, schedules and quality. The existing prototype evolves via a number of iterations into a fully functional product that meets the stakeholders&#039; needs. The construction phase is usually the longest one of the project life cycle. The expected outcome of the construction phase includes:&lt;br /&gt;
&lt;br /&gt;
* First external release of the software.&lt;br /&gt;
* User manuals.&lt;br /&gt;
* A detailed description of the current release.&lt;br /&gt;
&lt;br /&gt;
At the end of the construction phase lies the third major project milestone; the &#039;&#039;&#039;Initial Operation Capability Milestone&#039;&#039;&#039;.&lt;br /&gt;
The construction phase has three evaluation criteria:&lt;br /&gt;
&lt;br /&gt;
* Is the software release stable enough to be given to the user community?&lt;br /&gt;
* Are all the stakeholders ready for the transition to the user community?&lt;br /&gt;
* Is the actual vs planned resource expenditure in acceptable levels?&lt;br /&gt;
&lt;br /&gt;
If the project fails to pass this milestone, transition may have to be postponed by one release.&lt;br /&gt;
&lt;br /&gt;
==== Transition Phase ====&lt;br /&gt;
The fourth and final phase is the transition phase. The focus of this phase is, as the word says, to transition the software product to the user community. It includes ensuring that the product has been developed to an acceptable quality level, by beta testing the software through the end users, and validating it against the stakeholders&#039; expectations. Once the product has been given for beta testing, a number of issues can arise, requiring the development of new releases (fixing bugs) and adding features that may have been postponed. The expected outcome of the transition phase includes:&lt;br /&gt;
&lt;br /&gt;
* Beta-testing to fix any major [https://en.wikipedia.org/wiki/Software_bug software bugs] and add any missing features.&lt;br /&gt;
* Conversion of operational databases&lt;br /&gt;
* Training of end users and maintainers.&lt;br /&gt;
* Marketing and distribution of the product.&lt;br /&gt;
&lt;br /&gt;
At the end of the transition phase lies the fourth and final major project milestone; the &#039;&#039;&#039;Product Release&#039;&#039;&#039;.&lt;br /&gt;
The transition phase has two evaluation criteria:&lt;br /&gt;
&lt;br /&gt;
* Are the end - users satisfied with the product?&lt;br /&gt;
* Is the actual vs planned resource expenditure in acceptable levels?&lt;br /&gt;
&lt;br /&gt;
==== Iterations ====&lt;br /&gt;
As stated before, every phase can consist of a number of iterations, depending on the project size and scope. RUP, in comparison to the traditional [https://en.wikipedia.org/wiki/Waterfall_model waterfall] approach, is heavily based on iterations. This gives a number of advantages and benefits to the project team, with the most important one being mitigating risks much more earlier in the project. Moreover, change is more manageable and there is normally a higher level of reuse. Finally, iterations ensure an overall high quality in the final product and that the project team can learn throughout the developing process.&lt;br /&gt;
&lt;br /&gt;
=== Workflow Dimension - Disciplines ===&lt;br /&gt;
&lt;br /&gt;
[[File:activities.png|350px|right|thumb| Figure 4. Individuals, Roles and Activities]]&lt;br /&gt;
[[File:workflows.png|350px|right|thumb| Figure 5. Example of a workflow]]&lt;br /&gt;
&lt;br /&gt;
A process describes &#039;&#039;&#039;who&#039;&#039;&#039; is doing &#039;&#039;&#039;what&#039;&#039;&#039;, &#039;&#039;&#039;how&#039;&#039;&#039; and &#039;&#039;&#039;when&#039;&#039;&#039;. RUP addresses those terms with four modelling elements; &#039;&#039;&#039;Roles&#039;&#039;&#039;, &#039;&#039;&#039;Activities&#039;&#039;&#039;, &#039;&#039;&#039;Artifacts&#039;&#039;&#039; and &#039;&#039;&#039;Workflows&#039;&#039;&#039; respectively. A &#039;&#039;&#039;role&#039;&#039;&#039;, formally addressed as a worker, describes the behavior and responsibilities of an individual or a group of individuals in order to produce an artifact. Throughout the development of a project, a person can play one or a number of roles. Some examples of roles are the system analyst, designer, tester. &#039;&#039;&#039;Activities&#039;&#039;&#039; are expressed through behaviors. An activity, is a job that a person performs through his role, as seen in Figure 4. The length of an activity may vary from a few hours to a number of days. Examples of activities are: Plan an operation - performed by the role of Project Manager or add a missing feature - performed by the role of a software developer. All activities produce a meaningful result, called an artifact. &#039;&#039;&#039;Artifacts&#039;&#039;&#039;, are the responsibilities of ones role or roles and express a piece of information that is produced, modified or even used by a process. They can act both as input or output of an activity. Examples of artifacts are the source code, the business case, the software architecture. The roles perform activities that can produce a sequence of artifacts, called &#039;&#039;&#039;workflows&#039;&#039;&#039;. Examples of workflows can be seen in Figure 5. &lt;br /&gt;
&lt;br /&gt;
RUP identifies nine core process workflows, called &#039;&#039;&#039;disciplines&#039;&#039;&#039;. Every discipline, addresses a set of activities and artifacts, based upon a set of skills that are common in an ICT project. These disciplines have the ability to arrange the activities and artifacts in such a way, to provide an understanding of the overall project from a waterfall perspective.&lt;br /&gt;
&lt;br /&gt;
There are six core &amp;quot;engineering&amp;quot; disciplines:&lt;br /&gt;
* Business Modelling Discipline&lt;br /&gt;
* Requirements Discipline&lt;br /&gt;
* Analysis and Design Discipline&lt;br /&gt;
* Implementation Discipline&lt;br /&gt;
* Test Discipline&lt;br /&gt;
* Deployment Discipline&lt;br /&gt;
&lt;br /&gt;
And three core &amp;quot;supporting&amp;quot; disciplines:&lt;br /&gt;
* Project Management Discipline&lt;br /&gt;
* Configuration and Change Management Discipline&lt;br /&gt;
* Environment Discipline&lt;br /&gt;
&lt;br /&gt;
==== Business Modelling ====&lt;br /&gt;
&lt;br /&gt;
Miscommunication between the software engineering community and the business engineering community is one of the most common problems among most business engineering efforts. This means that the output from software development efforts is not correctly used as input to the business engineering and vice versa. The purpose of the Business Modelling discipline is to provide a common language between the two communities and create a direct coupling between software and business models. All business processes are documented using &amp;quot;use cases&amp;quot;. This assures that all stakeholders share the same understanding of the demanding organization.&lt;br /&gt;
&lt;br /&gt;
==== Requirements ====&lt;br /&gt;
The purpose of the requirements discipline is to describe in detail &#039;&#039;&#039;what&#039;&#039;&#039; the system should do. Based on that, a Vision document is created where required functionality and constraints are documented. Moreover, actors (end - users) and use cases (behaviors of the system) are identified. Use cases are described in detail and each description clearly shows how the system interacts with the actors. This way an agreement is established between the customers and the rest of the stakeholders regarding the system&#039;s capabilities, user-interface and the end user&#039;s needs.&lt;br /&gt;
&lt;br /&gt;
==== Analysis and Design ====&lt;br /&gt;
&lt;br /&gt;
The purpose of the Analysis and Design discipline it to investigate &#039;&#039;&#039;how&#039;&#039;&#039; the system requirements will be translated into a detailed implementation plan. The system needs to:&lt;br /&gt;
* Perform exactly as described in the use-case descriptions.&lt;br /&gt;
* Fulfill all requirements.&lt;br /&gt;
* Have a robust structure.&lt;br /&gt;
&lt;br /&gt;
Analysis and Design result in the creation of a &#039;&#039;&#039;design model&#039;&#039;&#039;. The design model is an abstraction of the system&#039;s architecture and acts as a guide of how the source code should be finally written and structured.&lt;br /&gt;
&lt;br /&gt;
==== Implementation ====&lt;br /&gt;
The purpose of the Implementation discipline is to:&lt;br /&gt;
&lt;br /&gt;
* Arrange the code into subsystems, organized in layers.&lt;br /&gt;
* Implement classes and objects in terms of components.&lt;br /&gt;
* Uni-test the developed components to ensure quality.&lt;br /&gt;
* Integrate the results into an executable system.&lt;br /&gt;
&lt;br /&gt;
The whole system can be realized as an implementation of various components. RUP enables the integration of those components, in a revolutionary way, making the system easier to maintain and increasing the possibilities for future re-use.&lt;br /&gt;
&lt;br /&gt;
==== Test ====&lt;br /&gt;
&lt;br /&gt;
In the implementation discipline, all the developed components were uni-tested individually and were integrated into the system. The purpose of the Test discipline is to assess the system as a whole and verify the product quality. It is a mechanism to verify the smooth interaction between the various components, their proper integration into the system and finally ensure that all requirements have been successfully implemented. All tests are carried out along 4 quality dimensions:&lt;br /&gt;
* Functionality.&lt;br /&gt;
* Reliability.&lt;br /&gt;
* Application Performance.&lt;br /&gt;
* System Performance.&lt;br /&gt;
&lt;br /&gt;
==== Deployment ====&lt;br /&gt;
&lt;br /&gt;
The purpose of the Deployment discipline is primarily to develop product releases and distribute the software to the end – users. More specifically the Deployment discipline focuses at:&lt;br /&gt;
&lt;br /&gt;
* Developing external software releases&lt;br /&gt;
* Distributing the software&lt;br /&gt;
* Installing the software&lt;br /&gt;
* Providing help to the end – users&lt;br /&gt;
* Creating an up-to-date user manual&lt;br /&gt;
* Conducting beta testing&lt;br /&gt;
&lt;br /&gt;
==== Project Management ====&lt;br /&gt;
&lt;br /&gt;
The purpose of the Project Management discipline, is to successfully balance competing objectives, manage and mitigate risks and finally handle any constraints on delivering the product. Project management, ideally provides:&lt;br /&gt;
&lt;br /&gt;
* A framework for managing software-intensive projects.&lt;br /&gt;
* A framework to successfully manage risks.&lt;br /&gt;
* A framework to plan, execute and monitor projects.&lt;br /&gt;
&lt;br /&gt;
While the discipline does not guarantee success, the odds of delivering successful software are greatly improved.&lt;br /&gt;
&lt;br /&gt;
==== Configuration and Change Management ====&lt;br /&gt;
&lt;br /&gt;
The purpose of the Configuration and Change Management Discipline is to control, maintain and configure all the various artifacts that are produced by the different actors that are working on a project. During the software development life cycle, artifacts are regularly updated (changed). In order to understand the current state of an artifact, it is very important to keep track of its location and history; what was the reason and who decided to change the artifact. The discipline helps create a framework that keeps track of all the project assets.&lt;br /&gt;
&lt;br /&gt;
==== Environment ====&lt;br /&gt;
&lt;br /&gt;
The purpose of the environment discipline, is to provide the development team with all the processes, tools and methods for supporting all developing activities. It is responsible for producing a Development Kit, able to provide guidelines and templates for customizing processes.&lt;br /&gt;
&lt;br /&gt;
== Why RUP - Best Practices ==&lt;br /&gt;
&lt;br /&gt;
RUP captures many of the “best practices” that are currently used in modern software development and more particularly in industry by successful organizations. The practices are:&lt;br /&gt;
&lt;br /&gt;
* Develop Software Iteratively&lt;br /&gt;
* Manage Requirements&lt;br /&gt;
* Use component-based architectures&lt;br /&gt;
* Visually model software&lt;br /&gt;
* Continuously verify software quality&lt;br /&gt;
* Control changes to software&lt;br /&gt;
&lt;br /&gt;
=== Develop Software iteratively ===&lt;br /&gt;
&lt;br /&gt;
Today’s high sophisticated software systems, consist of many and complex structures which make it nearly impossible to define the entire system from the very beginning, develop the entire solution and then test the product in the end. RUP uses an iterative approach that allows an increasing understanding of the problem and developing a step – by – step solution, over multiple iterations. Each iteration ends with an executable release, which enables continuous end - user involvement and feedback. As a result, the risks of the project are mitigated at an early stage and stakeholders are ensured that the project requirements are fulfilled.&lt;br /&gt;
&lt;br /&gt;
=== Manage requirements ===&lt;br /&gt;
&lt;br /&gt;
The requirements of a system include the description of the services that the system is able to provide and its operational constraints. RUP documents, organizes and tracks required functionality and constraints and easily communicates business requirements. The use – cases that are used in the process are an excellent way to ensure that requirements are actually those elements that drive the design, implementation and testing of software, making it more likely that the final system fulfills the stakeholders needs.&lt;br /&gt;
&lt;br /&gt;
=== Use component-based architectures ===&lt;br /&gt;
&lt;br /&gt;
Component-based architecture makes the system dynamic; components are independent from the system and interact with other components through well-defined interfaces. Their in-dependency from the system, gives them a great flexibility meaning that they can easily be added, updated or totally replaced. RUP supports component-based software development by providing a systematic approach to defining an architecture using new and existing components.&lt;br /&gt;
&lt;br /&gt;
=== Visually model software ===&lt;br /&gt;
&lt;br /&gt;
A model is an abstraction of reality that can help better comprehend large and complex systems. Visual abstractions help the development team to easily communicate different aspects of the software and see how all the components fit together. RUP uses the [http://www.uml.org/ Unified Modelling Language (UML)] standard which is a graphical language for visualizing and constructing the artifacts of a software-intensive system.&lt;br /&gt;
&lt;br /&gt;
=== Continuously verify software quality ===&lt;br /&gt;
&lt;br /&gt;
In software development, quality should always be reviewed with respect to the requirements based on reliability, functionality , application and system performance. In RUP, quality verification and assessment is built into the process, inside all activities, including all stakeholders and is not treated as a separate activity, performed by a separate group.&lt;br /&gt;
&lt;br /&gt;
=== Control changes to software ===&lt;br /&gt;
&lt;br /&gt;
A software system is developed by a number of teams or individuals, using different platforms and at times being in different locations. As a result, it is essential to somehow make sure that all the changes made in the system are synchronized and constantly verified. RUP ensures that all the individuals working in the project are well informed about any changes and everything is in sync. The process describes how to control, track and monitor changes to enable successful iterative development.&lt;br /&gt;
&lt;br /&gt;
== Limitations ==&lt;br /&gt;
&lt;br /&gt;
While being a complete methodology in itself with an emphasis on accurate documentation and quickly resolving project associated risks, RUP comes with a number of limitations.&lt;br /&gt;
&lt;br /&gt;
* In order for team members to start developing software under this methodology, they need to be &#039;&#039;&#039;experts&#039;&#039;&#039; in their respective fields.&lt;br /&gt;
* The development process can easily become too complex to handle.&lt;br /&gt;
* When working with cutting - edge projects that highly utilize new technology, components will not be able to be reused. &lt;br /&gt;
* While in theory integration throughout the process of software development sounds like a good thing, when working with particularly complex projects with multiple development streams, issues and significant confusion may rise during the stages of testing.&lt;br /&gt;
&lt;br /&gt;
== Conclusion ==&lt;br /&gt;
&lt;br /&gt;
The Rational Unified Process, is an exemplary method for addressing and mitigating risks from the very early stages, by rapidly developing an initial version of the system (prototype) that describes its architecture. There are not fixed requirements from the beginning but rather allows refining requirements , while the project progresses. It expects and actually deals with change pretty well while its main focus is the quality of the product and the degree to which it satisfies its end - users, throughout the project life-cycle. However, while being a complete and well documented methodology, it should be stressed that remains a very complex one. In order to increase the likelihood of success, while adopting this methodology, all the project members need to be &#039;&#039;&#039;experts&#039;&#039;&#039; in their respective fields. The method can easily become too difficult to learn and most importantly too difficult to apply.&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Lessisv</name></author>
	</entry>
	<entry>
		<id>http://13.50.150.85/index.php?title=Rational_Unified_Process_(RUP)&amp;diff=14726</id>
		<title>Rational Unified Process (RUP)</title>
		<link rel="alternate" type="text/html" href="http://13.50.150.85/index.php?title=Rational_Unified_Process_(RUP)&amp;diff=14726"/>
		<updated>2015-09-26T12:08:46Z</updated>

		<summary type="html">&lt;p&gt;Lessisv: /* Process Overview */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The &#039;&#039;&#039;Rational Unified Process (RUP)&#039;&#039;&#039; is an iterative, &#039;&#039;&#039;software development methodology&#039;&#039;&#039;, firstly introduced by the [https://en.wikipedia.org/wiki/Rational_Software Rational Software Corporation] which was [http://www-03.ibm.com/press/us/en/pressrelease/314.wss acquired by IBM] in 2003. RUP is a disciplined approach to assign tasks within a development organization and software project teams. It was developed to ensure the production of &#039;&#039;&#039;high quality software&#039;&#039;&#039; by providing the development team with a set of &#039;&#039;&#039;guidelines, templates and tool mentors&#039;&#039;&#039;, for all the critical life-cycle activities within a project. This cluster of objects, form a knowledge base that is shared between all project team members. As a result, no matter what each member is working with (e.g testing, designing, managing), they all share a common language and view on how to develop software. Consequently, team productivity is boosted, in order to deliver software that can meet and exceed the needs and expectations of end-users, strictly following a predictable budget and schedule &amp;lt;ref name=&amp;quot;Ivar Jacobson, Grady Booch, and Jim Rumbaugh&amp;quot;&amp;gt;Ivar Jacobson, Grady Booch, and Jim Rumbaugh, Unified Software Development Process, Addison-Wesley, 1999.&amp;lt;/ref&amp;gt;. RUP is the most popular and extensively documented refinement of the [https://en.wikipedia.org/wiki/Unified_Process Unified Process], an iterative and incremental software development process framework. Other worth mentioning forms are the [https://en.wikipedia.org/wiki/OpenUP OpenUP] and [https://en.wikipedia.org/wiki/Agile_Unified_Process Agile Unified Process].&lt;br /&gt;
&lt;br /&gt;
== Process Overview ==&lt;br /&gt;
&lt;br /&gt;
[[File:RUP.png|450px|right|thumb| Figure 1. The iterative model graph shows how the process is structured along two dimensions]]&lt;br /&gt;
&lt;br /&gt;
The best possible way to describe the methodology is through a 2 - dimensional graph.&lt;br /&gt;
* The first dimension (horizontal axis) represents the &#039;&#039;&#039;dynamic aspect&#039;&#039;&#039; of the process. It expresses &#039;&#039;&#039;time&#039;&#039;&#039; in terms of &#039;&#039;&#039;phases&#039;&#039;&#039; and &#039;&#039;&#039;iterations&#039;&#039;&#039;. &lt;br /&gt;
* The second dimension (vertical axis) represents the &#039;&#039;&#039;static aspect&#039;&#039;&#039; of the process. It expresses &#039;&#039;&#039;workflows&#039;&#039;&#039; in terms of 6 core and 3 supporting &#039;&#039;&#039;disciplines&#039;&#039;&#039; (more on that on &amp;quot;Disciplines&amp;quot; section).&lt;br /&gt;
&lt;br /&gt;
=== Time Dimension - Phases and Iterations ===&lt;br /&gt;
When developing software, the project team goes through a multi-step process, from establishing a system&#039;s requirements to designing, implementing and finally maintaining the software with new releases. This is the software life cycle. RUP delicately breaks the software life cycle down to four consecutive phases &amp;lt;ref name=&amp;quot;Philippe Kruchten&amp;quot;&amp;gt;A Rational Development Process, CrossTalk, 9 (7), STSC, Hill AFB, UT, pp.11-16.&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
* Inception phase&lt;br /&gt;
* Elaboration phase&lt;br /&gt;
* Construction phase&lt;br /&gt;
* Transition phase&lt;br /&gt;
&lt;br /&gt;
Depending on the project, each of these phases can consist of one to a number of &#039;&#039;&#039;iterations&#039;&#039;&#039;. An iteration is defined as a complete development loop, resulting in a new product release. All the phases include a well-defined milestone, in order to be completed. In the end of every phase, the development team can evaluate whether all the key goals have been achieved, all stakeholders have been considered and the actual expenditures correspond with the planned ones.&lt;br /&gt;
&lt;br /&gt;
[[File:RUP_phases.png|550px|right|thumb| Figure 2. The four phases and milestones of a project]]&lt;br /&gt;
==== Inception Phase ====&lt;br /&gt;
The first phase is the inception phase. The focus of this phase, is understanding the scope of the project and studying if is both worth doing and possible to do. All the internal and external entities that the system will interact with are identified and the nature of the interaction is well defined at a high level. For this reason, the inception phase is primarily significant for new development projects. &lt;br /&gt;
The expected outcome of the inception phase includes :&lt;br /&gt;
&lt;br /&gt;
* A vision document: The document states the general vision of the project including its key requirements, features and main constraints.&lt;br /&gt;
* An initial use-case model (10%-20% complete)&lt;br /&gt;
* An initial project glossary&lt;br /&gt;
* An initial business case, including the business context, success criteria and a financial forecast.&lt;br /&gt;
* An initial risk assessment&lt;br /&gt;
* A project plan (phases and iterations)&lt;br /&gt;
* A business model (if necessary)&lt;br /&gt;
* Prototypes&lt;br /&gt;
&lt;br /&gt;
At the end of the inception phase lies the first major project milestone; the &#039;&#039;&#039;Lifecycle Objective Milestone&#039;&#039;&#039;.&lt;br /&gt;
The inception phase has five evaluation criteria:&lt;br /&gt;
&lt;br /&gt;
* Stakeholder concurrence on scope definition and cost/schedule estimates.&lt;br /&gt;
* Depth and breadth of any prototype that was developed.&lt;br /&gt;
* Actual expenditures versus planned ones.&lt;br /&gt;
* Requirements understanding.&lt;br /&gt;
* Credibility of the cost/schedule estimates, risks and priorities.&lt;br /&gt;
&lt;br /&gt;
If for any reason the project fails to pass this milestone, it can either be completely cancelled or re-designed to successfully meet the criteria.&lt;br /&gt;
 &lt;br /&gt;
==== Elaboration Phase ====&lt;br /&gt;
The second phase is the elaboration phase. The focus of this phase, is establishing a baseline to the architecture of the system, further developing the project plan and analyzing the problem domain while trying to mitigate the highest risk elements. In other words, this is the phase where the project starts to take shape. One of the most important characteristics of this phase, is the production of a component-based architectural prototype. The purpose of this prototype, is to address the critical use-cases that were identified in the previous phase, and hopefully expose the highest technical risks of the project. The expected outcome of the elaboration phase includes:&lt;br /&gt;
&lt;br /&gt;
* A use-case model (at least 80% complete) which will be able to identify all the actors and use-cases.&lt;br /&gt;
* Supplementary requirements (if any).&lt;br /&gt;
* A clear description of the software architecture.&lt;br /&gt;
* An architectural prototype.&lt;br /&gt;
* A more detailed risk assessment and business case.&lt;br /&gt;
* A development plan for the overall project.&lt;br /&gt;
* A preliminary user manual (optional).&lt;br /&gt;
&lt;br /&gt;
At the end of the elaboration phase lies the second major project milestone; the &#039;&#039;&#039;Lifecycle Architecture Milestone&#039;&#039;&#039;.&lt;br /&gt;
The elaboration phase has six evaluation criteria:&lt;br /&gt;
&lt;br /&gt;
* Is the vision stable enough?&lt;br /&gt;
* Is the system architecture stable enough?&lt;br /&gt;
* Have all the major risks been successfully identified and resolved?&lt;br /&gt;
* Is the plan for the construction phase accurate enough?&lt;br /&gt;
* Do all the stakeholders share the opinion that the vision can be achieved by executing the current plan?&lt;br /&gt;
* Is the actual vs planned resource expenditure in acceptable levels?&lt;br /&gt;
&lt;br /&gt;
If the project fails to pass the milestone, there is still time to be re-designed or even cancelled. However, when the project moves to the next phase the associated operation risks raise significantly and changes become much more difficult.&lt;br /&gt;
&lt;br /&gt;
==== Construction Phase====&lt;br /&gt;
The third phase is the construction phase. The focus of this phase, is to develop and integrate all the remaining components and application features into the product. In other words this is the phase where the vision is finally translated into a final stable product, which is based on the architecture that was developed during the previous phases. Most emphasize is given to resources, control and process management in order to fully optimize costs, schedules and quality. The existing prototype evolves via a number of iterations into a fully functional product that meets the stakeholders&#039; needs. The construction phase is usually the longest one of the project life cycle. The expected outcome of the construction phase includes:&lt;br /&gt;
&lt;br /&gt;
* First external release of the software.&lt;br /&gt;
* User manuals.&lt;br /&gt;
* A detailed description of the current release.&lt;br /&gt;
&lt;br /&gt;
At the end of the construction phase lies the third major project milestone; the &#039;&#039;&#039;Initial Operation Capability Milestone&#039;&#039;&#039;.&lt;br /&gt;
The construction phase has three evaluation criteria:&lt;br /&gt;
&lt;br /&gt;
* Is the software release stable enough to be given to the user community?&lt;br /&gt;
* Are all the stakeholders ready for the transition to the user community?&lt;br /&gt;
* Is the actual vs planned resource expenditure in acceptable levels?&lt;br /&gt;
&lt;br /&gt;
If the project fails to pass this milestone, transition may have to be postponed by one release.&lt;br /&gt;
&lt;br /&gt;
==== Transition Phase ====&lt;br /&gt;
The fourth and final phase is the transition phase. The focus of this phase is, as the word says, to transition the software product to the user community. It includes ensuring that the product has been developed to an acceptable quality level, by beta testing the software through the end users, and validating it against the stakeholders&#039; expectations. Once the product has been given for beta testing, a number of issues can arise, requiring the development of new releases (fixing bugs) and adding features that may have been postponed. The expected outcome of the transition phase includes:&lt;br /&gt;
&lt;br /&gt;
* Beta-testing to fix any major [https://en.wikipedia.org/wiki/Software_bug software bugs] and add any missing features.&lt;br /&gt;
* Conversion of operational databases&lt;br /&gt;
* Training of end users and maintainers.&lt;br /&gt;
* Marketing and distribution of the product.&lt;br /&gt;
&lt;br /&gt;
At the end of the transition phase lies the fourth and final major project milestone; the &#039;&#039;&#039;Product Release&#039;&#039;&#039;.&lt;br /&gt;
The transition phase has two evaluation criteria:&lt;br /&gt;
&lt;br /&gt;
* Are the end - users satisfied with the product?&lt;br /&gt;
* Is the actual vs planned resource expenditure in acceptable levels?&lt;br /&gt;
&lt;br /&gt;
==== Iterations ====&lt;br /&gt;
As stated before, every phase can consist of a number of iterations, depending on the project size and scope. RUP, in comparison to the traditional [https://en.wikipedia.org/wiki/Waterfall_model waterfall] approach, is heavily based on iterations. This gives a number of advantages and benefits to the project team, with the most important one being mitigating risks much more earlier in the project. Moreover, change is more manageable and there is normally a higher level of reuse. Finally, iterations ensure an overall high quality in the final product and that the project team can learn throughout the developing process.&lt;br /&gt;
&lt;br /&gt;
=== Workflow Dimension - Disciplines ===&lt;br /&gt;
&lt;br /&gt;
[[File:activities.png|350px|right|thumb| Figure 4. Individuals, Roles and Activities]]&lt;br /&gt;
[[File:workflows.png|350px|right|thumb| Figure 5. Example of a workflow]]&lt;br /&gt;
&lt;br /&gt;
A process describes &#039;&#039;&#039;who&#039;&#039;&#039; is doing &#039;&#039;&#039;what&#039;&#039;&#039;, &#039;&#039;&#039;how&#039;&#039;&#039; and &#039;&#039;&#039;when&#039;&#039;&#039;. RUP addresses those terms with four modelling elements; &#039;&#039;&#039;Roles&#039;&#039;&#039;, &#039;&#039;&#039;Activities&#039;&#039;&#039;, &#039;&#039;&#039;Artifacts&#039;&#039;&#039; and &#039;&#039;&#039;Workflows&#039;&#039;&#039; respectively. A &#039;&#039;&#039;role&#039;&#039;&#039;, formally addressed as a worker, describes the behavior and responsibilities of an individual or a group of individuals in order to produce an artifact. Throughout the development of a project, a person can play one or a number of roles. Some examples of roles are the system analyst, designer, tester. &#039;&#039;&#039;Activities&#039;&#039;&#039; are expressed through behaviors. An activity, is a job that a person performs through his role, as seen in Figure 4. The length of an activity may vary from a few hours to a number of days. Examples of activities are: Plan an operation - performed by the role of Project Manager or add a missing feature - performed by the role of a software developer. All activities produce a meaningful result, called an artifact. &#039;&#039;&#039;Artifacts&#039;&#039;&#039;, are the responsibilities of ones role or roles and express a piece of information that is produced, modified or even used by a process. They can act both as input or output of an activity. Examples of artifacts are the source code, the business case, the software architecture. The roles perform activities that can produce a sequence of artifacts, called &#039;&#039;&#039;workflows&#039;&#039;&#039;. Examples of workflows can be seen in Figure 5. &lt;br /&gt;
&lt;br /&gt;
RUP identifies nine core process workflows, called &#039;&#039;&#039;disciplines&#039;&#039;&#039;. Every discipline, addresses a set of activities and artifacts, based upon a set of skills that are common in an ICT project. These disciplines have the ability to arrange the activities and artifacts in such a way, to provide an understanding of the overall project from a waterfall perspective.&lt;br /&gt;
&lt;br /&gt;
There are six core &amp;quot;engineering&amp;quot; disciplines:&lt;br /&gt;
* Business Modelling Discipline&lt;br /&gt;
* Requirements Discipline&lt;br /&gt;
* Analysis and Design Discipline&lt;br /&gt;
* Implementation Discipline&lt;br /&gt;
* Test Discipline&lt;br /&gt;
* Deployment Discipline&lt;br /&gt;
&lt;br /&gt;
And three core &amp;quot;supporting&amp;quot; disciplines:&lt;br /&gt;
* Project Management Discipline&lt;br /&gt;
* Configuration and Change Management Discipline&lt;br /&gt;
* Environment Discipline&lt;br /&gt;
&lt;br /&gt;
==== Business Modelling ====&lt;br /&gt;
&lt;br /&gt;
Miscommunication between the software engineering community and the business engineering community is one of the most common problems among most business engineering efforts. This means that the output from software development efforts is not correctly used as input to the business engineering and vice versa. The purpose of the Business Modelling discipline is to provide a common language between the two communities and create a direct coupling between software and business models. All business processes are documented using &amp;quot;use cases&amp;quot;. This assures that all stakeholders share the same understanding of the demanding organization.&lt;br /&gt;
&lt;br /&gt;
==== Requirements ====&lt;br /&gt;
The purpose of the requirements discipline is to describe in detail &#039;&#039;&#039;what&#039;&#039;&#039; the system should do. Based on that, a Vision document is created where required functionality and constraints are documented. Moreover, actors (end - users) and use cases (behaviors of the system) are identified. Use cases are described in detail and each description clearly shows how the system interacts with the actors. This way an agreement is established between the customers and the rest of the stakeholders regarding the system&#039;s capabilities, user-interface and the end user&#039;s needs.&lt;br /&gt;
&lt;br /&gt;
==== Analysis and Design ====&lt;br /&gt;
&lt;br /&gt;
The purpose of the Analysis and Design discipline it to investigate &#039;&#039;&#039;how&#039;&#039;&#039; the system requirements will be translated into a detailed implementation plan. The system needs to:&lt;br /&gt;
* Perform exactly as described in the use-case descriptions.&lt;br /&gt;
* Fulfill all requirements.&lt;br /&gt;
* Have a robust structure.&lt;br /&gt;
&lt;br /&gt;
Analysis and Design result in the creation of a &#039;&#039;&#039;design model&#039;&#039;&#039;. The design model is an abstraction of the system&#039;s architecture and acts as a guide of how the source code should be finally written and structured.&lt;br /&gt;
&lt;br /&gt;
==== Implementation ====&lt;br /&gt;
The purpose of the Implementation discipline is to:&lt;br /&gt;
&lt;br /&gt;
* Arrange the code into subsystems, organized in layers.&lt;br /&gt;
* Implement classes and objects in terms of components.&lt;br /&gt;
* Uni-test the developed components to ensure quality.&lt;br /&gt;
* Integrate the results into an executable system.&lt;br /&gt;
&lt;br /&gt;
The whole system can be realized as an implementation of various components. RUP enables the integration of those components, in a revolutionary way, making the system easier to maintain and increasing the possibilities for future re-use.&lt;br /&gt;
&lt;br /&gt;
==== Test ====&lt;br /&gt;
&lt;br /&gt;
In the implementation discipline, all the developed components were uni-tested individually and were integrated into the system. The purpose of the Test discipline is to assess the system as a whole and verify the product quality. It is a mechanism to verify the smooth interaction between the various components, their proper integration into the system and finally ensure that all requirements have been successfully implemented. All tests are carried out along 4 quality dimensions:&lt;br /&gt;
* Functionality.&lt;br /&gt;
* Reliability.&lt;br /&gt;
* Application Performance.&lt;br /&gt;
* System Performance.&lt;br /&gt;
&lt;br /&gt;
==== Deployment ====&lt;br /&gt;
&lt;br /&gt;
The purpose of the Deployment discipline is primarily to develop product releases and distribute the software to the end – users. More specifically the Deployment discipline focuses at:&lt;br /&gt;
&lt;br /&gt;
* Developing external software releases&lt;br /&gt;
* Distributing the software&lt;br /&gt;
* Installing the software&lt;br /&gt;
* Providing help to the end – users&lt;br /&gt;
* Creating an up-to-date user manual&lt;br /&gt;
* Conducting beta testing&lt;br /&gt;
&lt;br /&gt;
==== Project Management ====&lt;br /&gt;
&lt;br /&gt;
The purpose of the Project Management discipline, is to successfully balance competing objectives, manage and mitigate risks and finally handle any constraints on delivering the product. Project management, ideally provides:&lt;br /&gt;
&lt;br /&gt;
* A framework for managing software-intensive projects.&lt;br /&gt;
* A framework to successfully manage risks.&lt;br /&gt;
* A framework to plan, execute and monitor projects.&lt;br /&gt;
&lt;br /&gt;
While the discipline does not guarantee success, the odds of delivering successful software are greatly improved.&lt;br /&gt;
&lt;br /&gt;
==== Configuration and Change Management ====&lt;br /&gt;
&lt;br /&gt;
The purpose of the Configuration and Change Management Discipline is to control, maintain and configure all the various artifacts that are produced by the different actors that are working on a project. During the software development life cycle, artifacts are regularly updated (changed). In order to understand the current state of an artifact, it is very important to keep track of its location and history; what was the reason and who decided to change the artifact. The discipline helps create a framework that keeps track of all the project assets.&lt;br /&gt;
&lt;br /&gt;
==== Environment ====&lt;br /&gt;
&lt;br /&gt;
The purpose of the environment discipline, is to provide the development team with all the processes, tools and methods for supporting all developing activities. It is responsible for producing a Development Kit, able to provide guidelines and templates for customizing processes.&lt;br /&gt;
&lt;br /&gt;
== Why RUP - Best Practices ==&lt;br /&gt;
&lt;br /&gt;
RUP captures many of the “best practices” that are currently used in modern software development and more particularly in industry by successful organizations. The practices are:&lt;br /&gt;
&lt;br /&gt;
* Develop Software Iteratively&lt;br /&gt;
* Manage Requirements&lt;br /&gt;
* Use component-based architectures&lt;br /&gt;
* Visually model software&lt;br /&gt;
* Continuously verify software quality&lt;br /&gt;
* Control changes to software&lt;br /&gt;
&lt;br /&gt;
=== Develop Software iteratively ===&lt;br /&gt;
&lt;br /&gt;
Today’s high sophisticated software systems, consist of many and complex structures which make it nearly impossible to define the entire system from the very beginning, develop the entire solution and then test the product in the end. RUP uses an iterative approach that allows an increasing understanding of the problem and developing a step – by – step solution, over multiple iterations. Each iteration ends with an executable release, which enables continuous end - user involvement and feedback. As a result, the risks of the project are mitigated at an early stage and stakeholders are ensured that the project requirements are fulfilled.&lt;br /&gt;
&lt;br /&gt;
=== Manage requirements ===&lt;br /&gt;
&lt;br /&gt;
The requirements of a system include the description of the services that the system is able to provide and its operational constraints. RUP documents, organizes and tracks required functionality and constraints and easily communicates business requirements. The use – cases that are used in the process are an excellent way to ensure that requirements are actually those elements that drive the design, implementation and testing of software, making it more likely that the final system fulfills the stakeholders needs.&lt;br /&gt;
&lt;br /&gt;
=== Use component-based architectures ===&lt;br /&gt;
&lt;br /&gt;
Component-based architecture makes the system dynamic; components are independent from the system and interact with other components through well-defined interfaces. Their in-dependency from the system, gives them a great flexibility meaning that they can easily be added, updated or totally replaced. RUP supports component-based software development by providing a systematic approach to defining an architecture using new and existing components.&lt;br /&gt;
&lt;br /&gt;
=== Visually model software ===&lt;br /&gt;
&lt;br /&gt;
A model is an abstraction of reality that can help better comprehend large and complex systems. Visual abstractions help the development team to easily communicate different aspects of the software and see how all the components fit together. RUP uses the [http://www.uml.org/ Unified Modelling Language (UML)] standard which is a graphical language for visualizing and constructing the artifacts of a software-intensive system.&lt;br /&gt;
&lt;br /&gt;
=== Continuously verify software quality ===&lt;br /&gt;
&lt;br /&gt;
In software development, quality should always be reviewed with respect to the requirements based on reliability, functionality , application and system performance. In RUP, quality verification and assessment is built into the process, inside all activities, including all stakeholders and is not treated as a separate activity, performed by a separate group.&lt;br /&gt;
&lt;br /&gt;
=== Control changes to software ===&lt;br /&gt;
&lt;br /&gt;
A software system is developed by a number of teams or individuals, using different platforms and at times being in different locations. As a result, it is essential to somehow make sure that all the changes made in the system are synchronized and constantly verified. RUP ensures that all the individuals working in the project are well informed about any changes and everything is in sync. The process describes how to control, track and monitor changes to enable successful iterative development.&lt;br /&gt;
&lt;br /&gt;
== Limitations ==&lt;br /&gt;
&lt;br /&gt;
While being a complete methodology in itself with an emphasis on accurate documentation and quickly resolving project associated risks, RUP comes with a number of limitations.&lt;br /&gt;
&lt;br /&gt;
* In order for team members to start developing software under this methodology, they need to be &#039;&#039;&#039;experts&#039;&#039;&#039; in their respective fields.&lt;br /&gt;
* The development process can easily become too complex to handle.&lt;br /&gt;
* When working with cutting - edge projects that highly utilize new technology, components will not be able to be reused. &lt;br /&gt;
* While in theory integration throughout the process of software development sounds like a good thing, when working with particularly complex projects with multiple development streams, issues and significant confusion may rise during the stages of testing.&lt;br /&gt;
&lt;br /&gt;
== Conclusion ==&lt;br /&gt;
&lt;br /&gt;
The Rational Unified Process, is an exemplary method for addressing and mitigating risks from the very early stages, by rapidly developing an initial version of the system (prototype) that describes its architecture. There are not fixed requirements from the beginning but rather allows refining requirements , while the project progresses. It expects and actually deals with change pretty well while its main focus is the quality of the product and the degree to which it satisfies its end - users, throughout the project life-cycle. However, while being a complete and well documented methodology, it should be stressed that remains a very complex one. In order to increase the likelihood of success, while adopting this methodology, all the project members need to be &#039;&#039;&#039;experts&#039;&#039;&#039; in their respective fields. The method can easily become too difficult to learn and most importantly too difficult to apply.&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Lessisv</name></author>
	</entry>
	<entry>
		<id>http://13.50.150.85/index.php?title=Rational_Unified_Process_(RUP)&amp;diff=14725</id>
		<title>Rational Unified Process (RUP)</title>
		<link rel="alternate" type="text/html" href="http://13.50.150.85/index.php?title=Rational_Unified_Process_(RUP)&amp;diff=14725"/>
		<updated>2015-09-26T12:07:03Z</updated>

		<summary type="html">&lt;p&gt;Lessisv: /* References */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The &#039;&#039;&#039;Rational Unified Process (RUP)&#039;&#039;&#039; is an iterative, &#039;&#039;&#039;software development methodology&#039;&#039;&#039;, firstly introduced by the [https://en.wikipedia.org/wiki/Rational_Software Rational Software Corporation] which was [http://www-03.ibm.com/press/us/en/pressrelease/314.wss acquired by IBM] in 2003. RUP is a disciplined approach to assign tasks within a development organization and software project teams. It was developed to ensure the production of &#039;&#039;&#039;high quality software&#039;&#039;&#039; by providing the development team with a set of &#039;&#039;&#039;guidelines, templates and tool mentors&#039;&#039;&#039;, for all the critical life-cycle activities within a project. This cluster of objects, form a knowledge base that is shared between all project team members. As a result, no matter what each member is working with (e.g testing, designing, managing), they all share a common language and view on how to develop software. Consequently, team productivity is boosted, in order to deliver software that can meet and exceed the needs and expectations of end-users, strictly following a predictable budget and schedule &amp;lt;ref name=&amp;quot;Ivar Jacobson, Grady Booch, and Jim Rumbaugh&amp;quot;&amp;gt;Ivar Jacobson, Grady Booch, and Jim Rumbaugh, Unified Software Development Process, Addison-Wesley, 1999.&amp;lt;/ref&amp;gt;. RUP is the most popular and extensively documented refinement of the [https://en.wikipedia.org/wiki/Unified_Process Unified Process], an iterative and incremental software development process framework. Other worth mentioning forms are the [https://en.wikipedia.org/wiki/OpenUP OpenUP] and [https://en.wikipedia.org/wiki/Agile_Unified_Process Agile Unified Process].&lt;br /&gt;
&lt;br /&gt;
== Process Overview ==&lt;br /&gt;
&lt;br /&gt;
[[File:RUP.png|450px|right|thumb| Figure 1. The iterative model graph shows how the process is structured along two dimensions]]&lt;br /&gt;
&lt;br /&gt;
The best possible way to describe the methodology is through a 2 - dimensional graph.&lt;br /&gt;
* The first dimension (horizontal axis) represents the &#039;&#039;&#039;dynamic aspect&#039;&#039;&#039; of the process. It expresses &#039;&#039;&#039;time&#039;&#039;&#039; in terms of &#039;&#039;&#039;phases&#039;&#039;&#039; and &#039;&#039;&#039;iterations&#039;&#039;&#039;. &lt;br /&gt;
* The second dimension (vertical axis) represents the &#039;&#039;&#039;static aspect&#039;&#039;&#039; of the process. It expresses &#039;&#039;&#039;workflows&#039;&#039;&#039; in terms of 6 core and 3 supporting &#039;&#039;&#039;disciplines&#039;&#039;&#039; (more on that on &amp;quot;Disciplines&amp;quot; section).&lt;br /&gt;
&lt;br /&gt;
=== Time Dimension - Phases and Iterations ===&lt;br /&gt;
When developing software, the project team goes through a multi-step process, from establishing a system&#039;s requirements to designing, implementing and finally maintaining the software with new releases. This is the software life cycle. RUP delicately breaks the software life cycle down to four consecutive phases.&lt;br /&gt;
&lt;br /&gt;
* Inception phase&lt;br /&gt;
* Elaboration phase&lt;br /&gt;
* Construction phase&lt;br /&gt;
* Transition phase&lt;br /&gt;
&lt;br /&gt;
Depending on the project, each of these phases can consist of one to a number of &#039;&#039;&#039;iterations&#039;&#039;&#039;. An iteration is defined as a complete development loop, resulting in a new product release. All the phases include a well-defined milestone, in order to be completed. In the end of every phase, the development team can evaluate whether all the key goals have been achieved, all stakeholders have been considered and the actual expenditures correspond with the planned ones.&lt;br /&gt;
&lt;br /&gt;
[[File:RUP_phases.png|550px|right|thumb| Figure 2. The four phases and milestones of a project]]&lt;br /&gt;
==== Inception Phase ====&lt;br /&gt;
The first phase is the inception phase. The focus of this phase, is understanding the scope of the project and studying if is both worth doing and possible to do. All the internal and external entities that the system will interact with are identified and the nature of the interaction is well defined at a high level. For this reason, the inception phase is primarily significant for new development projects. &lt;br /&gt;
The expected outcome of the inception phase includes :&lt;br /&gt;
&lt;br /&gt;
* A vision document: The document states the general vision of the project including its key requirements, features and main constraints.&lt;br /&gt;
* An initial use-case model (10%-20% complete)&lt;br /&gt;
* An initial project glossary&lt;br /&gt;
* An initial business case, including the business context, success criteria and a financial forecast.&lt;br /&gt;
* An initial risk assessment&lt;br /&gt;
* A project plan (phases and iterations)&lt;br /&gt;
* A business model (if necessary)&lt;br /&gt;
* Prototypes&lt;br /&gt;
&lt;br /&gt;
At the end of the inception phase lies the first major project milestone; the &#039;&#039;&#039;Lifecycle Objective Milestone&#039;&#039;&#039;.&lt;br /&gt;
The inception phase has five evaluation criteria:&lt;br /&gt;
&lt;br /&gt;
* Stakeholder concurrence on scope definition and cost/schedule estimates.&lt;br /&gt;
* Depth and breadth of any prototype that was developed.&lt;br /&gt;
* Actual expenditures versus planned ones.&lt;br /&gt;
* Requirements understanding.&lt;br /&gt;
* Credibility of the cost/schedule estimates, risks and priorities.&lt;br /&gt;
&lt;br /&gt;
If for any reason the project fails to pass this milestone, it can either be completely cancelled or re-designed to successfully meet the criteria.&lt;br /&gt;
 &lt;br /&gt;
==== Elaboration Phase ====&lt;br /&gt;
The second phase is the elaboration phase. The focus of this phase, is establishing a baseline to the architecture of the system, further developing the project plan and analyzing the problem domain while trying to mitigate the highest risk elements. In other words, this is the phase where the project starts to take shape. One of the most important characteristics of this phase, is the production of a component-based architectural prototype. The purpose of this prototype, is to address the critical use-cases that were identified in the previous phase, and hopefully expose the highest technical risks of the project. The expected outcome of the elaboration phase includes:&lt;br /&gt;
&lt;br /&gt;
* A use-case model (at least 80% complete) which will be able to identify all the actors and use-cases.&lt;br /&gt;
* Supplementary requirements (if any).&lt;br /&gt;
* A clear description of the software architecture.&lt;br /&gt;
* An architectural prototype.&lt;br /&gt;
* A more detailed risk assessment and business case.&lt;br /&gt;
* A development plan for the overall project.&lt;br /&gt;
* A preliminary user manual (optional).&lt;br /&gt;
&lt;br /&gt;
At the end of the elaboration phase lies the second major project milestone; the &#039;&#039;&#039;Lifecycle Architecture Milestone&#039;&#039;&#039;.&lt;br /&gt;
The elaboration phase has six evaluation criteria:&lt;br /&gt;
&lt;br /&gt;
* Is the vision stable enough?&lt;br /&gt;
* Is the system architecture stable enough?&lt;br /&gt;
* Have all the major risks been successfully identified and resolved?&lt;br /&gt;
* Is the plan for the construction phase accurate enough?&lt;br /&gt;
* Do all the stakeholders share the opinion that the vision can be achieved by executing the current plan?&lt;br /&gt;
* Is the actual vs planned resource expenditure in acceptable levels?&lt;br /&gt;
&lt;br /&gt;
If the project fails to pass the milestone, there is still time to be re-designed or even cancelled. However, when the project moves to the next phase the associated operation risks raise significantly and changes become much more difficult.&lt;br /&gt;
&lt;br /&gt;
==== Construction Phase====&lt;br /&gt;
The third phase is the construction phase. The focus of this phase, is to develop and integrate all the remaining components and application features into the product. In other words this is the phase where the vision is finally translated into a final stable product, which is based on the architecture that was developed during the previous phases. Most emphasize is given to resources, control and process management in order to fully optimize costs, schedules and quality. The existing prototype evolves via a number of iterations into a fully functional product that meets the stakeholders&#039; needs. The construction phase is usually the longest one of the project life cycle. The expected outcome of the construction phase includes:&lt;br /&gt;
&lt;br /&gt;
* First external release of the software.&lt;br /&gt;
* User manuals.&lt;br /&gt;
* A detailed description of the current release.&lt;br /&gt;
&lt;br /&gt;
At the end of the construction phase lies the third major project milestone; the &#039;&#039;&#039;Initial Operation Capability Milestone&#039;&#039;&#039;.&lt;br /&gt;
The construction phase has three evaluation criteria:&lt;br /&gt;
&lt;br /&gt;
* Is the software release stable enough to be given to the user community?&lt;br /&gt;
* Are all the stakeholders ready for the transition to the user community?&lt;br /&gt;
* Is the actual vs planned resource expenditure in acceptable levels?&lt;br /&gt;
&lt;br /&gt;
If the project fails to pass this milestone, transition may have to be postponed by one release.&lt;br /&gt;
&lt;br /&gt;
==== Transition Phase ====&lt;br /&gt;
The fourth and final phase is the transition phase. The focus of this phase is, as the word says, to transition the software product to the user community. It includes ensuring that the product has been developed to an acceptable quality level, by beta testing the software through the end users, and validating it against the stakeholders&#039; expectations. Once the product has been given for beta testing, a number of issues can arise, requiring the development of new releases (fixing bugs) and adding features that may have been postponed. The expected outcome of the transition phase includes:&lt;br /&gt;
&lt;br /&gt;
* Beta-testing to fix any major [https://en.wikipedia.org/wiki/Software_bug software bugs] and add any missing features.&lt;br /&gt;
* Conversion of operational databases&lt;br /&gt;
* Training of end users and maintainers.&lt;br /&gt;
* Marketing and distribution of the product.&lt;br /&gt;
&lt;br /&gt;
At the end of the transition phase lies the fourth and final major project milestone; the &#039;&#039;&#039;Product Release&#039;&#039;&#039;.&lt;br /&gt;
The transition phase has two evaluation criteria:&lt;br /&gt;
&lt;br /&gt;
* Are the end - users satisfied with the product?&lt;br /&gt;
* Is the actual vs planned resource expenditure in acceptable levels?&lt;br /&gt;
&lt;br /&gt;
==== Iterations ====&lt;br /&gt;
As stated before, every phase can consist of a number of iterations, depending on the project size and scope. RUP, in comparison to the traditional [https://en.wikipedia.org/wiki/Waterfall_model waterfall] approach, is heavily based on iterations. This gives a number of advantages and benefits to the project team, with the most important one being mitigating risks much more earlier in the project. Moreover, change is more manageable and there is normally a higher level of reuse. Finally, iterations ensure an overall high quality in the final product and that the project team can learn throughout the developing process.&lt;br /&gt;
&lt;br /&gt;
=== Workflow Dimension - Disciplines ===&lt;br /&gt;
&lt;br /&gt;
[[File:activities.png|350px|right|thumb| Figure 4. Individuals, Roles and Activities]]&lt;br /&gt;
[[File:workflows.png|350px|right|thumb| Figure 5. Example of a workflow]]&lt;br /&gt;
&lt;br /&gt;
A process describes &#039;&#039;&#039;who&#039;&#039;&#039; is doing &#039;&#039;&#039;what&#039;&#039;&#039;, &#039;&#039;&#039;how&#039;&#039;&#039; and &#039;&#039;&#039;when&#039;&#039;&#039;. RUP addresses those terms with four modelling elements; &#039;&#039;&#039;Roles&#039;&#039;&#039;, &#039;&#039;&#039;Activities&#039;&#039;&#039;, &#039;&#039;&#039;Artifacts&#039;&#039;&#039; and &#039;&#039;&#039;Workflows&#039;&#039;&#039; respectively. A &#039;&#039;&#039;role&#039;&#039;&#039;, formally addressed as a worker, describes the behavior and responsibilities of an individual or a group of individuals in order to produce an artifact. Throughout the development of a project, a person can play one or a number of roles. Some examples of roles are the system analyst, designer, tester. &#039;&#039;&#039;Activities&#039;&#039;&#039; are expressed through behaviors. An activity, is a job that a person performs through his role, as seen in Figure 4. The length of an activity may vary from a few hours to a number of days. Examples of activities are: Plan an operation - performed by the role of Project Manager or add a missing feature - performed by the role of a software developer. All activities produce a meaningful result, called an artifact. &#039;&#039;&#039;Artifacts&#039;&#039;&#039;, are the responsibilities of ones role or roles and express a piece of information that is produced, modified or even used by a process. They can act both as input or output of an activity. Examples of artifacts are the source code, the business case, the software architecture. The roles perform activities that can produce a sequence of artifacts, called &#039;&#039;&#039;workflows&#039;&#039;&#039;. Examples of workflows can be seen in Figure 5. &lt;br /&gt;
&lt;br /&gt;
RUP identifies nine core process workflows, called &#039;&#039;&#039;disciplines&#039;&#039;&#039;. Every discipline, addresses a set of activities and artifacts, based upon a set of skills that are common in an ICT project. These disciplines have the ability to arrange the activities and artifacts in such a way, to provide an understanding of the overall project from a waterfall perspective.&lt;br /&gt;
&lt;br /&gt;
There are six core &amp;quot;engineering&amp;quot; disciplines:&lt;br /&gt;
* Business Modelling Discipline&lt;br /&gt;
* Requirements Discipline&lt;br /&gt;
* Analysis and Design Discipline&lt;br /&gt;
* Implementation Discipline&lt;br /&gt;
* Test Discipline&lt;br /&gt;
* Deployment Discipline&lt;br /&gt;
&lt;br /&gt;
And three core &amp;quot;supporting&amp;quot; disciplines:&lt;br /&gt;
* Project Management Discipline&lt;br /&gt;
* Configuration and Change Management Discipline&lt;br /&gt;
* Environment Discipline&lt;br /&gt;
&lt;br /&gt;
==== Business Modelling ====&lt;br /&gt;
&lt;br /&gt;
Miscommunication between the software engineering community and the business engineering community is one of the most common problems among most business engineering efforts. This means that the output from software development efforts is not correctly used as input to the business engineering and vice versa. The purpose of the Business Modelling discipline is to provide a common language between the two communities and create a direct coupling between software and business models. All business processes are documented using &amp;quot;use cases&amp;quot;. This assures that all stakeholders share the same understanding of the demanding organization.&lt;br /&gt;
&lt;br /&gt;
==== Requirements ====&lt;br /&gt;
The purpose of the requirements discipline is to describe in detail &#039;&#039;&#039;what&#039;&#039;&#039; the system should do. Based on that, a Vision document is created where required functionality and constraints are documented. Moreover, actors (end - users) and use cases (behaviors of the system) are identified. Use cases are described in detail and each description clearly shows how the system interacts with the actors. This way an agreement is established between the customers and the rest of the stakeholders regarding the system&#039;s capabilities, user-interface and the end user&#039;s needs.&lt;br /&gt;
&lt;br /&gt;
==== Analysis and Design ====&lt;br /&gt;
&lt;br /&gt;
The purpose of the Analysis and Design discipline it to investigate &#039;&#039;&#039;how&#039;&#039;&#039; the system requirements will be translated into a detailed implementation plan. The system needs to:&lt;br /&gt;
* Perform exactly as described in the use-case descriptions.&lt;br /&gt;
* Fulfill all requirements.&lt;br /&gt;
* Have a robust structure.&lt;br /&gt;
&lt;br /&gt;
Analysis and Design result in the creation of a &#039;&#039;&#039;design model&#039;&#039;&#039;. The design model is an abstraction of the system&#039;s architecture and acts as a guide of how the source code should be finally written and structured.&lt;br /&gt;
&lt;br /&gt;
==== Implementation ====&lt;br /&gt;
The purpose of the Implementation discipline is to:&lt;br /&gt;
&lt;br /&gt;
* Arrange the code into subsystems, organized in layers.&lt;br /&gt;
* Implement classes and objects in terms of components.&lt;br /&gt;
* Uni-test the developed components to ensure quality.&lt;br /&gt;
* Integrate the results into an executable system.&lt;br /&gt;
&lt;br /&gt;
The whole system can be realized as an implementation of various components. RUP enables the integration of those components, in a revolutionary way, making the system easier to maintain and increasing the possibilities for future re-use.&lt;br /&gt;
&lt;br /&gt;
==== Test ====&lt;br /&gt;
&lt;br /&gt;
In the implementation discipline, all the developed components were uni-tested individually and were integrated into the system. The purpose of the Test discipline is to assess the system as a whole and verify the product quality. It is a mechanism to verify the smooth interaction between the various components, their proper integration into the system and finally ensure that all requirements have been successfully implemented. All tests are carried out along 4 quality dimensions:&lt;br /&gt;
* Functionality.&lt;br /&gt;
* Reliability.&lt;br /&gt;
* Application Performance.&lt;br /&gt;
* System Performance.&lt;br /&gt;
&lt;br /&gt;
==== Deployment ====&lt;br /&gt;
&lt;br /&gt;
The purpose of the Deployment discipline is primarily to develop product releases and distribute the software to the end – users. More specifically the Deployment discipline focuses at:&lt;br /&gt;
&lt;br /&gt;
* Developing external software releases&lt;br /&gt;
* Distributing the software&lt;br /&gt;
* Installing the software&lt;br /&gt;
* Providing help to the end – users&lt;br /&gt;
* Creating an up-to-date user manual&lt;br /&gt;
* Conducting beta testing&lt;br /&gt;
&lt;br /&gt;
==== Project Management ====&lt;br /&gt;
&lt;br /&gt;
The purpose of the Project Management discipline, is to successfully balance competing objectives, manage and mitigate risks and finally handle any constraints on delivering the product. Project management, ideally provides:&lt;br /&gt;
&lt;br /&gt;
* A framework for managing software-intensive projects.&lt;br /&gt;
* A framework to successfully manage risks.&lt;br /&gt;
* A framework to plan, execute and monitor projects.&lt;br /&gt;
&lt;br /&gt;
While the discipline does not guarantee success, the odds of delivering successful software are greatly improved.&lt;br /&gt;
&lt;br /&gt;
==== Configuration and Change Management ====&lt;br /&gt;
&lt;br /&gt;
The purpose of the Configuration and Change Management Discipline is to control, maintain and configure all the various artifacts that are produced by the different actors that are working on a project. During the software development life cycle, artifacts are regularly updated (changed). In order to understand the current state of an artifact, it is very important to keep track of its location and history; what was the reason and who decided to change the artifact. The discipline helps create a framework that keeps track of all the project assets.&lt;br /&gt;
&lt;br /&gt;
==== Environment ====&lt;br /&gt;
&lt;br /&gt;
The purpose of the environment discipline, is to provide the development team with all the processes, tools and methods for supporting all developing activities. It is responsible for producing a Development Kit, able to provide guidelines and templates for customizing processes.&lt;br /&gt;
&lt;br /&gt;
== Why RUP - Best Practices ==&lt;br /&gt;
&lt;br /&gt;
RUP captures many of the “best practices” that are currently used in modern software development and more particularly in industry by successful organizations. The practices are:&lt;br /&gt;
&lt;br /&gt;
* Develop Software Iteratively&lt;br /&gt;
* Manage Requirements&lt;br /&gt;
* Use component-based architectures&lt;br /&gt;
* Visually model software&lt;br /&gt;
* Continuously verify software quality&lt;br /&gt;
* Control changes to software&lt;br /&gt;
&lt;br /&gt;
=== Develop Software iteratively ===&lt;br /&gt;
&lt;br /&gt;
Today’s high sophisticated software systems, consist of many and complex structures which make it nearly impossible to define the entire system from the very beginning, develop the entire solution and then test the product in the end. RUP uses an iterative approach that allows an increasing understanding of the problem and developing a step – by – step solution, over multiple iterations. Each iteration ends with an executable release, which enables continuous end - user involvement and feedback. As a result, the risks of the project are mitigated at an early stage and stakeholders are ensured that the project requirements are fulfilled.&lt;br /&gt;
&lt;br /&gt;
=== Manage requirements ===&lt;br /&gt;
&lt;br /&gt;
The requirements of a system include the description of the services that the system is able to provide and its operational constraints. RUP documents, organizes and tracks required functionality and constraints and easily communicates business requirements. The use – cases that are used in the process are an excellent way to ensure that requirements are actually those elements that drive the design, implementation and testing of software, making it more likely that the final system fulfills the stakeholders needs.&lt;br /&gt;
&lt;br /&gt;
=== Use component-based architectures ===&lt;br /&gt;
&lt;br /&gt;
Component-based architecture makes the system dynamic; components are independent from the system and interact with other components through well-defined interfaces. Their in-dependency from the system, gives them a great flexibility meaning that they can easily be added, updated or totally replaced. RUP supports component-based software development by providing a systematic approach to defining an architecture using new and existing components.&lt;br /&gt;
&lt;br /&gt;
=== Visually model software ===&lt;br /&gt;
&lt;br /&gt;
A model is an abstraction of reality that can help better comprehend large and complex systems. Visual abstractions help the development team to easily communicate different aspects of the software and see how all the components fit together. RUP uses the [http://www.uml.org/ Unified Modelling Language (UML)] standard which is a graphical language for visualizing and constructing the artifacts of a software-intensive system.&lt;br /&gt;
&lt;br /&gt;
=== Continuously verify software quality ===&lt;br /&gt;
&lt;br /&gt;
In software development, quality should always be reviewed with respect to the requirements based on reliability, functionality , application and system performance. In RUP, quality verification and assessment is built into the process, inside all activities, including all stakeholders and is not treated as a separate activity, performed by a separate group.&lt;br /&gt;
&lt;br /&gt;
=== Control changes to software ===&lt;br /&gt;
&lt;br /&gt;
A software system is developed by a number of teams or individuals, using different platforms and at times being in different locations. As a result, it is essential to somehow make sure that all the changes made in the system are synchronized and constantly verified. RUP ensures that all the individuals working in the project are well informed about any changes and everything is in sync. The process describes how to control, track and monitor changes to enable successful iterative development.&lt;br /&gt;
&lt;br /&gt;
== Limitations ==&lt;br /&gt;
&lt;br /&gt;
While being a complete methodology in itself with an emphasis on accurate documentation and quickly resolving project associated risks, RUP comes with a number of limitations.&lt;br /&gt;
&lt;br /&gt;
* In order for team members to start developing software under this methodology, they need to be &#039;&#039;&#039;experts&#039;&#039;&#039; in their respective fields.&lt;br /&gt;
* The development process can easily become too complex to handle.&lt;br /&gt;
* When working with cutting - edge projects that highly utilize new technology, components will not be able to be reused. &lt;br /&gt;
* While in theory integration throughout the process of software development sounds like a good thing, when working with particularly complex projects with multiple development streams, issues and significant confusion may rise during the stages of testing.&lt;br /&gt;
&lt;br /&gt;
== Conclusion ==&lt;br /&gt;
&lt;br /&gt;
The Rational Unified Process, is an exemplary method for addressing and mitigating risks from the very early stages, by rapidly developing an initial version of the system (prototype) that describes its architecture. There are not fixed requirements from the beginning but rather allows refining requirements , while the project progresses. It expects and actually deals with change pretty well while its main focus is the quality of the product and the degree to which it satisfies its end - users, throughout the project life-cycle. However, while being a complete and well documented methodology, it should be stressed that remains a very complex one. In order to increase the likelihood of success, while adopting this methodology, all the project members need to be &#039;&#039;&#039;experts&#039;&#039;&#039; in their respective fields. The method can easily become too difficult to learn and most importantly too difficult to apply.&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Lessisv</name></author>
	</entry>
	<entry>
		<id>http://13.50.150.85/index.php?title=Rational_Unified_Process_(RUP)&amp;diff=14724</id>
		<title>Rational Unified Process (RUP)</title>
		<link rel="alternate" type="text/html" href="http://13.50.150.85/index.php?title=Rational_Unified_Process_(RUP)&amp;diff=14724"/>
		<updated>2015-09-26T12:06:45Z</updated>

		<summary type="html">&lt;p&gt;Lessisv: /* References */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The &#039;&#039;&#039;Rational Unified Process (RUP)&#039;&#039;&#039; is an iterative, &#039;&#039;&#039;software development methodology&#039;&#039;&#039;, firstly introduced by the [https://en.wikipedia.org/wiki/Rational_Software Rational Software Corporation] which was [http://www-03.ibm.com/press/us/en/pressrelease/314.wss acquired by IBM] in 2003. RUP is a disciplined approach to assign tasks within a development organization and software project teams. It was developed to ensure the production of &#039;&#039;&#039;high quality software&#039;&#039;&#039; by providing the development team with a set of &#039;&#039;&#039;guidelines, templates and tool mentors&#039;&#039;&#039;, for all the critical life-cycle activities within a project. This cluster of objects, form a knowledge base that is shared between all project team members. As a result, no matter what each member is working with (e.g testing, designing, managing), they all share a common language and view on how to develop software. Consequently, team productivity is boosted, in order to deliver software that can meet and exceed the needs and expectations of end-users, strictly following a predictable budget and schedule &amp;lt;ref name=&amp;quot;Ivar Jacobson, Grady Booch, and Jim Rumbaugh&amp;quot;&amp;gt;Ivar Jacobson, Grady Booch, and Jim Rumbaugh, Unified Software Development Process, Addison-Wesley, 1999.&amp;lt;/ref&amp;gt;. RUP is the most popular and extensively documented refinement of the [https://en.wikipedia.org/wiki/Unified_Process Unified Process], an iterative and incremental software development process framework. Other worth mentioning forms are the [https://en.wikipedia.org/wiki/OpenUP OpenUP] and [https://en.wikipedia.org/wiki/Agile_Unified_Process Agile Unified Process].&lt;br /&gt;
&lt;br /&gt;
== Process Overview ==&lt;br /&gt;
&lt;br /&gt;
[[File:RUP.png|450px|right|thumb| Figure 1. The iterative model graph shows how the process is structured along two dimensions]]&lt;br /&gt;
&lt;br /&gt;
The best possible way to describe the methodology is through a 2 - dimensional graph.&lt;br /&gt;
* The first dimension (horizontal axis) represents the &#039;&#039;&#039;dynamic aspect&#039;&#039;&#039; of the process. It expresses &#039;&#039;&#039;time&#039;&#039;&#039; in terms of &#039;&#039;&#039;phases&#039;&#039;&#039; and &#039;&#039;&#039;iterations&#039;&#039;&#039;. &lt;br /&gt;
* The second dimension (vertical axis) represents the &#039;&#039;&#039;static aspect&#039;&#039;&#039; of the process. It expresses &#039;&#039;&#039;workflows&#039;&#039;&#039; in terms of 6 core and 3 supporting &#039;&#039;&#039;disciplines&#039;&#039;&#039; (more on that on &amp;quot;Disciplines&amp;quot; section).&lt;br /&gt;
&lt;br /&gt;
=== Time Dimension - Phases and Iterations ===&lt;br /&gt;
When developing software, the project team goes through a multi-step process, from establishing a system&#039;s requirements to designing, implementing and finally maintaining the software with new releases. This is the software life cycle. RUP delicately breaks the software life cycle down to four consecutive phases.&lt;br /&gt;
&lt;br /&gt;
* Inception phase&lt;br /&gt;
* Elaboration phase&lt;br /&gt;
* Construction phase&lt;br /&gt;
* Transition phase&lt;br /&gt;
&lt;br /&gt;
Depending on the project, each of these phases can consist of one to a number of &#039;&#039;&#039;iterations&#039;&#039;&#039;. An iteration is defined as a complete development loop, resulting in a new product release. All the phases include a well-defined milestone, in order to be completed. In the end of every phase, the development team can evaluate whether all the key goals have been achieved, all stakeholders have been considered and the actual expenditures correspond with the planned ones.&lt;br /&gt;
&lt;br /&gt;
[[File:RUP_phases.png|550px|right|thumb| Figure 2. The four phases and milestones of a project]]&lt;br /&gt;
==== Inception Phase ====&lt;br /&gt;
The first phase is the inception phase. The focus of this phase, is understanding the scope of the project and studying if is both worth doing and possible to do. All the internal and external entities that the system will interact with are identified and the nature of the interaction is well defined at a high level. For this reason, the inception phase is primarily significant for new development projects. &lt;br /&gt;
The expected outcome of the inception phase includes :&lt;br /&gt;
&lt;br /&gt;
* A vision document: The document states the general vision of the project including its key requirements, features and main constraints.&lt;br /&gt;
* An initial use-case model (10%-20% complete)&lt;br /&gt;
* An initial project glossary&lt;br /&gt;
* An initial business case, including the business context, success criteria and a financial forecast.&lt;br /&gt;
* An initial risk assessment&lt;br /&gt;
* A project plan (phases and iterations)&lt;br /&gt;
* A business model (if necessary)&lt;br /&gt;
* Prototypes&lt;br /&gt;
&lt;br /&gt;
At the end of the inception phase lies the first major project milestone; the &#039;&#039;&#039;Lifecycle Objective Milestone&#039;&#039;&#039;.&lt;br /&gt;
The inception phase has five evaluation criteria:&lt;br /&gt;
&lt;br /&gt;
* Stakeholder concurrence on scope definition and cost/schedule estimates.&lt;br /&gt;
* Depth and breadth of any prototype that was developed.&lt;br /&gt;
* Actual expenditures versus planned ones.&lt;br /&gt;
* Requirements understanding.&lt;br /&gt;
* Credibility of the cost/schedule estimates, risks and priorities.&lt;br /&gt;
&lt;br /&gt;
If for any reason the project fails to pass this milestone, it can either be completely cancelled or re-designed to successfully meet the criteria.&lt;br /&gt;
 &lt;br /&gt;
==== Elaboration Phase ====&lt;br /&gt;
The second phase is the elaboration phase. The focus of this phase, is establishing a baseline to the architecture of the system, further developing the project plan and analyzing the problem domain while trying to mitigate the highest risk elements. In other words, this is the phase where the project starts to take shape. One of the most important characteristics of this phase, is the production of a component-based architectural prototype. The purpose of this prototype, is to address the critical use-cases that were identified in the previous phase, and hopefully expose the highest technical risks of the project. The expected outcome of the elaboration phase includes:&lt;br /&gt;
&lt;br /&gt;
* A use-case model (at least 80% complete) which will be able to identify all the actors and use-cases.&lt;br /&gt;
* Supplementary requirements (if any).&lt;br /&gt;
* A clear description of the software architecture.&lt;br /&gt;
* An architectural prototype.&lt;br /&gt;
* A more detailed risk assessment and business case.&lt;br /&gt;
* A development plan for the overall project.&lt;br /&gt;
* A preliminary user manual (optional).&lt;br /&gt;
&lt;br /&gt;
At the end of the elaboration phase lies the second major project milestone; the &#039;&#039;&#039;Lifecycle Architecture Milestone&#039;&#039;&#039;.&lt;br /&gt;
The elaboration phase has six evaluation criteria:&lt;br /&gt;
&lt;br /&gt;
* Is the vision stable enough?&lt;br /&gt;
* Is the system architecture stable enough?&lt;br /&gt;
* Have all the major risks been successfully identified and resolved?&lt;br /&gt;
* Is the plan for the construction phase accurate enough?&lt;br /&gt;
* Do all the stakeholders share the opinion that the vision can be achieved by executing the current plan?&lt;br /&gt;
* Is the actual vs planned resource expenditure in acceptable levels?&lt;br /&gt;
&lt;br /&gt;
If the project fails to pass the milestone, there is still time to be re-designed or even cancelled. However, when the project moves to the next phase the associated operation risks raise significantly and changes become much more difficult.&lt;br /&gt;
&lt;br /&gt;
==== Construction Phase====&lt;br /&gt;
The third phase is the construction phase. The focus of this phase, is to develop and integrate all the remaining components and application features into the product. In other words this is the phase where the vision is finally translated into a final stable product, which is based on the architecture that was developed during the previous phases. Most emphasize is given to resources, control and process management in order to fully optimize costs, schedules and quality. The existing prototype evolves via a number of iterations into a fully functional product that meets the stakeholders&#039; needs. The construction phase is usually the longest one of the project life cycle. The expected outcome of the construction phase includes:&lt;br /&gt;
&lt;br /&gt;
* First external release of the software.&lt;br /&gt;
* User manuals.&lt;br /&gt;
* A detailed description of the current release.&lt;br /&gt;
&lt;br /&gt;
At the end of the construction phase lies the third major project milestone; the &#039;&#039;&#039;Initial Operation Capability Milestone&#039;&#039;&#039;.&lt;br /&gt;
The construction phase has three evaluation criteria:&lt;br /&gt;
&lt;br /&gt;
* Is the software release stable enough to be given to the user community?&lt;br /&gt;
* Are all the stakeholders ready for the transition to the user community?&lt;br /&gt;
* Is the actual vs planned resource expenditure in acceptable levels?&lt;br /&gt;
&lt;br /&gt;
If the project fails to pass this milestone, transition may have to be postponed by one release.&lt;br /&gt;
&lt;br /&gt;
==== Transition Phase ====&lt;br /&gt;
The fourth and final phase is the transition phase. The focus of this phase is, as the word says, to transition the software product to the user community. It includes ensuring that the product has been developed to an acceptable quality level, by beta testing the software through the end users, and validating it against the stakeholders&#039; expectations. Once the product has been given for beta testing, a number of issues can arise, requiring the development of new releases (fixing bugs) and adding features that may have been postponed. The expected outcome of the transition phase includes:&lt;br /&gt;
&lt;br /&gt;
* Beta-testing to fix any major [https://en.wikipedia.org/wiki/Software_bug software bugs] and add any missing features.&lt;br /&gt;
* Conversion of operational databases&lt;br /&gt;
* Training of end users and maintainers.&lt;br /&gt;
* Marketing and distribution of the product.&lt;br /&gt;
&lt;br /&gt;
At the end of the transition phase lies the fourth and final major project milestone; the &#039;&#039;&#039;Product Release&#039;&#039;&#039;.&lt;br /&gt;
The transition phase has two evaluation criteria:&lt;br /&gt;
&lt;br /&gt;
* Are the end - users satisfied with the product?&lt;br /&gt;
* Is the actual vs planned resource expenditure in acceptable levels?&lt;br /&gt;
&lt;br /&gt;
==== Iterations ====&lt;br /&gt;
As stated before, every phase can consist of a number of iterations, depending on the project size and scope. RUP, in comparison to the traditional [https://en.wikipedia.org/wiki/Waterfall_model waterfall] approach, is heavily based on iterations. This gives a number of advantages and benefits to the project team, with the most important one being mitigating risks much more earlier in the project. Moreover, change is more manageable and there is normally a higher level of reuse. Finally, iterations ensure an overall high quality in the final product and that the project team can learn throughout the developing process.&lt;br /&gt;
&lt;br /&gt;
=== Workflow Dimension - Disciplines ===&lt;br /&gt;
&lt;br /&gt;
[[File:activities.png|350px|right|thumb| Figure 4. Individuals, Roles and Activities]]&lt;br /&gt;
[[File:workflows.png|350px|right|thumb| Figure 5. Example of a workflow]]&lt;br /&gt;
&lt;br /&gt;
A process describes &#039;&#039;&#039;who&#039;&#039;&#039; is doing &#039;&#039;&#039;what&#039;&#039;&#039;, &#039;&#039;&#039;how&#039;&#039;&#039; and &#039;&#039;&#039;when&#039;&#039;&#039;. RUP addresses those terms with four modelling elements; &#039;&#039;&#039;Roles&#039;&#039;&#039;, &#039;&#039;&#039;Activities&#039;&#039;&#039;, &#039;&#039;&#039;Artifacts&#039;&#039;&#039; and &#039;&#039;&#039;Workflows&#039;&#039;&#039; respectively. A &#039;&#039;&#039;role&#039;&#039;&#039;, formally addressed as a worker, describes the behavior and responsibilities of an individual or a group of individuals in order to produce an artifact. Throughout the development of a project, a person can play one or a number of roles. Some examples of roles are the system analyst, designer, tester. &#039;&#039;&#039;Activities&#039;&#039;&#039; are expressed through behaviors. An activity, is a job that a person performs through his role, as seen in Figure 4. The length of an activity may vary from a few hours to a number of days. Examples of activities are: Plan an operation - performed by the role of Project Manager or add a missing feature - performed by the role of a software developer. All activities produce a meaningful result, called an artifact. &#039;&#039;&#039;Artifacts&#039;&#039;&#039;, are the responsibilities of ones role or roles and express a piece of information that is produced, modified or even used by a process. They can act both as input or output of an activity. Examples of artifacts are the source code, the business case, the software architecture. The roles perform activities that can produce a sequence of artifacts, called &#039;&#039;&#039;workflows&#039;&#039;&#039;. Examples of workflows can be seen in Figure 5. &lt;br /&gt;
&lt;br /&gt;
RUP identifies nine core process workflows, called &#039;&#039;&#039;disciplines&#039;&#039;&#039;. Every discipline, addresses a set of activities and artifacts, based upon a set of skills that are common in an ICT project. These disciplines have the ability to arrange the activities and artifacts in such a way, to provide an understanding of the overall project from a waterfall perspective.&lt;br /&gt;
&lt;br /&gt;
There are six core &amp;quot;engineering&amp;quot; disciplines:&lt;br /&gt;
* Business Modelling Discipline&lt;br /&gt;
* Requirements Discipline&lt;br /&gt;
* Analysis and Design Discipline&lt;br /&gt;
* Implementation Discipline&lt;br /&gt;
* Test Discipline&lt;br /&gt;
* Deployment Discipline&lt;br /&gt;
&lt;br /&gt;
And three core &amp;quot;supporting&amp;quot; disciplines:&lt;br /&gt;
* Project Management Discipline&lt;br /&gt;
* Configuration and Change Management Discipline&lt;br /&gt;
* Environment Discipline&lt;br /&gt;
&lt;br /&gt;
==== Business Modelling ====&lt;br /&gt;
&lt;br /&gt;
Miscommunication between the software engineering community and the business engineering community is one of the most common problems among most business engineering efforts. This means that the output from software development efforts is not correctly used as input to the business engineering and vice versa. The purpose of the Business Modelling discipline is to provide a common language between the two communities and create a direct coupling between software and business models. All business processes are documented using &amp;quot;use cases&amp;quot;. This assures that all stakeholders share the same understanding of the demanding organization.&lt;br /&gt;
&lt;br /&gt;
==== Requirements ====&lt;br /&gt;
The purpose of the requirements discipline is to describe in detail &#039;&#039;&#039;what&#039;&#039;&#039; the system should do. Based on that, a Vision document is created where required functionality and constraints are documented. Moreover, actors (end - users) and use cases (behaviors of the system) are identified. Use cases are described in detail and each description clearly shows how the system interacts with the actors. This way an agreement is established between the customers and the rest of the stakeholders regarding the system&#039;s capabilities, user-interface and the end user&#039;s needs.&lt;br /&gt;
&lt;br /&gt;
==== Analysis and Design ====&lt;br /&gt;
&lt;br /&gt;
The purpose of the Analysis and Design discipline it to investigate &#039;&#039;&#039;how&#039;&#039;&#039; the system requirements will be translated into a detailed implementation plan. The system needs to:&lt;br /&gt;
* Perform exactly as described in the use-case descriptions.&lt;br /&gt;
* Fulfill all requirements.&lt;br /&gt;
* Have a robust structure.&lt;br /&gt;
&lt;br /&gt;
Analysis and Design result in the creation of a &#039;&#039;&#039;design model&#039;&#039;&#039;. The design model is an abstraction of the system&#039;s architecture and acts as a guide of how the source code should be finally written and structured.&lt;br /&gt;
&lt;br /&gt;
==== Implementation ====&lt;br /&gt;
The purpose of the Implementation discipline is to:&lt;br /&gt;
&lt;br /&gt;
* Arrange the code into subsystems, organized in layers.&lt;br /&gt;
* Implement classes and objects in terms of components.&lt;br /&gt;
* Uni-test the developed components to ensure quality.&lt;br /&gt;
* Integrate the results into an executable system.&lt;br /&gt;
&lt;br /&gt;
The whole system can be realized as an implementation of various components. RUP enables the integration of those components, in a revolutionary way, making the system easier to maintain and increasing the possibilities for future re-use.&lt;br /&gt;
&lt;br /&gt;
==== Test ====&lt;br /&gt;
&lt;br /&gt;
In the implementation discipline, all the developed components were uni-tested individually and were integrated into the system. The purpose of the Test discipline is to assess the system as a whole and verify the product quality. It is a mechanism to verify the smooth interaction between the various components, their proper integration into the system and finally ensure that all requirements have been successfully implemented. All tests are carried out along 4 quality dimensions:&lt;br /&gt;
* Functionality.&lt;br /&gt;
* Reliability.&lt;br /&gt;
* Application Performance.&lt;br /&gt;
* System Performance.&lt;br /&gt;
&lt;br /&gt;
==== Deployment ====&lt;br /&gt;
&lt;br /&gt;
The purpose of the Deployment discipline is primarily to develop product releases and distribute the software to the end – users. More specifically the Deployment discipline focuses at:&lt;br /&gt;
&lt;br /&gt;
* Developing external software releases&lt;br /&gt;
* Distributing the software&lt;br /&gt;
* Installing the software&lt;br /&gt;
* Providing help to the end – users&lt;br /&gt;
* Creating an up-to-date user manual&lt;br /&gt;
* Conducting beta testing&lt;br /&gt;
&lt;br /&gt;
==== Project Management ====&lt;br /&gt;
&lt;br /&gt;
The purpose of the Project Management discipline, is to successfully balance competing objectives, manage and mitigate risks and finally handle any constraints on delivering the product. Project management, ideally provides:&lt;br /&gt;
&lt;br /&gt;
* A framework for managing software-intensive projects.&lt;br /&gt;
* A framework to successfully manage risks.&lt;br /&gt;
* A framework to plan, execute and monitor projects.&lt;br /&gt;
&lt;br /&gt;
While the discipline does not guarantee success, the odds of delivering successful software are greatly improved.&lt;br /&gt;
&lt;br /&gt;
==== Configuration and Change Management ====&lt;br /&gt;
&lt;br /&gt;
The purpose of the Configuration and Change Management Discipline is to control, maintain and configure all the various artifacts that are produced by the different actors that are working on a project. During the software development life cycle, artifacts are regularly updated (changed). In order to understand the current state of an artifact, it is very important to keep track of its location and history; what was the reason and who decided to change the artifact. The discipline helps create a framework that keeps track of all the project assets.&lt;br /&gt;
&lt;br /&gt;
==== Environment ====&lt;br /&gt;
&lt;br /&gt;
The purpose of the environment discipline, is to provide the development team with all the processes, tools and methods for supporting all developing activities. It is responsible for producing a Development Kit, able to provide guidelines and templates for customizing processes.&lt;br /&gt;
&lt;br /&gt;
== Why RUP - Best Practices ==&lt;br /&gt;
&lt;br /&gt;
RUP captures many of the “best practices” that are currently used in modern software development and more particularly in industry by successful organizations. The practices are:&lt;br /&gt;
&lt;br /&gt;
* Develop Software Iteratively&lt;br /&gt;
* Manage Requirements&lt;br /&gt;
* Use component-based architectures&lt;br /&gt;
* Visually model software&lt;br /&gt;
* Continuously verify software quality&lt;br /&gt;
* Control changes to software&lt;br /&gt;
&lt;br /&gt;
=== Develop Software iteratively ===&lt;br /&gt;
&lt;br /&gt;
Today’s high sophisticated software systems, consist of many and complex structures which make it nearly impossible to define the entire system from the very beginning, develop the entire solution and then test the product in the end. RUP uses an iterative approach that allows an increasing understanding of the problem and developing a step – by – step solution, over multiple iterations. Each iteration ends with an executable release, which enables continuous end - user involvement and feedback. As a result, the risks of the project are mitigated at an early stage and stakeholders are ensured that the project requirements are fulfilled.&lt;br /&gt;
&lt;br /&gt;
=== Manage requirements ===&lt;br /&gt;
&lt;br /&gt;
The requirements of a system include the description of the services that the system is able to provide and its operational constraints. RUP documents, organizes and tracks required functionality and constraints and easily communicates business requirements. The use – cases that are used in the process are an excellent way to ensure that requirements are actually those elements that drive the design, implementation and testing of software, making it more likely that the final system fulfills the stakeholders needs.&lt;br /&gt;
&lt;br /&gt;
=== Use component-based architectures ===&lt;br /&gt;
&lt;br /&gt;
Component-based architecture makes the system dynamic; components are independent from the system and interact with other components through well-defined interfaces. Their in-dependency from the system, gives them a great flexibility meaning that they can easily be added, updated or totally replaced. RUP supports component-based software development by providing a systematic approach to defining an architecture using new and existing components.&lt;br /&gt;
&lt;br /&gt;
=== Visually model software ===&lt;br /&gt;
&lt;br /&gt;
A model is an abstraction of reality that can help better comprehend large and complex systems. Visual abstractions help the development team to easily communicate different aspects of the software and see how all the components fit together. RUP uses the [http://www.uml.org/ Unified Modelling Language (UML)] standard which is a graphical language for visualizing and constructing the artifacts of a software-intensive system.&lt;br /&gt;
&lt;br /&gt;
=== Continuously verify software quality ===&lt;br /&gt;
&lt;br /&gt;
In software development, quality should always be reviewed with respect to the requirements based on reliability, functionality , application and system performance. In RUP, quality verification and assessment is built into the process, inside all activities, including all stakeholders and is not treated as a separate activity, performed by a separate group.&lt;br /&gt;
&lt;br /&gt;
=== Control changes to software ===&lt;br /&gt;
&lt;br /&gt;
A software system is developed by a number of teams or individuals, using different platforms and at times being in different locations. As a result, it is essential to somehow make sure that all the changes made in the system are synchronized and constantly verified. RUP ensures that all the individuals working in the project are well informed about any changes and everything is in sync. The process describes how to control, track and monitor changes to enable successful iterative development.&lt;br /&gt;
&lt;br /&gt;
== Limitations ==&lt;br /&gt;
&lt;br /&gt;
While being a complete methodology in itself with an emphasis on accurate documentation and quickly resolving project associated risks, RUP comes with a number of limitations.&lt;br /&gt;
&lt;br /&gt;
* In order for team members to start developing software under this methodology, they need to be &#039;&#039;&#039;experts&#039;&#039;&#039; in their respective fields.&lt;br /&gt;
* The development process can easily become too complex to handle.&lt;br /&gt;
* When working with cutting - edge projects that highly utilize new technology, components will not be able to be reused. &lt;br /&gt;
* While in theory integration throughout the process of software development sounds like a good thing, when working with particularly complex projects with multiple development streams, issues and significant confusion may rise during the stages of testing.&lt;br /&gt;
&lt;br /&gt;
== Conclusion ==&lt;br /&gt;
&lt;br /&gt;
The Rational Unified Process, is an exemplary method for addressing and mitigating risks from the very early stages, by rapidly developing an initial version of the system (prototype) that describes its architecture. There are not fixed requirements from the beginning but rather allows refining requirements , while the project progresses. It expects and actually deals with change pretty well while its main focus is the quality of the product and the degree to which it satisfies its end - users, throughout the project life-cycle. However, while being a complete and well documented methodology, it should be stressed that remains a very complex one. In order to increase the likelihood of success, while adopting this methodology, all the project members need to be &#039;&#039;&#039;experts&#039;&#039;&#039; in their respective fields. The method can easily become too difficult to learn and most importantly too difficult to apply.&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;br /&gt;
1) Rational Unified Process vs Microsoft Solutions Framework : A comparative study, Johan W.A Traa &amp;lt;br&amp;gt;&lt;br /&gt;
2) Rational Unified Process: Best Practices for Software Development Teams,  Rational Software white paper &amp;lt;br&amp;gt;&lt;br /&gt;
3) Planning a Project with the Rational Unified Process, David West &amp;lt;br&amp;gt;&lt;br /&gt;
4) Project Management Methodologies, Jason Charvat &amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Lessisv</name></author>
	</entry>
	<entry>
		<id>http://13.50.150.85/index.php?title=Rational_Unified_Process_(RUP)&amp;diff=14723</id>
		<title>Rational Unified Process (RUP)</title>
		<link rel="alternate" type="text/html" href="http://13.50.150.85/index.php?title=Rational_Unified_Process_(RUP)&amp;diff=14723"/>
		<updated>2015-09-26T12:05:37Z</updated>

		<summary type="html">&lt;p&gt;Lessisv: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The &#039;&#039;&#039;Rational Unified Process (RUP)&#039;&#039;&#039; is an iterative, &#039;&#039;&#039;software development methodology&#039;&#039;&#039;, firstly introduced by the [https://en.wikipedia.org/wiki/Rational_Software Rational Software Corporation] which was [http://www-03.ibm.com/press/us/en/pressrelease/314.wss acquired by IBM] in 2003. RUP is a disciplined approach to assign tasks within a development organization and software project teams. It was developed to ensure the production of &#039;&#039;&#039;high quality software&#039;&#039;&#039; by providing the development team with a set of &#039;&#039;&#039;guidelines, templates and tool mentors&#039;&#039;&#039;, for all the critical life-cycle activities within a project. This cluster of objects, form a knowledge base that is shared between all project team members. As a result, no matter what each member is working with (e.g testing, designing, managing), they all share a common language and view on how to develop software. Consequently, team productivity is boosted, in order to deliver software that can meet and exceed the needs and expectations of end-users, strictly following a predictable budget and schedule &amp;lt;ref name=&amp;quot;Ivar Jacobson, Grady Booch, and Jim Rumbaugh&amp;quot;&amp;gt;Ivar Jacobson, Grady Booch, and Jim Rumbaugh, Unified Software Development Process, Addison-Wesley, 1999.&amp;lt;/ref&amp;gt;. RUP is the most popular and extensively documented refinement of the [https://en.wikipedia.org/wiki/Unified_Process Unified Process], an iterative and incremental software development process framework. Other worth mentioning forms are the [https://en.wikipedia.org/wiki/OpenUP OpenUP] and [https://en.wikipedia.org/wiki/Agile_Unified_Process Agile Unified Process].&lt;br /&gt;
&lt;br /&gt;
== Process Overview ==&lt;br /&gt;
&lt;br /&gt;
[[File:RUP.png|450px|right|thumb| Figure 1. The iterative model graph shows how the process is structured along two dimensions]]&lt;br /&gt;
&lt;br /&gt;
The best possible way to describe the methodology is through a 2 - dimensional graph.&lt;br /&gt;
* The first dimension (horizontal axis) represents the &#039;&#039;&#039;dynamic aspect&#039;&#039;&#039; of the process. It expresses &#039;&#039;&#039;time&#039;&#039;&#039; in terms of &#039;&#039;&#039;phases&#039;&#039;&#039; and &#039;&#039;&#039;iterations&#039;&#039;&#039;. &lt;br /&gt;
* The second dimension (vertical axis) represents the &#039;&#039;&#039;static aspect&#039;&#039;&#039; of the process. It expresses &#039;&#039;&#039;workflows&#039;&#039;&#039; in terms of 6 core and 3 supporting &#039;&#039;&#039;disciplines&#039;&#039;&#039; (more on that on &amp;quot;Disciplines&amp;quot; section).&lt;br /&gt;
&lt;br /&gt;
=== Time Dimension - Phases and Iterations ===&lt;br /&gt;
When developing software, the project team goes through a multi-step process, from establishing a system&#039;s requirements to designing, implementing and finally maintaining the software with new releases. This is the software life cycle. RUP delicately breaks the software life cycle down to four consecutive phases.&lt;br /&gt;
&lt;br /&gt;
* Inception phase&lt;br /&gt;
* Elaboration phase&lt;br /&gt;
* Construction phase&lt;br /&gt;
* Transition phase&lt;br /&gt;
&lt;br /&gt;
Depending on the project, each of these phases can consist of one to a number of &#039;&#039;&#039;iterations&#039;&#039;&#039;. An iteration is defined as a complete development loop, resulting in a new product release. All the phases include a well-defined milestone, in order to be completed. In the end of every phase, the development team can evaluate whether all the key goals have been achieved, all stakeholders have been considered and the actual expenditures correspond with the planned ones.&lt;br /&gt;
&lt;br /&gt;
[[File:RUP_phases.png|550px|right|thumb| Figure 2. The four phases and milestones of a project]]&lt;br /&gt;
==== Inception Phase ====&lt;br /&gt;
The first phase is the inception phase. The focus of this phase, is understanding the scope of the project and studying if is both worth doing and possible to do. All the internal and external entities that the system will interact with are identified and the nature of the interaction is well defined at a high level. For this reason, the inception phase is primarily significant for new development projects. &lt;br /&gt;
The expected outcome of the inception phase includes :&lt;br /&gt;
&lt;br /&gt;
* A vision document: The document states the general vision of the project including its key requirements, features and main constraints.&lt;br /&gt;
* An initial use-case model (10%-20% complete)&lt;br /&gt;
* An initial project glossary&lt;br /&gt;
* An initial business case, including the business context, success criteria and a financial forecast.&lt;br /&gt;
* An initial risk assessment&lt;br /&gt;
* A project plan (phases and iterations)&lt;br /&gt;
* A business model (if necessary)&lt;br /&gt;
* Prototypes&lt;br /&gt;
&lt;br /&gt;
At the end of the inception phase lies the first major project milestone; the &#039;&#039;&#039;Lifecycle Objective Milestone&#039;&#039;&#039;.&lt;br /&gt;
The inception phase has five evaluation criteria:&lt;br /&gt;
&lt;br /&gt;
* Stakeholder concurrence on scope definition and cost/schedule estimates.&lt;br /&gt;
* Depth and breadth of any prototype that was developed.&lt;br /&gt;
* Actual expenditures versus planned ones.&lt;br /&gt;
* Requirements understanding.&lt;br /&gt;
* Credibility of the cost/schedule estimates, risks and priorities.&lt;br /&gt;
&lt;br /&gt;
If for any reason the project fails to pass this milestone, it can either be completely cancelled or re-designed to successfully meet the criteria.&lt;br /&gt;
 &lt;br /&gt;
==== Elaboration Phase ====&lt;br /&gt;
The second phase is the elaboration phase. The focus of this phase, is establishing a baseline to the architecture of the system, further developing the project plan and analyzing the problem domain while trying to mitigate the highest risk elements. In other words, this is the phase where the project starts to take shape. One of the most important characteristics of this phase, is the production of a component-based architectural prototype. The purpose of this prototype, is to address the critical use-cases that were identified in the previous phase, and hopefully expose the highest technical risks of the project. The expected outcome of the elaboration phase includes:&lt;br /&gt;
&lt;br /&gt;
* A use-case model (at least 80% complete) which will be able to identify all the actors and use-cases.&lt;br /&gt;
* Supplementary requirements (if any).&lt;br /&gt;
* A clear description of the software architecture.&lt;br /&gt;
* An architectural prototype.&lt;br /&gt;
* A more detailed risk assessment and business case.&lt;br /&gt;
* A development plan for the overall project.&lt;br /&gt;
* A preliminary user manual (optional).&lt;br /&gt;
&lt;br /&gt;
At the end of the elaboration phase lies the second major project milestone; the &#039;&#039;&#039;Lifecycle Architecture Milestone&#039;&#039;&#039;.&lt;br /&gt;
The elaboration phase has six evaluation criteria:&lt;br /&gt;
&lt;br /&gt;
* Is the vision stable enough?&lt;br /&gt;
* Is the system architecture stable enough?&lt;br /&gt;
* Have all the major risks been successfully identified and resolved?&lt;br /&gt;
* Is the plan for the construction phase accurate enough?&lt;br /&gt;
* Do all the stakeholders share the opinion that the vision can be achieved by executing the current plan?&lt;br /&gt;
* Is the actual vs planned resource expenditure in acceptable levels?&lt;br /&gt;
&lt;br /&gt;
If the project fails to pass the milestone, there is still time to be re-designed or even cancelled. However, when the project moves to the next phase the associated operation risks raise significantly and changes become much more difficult.&lt;br /&gt;
&lt;br /&gt;
==== Construction Phase====&lt;br /&gt;
The third phase is the construction phase. The focus of this phase, is to develop and integrate all the remaining components and application features into the product. In other words this is the phase where the vision is finally translated into a final stable product, which is based on the architecture that was developed during the previous phases. Most emphasize is given to resources, control and process management in order to fully optimize costs, schedules and quality. The existing prototype evolves via a number of iterations into a fully functional product that meets the stakeholders&#039; needs. The construction phase is usually the longest one of the project life cycle. The expected outcome of the construction phase includes:&lt;br /&gt;
&lt;br /&gt;
* First external release of the software.&lt;br /&gt;
* User manuals.&lt;br /&gt;
* A detailed description of the current release.&lt;br /&gt;
&lt;br /&gt;
At the end of the construction phase lies the third major project milestone; the &#039;&#039;&#039;Initial Operation Capability Milestone&#039;&#039;&#039;.&lt;br /&gt;
The construction phase has three evaluation criteria:&lt;br /&gt;
&lt;br /&gt;
* Is the software release stable enough to be given to the user community?&lt;br /&gt;
* Are all the stakeholders ready for the transition to the user community?&lt;br /&gt;
* Is the actual vs planned resource expenditure in acceptable levels?&lt;br /&gt;
&lt;br /&gt;
If the project fails to pass this milestone, transition may have to be postponed by one release.&lt;br /&gt;
&lt;br /&gt;
==== Transition Phase ====&lt;br /&gt;
The fourth and final phase is the transition phase. The focus of this phase is, as the word says, to transition the software product to the user community. It includes ensuring that the product has been developed to an acceptable quality level, by beta testing the software through the end users, and validating it against the stakeholders&#039; expectations. Once the product has been given for beta testing, a number of issues can arise, requiring the development of new releases (fixing bugs) and adding features that may have been postponed. The expected outcome of the transition phase includes:&lt;br /&gt;
&lt;br /&gt;
* Beta-testing to fix any major [https://en.wikipedia.org/wiki/Software_bug software bugs] and add any missing features.&lt;br /&gt;
* Conversion of operational databases&lt;br /&gt;
* Training of end users and maintainers.&lt;br /&gt;
* Marketing and distribution of the product.&lt;br /&gt;
&lt;br /&gt;
At the end of the transition phase lies the fourth and final major project milestone; the &#039;&#039;&#039;Product Release&#039;&#039;&#039;.&lt;br /&gt;
The transition phase has two evaluation criteria:&lt;br /&gt;
&lt;br /&gt;
* Are the end - users satisfied with the product?&lt;br /&gt;
* Is the actual vs planned resource expenditure in acceptable levels?&lt;br /&gt;
&lt;br /&gt;
==== Iterations ====&lt;br /&gt;
As stated before, every phase can consist of a number of iterations, depending on the project size and scope. RUP, in comparison to the traditional [https://en.wikipedia.org/wiki/Waterfall_model waterfall] approach, is heavily based on iterations. This gives a number of advantages and benefits to the project team, with the most important one being mitigating risks much more earlier in the project. Moreover, change is more manageable and there is normally a higher level of reuse. Finally, iterations ensure an overall high quality in the final product and that the project team can learn throughout the developing process.&lt;br /&gt;
&lt;br /&gt;
=== Workflow Dimension - Disciplines ===&lt;br /&gt;
&lt;br /&gt;
[[File:activities.png|350px|right|thumb| Figure 4. Individuals, Roles and Activities]]&lt;br /&gt;
[[File:workflows.png|350px|right|thumb| Figure 5. Example of a workflow]]&lt;br /&gt;
&lt;br /&gt;
A process describes &#039;&#039;&#039;who&#039;&#039;&#039; is doing &#039;&#039;&#039;what&#039;&#039;&#039;, &#039;&#039;&#039;how&#039;&#039;&#039; and &#039;&#039;&#039;when&#039;&#039;&#039;. RUP addresses those terms with four modelling elements; &#039;&#039;&#039;Roles&#039;&#039;&#039;, &#039;&#039;&#039;Activities&#039;&#039;&#039;, &#039;&#039;&#039;Artifacts&#039;&#039;&#039; and &#039;&#039;&#039;Workflows&#039;&#039;&#039; respectively. A &#039;&#039;&#039;role&#039;&#039;&#039;, formally addressed as a worker, describes the behavior and responsibilities of an individual or a group of individuals in order to produce an artifact. Throughout the development of a project, a person can play one or a number of roles. Some examples of roles are the system analyst, designer, tester. &#039;&#039;&#039;Activities&#039;&#039;&#039; are expressed through behaviors. An activity, is a job that a person performs through his role, as seen in Figure 4. The length of an activity may vary from a few hours to a number of days. Examples of activities are: Plan an operation - performed by the role of Project Manager or add a missing feature - performed by the role of a software developer. All activities produce a meaningful result, called an artifact. &#039;&#039;&#039;Artifacts&#039;&#039;&#039;, are the responsibilities of ones role or roles and express a piece of information that is produced, modified or even used by a process. They can act both as input or output of an activity. Examples of artifacts are the source code, the business case, the software architecture. The roles perform activities that can produce a sequence of artifacts, called &#039;&#039;&#039;workflows&#039;&#039;&#039;. Examples of workflows can be seen in Figure 5. &lt;br /&gt;
&lt;br /&gt;
RUP identifies nine core process workflows, called &#039;&#039;&#039;disciplines&#039;&#039;&#039;. Every discipline, addresses a set of activities and artifacts, based upon a set of skills that are common in an ICT project. These disciplines have the ability to arrange the activities and artifacts in such a way, to provide an understanding of the overall project from a waterfall perspective.&lt;br /&gt;
&lt;br /&gt;
There are six core &amp;quot;engineering&amp;quot; disciplines:&lt;br /&gt;
* Business Modelling Discipline&lt;br /&gt;
* Requirements Discipline&lt;br /&gt;
* Analysis and Design Discipline&lt;br /&gt;
* Implementation Discipline&lt;br /&gt;
* Test Discipline&lt;br /&gt;
* Deployment Discipline&lt;br /&gt;
&lt;br /&gt;
And three core &amp;quot;supporting&amp;quot; disciplines:&lt;br /&gt;
* Project Management Discipline&lt;br /&gt;
* Configuration and Change Management Discipline&lt;br /&gt;
* Environment Discipline&lt;br /&gt;
&lt;br /&gt;
==== Business Modelling ====&lt;br /&gt;
&lt;br /&gt;
Miscommunication between the software engineering community and the business engineering community is one of the most common problems among most business engineering efforts. This means that the output from software development efforts is not correctly used as input to the business engineering and vice versa. The purpose of the Business Modelling discipline is to provide a common language between the two communities and create a direct coupling between software and business models. All business processes are documented using &amp;quot;use cases&amp;quot;. This assures that all stakeholders share the same understanding of the demanding organization.&lt;br /&gt;
&lt;br /&gt;
==== Requirements ====&lt;br /&gt;
The purpose of the requirements discipline is to describe in detail &#039;&#039;&#039;what&#039;&#039;&#039; the system should do. Based on that, a Vision document is created where required functionality and constraints are documented. Moreover, actors (end - users) and use cases (behaviors of the system) are identified. Use cases are described in detail and each description clearly shows how the system interacts with the actors. This way an agreement is established between the customers and the rest of the stakeholders regarding the system&#039;s capabilities, user-interface and the end user&#039;s needs.&lt;br /&gt;
&lt;br /&gt;
==== Analysis and Design ====&lt;br /&gt;
&lt;br /&gt;
The purpose of the Analysis and Design discipline it to investigate &#039;&#039;&#039;how&#039;&#039;&#039; the system requirements will be translated into a detailed implementation plan. The system needs to:&lt;br /&gt;
* Perform exactly as described in the use-case descriptions.&lt;br /&gt;
* Fulfill all requirements.&lt;br /&gt;
* Have a robust structure.&lt;br /&gt;
&lt;br /&gt;
Analysis and Design result in the creation of a &#039;&#039;&#039;design model&#039;&#039;&#039;. The design model is an abstraction of the system&#039;s architecture and acts as a guide of how the source code should be finally written and structured.&lt;br /&gt;
&lt;br /&gt;
==== Implementation ====&lt;br /&gt;
The purpose of the Implementation discipline is to:&lt;br /&gt;
&lt;br /&gt;
* Arrange the code into subsystems, organized in layers.&lt;br /&gt;
* Implement classes and objects in terms of components.&lt;br /&gt;
* Uni-test the developed components to ensure quality.&lt;br /&gt;
* Integrate the results into an executable system.&lt;br /&gt;
&lt;br /&gt;
The whole system can be realized as an implementation of various components. RUP enables the integration of those components, in a revolutionary way, making the system easier to maintain and increasing the possibilities for future re-use.&lt;br /&gt;
&lt;br /&gt;
==== Test ====&lt;br /&gt;
&lt;br /&gt;
In the implementation discipline, all the developed components were uni-tested individually and were integrated into the system. The purpose of the Test discipline is to assess the system as a whole and verify the product quality. It is a mechanism to verify the smooth interaction between the various components, their proper integration into the system and finally ensure that all requirements have been successfully implemented. All tests are carried out along 4 quality dimensions:&lt;br /&gt;
* Functionality.&lt;br /&gt;
* Reliability.&lt;br /&gt;
* Application Performance.&lt;br /&gt;
* System Performance.&lt;br /&gt;
&lt;br /&gt;
==== Deployment ====&lt;br /&gt;
&lt;br /&gt;
The purpose of the Deployment discipline is primarily to develop product releases and distribute the software to the end – users. More specifically the Deployment discipline focuses at:&lt;br /&gt;
&lt;br /&gt;
* Developing external software releases&lt;br /&gt;
* Distributing the software&lt;br /&gt;
* Installing the software&lt;br /&gt;
* Providing help to the end – users&lt;br /&gt;
* Creating an up-to-date user manual&lt;br /&gt;
* Conducting beta testing&lt;br /&gt;
&lt;br /&gt;
==== Project Management ====&lt;br /&gt;
&lt;br /&gt;
The purpose of the Project Management discipline, is to successfully balance competing objectives, manage and mitigate risks and finally handle any constraints on delivering the product. Project management, ideally provides:&lt;br /&gt;
&lt;br /&gt;
* A framework for managing software-intensive projects.&lt;br /&gt;
* A framework to successfully manage risks.&lt;br /&gt;
* A framework to plan, execute and monitor projects.&lt;br /&gt;
&lt;br /&gt;
While the discipline does not guarantee success, the odds of delivering successful software are greatly improved.&lt;br /&gt;
&lt;br /&gt;
==== Configuration and Change Management ====&lt;br /&gt;
&lt;br /&gt;
The purpose of the Configuration and Change Management Discipline is to control, maintain and configure all the various artifacts that are produced by the different actors that are working on a project. During the software development life cycle, artifacts are regularly updated (changed). In order to understand the current state of an artifact, it is very important to keep track of its location and history; what was the reason and who decided to change the artifact. The discipline helps create a framework that keeps track of all the project assets.&lt;br /&gt;
&lt;br /&gt;
==== Environment ====&lt;br /&gt;
&lt;br /&gt;
The purpose of the environment discipline, is to provide the development team with all the processes, tools and methods for supporting all developing activities. It is responsible for producing a Development Kit, able to provide guidelines and templates for customizing processes.&lt;br /&gt;
&lt;br /&gt;
== Why RUP - Best Practices ==&lt;br /&gt;
&lt;br /&gt;
RUP captures many of the “best practices” that are currently used in modern software development and more particularly in industry by successful organizations. The practices are:&lt;br /&gt;
&lt;br /&gt;
* Develop Software Iteratively&lt;br /&gt;
* Manage Requirements&lt;br /&gt;
* Use component-based architectures&lt;br /&gt;
* Visually model software&lt;br /&gt;
* Continuously verify software quality&lt;br /&gt;
* Control changes to software&lt;br /&gt;
&lt;br /&gt;
=== Develop Software iteratively ===&lt;br /&gt;
&lt;br /&gt;
Today’s high sophisticated software systems, consist of many and complex structures which make it nearly impossible to define the entire system from the very beginning, develop the entire solution and then test the product in the end. RUP uses an iterative approach that allows an increasing understanding of the problem and developing a step – by – step solution, over multiple iterations. Each iteration ends with an executable release, which enables continuous end - user involvement and feedback. As a result, the risks of the project are mitigated at an early stage and stakeholders are ensured that the project requirements are fulfilled.&lt;br /&gt;
&lt;br /&gt;
=== Manage requirements ===&lt;br /&gt;
&lt;br /&gt;
The requirements of a system include the description of the services that the system is able to provide and its operational constraints. RUP documents, organizes and tracks required functionality and constraints and easily communicates business requirements. The use – cases that are used in the process are an excellent way to ensure that requirements are actually those elements that drive the design, implementation and testing of software, making it more likely that the final system fulfills the stakeholders needs.&lt;br /&gt;
&lt;br /&gt;
=== Use component-based architectures ===&lt;br /&gt;
&lt;br /&gt;
Component-based architecture makes the system dynamic; components are independent from the system and interact with other components through well-defined interfaces. Their in-dependency from the system, gives them a great flexibility meaning that they can easily be added, updated or totally replaced. RUP supports component-based software development by providing a systematic approach to defining an architecture using new and existing components.&lt;br /&gt;
&lt;br /&gt;
=== Visually model software ===&lt;br /&gt;
&lt;br /&gt;
A model is an abstraction of reality that can help better comprehend large and complex systems. Visual abstractions help the development team to easily communicate different aspects of the software and see how all the components fit together. RUP uses the [http://www.uml.org/ Unified Modelling Language (UML)] standard which is a graphical language for visualizing and constructing the artifacts of a software-intensive system.&lt;br /&gt;
&lt;br /&gt;
=== Continuously verify software quality ===&lt;br /&gt;
&lt;br /&gt;
In software development, quality should always be reviewed with respect to the requirements based on reliability, functionality , application and system performance. In RUP, quality verification and assessment is built into the process, inside all activities, including all stakeholders and is not treated as a separate activity, performed by a separate group.&lt;br /&gt;
&lt;br /&gt;
=== Control changes to software ===&lt;br /&gt;
&lt;br /&gt;
A software system is developed by a number of teams or individuals, using different platforms and at times being in different locations. As a result, it is essential to somehow make sure that all the changes made in the system are synchronized and constantly verified. RUP ensures that all the individuals working in the project are well informed about any changes and everything is in sync. The process describes how to control, track and monitor changes to enable successful iterative development.&lt;br /&gt;
&lt;br /&gt;
== Limitations ==&lt;br /&gt;
&lt;br /&gt;
While being a complete methodology in itself with an emphasis on accurate documentation and quickly resolving project associated risks, RUP comes with a number of limitations.&lt;br /&gt;
&lt;br /&gt;
* In order for team members to start developing software under this methodology, they need to be &#039;&#039;&#039;experts&#039;&#039;&#039; in their respective fields.&lt;br /&gt;
* The development process can easily become too complex to handle.&lt;br /&gt;
* When working with cutting - edge projects that highly utilize new technology, components will not be able to be reused. &lt;br /&gt;
* While in theory integration throughout the process of software development sounds like a good thing, when working with particularly complex projects with multiple development streams, issues and significant confusion may rise during the stages of testing.&lt;br /&gt;
&lt;br /&gt;
== Conclusion ==&lt;br /&gt;
&lt;br /&gt;
The Rational Unified Process, is an exemplary method for addressing and mitigating risks from the very early stages, by rapidly developing an initial version of the system (prototype) that describes its architecture. There are not fixed requirements from the beginning but rather allows refining requirements , while the project progresses. It expects and actually deals with change pretty well while its main focus is the quality of the product and the degree to which it satisfies its end - users, throughout the project life-cycle. However, while being a complete and well documented methodology, it should be stressed that remains a very complex one. In order to increase the likelihood of success, while adopting this methodology, all the project members need to be &#039;&#039;&#039;experts&#039;&#039;&#039; in their respective fields. The method can easily become too difficult to learn and most importantly too difficult to apply.&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
1) Rational Unified Process vs Microsoft Solutions Framework : A comparative study, Johan W.A Traa &amp;lt;br&amp;gt;&lt;br /&gt;
2) Rational Unified Process: Best Practices for Software Development Teams,  Rational Software white paper &amp;lt;br&amp;gt;&lt;br /&gt;
3) Planning a Project with the Rational Unified Process, David West &amp;lt;br&amp;gt;&lt;br /&gt;
4) Project Management Methodologies, Jason Charvat &amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Lessisv</name></author>
	</entry>
	<entry>
		<id>http://13.50.150.85/index.php?title=Talk:Theory_of_Constraint&amp;diff=13199</id>
		<title>Talk:Theory of Constraint</title>
		<link rel="alternate" type="text/html" href="http://13.50.150.85/index.php?title=Talk:Theory_of_Constraint&amp;diff=13199"/>
		<updated>2015-09-22T23:24:42Z</updated>

		<summary type="html">&lt;p&gt;Lessisv: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Josef: Jane, I like the idea. Make sure to stick to the structure we propose for &amp;quot;methods&amp;quot; articles. I am looking forward to reading about the application of TOC in project management!&lt;br /&gt;
&lt;br /&gt;
===Reviewer 2, lessisv===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Overall overview&#039;&#039;&#039;.&lt;br /&gt;
By the time the review was made, there were not Wiki functions used or figures. The author provided a word document to &lt;br /&gt;
review instead. The topic is a really interesting one to look into and the article so far seems to deliver what is &lt;br /&gt;
expected. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Formal aspects.&#039;&#039;&#039;&lt;br /&gt;
The article presents some syntax, grammatical and typing errors, but since the article is not in its final form , i am sure that&lt;br /&gt;
the author will correct them. The figures look good and help illustrating what is written in text. However some of the tables&lt;br /&gt;
(presented in the word document) seem to hold a lot of information inside and are a bit difficult to read. When writing in wiki&lt;br /&gt;
it would be better if this information is presented in a cleaner way.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Content aspects.&#039;&#039;&#039; &amp;lt;br&amp;gt;&lt;br /&gt;
The article consists of 2200 words, so there is still room for additions, as far as the content is concerned. The author uses quiet&lt;br /&gt;
a few references, which make the whole article look really solid. I also liked that you looked at the topic from 2 different perspectives.&lt;br /&gt;
Your limitations section was a bit difficult to read - check your syntax.&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039; Conclusion and advices.&#039;&#039;&#039; &amp;lt;br&amp;gt;&lt;br /&gt;
All in all an interesting article, although a shame that i could not read it through the wiki and see it in its full potential. As far as i &lt;br /&gt;
can tell this is not close to the final version as the syntax is a bit confusing in various parts among the article. While what you write looks&lt;br /&gt;
solid (always backed up with references), is a bit hard to follow your writing. I would suggest to make it a bit &amp;quot;easier in the eyes&amp;quot; so that &lt;br /&gt;
the reader does not lose interest.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Reviewer 3, Damien==&lt;br /&gt;
This article was accessed the 22/09/2015 16:00&lt;br /&gt;
&lt;br /&gt;
*Overall overview. &lt;br /&gt;
There are no Wiki functions used and no figures. However a word version was available for this review.&lt;br /&gt;
The amount of text doesn’t fulfil the 3000 words required, so addition have to be made in terms of content. The plan and the structure of the article allow a reader to fully understand the concept without specific prerequisite knowledge. &lt;br /&gt;
&lt;br /&gt;
*Formal aspect: &lt;br /&gt;
Mistakes : &lt;br /&gt;
&lt;br /&gt;
“an” =&amp;gt; and in the Abstract&lt;br /&gt;
&lt;br /&gt;
“ ) “ in 1.1 without “ ( “&lt;br /&gt;
&lt;br /&gt;
“TOC in very process”&lt;br /&gt;
&lt;br /&gt;
I’m quite sure it is “Six Sigma” instead of “Sex Sigma”.&lt;br /&gt;
&lt;br /&gt;
I think that the referencing throughout the article is really well done. The flow of the article makes it quite easy to read overall, but some sentences should be shorter or rewritten for example : &lt;br /&gt;
“The rope is a signal generated by the constraint indicating that some CTs have been consumed which triggers the start for new CTs to be processed in the flow.”&lt;br /&gt;
Basically I think that some work on the syntax have to be done.&lt;br /&gt;
Finally I think the presentation is various and not too monotonous which is really great.  &lt;br /&gt;
 &lt;br /&gt;
*Schemas and photos&lt;br /&gt;
I believe the tables furnished interesting content but gather a lot of text and could therefore be resumed or more precisely introduced. &lt;br /&gt;
The positioning of the figures and tables cannot be judge at this point but the word version seems great to me.&lt;br /&gt;
&lt;br /&gt;
*Links, connections and comprehension. &lt;br /&gt;
The article describes step by step the methods while considering literature reference. I think that provides a simple and great comprehension of the topic. &lt;br /&gt;
The example is more than welcomed in the article, in order to complete the content, it may be a good idea to try to find another spot in order to introduce a practical example of how TOC can be used in a project ( even if it is necessary to oversimplify a situation).   &lt;br /&gt;
&lt;br /&gt;
*Bibliography &lt;br /&gt;
The references seem to be very serious one. &lt;br /&gt;
The number of references is satisfying at this point, simply remember to explain for each one how it is relevant to the topic and why it should be consulted by the reader.  &lt;br /&gt;
&lt;br /&gt;
*Conclusion and advices: &lt;br /&gt;
The subject is fully treated and well presented with a reduced amount of words, therefore it could be great to add more content regarding the possible extension or future development of the methods, original applications or your own point of view well argued.&lt;br /&gt;
On the other hand, adding more examples in order to make the theory more accessible and visible can, I think, also be a great option. It could also clarify the connection with program, project or portfolio management.&lt;br /&gt;
Of course, the translation from Word to Wiki has to be done properly in order to ensure a good visibility for the article.&lt;/div&gt;</summary>
		<author><name>Lessisv</name></author>
	</entry>
	<entry>
		<id>http://13.50.150.85/index.php?title=Talk:Benchmarking_in_Project_Management&amp;diff=13175</id>
		<title>Talk:Benchmarking in Project Management</title>
		<link rel="alternate" type="text/html" href="http://13.50.150.85/index.php?title=Talk:Benchmarking_in_Project_Management&amp;diff=13175"/>
		<updated>2015-09-22T22:31:24Z</updated>

		<summary type="html">&lt;p&gt;Lessisv: /* Reviewer 3, lessisv */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Anna: Just a few pointers for you article: It is very important that you keep you focus on the tool/method itself and that you really relate it properly to the overall topic of project management. The article you are making should be a contribution that others can read if they ever need this specific tool when managing a project. So maybe focus more on the use of benchmarking within project management and a little less on the overall use of benchmarking in the external/internal environment of a company.&lt;br /&gt;
&lt;br /&gt;
Reviewer 1, S997303&lt;br /&gt;
Hi Dimak&lt;br /&gt;
&lt;br /&gt;
•	Benchmarking is a very interesting topic, and it seems a bit difficult to structure, but I think you do it nicely and according to the requirements for the method article.&lt;br /&gt;
&lt;br /&gt;
•	Your point 2.2 is very fine and I think it is relevant to describe the development. I like your figure 2 with benchmarking generations, but the figure could be more readable, especially if you print out the article the figure is blurred.&lt;br /&gt;
&lt;br /&gt;
•	Also Figure 4 could be a little bigger and clearer, especially because I am curious to read the benchmarking parameters in the score card chart.&lt;br /&gt;
&lt;br /&gt;
•	In section 3 I could suggest you to consider creating a table listing different phases in project management and the benchmarking tools to be recommended in the different phases. This could provide the reader with an overview of how to use benchmarking in different PM phases.&lt;br /&gt;
&lt;br /&gt;
•	In section 3.1 I have a question because I am not 100% clear if “Iron triangle” and “Square Root” are tools which are used for benchmarking today, or if you are actually suggesting to consider to use these as benchmarking tools if adapted to PM.&lt;br /&gt;
&lt;br /&gt;
•	The content of your article in very interesting and you guide your reader, however, you could consider tightening up your writing style a little bit to make the text a little shorter and more precise. E.g. in section two you have a sentence of 54 words.&lt;br /&gt;
&lt;br /&gt;
•	 I miss the listing of all the references you refer to, but I am sure you have overseen this being under time pressure. Also remember annotations. &lt;br /&gt;
&lt;br /&gt;
Good luck with the completion of your article.&lt;br /&gt;
Jane&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Reviewer 3, lessisv===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Overall overview&#039;&#039;&#039;.&lt;br /&gt;
This is a very interesting topic and the article totally succeeds in presenting it in a very clear and straightforward&lt;br /&gt;
way to the reader.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Formal aspects.&#039;&#039;&#039;&lt;br /&gt;
The writing is very clean, and precise vocabulary is used. All figures make sense and are well explained through the&lt;br /&gt;
text.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Content aspects.&#039;&#039;&#039;&lt;br /&gt;
The article clearly relates to project management and in fact dedicates a whole section on it &amp;quot;Benchmarking in Project Management&amp;quot;. It takes full advantage of the word limit (3000 words) and the content is presented in a very logical way. Excellent use of references throughout the article. I also really liked the detailed &#039;&#039;&#039;Limitations&#039;&#039;&#039; section as it is very important for the reader not only to understand what a method can do, but also when is not advised to use.&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039; Conclusion and advices.&#039;&#039;&#039;&lt;br /&gt;
All in all a well structured article, giving the reader to understand the topic in a very satisfactory depth. My only advice would be to maybe use bullet points to better illustrate some parts. For example after Figure 3, when talking about the different phases that benchmarking could be applied, it would be cleaner for the reader to have it presented&lt;br /&gt;
through bullet points.&lt;br /&gt;
eg.&lt;br /&gt;
*Early on benchmarking&lt;br /&gt;
*Benchmarking during project execution&lt;br /&gt;
*Post-project benchmarking&lt;/div&gt;</summary>
		<author><name>Lessisv</name></author>
	</entry>
	<entry>
		<id>http://13.50.150.85/index.php?title=Talk:Benchmarking_in_Project_Management&amp;diff=13123</id>
		<title>Talk:Benchmarking in Project Management</title>
		<link rel="alternate" type="text/html" href="http://13.50.150.85/index.php?title=Talk:Benchmarking_in_Project_Management&amp;diff=13123"/>
		<updated>2015-09-22T21:29:05Z</updated>

		<summary type="html">&lt;p&gt;Lessisv: /* Reviewer 3, lessisv */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Anna: Just a few pointers for you article: It is very important that you keep you focus on the tool/method itself and that you really relate it properly to the overall topic of project management. The article you are making should be a contribution that others can read if they ever need this specific tool when managing a project. So maybe focus more on the use of benchmarking within project management and a little less on the overall use of benchmarking in the external/internal environment of a company.&lt;br /&gt;
&lt;br /&gt;
Reviewer 1, S997303&lt;br /&gt;
Hi Dimak&lt;br /&gt;
&lt;br /&gt;
•	Benchmarking is a very interesting topic, and it seems a bit difficult to structure, but I think you do it nicely and according to the requirements for the method article.&lt;br /&gt;
&lt;br /&gt;
•	Your point 2.2 is very fine and I think it is relevant to describe the development. I like your figure 2 with benchmarking generations, but the figure could be more readable, especially if you print out the article the figure is blurred.&lt;br /&gt;
&lt;br /&gt;
•	Also Figure 4 could be a little bigger and clearer, especially because I am curious to read the benchmarking parameters in the score card chart.&lt;br /&gt;
&lt;br /&gt;
•	In section 3 I could suggest you to consider creating a table listing different phases in project management and the benchmarking tools to be recommended in the different phases. This could provide the reader with an overview of how to use benchmarking in different PM phases.&lt;br /&gt;
&lt;br /&gt;
•	In section 3.1 I have a question because I am not 100% clear if “Iron triangle” and “Square Root” are tools which are used for benchmarking today, or if you are actually suggesting to consider to use these as benchmarking tools if adapted to PM.&lt;br /&gt;
&lt;br /&gt;
•	The content of your article in very interesting and you guide your reader, however, you could consider tightening up your writing style a little bit to make the text a little shorter and more precise. E.g. in section two you have a sentence of 54 words.&lt;br /&gt;
&lt;br /&gt;
•	 I miss the listing of all the references you refer to, but I am sure you have overseen this being under time pressure. Also remember annotations. &lt;br /&gt;
&lt;br /&gt;
Good luck with the completion of your article.&lt;br /&gt;
Jane&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Reviewer 3, lessisv===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Overall overview&#039;&#039;&#039;.&lt;br /&gt;
This is a very interesting topic and the article totally succeeds in presenting it in a very clear and straightforward&lt;br /&gt;
way to the reader.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Formal aspects.&#039;&#039;&#039;&lt;br /&gt;
The writing is very clean, and precise vocabulary is used. All figures make sense and are well explained through the&lt;br /&gt;
text.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Content aspects.&#039;&#039;&#039;&lt;br /&gt;
The article clearly relates to project management and in fact dedicates a whole section on it &amp;quot;Benchmarking in Project Management&amp;quot;. It takes full advantage of the word limit (3000 words) and the content is presented in a very logical way. Excellent use of references throughout the article. I also really liked the detailed &#039;&#039;&#039;Limitations&#039;&#039;&#039; section as it is very important for the reader not only to understand what a method can do, but also when is not advised to use.&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039; Conclusion and advices.&#039;&#039;&#039;&lt;br /&gt;
All in all a well structured article, giving the reader to understand the topic in a satisfactory depth. My only advice would be to maybe use bullet points to better illustrate some parts. For example after Figure 3, when talking about the different phases that benchmarking could be applied, it would be cleaner for the reader to have it presented&lt;br /&gt;
through bullet points.&lt;br /&gt;
eg.&lt;br /&gt;
*Early on benchmarking&lt;br /&gt;
*Benchmarking during project execution&lt;br /&gt;
*Post-project benchmarking&lt;/div&gt;</summary>
		<author><name>Lessisv</name></author>
	</entry>
	<entry>
		<id>http://13.50.150.85/index.php?title=Talk:Benchmarking_in_Project_Management&amp;diff=13121</id>
		<title>Talk:Benchmarking in Project Management</title>
		<link rel="alternate" type="text/html" href="http://13.50.150.85/index.php?title=Talk:Benchmarking_in_Project_Management&amp;diff=13121"/>
		<updated>2015-09-22T21:28:27Z</updated>

		<summary type="html">&lt;p&gt;Lessisv: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Anna: Just a few pointers for you article: It is very important that you keep you focus on the tool/method itself and that you really relate it properly to the overall topic of project management. The article you are making should be a contribution that others can read if they ever need this specific tool when managing a project. So maybe focus more on the use of benchmarking within project management and a little less on the overall use of benchmarking in the external/internal environment of a company.&lt;br /&gt;
&lt;br /&gt;
Reviewer 1, S997303&lt;br /&gt;
Hi Dimak&lt;br /&gt;
&lt;br /&gt;
•	Benchmarking is a very interesting topic, and it seems a bit difficult to structure, but I think you do it nicely and according to the requirements for the method article.&lt;br /&gt;
&lt;br /&gt;
•	Your point 2.2 is very fine and I think it is relevant to describe the development. I like your figure 2 with benchmarking generations, but the figure could be more readable, especially if you print out the article the figure is blurred.&lt;br /&gt;
&lt;br /&gt;
•	Also Figure 4 could be a little bigger and clearer, especially because I am curious to read the benchmarking parameters in the score card chart.&lt;br /&gt;
&lt;br /&gt;
•	In section 3 I could suggest you to consider creating a table listing different phases in project management and the benchmarking tools to be recommended in the different phases. This could provide the reader with an overview of how to use benchmarking in different PM phases.&lt;br /&gt;
&lt;br /&gt;
•	In section 3.1 I have a question because I am not 100% clear if “Iron triangle” and “Square Root” are tools which are used for benchmarking today, or if you are actually suggesting to consider to use these as benchmarking tools if adapted to PM.&lt;br /&gt;
&lt;br /&gt;
•	The content of your article in very interesting and you guide your reader, however, you could consider tightening up your writing style a little bit to make the text a little shorter and more precise. E.g. in section two you have a sentence of 54 words.&lt;br /&gt;
&lt;br /&gt;
•	 I miss the listing of all the references you refer to, but I am sure you have overseen this being under time pressure. Also remember annotations. &lt;br /&gt;
&lt;br /&gt;
Good luck with the completion of your article.&lt;br /&gt;
Jane&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Reviewer 3, lessisv===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Overall overview&#039;&#039;&#039;.&lt;br /&gt;
This is a very interesting topic and the article totally succeeds in presenting it in a very clear and straightforward&lt;br /&gt;
way to the reader.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Formal aspects.&#039;&#039;&#039;&lt;br /&gt;
The writing is very clean, and precise vocabulary is used. All figures make sense and are well explained through the&lt;br /&gt;
text.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Content aspects.&#039;&#039;&#039;&lt;br /&gt;
The article clearly relates to project management and in fact dedicates a whole section on it &amp;quot;Benchmarking in Project Management&amp;quot;. I takes full advantage of the word limit (3000 words) and the content is presented in a very logical way. Excellent use of references throughout the article. I also really liked the detailed &#039;&#039;&#039;Limitations&#039;&#039;&#039; section as it is very important for the reader not only to understand what a method can do, but also when is not advised to use.&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039; Conclusion and advices.&#039;&#039;&#039;&lt;br /&gt;
All in all a well structured article, giving the reader to understand the topic in a satisfactory depth. My only advice would be to maybe use bullet points to better illustrate some parts. For example after Figure 3, when talking about the different phases that benchmarking could be applied, it would be cleaner for the reader to have it presented&lt;br /&gt;
through bullet points.&lt;br /&gt;
eg.&lt;br /&gt;
*Early on benchmarking&lt;br /&gt;
*Benchmarking during project execution&lt;br /&gt;
*Post-project benchmarking&lt;/div&gt;</summary>
		<author><name>Lessisv</name></author>
	</entry>
	<entry>
		<id>http://13.50.150.85/index.php?title=Rational_Unified_Process_(RUP)&amp;diff=12736</id>
		<title>Rational Unified Process (RUP)</title>
		<link rel="alternate" type="text/html" href="http://13.50.150.85/index.php?title=Rational_Unified_Process_(RUP)&amp;diff=12736"/>
		<updated>2015-09-22T15:18:11Z</updated>

		<summary type="html">&lt;p&gt;Lessisv: /* Requirements */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The &#039;&#039;&#039;Rational Unified Process (RUP)&#039;&#039;&#039; is an iterative, &#039;&#039;&#039;software development methodology&#039;&#039;&#039;, firstly introduced by the [https://en.wikipedia.org/wiki/Rational_Software Rational Software Corporation] which was [http://www-03.ibm.com/press/us/en/pressrelease/314.wss acquired by IBM] in 2003. RUP is a disciplined approach to assign tasks within a development organization and software project teams. It was developed to ensure the production of &#039;&#039;&#039;high quality software&#039;&#039;&#039; by providing the development team with a set of &#039;&#039;&#039;guidelines, templates and tool mentors&#039;&#039;&#039;, for all the critical life-cycle activities within a project. This cluster of objects, form a knowledge base that is shared between all project team members. As a result, no matter what each member is working with (e.g testing, designing, managing), they all share a common language and view on how to develop software. Consequently, team productivity is boosted, in order to deliver software that can meet and exceed the needs and expectations of end-users, strictly following a predictable budget and schedule. RUP is the most popular and extensively documented refinement of the [https://en.wikipedia.org/wiki/Unified_Process Unified Process], an iterative and incremental software development process framework. Other worth mentioning forms are the [https://en.wikipedia.org/wiki/OpenUP OpenUP] and [https://en.wikipedia.org/wiki/Agile_Unified_Process Agile Unified Process].&lt;br /&gt;
&lt;br /&gt;
== Process Overview ==&lt;br /&gt;
&lt;br /&gt;
[[File:RUP.png|450px|right|thumb| Figure 1. The iterative model graph shows how the process is structured along two dimensions]]&lt;br /&gt;
&lt;br /&gt;
The best possible way to describe the methodology is through a 2 - dimensional graph.&lt;br /&gt;
* The first dimension (horizontal axis) represents the &#039;&#039;&#039;dynamic aspect&#039;&#039;&#039; of the process. It expresses &#039;&#039;&#039;time&#039;&#039;&#039; in terms of &#039;&#039;&#039;phases&#039;&#039;&#039; and &#039;&#039;&#039;iterations&#039;&#039;&#039;. &lt;br /&gt;
* The second dimension (vertical axis) represents the &#039;&#039;&#039;static aspect&#039;&#039;&#039; of the process. It expresses &#039;&#039;&#039;workflows&#039;&#039;&#039; in terms of 6 core and 3 supporting &#039;&#039;&#039;disciplines&#039;&#039;&#039; (more on that on &amp;quot;Disciplines&amp;quot; section).&lt;br /&gt;
&lt;br /&gt;
=== Time Dimension - Phases and Iterations ===&lt;br /&gt;
When developing software, the project team goes through a multi-step process, from establishing a system&#039;s requirements to designing, implementing and finally maintaining the software with new releases. This is the software life cycle. RUP delicately breaks the software life cycle down to four consecutive phases.&lt;br /&gt;
&lt;br /&gt;
* Inception phase&lt;br /&gt;
* Elaboration phase&lt;br /&gt;
* Construction phase&lt;br /&gt;
* Transition phase&lt;br /&gt;
&lt;br /&gt;
Depending on the project, each of these phases can consist of one to a number of &#039;&#039;&#039;iterations&#039;&#039;&#039;. An iteration is defined as a complete development loop, resulting in a new product release. All the phases include a well-defined milestone, in order to be completed. In the end of every phase, the development team can evaluate whether all the key goals have been achieved, all stakeholders have been considered and the actual expenditures correspond with the planned ones.&lt;br /&gt;
&lt;br /&gt;
[[File:RUP_phases.png|550px|right|thumb| Figure 2. The four phases and milestones of a project]]&lt;br /&gt;
==== Inception Phase ====&lt;br /&gt;
The first phase is the inception phase. The focus of this phase, is understanding the scope of the project and studying if is both worth doing and possible to do. All the internal and external entities that the system will interact with are identified and the nature of the interaction is well defined at a high level. For this reason, the inception phase is primarily significant for new development projects. &lt;br /&gt;
The expected outcome of the inception phase includes :&lt;br /&gt;
&lt;br /&gt;
* A vision document: The document states the general vision of the project including its key requirements, features and main constraints.&lt;br /&gt;
* An initial use-case model (10%-20% complete)&lt;br /&gt;
* An initial project glossary&lt;br /&gt;
* An initial business case, including the business context, success criteria and a financial forecast.&lt;br /&gt;
* An initial risk assessment&lt;br /&gt;
* A project plan (phases and iterations)&lt;br /&gt;
* A business model (if necessary)&lt;br /&gt;
* Prototypes&lt;br /&gt;
&lt;br /&gt;
At the end of the inception phase lies the first major project milestone; the &#039;&#039;&#039;Lifecycle Objective Milestone&#039;&#039;&#039;.&lt;br /&gt;
The inception phase has five evaluation criteria:&lt;br /&gt;
&lt;br /&gt;
* Stakeholder concurrence on scope definition and cost/schedule estimates.&lt;br /&gt;
* Depth and breadth of any prototype that was developed.&lt;br /&gt;
* Actual expenditures versus planned ones.&lt;br /&gt;
* Requirements understanding.&lt;br /&gt;
* Credibility of the cost/schedule estimates, risks and priorities.&lt;br /&gt;
&lt;br /&gt;
If for any reason the project fails to pass this milestone, it can either be completely cancelled or re-designed to successfully meet the criteria.&lt;br /&gt;
 &lt;br /&gt;
==== Elaboration Phase ====&lt;br /&gt;
The second phase is the elaboration phase. The focus of this phase, is establishing a baseline to the architecture of the system, further developing the project plan and analyzing the problem domain while trying to mitigate the highest risk elements. In other words, this is the phase where the project starts to take shape. One of the most important characteristics of this phase, is the production of a component-based architectural prototype. The purpose of this prototype, is to address the critical use-cases that were identified in the previous phase, and hopefully expose the highest technical risks of the project. The expected outcome of the elaboration phase includes:&lt;br /&gt;
&lt;br /&gt;
* A use-case model (at least 80% complete) which will be able to identify all the actors and use-cases.&lt;br /&gt;
* Supplementary requirements (if any).&lt;br /&gt;
* A clear description of the software architecture.&lt;br /&gt;
* An architectural prototype.&lt;br /&gt;
* A more detailed risk assessment and business case.&lt;br /&gt;
* A development plan for the overall project.&lt;br /&gt;
* A preliminary user manual (optional).&lt;br /&gt;
&lt;br /&gt;
At the end of the elaboration phase lies the second major project milestone; the &#039;&#039;&#039;Lifecycle Architecture Milestone&#039;&#039;&#039;.&lt;br /&gt;
The elaboration phase has six evaluation criteria:&lt;br /&gt;
&lt;br /&gt;
* Is the vision stable enough?&lt;br /&gt;
* Is the system architecture stable enough?&lt;br /&gt;
* Have all the major risks been successfully identified and resolved?&lt;br /&gt;
* Is the plan for the construction phase accurate enough?&lt;br /&gt;
* Do all the stakeholders share the opinion that the vision can be achieved by executing the current plan?&lt;br /&gt;
* Is the actual vs planned resource expenditure in acceptable levels?&lt;br /&gt;
&lt;br /&gt;
If the project fails to pass the milestone, there is still time to be re-designed or even cancelled. However, when the project moves to the next phase the associated operation risks raise significantly and changes become much more difficult.&lt;br /&gt;
&lt;br /&gt;
==== Construction Phase====&lt;br /&gt;
The third phase is the construction phase. The focus of this phase, is to develop and integrate all the remaining components and application features into the product. In other words this is the phase where the vision is finally translated into a final stable product, which is based on the architecture that was developed during the previous phases. Most emphasize is given to resources, control and process management in order to fully optimize costs, schedules and quality. The existing prototype evolves via a number of iterations into a fully functional product that meets the stakeholders&#039; needs. The construction phase is usually the longest one of the project life cycle. The expected outcome of the construction phase includes:&lt;br /&gt;
&lt;br /&gt;
* First external release of the software.&lt;br /&gt;
* User manuals.&lt;br /&gt;
* A detailed description of the current release.&lt;br /&gt;
&lt;br /&gt;
At the end of the construction phase lies the third major project milestone; the &#039;&#039;&#039;Initial Operation Capability Milestone&#039;&#039;&#039;.&lt;br /&gt;
The construction phase has three evaluation criteria:&lt;br /&gt;
&lt;br /&gt;
* Is the software release stable enough to be given to the user community?&lt;br /&gt;
* Are all the stakeholders ready for the transition to the user community?&lt;br /&gt;
* Is the actual vs planned resource expenditure in acceptable levels?&lt;br /&gt;
&lt;br /&gt;
If the project fails to pass this milestone, transition may have to be postponed by one release.&lt;br /&gt;
&lt;br /&gt;
==== Transition Phase ====&lt;br /&gt;
The fourth and final phase is the transition phase. The focus of this phase is, as the word says, to transition the software product to the user community. It includes ensuring that the product has been developed to an acceptable quality level, by beta testing the software through the end users, and validating it against the stakeholders&#039; expectations. Once the product has been given for beta testing, a number of issues can arise, requiring the development of new releases (fixing bugs) and adding features that may have been postponed. The expected outcome of the transition phase includes:&lt;br /&gt;
&lt;br /&gt;
* Beta-testing to fix any major [https://en.wikipedia.org/wiki/Software_bug software bugs] and add any missing features.&lt;br /&gt;
* Conversion of operational databases&lt;br /&gt;
* Training of end users and maintainers.&lt;br /&gt;
* Marketing and distribution of the product.&lt;br /&gt;
&lt;br /&gt;
At the end of the transition phase lies the fourth and final major project milestone; the &#039;&#039;&#039;Product Release&#039;&#039;&#039;.&lt;br /&gt;
The transition phase has two evaluation criteria:&lt;br /&gt;
&lt;br /&gt;
* Are the end - users satisfied with the product?&lt;br /&gt;
* Is the actual vs planned resource expenditure in acceptable levels?&lt;br /&gt;
&lt;br /&gt;
==== Iterations ====&lt;br /&gt;
As stated before, every phase can consist of a number of iterations, depending on the project size and scope. RUP, in comparison to the traditional [https://en.wikipedia.org/wiki/Waterfall_model waterfall] approach, is heavily based on iterations. This gives a number of advantages and benefits to the project team, with the most important one being mitigating risks much more earlier in the project. Moreover, change is more manageable and there is normally a higher level of reuse. Finally, iterations ensure an overall high quality in the final product and that the project team can learn throughout the developing process.&lt;br /&gt;
&lt;br /&gt;
=== Workflow Dimension - Disciplines ===&lt;br /&gt;
&lt;br /&gt;
[[File:activities.png|350px|right|thumb| Figure 4. Individuals, Roles and Activities]]&lt;br /&gt;
[[File:workflows.png|350px|right|thumb| Figure 5. Example of a workflow]]&lt;br /&gt;
&lt;br /&gt;
A process describes &#039;&#039;&#039;who&#039;&#039;&#039; is doing &#039;&#039;&#039;what&#039;&#039;&#039;, &#039;&#039;&#039;how&#039;&#039;&#039; and &#039;&#039;&#039;when&#039;&#039;&#039;. RUP addresses those terms with four modelling elements; &#039;&#039;&#039;Roles&#039;&#039;&#039;, &#039;&#039;&#039;Activities&#039;&#039;&#039;, &#039;&#039;&#039;Artifacts&#039;&#039;&#039; and &#039;&#039;&#039;Workflows&#039;&#039;&#039; respectively. A &#039;&#039;&#039;role&#039;&#039;&#039;, formally addressed as a worker, describes the behavior and responsibilities of an individual or a group of individuals in order to produce an artifact. Throughout the development of a project, a person can play one or a number of roles. Some examples of roles are the system analyst, designer, tester. &#039;&#039;&#039;Activities&#039;&#039;&#039; are expressed through behaviors. An activity, is a job that a person performs through his role, as seen in Figure 4. The length of an activity may vary from a few hours to a number of days. Examples of activities are: Plan an operation - performed by the role of Project Manager or add a missing feature - performed by the role of a software developer. All activities produce a meaningful result, called an artifact. &#039;&#039;&#039;Artifacts&#039;&#039;&#039;, are the responsibilities of ones role or roles and express a piece of information that is produced, modified or even used by a process. They can act both as input or output of an activity. Examples of artifacts are the source code, the business case, the software architecture. The roles perform activities that can produce a sequence of artifacts, called &#039;&#039;&#039;workflows&#039;&#039;&#039;. Examples of workflows can be seen in Figure 5. &lt;br /&gt;
&lt;br /&gt;
RUP identifies nine core process workflows, called &#039;&#039;&#039;disciplines&#039;&#039;&#039;. Every discipline, addresses a set of activities and artifacts, based upon a set of skills that are common in an ICT project. These disciplines have the ability to arrange the activities and artifacts in such a way, to provide an understanding of the overall project from a waterfall perspective.&lt;br /&gt;
&lt;br /&gt;
There are six core &amp;quot;engineering&amp;quot; disciplines:&lt;br /&gt;
* Business Modelling Discipline&lt;br /&gt;
* Requirements Discipline&lt;br /&gt;
* Analysis and Design Discipline&lt;br /&gt;
* Implementation Discipline&lt;br /&gt;
* Test Discipline&lt;br /&gt;
* Deployment Discipline&lt;br /&gt;
&lt;br /&gt;
And three core &amp;quot;supporting&amp;quot; disciplines:&lt;br /&gt;
* Project Management Discipline&lt;br /&gt;
* Configuration and Change Management Discipline&lt;br /&gt;
* Environment Discipline&lt;br /&gt;
&lt;br /&gt;
==== Business Modelling ====&lt;br /&gt;
&lt;br /&gt;
Miscommunication between the software engineering community and the business engineering community is one of the most common problems among most business engineering efforts. This means that the output from software development efforts is not correctly used as input to the business engineering and vice versa. The purpose of the Business Modelling discipline is to provide a common language between the two communities and create a direct coupling between software and business models. All business processes are documented using &amp;quot;use cases&amp;quot;. This assures that all stakeholders share the same understanding of the demanding organization.&lt;br /&gt;
&lt;br /&gt;
==== Requirements ====&lt;br /&gt;
The purpose of the requirements discipline is to describe in detail &#039;&#039;&#039;what&#039;&#039;&#039; the system should do. Based on that, a Vision document is created where required functionality and constraints are documented. Moreover, actors (end - users) and use cases (behaviors of the system) are identified. Use cases are described in detail and each description clearly shows how the system interacts with the actors. This way an agreement is established between the customers and the rest of the stakeholders regarding the system&#039;s capabilities, user-interface and the end user&#039;s needs.&lt;br /&gt;
&lt;br /&gt;
==== Analysis and Design ====&lt;br /&gt;
&lt;br /&gt;
The purpose of the Analysis and Design discipline it to investigate &#039;&#039;&#039;how&#039;&#039;&#039; the system requirements will be translated into a detailed implementation plan. The system needs to:&lt;br /&gt;
* Perform exactly as described in the use-case descriptions.&lt;br /&gt;
* Fulfill all requirements.&lt;br /&gt;
* Have a robust structure.&lt;br /&gt;
&lt;br /&gt;
Analysis and Design result in the creation of a &#039;&#039;&#039;design model&#039;&#039;&#039;. The design model is an abstraction of the system&#039;s architecture and acts as a guide of how the source code should be finally written and structured.&lt;br /&gt;
&lt;br /&gt;
==== Implementation ====&lt;br /&gt;
The purpose of the Implementation discipline is to:&lt;br /&gt;
&lt;br /&gt;
* Arrange the code into subsystems, organized in layers.&lt;br /&gt;
* Implement classes and objects in terms of components.&lt;br /&gt;
* Uni-test the developed components to ensure quality.&lt;br /&gt;
* Integrate the results into an executable system.&lt;br /&gt;
&lt;br /&gt;
The whole system can be realized as an implementation of various components. RUP enables the integration of those components, in a revolutionary way, making the system easier to maintain and increasing the possibilities for future re-use.&lt;br /&gt;
&lt;br /&gt;
==== Test ====&lt;br /&gt;
&lt;br /&gt;
In the implementation discipline, all the developed components were uni-tested individually and were integrated into the system. The purpose of the Test discipline is to assess the system as a whole and verify the product quality. It is a mechanism to verify the smooth interaction between the various components, their proper integration into the system and finally ensure that all requirements have been successfully implemented. All tests are carried out along 4 quality dimensions:&lt;br /&gt;
* Functionality.&lt;br /&gt;
* Reliability.&lt;br /&gt;
* Application Performance.&lt;br /&gt;
* System Performance.&lt;br /&gt;
&lt;br /&gt;
==== Deployment ====&lt;br /&gt;
&lt;br /&gt;
The purpose of the Deployment discipline is primarily to develop product releases and distribute the software to the end – users. More specifically the Deployment discipline focuses at:&lt;br /&gt;
&lt;br /&gt;
* Developing external software releases&lt;br /&gt;
* Distributing the software&lt;br /&gt;
* Installing the software&lt;br /&gt;
* Providing help to the end – users&lt;br /&gt;
* Creating an up-to-date user manual&lt;br /&gt;
* Conducting beta testing&lt;br /&gt;
&lt;br /&gt;
==== Project Management ====&lt;br /&gt;
&lt;br /&gt;
The purpose of the Project Management discipline, is to successfully balance competing objectives, manage and mitigate risks and finally handle any constraints on delivering the product. Project management, ideally provides:&lt;br /&gt;
&lt;br /&gt;
* A framework for managing software-intensive projects.&lt;br /&gt;
* A framework to successfully manage risks.&lt;br /&gt;
* A framework to plan, execute and monitor projects.&lt;br /&gt;
&lt;br /&gt;
While the discipline does not guarantee success, the odds of delivering successful software are greatly improved.&lt;br /&gt;
&lt;br /&gt;
==== Configuration and Change Management ====&lt;br /&gt;
&lt;br /&gt;
The purpose of the Configuration and Change Management Discipline is to control, maintain and configure all the various artifacts that are produced by the different actors that are working on a project. During the software development life cycle, artifacts are regularly updated (changed). In order to understand the current state of an artifact, it is very important to keep track of its location and history; what was the reason and who decided to change the artifact. The discipline helps create a framework that keeps track of all the project assets.&lt;br /&gt;
&lt;br /&gt;
==== Environment ====&lt;br /&gt;
&lt;br /&gt;
The purpose of the environment discipline, is to provide the development team with all the processes, tools and methods for supporting all developing activities. It is responsible for producing a Development Kit, able to provide guidelines and templates for customizing processes.&lt;br /&gt;
&lt;br /&gt;
== Why RUP - Best Practices ==&lt;br /&gt;
&lt;br /&gt;
RUP captures many of the “best practices” that are currently used in modern software development and more particularly in industry by successful organizations. The practices are:&lt;br /&gt;
&lt;br /&gt;
* Develop Software Iteratively&lt;br /&gt;
* Manage Requirements&lt;br /&gt;
* Use component-based architectures&lt;br /&gt;
* Visually model software&lt;br /&gt;
* Continuously verify software quality&lt;br /&gt;
* Control changes to software&lt;br /&gt;
&lt;br /&gt;
=== Develop Software iteratively ===&lt;br /&gt;
&lt;br /&gt;
Today’s high sophisticated software systems, consist of many and complex structures which make it nearly impossible to define the entire system from the very beginning, develop the entire solution and then test the product in the end. RUP uses an iterative approach that allows an increasing understanding of the problem and developing a step – by – step solution, over multiple iterations. Each iteration ends with an executable release, which enables continuous end - user involvement and feedback. As a result, the risks of the project are mitigated at an early stage and stakeholders are ensured that the project requirements are fulfilled.&lt;br /&gt;
&lt;br /&gt;
=== Manage requirements ===&lt;br /&gt;
&lt;br /&gt;
The requirements of a system include the description of the services that the system is able to provide and its operational constraints. RUP documents, organizes and tracks required functionality and constraints and easily communicates business requirements. The use – cases that are used in the process are an excellent way to ensure that requirements are actually those elements that drive the design, implementation and testing of software, making it more likely that the final system fulfills the stakeholders needs.&lt;br /&gt;
&lt;br /&gt;
=== Use component-based architectures ===&lt;br /&gt;
&lt;br /&gt;
Component-based architecture makes the system dynamic; components are independent from the system and interact with other components through well-defined interfaces. Their in-dependency from the system, gives them a great flexibility meaning that they can easily be added, updated or totally replaced. RUP supports component-based software development by providing a systematic approach to defining an architecture using new and existing components.&lt;br /&gt;
&lt;br /&gt;
=== Visually model software ===&lt;br /&gt;
&lt;br /&gt;
A model is an abstraction of reality that can help better comprehend large and complex systems. Visual abstractions help the development team to easily communicate different aspects of the software and see how all the components fit together. RUP uses the [http://www.uml.org/ Unified Modelling Language (UML)] standard which is a graphical language for visualizing and constructing the artifacts of a software-intensive system.&lt;br /&gt;
&lt;br /&gt;
=== Continuously verify software quality ===&lt;br /&gt;
&lt;br /&gt;
In software development, quality should always be reviewed with respect to the requirements based on reliability, functionality , application and system performance. In RUP, quality verification and assessment is built into the process, inside all activities, including all stakeholders and is not treated as a separate activity, performed by a separate group.&lt;br /&gt;
&lt;br /&gt;
=== Control changes to software ===&lt;br /&gt;
&lt;br /&gt;
A software system is developed by a number of teams or individuals, using different platforms and at times being in different locations. As a result, it is essential to somehow make sure that all the changes made in the system are synchronized and constantly verified. RUP ensures that all the individuals working in the project are well informed about any changes and everything is in sync. The process describes how to control, track and monitor changes to enable successful iterative development.&lt;br /&gt;
&lt;br /&gt;
== Limitations ==&lt;br /&gt;
&lt;br /&gt;
While being a complete methodology in itself with an emphasis on accurate documentation and quickly resolving project associated risks, RUP comes with a number of limitations.&lt;br /&gt;
&lt;br /&gt;
* In order for team members to start developing software under this methodology, they need to be &#039;&#039;&#039;experts&#039;&#039;&#039; in their respective fields.&lt;br /&gt;
* The development process can easily become too complex to handle.&lt;br /&gt;
* When working with cutting - edge projects that highly utilize new technology, components will not be able to be reused. &lt;br /&gt;
* While in theory integration throughout the process of software development sounds like a good thing, when working with particularly complex projects with multiple development streams, issues and significant confusion may rise during the stages of testing.&lt;br /&gt;
&lt;br /&gt;
== Conclusion ==&lt;br /&gt;
&lt;br /&gt;
The Rational Unified Process, is an exemplary method for addressing and mitigating risks from the very early stages, by rapidly developing an initial version of the system (prototype) that describes its architecture. There are not fixed requirements from the beginning but rather allows refining requirements , while the project progresses. It expects and actually deals with change pretty well while its main focus is the quality of the product and the degree to which it satisfies its end - users, throughout the project life-cycle. However, while being a complete and well documented methodology, it should be stressed that remains a very complex one. In order to increase the likelihood of success, while adopting this methodology, all the project members need to be &#039;&#039;&#039;experts&#039;&#039;&#039; in their respective fields. The method can easily become too difficult to learn and most importantly too difficult to apply.&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
1) Rational Unified Process vs Microsoft Solutions Framework : A comparative study, Johan W.A Traa &amp;lt;br&amp;gt;&lt;br /&gt;
2) Rational Unified Process: Best Practices for Software Development Teams,  Rational Software white paper &amp;lt;br&amp;gt;&lt;br /&gt;
3) Planning a Project with the Rational Unified Process, David West &amp;lt;br&amp;gt;&lt;br /&gt;
4) Project Management Methodologies, Jason Charvat &amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Lessisv</name></author>
	</entry>
	<entry>
		<id>http://13.50.150.85/index.php?title=Rational_Unified_Process_(RUP)&amp;diff=12734</id>
		<title>Rational Unified Process (RUP)</title>
		<link rel="alternate" type="text/html" href="http://13.50.150.85/index.php?title=Rational_Unified_Process_(RUP)&amp;diff=12734"/>
		<updated>2015-09-22T15:16:06Z</updated>

		<summary type="html">&lt;p&gt;Lessisv: /* Iterations */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The &#039;&#039;&#039;Rational Unified Process (RUP)&#039;&#039;&#039; is an iterative, &#039;&#039;&#039;software development methodology&#039;&#039;&#039;, firstly introduced by the [https://en.wikipedia.org/wiki/Rational_Software Rational Software Corporation] which was [http://www-03.ibm.com/press/us/en/pressrelease/314.wss acquired by IBM] in 2003. RUP is a disciplined approach to assign tasks within a development organization and software project teams. It was developed to ensure the production of &#039;&#039;&#039;high quality software&#039;&#039;&#039; by providing the development team with a set of &#039;&#039;&#039;guidelines, templates and tool mentors&#039;&#039;&#039;, for all the critical life-cycle activities within a project. This cluster of objects, form a knowledge base that is shared between all project team members. As a result, no matter what each member is working with (e.g testing, designing, managing), they all share a common language and view on how to develop software. Consequently, team productivity is boosted, in order to deliver software that can meet and exceed the needs and expectations of end-users, strictly following a predictable budget and schedule. RUP is the most popular and extensively documented refinement of the [https://en.wikipedia.org/wiki/Unified_Process Unified Process], an iterative and incremental software development process framework. Other worth mentioning forms are the [https://en.wikipedia.org/wiki/OpenUP OpenUP] and [https://en.wikipedia.org/wiki/Agile_Unified_Process Agile Unified Process].&lt;br /&gt;
&lt;br /&gt;
== Process Overview ==&lt;br /&gt;
&lt;br /&gt;
[[File:RUP.png|450px|right|thumb| Figure 1. The iterative model graph shows how the process is structured along two dimensions]]&lt;br /&gt;
&lt;br /&gt;
The best possible way to describe the methodology is through a 2 - dimensional graph.&lt;br /&gt;
* The first dimension (horizontal axis) represents the &#039;&#039;&#039;dynamic aspect&#039;&#039;&#039; of the process. It expresses &#039;&#039;&#039;time&#039;&#039;&#039; in terms of &#039;&#039;&#039;phases&#039;&#039;&#039; and &#039;&#039;&#039;iterations&#039;&#039;&#039;. &lt;br /&gt;
* The second dimension (vertical axis) represents the &#039;&#039;&#039;static aspect&#039;&#039;&#039; of the process. It expresses &#039;&#039;&#039;workflows&#039;&#039;&#039; in terms of 6 core and 3 supporting &#039;&#039;&#039;disciplines&#039;&#039;&#039; (more on that on &amp;quot;Disciplines&amp;quot; section).&lt;br /&gt;
&lt;br /&gt;
=== Time Dimension - Phases and Iterations ===&lt;br /&gt;
When developing software, the project team goes through a multi-step process, from establishing a system&#039;s requirements to designing, implementing and finally maintaining the software with new releases. This is the software life cycle. RUP delicately breaks the software life cycle down to four consecutive phases.&lt;br /&gt;
&lt;br /&gt;
* Inception phase&lt;br /&gt;
* Elaboration phase&lt;br /&gt;
* Construction phase&lt;br /&gt;
* Transition phase&lt;br /&gt;
&lt;br /&gt;
Depending on the project, each of these phases can consist of one to a number of &#039;&#039;&#039;iterations&#039;&#039;&#039;. An iteration is defined as a complete development loop, resulting in a new product release. All the phases include a well-defined milestone, in order to be completed. In the end of every phase, the development team can evaluate whether all the key goals have been achieved, all stakeholders have been considered and the actual expenditures correspond with the planned ones.&lt;br /&gt;
&lt;br /&gt;
[[File:RUP_phases.png|550px|right|thumb| Figure 2. The four phases and milestones of a project]]&lt;br /&gt;
==== Inception Phase ====&lt;br /&gt;
The first phase is the inception phase. The focus of this phase, is understanding the scope of the project and studying if is both worth doing and possible to do. All the internal and external entities that the system will interact with are identified and the nature of the interaction is well defined at a high level. For this reason, the inception phase is primarily significant for new development projects. &lt;br /&gt;
The expected outcome of the inception phase includes :&lt;br /&gt;
&lt;br /&gt;
* A vision document: The document states the general vision of the project including its key requirements, features and main constraints.&lt;br /&gt;
* An initial use-case model (10%-20% complete)&lt;br /&gt;
* An initial project glossary&lt;br /&gt;
* An initial business case, including the business context, success criteria and a financial forecast.&lt;br /&gt;
* An initial risk assessment&lt;br /&gt;
* A project plan (phases and iterations)&lt;br /&gt;
* A business model (if necessary)&lt;br /&gt;
* Prototypes&lt;br /&gt;
&lt;br /&gt;
At the end of the inception phase lies the first major project milestone; the &#039;&#039;&#039;Lifecycle Objective Milestone&#039;&#039;&#039;.&lt;br /&gt;
The inception phase has five evaluation criteria:&lt;br /&gt;
&lt;br /&gt;
* Stakeholder concurrence on scope definition and cost/schedule estimates.&lt;br /&gt;
* Depth and breadth of any prototype that was developed.&lt;br /&gt;
* Actual expenditures versus planned ones.&lt;br /&gt;
* Requirements understanding.&lt;br /&gt;
* Credibility of the cost/schedule estimates, risks and priorities.&lt;br /&gt;
&lt;br /&gt;
If for any reason the project fails to pass this milestone, it can either be completely cancelled or re-designed to successfully meet the criteria.&lt;br /&gt;
 &lt;br /&gt;
==== Elaboration Phase ====&lt;br /&gt;
The second phase is the elaboration phase. The focus of this phase, is establishing a baseline to the architecture of the system, further developing the project plan and analyzing the problem domain while trying to mitigate the highest risk elements. In other words, this is the phase where the project starts to take shape. One of the most important characteristics of this phase, is the production of a component-based architectural prototype. The purpose of this prototype, is to address the critical use-cases that were identified in the previous phase, and hopefully expose the highest technical risks of the project. The expected outcome of the elaboration phase includes:&lt;br /&gt;
&lt;br /&gt;
* A use-case model (at least 80% complete) which will be able to identify all the actors and use-cases.&lt;br /&gt;
* Supplementary requirements (if any).&lt;br /&gt;
* A clear description of the software architecture.&lt;br /&gt;
* An architectural prototype.&lt;br /&gt;
* A more detailed risk assessment and business case.&lt;br /&gt;
* A development plan for the overall project.&lt;br /&gt;
* A preliminary user manual (optional).&lt;br /&gt;
&lt;br /&gt;
At the end of the elaboration phase lies the second major project milestone; the &#039;&#039;&#039;Lifecycle Architecture Milestone&#039;&#039;&#039;.&lt;br /&gt;
The elaboration phase has six evaluation criteria:&lt;br /&gt;
&lt;br /&gt;
* Is the vision stable enough?&lt;br /&gt;
* Is the system architecture stable enough?&lt;br /&gt;
* Have all the major risks been successfully identified and resolved?&lt;br /&gt;
* Is the plan for the construction phase accurate enough?&lt;br /&gt;
* Do all the stakeholders share the opinion that the vision can be achieved by executing the current plan?&lt;br /&gt;
* Is the actual vs planned resource expenditure in acceptable levels?&lt;br /&gt;
&lt;br /&gt;
If the project fails to pass the milestone, there is still time to be re-designed or even cancelled. However, when the project moves to the next phase the associated operation risks raise significantly and changes become much more difficult.&lt;br /&gt;
&lt;br /&gt;
==== Construction Phase====&lt;br /&gt;
The third phase is the construction phase. The focus of this phase, is to develop and integrate all the remaining components and application features into the product. In other words this is the phase where the vision is finally translated into a final stable product, which is based on the architecture that was developed during the previous phases. Most emphasize is given to resources, control and process management in order to fully optimize costs, schedules and quality. The existing prototype evolves via a number of iterations into a fully functional product that meets the stakeholders&#039; needs. The construction phase is usually the longest one of the project life cycle. The expected outcome of the construction phase includes:&lt;br /&gt;
&lt;br /&gt;
* First external release of the software.&lt;br /&gt;
* User manuals.&lt;br /&gt;
* A detailed description of the current release.&lt;br /&gt;
&lt;br /&gt;
At the end of the construction phase lies the third major project milestone; the &#039;&#039;&#039;Initial Operation Capability Milestone&#039;&#039;&#039;.&lt;br /&gt;
The construction phase has three evaluation criteria:&lt;br /&gt;
&lt;br /&gt;
* Is the software release stable enough to be given to the user community?&lt;br /&gt;
* Are all the stakeholders ready for the transition to the user community?&lt;br /&gt;
* Is the actual vs planned resource expenditure in acceptable levels?&lt;br /&gt;
&lt;br /&gt;
If the project fails to pass this milestone, transition may have to be postponed by one release.&lt;br /&gt;
&lt;br /&gt;
==== Transition Phase ====&lt;br /&gt;
The fourth and final phase is the transition phase. The focus of this phase is, as the word says, to transition the software product to the user community. It includes ensuring that the product has been developed to an acceptable quality level, by beta testing the software through the end users, and validating it against the stakeholders&#039; expectations. Once the product has been given for beta testing, a number of issues can arise, requiring the development of new releases (fixing bugs) and adding features that may have been postponed. The expected outcome of the transition phase includes:&lt;br /&gt;
&lt;br /&gt;
* Beta-testing to fix any major [https://en.wikipedia.org/wiki/Software_bug software bugs] and add any missing features.&lt;br /&gt;
* Conversion of operational databases&lt;br /&gt;
* Training of end users and maintainers.&lt;br /&gt;
* Marketing and distribution of the product.&lt;br /&gt;
&lt;br /&gt;
At the end of the transition phase lies the fourth and final major project milestone; the &#039;&#039;&#039;Product Release&#039;&#039;&#039;.&lt;br /&gt;
The transition phase has two evaluation criteria:&lt;br /&gt;
&lt;br /&gt;
* Are the end - users satisfied with the product?&lt;br /&gt;
* Is the actual vs planned resource expenditure in acceptable levels?&lt;br /&gt;
&lt;br /&gt;
==== Iterations ====&lt;br /&gt;
As stated before, every phase can consist of a number of iterations, depending on the project size and scope. RUP, in comparison to the traditional [https://en.wikipedia.org/wiki/Waterfall_model waterfall] approach, is heavily based on iterations. This gives a number of advantages and benefits to the project team, with the most important one being mitigating risks much more earlier in the project. Moreover, change is more manageable and there is normally a higher level of reuse. Finally, iterations ensure an overall high quality in the final product and that the project team can learn throughout the developing process.&lt;br /&gt;
&lt;br /&gt;
=== Workflow Dimension - Disciplines ===&lt;br /&gt;
&lt;br /&gt;
[[File:activities.png|350px|right|thumb| Figure 4. Individuals, Roles and Activities]]&lt;br /&gt;
[[File:workflows.png|350px|right|thumb| Figure 5. Example of a workflow]]&lt;br /&gt;
&lt;br /&gt;
A process describes &#039;&#039;&#039;who&#039;&#039;&#039; is doing &#039;&#039;&#039;what&#039;&#039;&#039;, &#039;&#039;&#039;how&#039;&#039;&#039; and &#039;&#039;&#039;when&#039;&#039;&#039;. RUP addresses those terms with four modelling elements; &#039;&#039;&#039;Roles&#039;&#039;&#039;, &#039;&#039;&#039;Activities&#039;&#039;&#039;, &#039;&#039;&#039;Artifacts&#039;&#039;&#039; and &#039;&#039;&#039;Workflows&#039;&#039;&#039; respectively. A &#039;&#039;&#039;role&#039;&#039;&#039;, formally addressed as a worker, describes the behavior and responsibilities of an individual or a group of individuals in order to produce an artifact. Throughout the development of a project, a person can play one or a number of roles. Some examples of roles are the system analyst, designer, tester. &#039;&#039;&#039;Activities&#039;&#039;&#039; are expressed through behaviors. An activity, is a job that a person performs through his role, as seen in Figure 4. The length of an activity may vary from a few hours to a number of days. Examples of activities are: Plan an operation - performed by the role of Project Manager or add a missing feature - performed by the role of a software developer. All activities produce a meaningful result, called an artifact. &#039;&#039;&#039;Artifacts&#039;&#039;&#039;, are the responsibilities of ones role or roles and express a piece of information that is produced, modified or even used by a process. They can act both as input or output of an activity. Examples of artifacts are the source code, the business case, the software architecture. The roles perform activities that can produce a sequence of artifacts, called &#039;&#039;&#039;workflows&#039;&#039;&#039;. Examples of workflows can be seen in Figure 5. &lt;br /&gt;
&lt;br /&gt;
RUP identifies nine core process workflows, called &#039;&#039;&#039;disciplines&#039;&#039;&#039;. Every discipline, addresses a set of activities and artifacts, based upon a set of skills that are common in an ICT project. These disciplines have the ability to arrange the activities and artifacts in such a way, to provide an understanding of the overall project from a waterfall perspective.&lt;br /&gt;
&lt;br /&gt;
There are six core &amp;quot;engineering&amp;quot; disciplines:&lt;br /&gt;
* Business Modelling Discipline&lt;br /&gt;
* Requirements Discipline&lt;br /&gt;
* Analysis and Design Discipline&lt;br /&gt;
* Implementation Discipline&lt;br /&gt;
* Test Discipline&lt;br /&gt;
* Deployment Discipline&lt;br /&gt;
&lt;br /&gt;
And three core &amp;quot;supporting&amp;quot; disciplines:&lt;br /&gt;
* Project Management Discipline&lt;br /&gt;
* Configuration and Change Management Discipline&lt;br /&gt;
* Environment Discipline&lt;br /&gt;
&lt;br /&gt;
==== Business Modelling ====&lt;br /&gt;
&lt;br /&gt;
Miscommunication between the software engineering community and the business engineering community is one of the most common problems among most business engineering efforts. This means that the output from software development efforts is not correctly used as input to the business engineering and vice versa. The purpose of the Business Modelling discipline is to provide a common language between the two communities and create a direct coupling between software and business models. All business processes are documented using &amp;quot;use cases&amp;quot;. This assures that all stakeholders share the same understanding of the demanding organization.&lt;br /&gt;
&lt;br /&gt;
==== Requirements ====&lt;br /&gt;
The purpose of the requirements discipline is to describe in detail &#039;&#039;&#039;what&#039;&#039;&#039; the system should do. Based on that, a Vision document is created where required functionality and constraints are documented. Moreover, actors (end users) and use cases (behaviors of the system) are identified. Use cases are described in detail and each description clearly shows how the system interacts with the actors. This way an agreement is established between the customers and the rest of the stakeholders regarding the system&#039;s capabilities, user-interface and the end user&#039;s needs.&lt;br /&gt;
&lt;br /&gt;
==== Analysis and Design ====&lt;br /&gt;
&lt;br /&gt;
The purpose of the Analysis and Design discipline it to investigate &#039;&#039;&#039;how&#039;&#039;&#039; the system requirements will be translated into a detailed implementation plan. The system needs to:&lt;br /&gt;
* Perform exactly as described in the use-case descriptions.&lt;br /&gt;
* Fulfill all requirements.&lt;br /&gt;
* Have a robust structure.&lt;br /&gt;
&lt;br /&gt;
Analysis and Design result in the creation of a &#039;&#039;&#039;design model&#039;&#039;&#039;. The design model is an abstraction of the system&#039;s architecture and acts as a guide of how the source code should be finally written and structured.&lt;br /&gt;
&lt;br /&gt;
==== Implementation ====&lt;br /&gt;
The purpose of the Implementation discipline is to:&lt;br /&gt;
&lt;br /&gt;
* Arrange the code into subsystems, organized in layers.&lt;br /&gt;
* Implement classes and objects in terms of components.&lt;br /&gt;
* Uni-test the developed components to ensure quality.&lt;br /&gt;
* Integrate the results into an executable system.&lt;br /&gt;
&lt;br /&gt;
The whole system can be realized as an implementation of various components. RUP enables the integration of those components, in a revolutionary way, making the system easier to maintain and increasing the possibilities for future re-use.&lt;br /&gt;
&lt;br /&gt;
==== Test ====&lt;br /&gt;
&lt;br /&gt;
In the implementation discipline, all the developed components were uni-tested individually and were integrated into the system. The purpose of the Test discipline is to assess the system as a whole and verify the product quality. It is a mechanism to verify the smooth interaction between the various components, their proper integration into the system and finally ensure that all requirements have been successfully implemented. All tests are carried out along 4 quality dimensions:&lt;br /&gt;
* Functionality.&lt;br /&gt;
* Reliability.&lt;br /&gt;
* Application Performance.&lt;br /&gt;
* System Performance.&lt;br /&gt;
&lt;br /&gt;
==== Deployment ====&lt;br /&gt;
&lt;br /&gt;
The purpose of the Deployment discipline is primarily to develop product releases and distribute the software to the end – users. More specifically the Deployment discipline focuses at:&lt;br /&gt;
&lt;br /&gt;
* Developing external software releases&lt;br /&gt;
* Distributing the software&lt;br /&gt;
* Installing the software&lt;br /&gt;
* Providing help to the end – users&lt;br /&gt;
* Creating an up-to-date user manual&lt;br /&gt;
* Conducting beta testing&lt;br /&gt;
&lt;br /&gt;
==== Project Management ====&lt;br /&gt;
&lt;br /&gt;
The purpose of the Project Management discipline, is to successfully balance competing objectives, manage and mitigate risks and finally handle any constraints on delivering the product. Project management, ideally provides:&lt;br /&gt;
&lt;br /&gt;
* A framework for managing software-intensive projects.&lt;br /&gt;
* A framework to successfully manage risks.&lt;br /&gt;
* A framework to plan, execute and monitor projects.&lt;br /&gt;
&lt;br /&gt;
While the discipline does not guarantee success, the odds of delivering successful software are greatly improved.&lt;br /&gt;
&lt;br /&gt;
==== Configuration and Change Management ====&lt;br /&gt;
&lt;br /&gt;
The purpose of the Configuration and Change Management Discipline is to control, maintain and configure all the various artifacts that are produced by the different actors that are working on a project. During the software development life cycle, artifacts are regularly updated (changed). In order to understand the current state of an artifact, it is very important to keep track of its location and history; what was the reason and who decided to change the artifact. The discipline helps create a framework that keeps track of all the project assets.&lt;br /&gt;
&lt;br /&gt;
==== Environment ====&lt;br /&gt;
&lt;br /&gt;
The purpose of the environment discipline, is to provide the development team with all the processes, tools and methods for supporting all developing activities. It is responsible for producing a Development Kit, able to provide guidelines and templates for customizing processes.&lt;br /&gt;
&lt;br /&gt;
== Why RUP - Best Practices ==&lt;br /&gt;
&lt;br /&gt;
RUP captures many of the “best practices” that are currently used in modern software development and more particularly in industry by successful organizations. The practices are:&lt;br /&gt;
&lt;br /&gt;
* Develop Software Iteratively&lt;br /&gt;
* Manage Requirements&lt;br /&gt;
* Use component-based architectures&lt;br /&gt;
* Visually model software&lt;br /&gt;
* Continuously verify software quality&lt;br /&gt;
* Control changes to software&lt;br /&gt;
&lt;br /&gt;
=== Develop Software iteratively ===&lt;br /&gt;
&lt;br /&gt;
Today’s high sophisticated software systems, consist of many and complex structures which make it nearly impossible to define the entire system from the very beginning, develop the entire solution and then test the product in the end. RUP uses an iterative approach that allows an increasing understanding of the problem and developing a step – by – step solution, over multiple iterations. Each iteration ends with an executable release, which enables continuous end - user involvement and feedback. As a result, the risks of the project are mitigated at an early stage and stakeholders are ensured that the project requirements are fulfilled.&lt;br /&gt;
&lt;br /&gt;
=== Manage requirements ===&lt;br /&gt;
&lt;br /&gt;
The requirements of a system include the description of the services that the system is able to provide and its operational constraints. RUP documents, organizes and tracks required functionality and constraints and easily communicates business requirements. The use – cases that are used in the process are an excellent way to ensure that requirements are actually those elements that drive the design, implementation and testing of software, making it more likely that the final system fulfills the stakeholders needs.&lt;br /&gt;
&lt;br /&gt;
=== Use component-based architectures ===&lt;br /&gt;
&lt;br /&gt;
Component-based architecture makes the system dynamic; components are independent from the system and interact with other components through well-defined interfaces. Their in-dependency from the system, gives them a great flexibility meaning that they can easily be added, updated or totally replaced. RUP supports component-based software development by providing a systematic approach to defining an architecture using new and existing components.&lt;br /&gt;
&lt;br /&gt;
=== Visually model software ===&lt;br /&gt;
&lt;br /&gt;
A model is an abstraction of reality that can help better comprehend large and complex systems. Visual abstractions help the development team to easily communicate different aspects of the software and see how all the components fit together. RUP uses the [http://www.uml.org/ Unified Modelling Language (UML)] standard which is a graphical language for visualizing and constructing the artifacts of a software-intensive system.&lt;br /&gt;
&lt;br /&gt;
=== Continuously verify software quality ===&lt;br /&gt;
&lt;br /&gt;
In software development, quality should always be reviewed with respect to the requirements based on reliability, functionality , application and system performance. In RUP, quality verification and assessment is built into the process, inside all activities, including all stakeholders and is not treated as a separate activity, performed by a separate group.&lt;br /&gt;
&lt;br /&gt;
=== Control changes to software ===&lt;br /&gt;
&lt;br /&gt;
A software system is developed by a number of teams or individuals, using different platforms and at times being in different locations. As a result, it is essential to somehow make sure that all the changes made in the system are synchronized and constantly verified. RUP ensures that all the individuals working in the project are well informed about any changes and everything is in sync. The process describes how to control, track and monitor changes to enable successful iterative development.&lt;br /&gt;
&lt;br /&gt;
== Limitations ==&lt;br /&gt;
&lt;br /&gt;
While being a complete methodology in itself with an emphasis on accurate documentation and quickly resolving project associated risks, RUP comes with a number of limitations.&lt;br /&gt;
&lt;br /&gt;
* In order for team members to start developing software under this methodology, they need to be &#039;&#039;&#039;experts&#039;&#039;&#039; in their respective fields.&lt;br /&gt;
* The development process can easily become too complex to handle.&lt;br /&gt;
* When working with cutting - edge projects that highly utilize new technology, components will not be able to be reused. &lt;br /&gt;
* While in theory integration throughout the process of software development sounds like a good thing, when working with particularly complex projects with multiple development streams, issues and significant confusion may rise during the stages of testing.&lt;br /&gt;
&lt;br /&gt;
== Conclusion ==&lt;br /&gt;
&lt;br /&gt;
The Rational Unified Process, is an exemplary method for addressing and mitigating risks from the very early stages, by rapidly developing an initial version of the system (prototype) that describes its architecture. There are not fixed requirements from the beginning but rather allows refining requirements , while the project progresses. It expects and actually deals with change pretty well while its main focus is the quality of the product and the degree to which it satisfies its end - users, throughout the project life-cycle. However, while being a complete and well documented methodology, it should be stressed that remains a very complex one. In order to increase the likelihood of success, while adopting this methodology, all the project members need to be &#039;&#039;&#039;experts&#039;&#039;&#039; in their respective fields. The method can easily become too difficult to learn and most importantly too difficult to apply.&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
1) Rational Unified Process vs Microsoft Solutions Framework : A comparative study, Johan W.A Traa &amp;lt;br&amp;gt;&lt;br /&gt;
2) Rational Unified Process: Best Practices for Software Development Teams,  Rational Software white paper &amp;lt;br&amp;gt;&lt;br /&gt;
3) Planning a Project with the Rational Unified Process, David West &amp;lt;br&amp;gt;&lt;br /&gt;
4) Project Management Methodologies, Jason Charvat &amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Lessisv</name></author>
	</entry>
	<entry>
		<id>http://13.50.150.85/index.php?title=Rational_Unified_Process_(RUP)&amp;diff=12732</id>
		<title>Rational Unified Process (RUP)</title>
		<link rel="alternate" type="text/html" href="http://13.50.150.85/index.php?title=Rational_Unified_Process_(RUP)&amp;diff=12732"/>
		<updated>2015-09-22T15:13:51Z</updated>

		<summary type="html">&lt;p&gt;Lessisv: /* Elaboration Phase */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The &#039;&#039;&#039;Rational Unified Process (RUP)&#039;&#039;&#039; is an iterative, &#039;&#039;&#039;software development methodology&#039;&#039;&#039;, firstly introduced by the [https://en.wikipedia.org/wiki/Rational_Software Rational Software Corporation] which was [http://www-03.ibm.com/press/us/en/pressrelease/314.wss acquired by IBM] in 2003. RUP is a disciplined approach to assign tasks within a development organization and software project teams. It was developed to ensure the production of &#039;&#039;&#039;high quality software&#039;&#039;&#039; by providing the development team with a set of &#039;&#039;&#039;guidelines, templates and tool mentors&#039;&#039;&#039;, for all the critical life-cycle activities within a project. This cluster of objects, form a knowledge base that is shared between all project team members. As a result, no matter what each member is working with (e.g testing, designing, managing), they all share a common language and view on how to develop software. Consequently, team productivity is boosted, in order to deliver software that can meet and exceed the needs and expectations of end-users, strictly following a predictable budget and schedule. RUP is the most popular and extensively documented refinement of the [https://en.wikipedia.org/wiki/Unified_Process Unified Process], an iterative and incremental software development process framework. Other worth mentioning forms are the [https://en.wikipedia.org/wiki/OpenUP OpenUP] and [https://en.wikipedia.org/wiki/Agile_Unified_Process Agile Unified Process].&lt;br /&gt;
&lt;br /&gt;
== Process Overview ==&lt;br /&gt;
&lt;br /&gt;
[[File:RUP.png|450px|right|thumb| Figure 1. The iterative model graph shows how the process is structured along two dimensions]]&lt;br /&gt;
&lt;br /&gt;
The best possible way to describe the methodology is through a 2 - dimensional graph.&lt;br /&gt;
* The first dimension (horizontal axis) represents the &#039;&#039;&#039;dynamic aspect&#039;&#039;&#039; of the process. It expresses &#039;&#039;&#039;time&#039;&#039;&#039; in terms of &#039;&#039;&#039;phases&#039;&#039;&#039; and &#039;&#039;&#039;iterations&#039;&#039;&#039;. &lt;br /&gt;
* The second dimension (vertical axis) represents the &#039;&#039;&#039;static aspect&#039;&#039;&#039; of the process. It expresses &#039;&#039;&#039;workflows&#039;&#039;&#039; in terms of 6 core and 3 supporting &#039;&#039;&#039;disciplines&#039;&#039;&#039; (more on that on &amp;quot;Disciplines&amp;quot; section).&lt;br /&gt;
&lt;br /&gt;
=== Time Dimension - Phases and Iterations ===&lt;br /&gt;
When developing software, the project team goes through a multi-step process, from establishing a system&#039;s requirements to designing, implementing and finally maintaining the software with new releases. This is the software life cycle. RUP delicately breaks the software life cycle down to four consecutive phases.&lt;br /&gt;
&lt;br /&gt;
* Inception phase&lt;br /&gt;
* Elaboration phase&lt;br /&gt;
* Construction phase&lt;br /&gt;
* Transition phase&lt;br /&gt;
&lt;br /&gt;
Depending on the project, each of these phases can consist of one to a number of &#039;&#039;&#039;iterations&#039;&#039;&#039;. An iteration is defined as a complete development loop, resulting in a new product release. All the phases include a well-defined milestone, in order to be completed. In the end of every phase, the development team can evaluate whether all the key goals have been achieved, all stakeholders have been considered and the actual expenditures correspond with the planned ones.&lt;br /&gt;
&lt;br /&gt;
[[File:RUP_phases.png|550px|right|thumb| Figure 2. The four phases and milestones of a project]]&lt;br /&gt;
==== Inception Phase ====&lt;br /&gt;
The first phase is the inception phase. The focus of this phase, is understanding the scope of the project and studying if is both worth doing and possible to do. All the internal and external entities that the system will interact with are identified and the nature of the interaction is well defined at a high level. For this reason, the inception phase is primarily significant for new development projects. &lt;br /&gt;
The expected outcome of the inception phase includes :&lt;br /&gt;
&lt;br /&gt;
* A vision document: The document states the general vision of the project including its key requirements, features and main constraints.&lt;br /&gt;
* An initial use-case model (10%-20% complete)&lt;br /&gt;
* An initial project glossary&lt;br /&gt;
* An initial business case, including the business context, success criteria and a financial forecast.&lt;br /&gt;
* An initial risk assessment&lt;br /&gt;
* A project plan (phases and iterations)&lt;br /&gt;
* A business model (if necessary)&lt;br /&gt;
* Prototypes&lt;br /&gt;
&lt;br /&gt;
At the end of the inception phase lies the first major project milestone; the &#039;&#039;&#039;Lifecycle Objective Milestone&#039;&#039;&#039;.&lt;br /&gt;
The inception phase has five evaluation criteria:&lt;br /&gt;
&lt;br /&gt;
* Stakeholder concurrence on scope definition and cost/schedule estimates.&lt;br /&gt;
* Depth and breadth of any prototype that was developed.&lt;br /&gt;
* Actual expenditures versus planned ones.&lt;br /&gt;
* Requirements understanding.&lt;br /&gt;
* Credibility of the cost/schedule estimates, risks and priorities.&lt;br /&gt;
&lt;br /&gt;
If for any reason the project fails to pass this milestone, it can either be completely cancelled or re-designed to successfully meet the criteria.&lt;br /&gt;
 &lt;br /&gt;
==== Elaboration Phase ====&lt;br /&gt;
The second phase is the elaboration phase. The focus of this phase, is establishing a baseline to the architecture of the system, further developing the project plan and analyzing the problem domain while trying to mitigate the highest risk elements. In other words, this is the phase where the project starts to take shape. One of the most important characteristics of this phase, is the production of a component-based architectural prototype. The purpose of this prototype, is to address the critical use-cases that were identified in the previous phase, and hopefully expose the highest technical risks of the project. The expected outcome of the elaboration phase includes:&lt;br /&gt;
&lt;br /&gt;
* A use-case model (at least 80% complete) which will be able to identify all the actors and use-cases.&lt;br /&gt;
* Supplementary requirements (if any).&lt;br /&gt;
* A clear description of the software architecture.&lt;br /&gt;
* An architectural prototype.&lt;br /&gt;
* A more detailed risk assessment and business case.&lt;br /&gt;
* A development plan for the overall project.&lt;br /&gt;
* A preliminary user manual (optional).&lt;br /&gt;
&lt;br /&gt;
At the end of the elaboration phase lies the second major project milestone; the &#039;&#039;&#039;Lifecycle Architecture Milestone&#039;&#039;&#039;.&lt;br /&gt;
The elaboration phase has six evaluation criteria:&lt;br /&gt;
&lt;br /&gt;
* Is the vision stable enough?&lt;br /&gt;
* Is the system architecture stable enough?&lt;br /&gt;
* Have all the major risks been successfully identified and resolved?&lt;br /&gt;
* Is the plan for the construction phase accurate enough?&lt;br /&gt;
* Do all the stakeholders share the opinion that the vision can be achieved by executing the current plan?&lt;br /&gt;
* Is the actual vs planned resource expenditure in acceptable levels?&lt;br /&gt;
&lt;br /&gt;
If the project fails to pass the milestone, there is still time to be re-designed or even cancelled. However, when the project moves to the next phase the associated operation risks raise significantly and changes become much more difficult.&lt;br /&gt;
&lt;br /&gt;
==== Construction Phase====&lt;br /&gt;
The third phase is the construction phase. The focus of this phase, is to develop and integrate all the remaining components and application features into the product. In other words this is the phase where the vision is finally translated into a final stable product, which is based on the architecture that was developed during the previous phases. Most emphasize is given to resources, control and process management in order to fully optimize costs, schedules and quality. The existing prototype evolves via a number of iterations into a fully functional product that meets the stakeholders&#039; needs. The construction phase is usually the longest one of the project life cycle. The expected outcome of the construction phase includes:&lt;br /&gt;
&lt;br /&gt;
* First external release of the software.&lt;br /&gt;
* User manuals.&lt;br /&gt;
* A detailed description of the current release.&lt;br /&gt;
&lt;br /&gt;
At the end of the construction phase lies the third major project milestone; the &#039;&#039;&#039;Initial Operation Capability Milestone&#039;&#039;&#039;.&lt;br /&gt;
The construction phase has three evaluation criteria:&lt;br /&gt;
&lt;br /&gt;
* Is the software release stable enough to be given to the user community?&lt;br /&gt;
* Are all the stakeholders ready for the transition to the user community?&lt;br /&gt;
* Is the actual vs planned resource expenditure in acceptable levels?&lt;br /&gt;
&lt;br /&gt;
If the project fails to pass this milestone, transition may have to be postponed by one release.&lt;br /&gt;
&lt;br /&gt;
==== Transition Phase ====&lt;br /&gt;
The fourth and final phase is the transition phase. The focus of this phase is, as the word says, to transition the software product to the user community. It includes ensuring that the product has been developed to an acceptable quality level, by beta testing the software through the end users, and validating it against the stakeholders&#039; expectations. Once the product has been given for beta testing, a number of issues can arise, requiring the development of new releases (fixing bugs) and adding features that may have been postponed. The expected outcome of the transition phase includes:&lt;br /&gt;
&lt;br /&gt;
* Beta-testing to fix any major [https://en.wikipedia.org/wiki/Software_bug software bugs] and add any missing features.&lt;br /&gt;
* Conversion of operational databases&lt;br /&gt;
* Training of end users and maintainers.&lt;br /&gt;
* Marketing and distribution of the product.&lt;br /&gt;
&lt;br /&gt;
At the end of the transition phase lies the fourth and final major project milestone; the &#039;&#039;&#039;Product Release&#039;&#039;&#039;.&lt;br /&gt;
The transition phase has two evaluation criteria:&lt;br /&gt;
&lt;br /&gt;
* Are the end - users satisfied with the product?&lt;br /&gt;
* Is the actual vs planned resource expenditure in acceptable levels?&lt;br /&gt;
&lt;br /&gt;
==== Iterations ====&lt;br /&gt;
As stated before, every phase can consist of a number of iterations, depending on the project size and scope. RUP, in comparison to the traditional [https://en.wikipedia.org/wiki/Waterfall_model waterfall] approach, is heavily based on iterations. This gives a number of advantages and benefits to the project team, with the most important one being mitigating risks much more earlier in the project. Moreover change is more manageable and there is normally a higher level of reuse. Finally, iterations ensure an overall high quality in the final product and that the project team can learn throughout the developing process.&lt;br /&gt;
&lt;br /&gt;
=== Workflow Dimension - Disciplines ===&lt;br /&gt;
&lt;br /&gt;
[[File:activities.png|350px|right|thumb| Figure 4. Individuals, Roles and Activities]]&lt;br /&gt;
[[File:workflows.png|350px|right|thumb| Figure 5. Example of a workflow]]&lt;br /&gt;
&lt;br /&gt;
A process describes &#039;&#039;&#039;who&#039;&#039;&#039; is doing &#039;&#039;&#039;what&#039;&#039;&#039;, &#039;&#039;&#039;how&#039;&#039;&#039; and &#039;&#039;&#039;when&#039;&#039;&#039;. RUP addresses those terms with four modelling elements; &#039;&#039;&#039;Roles&#039;&#039;&#039;, &#039;&#039;&#039;Activities&#039;&#039;&#039;, &#039;&#039;&#039;Artifacts&#039;&#039;&#039; and &#039;&#039;&#039;Workflows&#039;&#039;&#039; respectively. A &#039;&#039;&#039;role&#039;&#039;&#039;, formally addressed as a worker, describes the behavior and responsibilities of an individual or a group of individuals in order to produce an artifact. Throughout the development of a project, a person can play one or a number of roles. Some examples of roles are the system analyst, designer, tester. &#039;&#039;&#039;Activities&#039;&#039;&#039; are expressed through behaviors. An activity, is a job that a person performs through his role, as seen in Figure 4. The length of an activity may vary from a few hours to a number of days. Examples of activities are: Plan an operation - performed by the role of Project Manager or add a missing feature - performed by the role of a software developer. All activities produce a meaningful result, called an artifact. &#039;&#039;&#039;Artifacts&#039;&#039;&#039;, are the responsibilities of ones role or roles and express a piece of information that is produced, modified or even used by a process. They can act both as input or output of an activity. Examples of artifacts are the source code, the business case, the software architecture. The roles perform activities that can produce a sequence of artifacts, called &#039;&#039;&#039;workflows&#039;&#039;&#039;. Examples of workflows can be seen in Figure 5. &lt;br /&gt;
&lt;br /&gt;
RUP identifies nine core process workflows, called &#039;&#039;&#039;disciplines&#039;&#039;&#039;. Every discipline, addresses a set of activities and artifacts, based upon a set of skills that are common in an ICT project. These disciplines have the ability to arrange the activities and artifacts in such a way, to provide an understanding of the overall project from a waterfall perspective.&lt;br /&gt;
&lt;br /&gt;
There are six core &amp;quot;engineering&amp;quot; disciplines:&lt;br /&gt;
* Business Modelling Discipline&lt;br /&gt;
* Requirements Discipline&lt;br /&gt;
* Analysis and Design Discipline&lt;br /&gt;
* Implementation Discipline&lt;br /&gt;
* Test Discipline&lt;br /&gt;
* Deployment Discipline&lt;br /&gt;
&lt;br /&gt;
And three core &amp;quot;supporting&amp;quot; disciplines:&lt;br /&gt;
* Project Management Discipline&lt;br /&gt;
* Configuration and Change Management Discipline&lt;br /&gt;
* Environment Discipline&lt;br /&gt;
&lt;br /&gt;
==== Business Modelling ====&lt;br /&gt;
&lt;br /&gt;
Miscommunication between the software engineering community and the business engineering community is one of the most common problems among most business engineering efforts. This means that the output from software development efforts is not correctly used as input to the business engineering and vice versa. The purpose of the Business Modelling discipline is to provide a common language between the two communities and create a direct coupling between software and business models. All business processes are documented using &amp;quot;use cases&amp;quot;. This assures that all stakeholders share the same understanding of the demanding organization.&lt;br /&gt;
&lt;br /&gt;
==== Requirements ====&lt;br /&gt;
The purpose of the requirements discipline is to describe in detail &#039;&#039;&#039;what&#039;&#039;&#039; the system should do. Based on that, a Vision document is created where required functionality and constraints are documented. Moreover, actors (end users) and use cases (behaviors of the system) are identified. Use cases are described in detail and each description clearly shows how the system interacts with the actors. This way an agreement is established between the customers and the rest of the stakeholders regarding the system&#039;s capabilities, user-interface and the end user&#039;s needs.&lt;br /&gt;
&lt;br /&gt;
==== Analysis and Design ====&lt;br /&gt;
&lt;br /&gt;
The purpose of the Analysis and Design discipline it to investigate &#039;&#039;&#039;how&#039;&#039;&#039; the system requirements will be translated into a detailed implementation plan. The system needs to:&lt;br /&gt;
* Perform exactly as described in the use-case descriptions.&lt;br /&gt;
* Fulfill all requirements.&lt;br /&gt;
* Have a robust structure.&lt;br /&gt;
&lt;br /&gt;
Analysis and Design result in the creation of a &#039;&#039;&#039;design model&#039;&#039;&#039;. The design model is an abstraction of the system&#039;s architecture and acts as a guide of how the source code should be finally written and structured.&lt;br /&gt;
&lt;br /&gt;
==== Implementation ====&lt;br /&gt;
The purpose of the Implementation discipline is to:&lt;br /&gt;
&lt;br /&gt;
* Arrange the code into subsystems, organized in layers.&lt;br /&gt;
* Implement classes and objects in terms of components.&lt;br /&gt;
* Uni-test the developed components to ensure quality.&lt;br /&gt;
* Integrate the results into an executable system.&lt;br /&gt;
&lt;br /&gt;
The whole system can be realized as an implementation of various components. RUP enables the integration of those components, in a revolutionary way, making the system easier to maintain and increasing the possibilities for future re-use.&lt;br /&gt;
&lt;br /&gt;
==== Test ====&lt;br /&gt;
&lt;br /&gt;
In the implementation discipline, all the developed components were uni-tested individually and were integrated into the system. The purpose of the Test discipline is to assess the system as a whole and verify the product quality. It is a mechanism to verify the smooth interaction between the various components, their proper integration into the system and finally ensure that all requirements have been successfully implemented. All tests are carried out along 4 quality dimensions:&lt;br /&gt;
* Functionality.&lt;br /&gt;
* Reliability.&lt;br /&gt;
* Application Performance.&lt;br /&gt;
* System Performance.&lt;br /&gt;
&lt;br /&gt;
==== Deployment ====&lt;br /&gt;
&lt;br /&gt;
The purpose of the Deployment discipline is primarily to develop product releases and distribute the software to the end – users. More specifically the Deployment discipline focuses at:&lt;br /&gt;
&lt;br /&gt;
* Developing external software releases&lt;br /&gt;
* Distributing the software&lt;br /&gt;
* Installing the software&lt;br /&gt;
* Providing help to the end – users&lt;br /&gt;
* Creating an up-to-date user manual&lt;br /&gt;
* Conducting beta testing&lt;br /&gt;
&lt;br /&gt;
==== Project Management ====&lt;br /&gt;
&lt;br /&gt;
The purpose of the Project Management discipline, is to successfully balance competing objectives, manage and mitigate risks and finally handle any constraints on delivering the product. Project management, ideally provides:&lt;br /&gt;
&lt;br /&gt;
* A framework for managing software-intensive projects.&lt;br /&gt;
* A framework to successfully manage risks.&lt;br /&gt;
* A framework to plan, execute and monitor projects.&lt;br /&gt;
&lt;br /&gt;
While the discipline does not guarantee success, the odds of delivering successful software are greatly improved.&lt;br /&gt;
&lt;br /&gt;
==== Configuration and Change Management ====&lt;br /&gt;
&lt;br /&gt;
The purpose of the Configuration and Change Management Discipline is to control, maintain and configure all the various artifacts that are produced by the different actors that are working on a project. During the software development life cycle, artifacts are regularly updated (changed). In order to understand the current state of an artifact, it is very important to keep track of its location and history; what was the reason and who decided to change the artifact. The discipline helps create a framework that keeps track of all the project assets.&lt;br /&gt;
&lt;br /&gt;
==== Environment ====&lt;br /&gt;
&lt;br /&gt;
The purpose of the environment discipline, is to provide the development team with all the processes, tools and methods for supporting all developing activities. It is responsible for producing a Development Kit, able to provide guidelines and templates for customizing processes.&lt;br /&gt;
&lt;br /&gt;
== Why RUP - Best Practices ==&lt;br /&gt;
&lt;br /&gt;
RUP captures many of the “best practices” that are currently used in modern software development and more particularly in industry by successful organizations. The practices are:&lt;br /&gt;
&lt;br /&gt;
* Develop Software Iteratively&lt;br /&gt;
* Manage Requirements&lt;br /&gt;
* Use component-based architectures&lt;br /&gt;
* Visually model software&lt;br /&gt;
* Continuously verify software quality&lt;br /&gt;
* Control changes to software&lt;br /&gt;
&lt;br /&gt;
=== Develop Software iteratively ===&lt;br /&gt;
&lt;br /&gt;
Today’s high sophisticated software systems, consist of many and complex structures which make it nearly impossible to define the entire system from the very beginning, develop the entire solution and then test the product in the end. RUP uses an iterative approach that allows an increasing understanding of the problem and developing a step – by – step solution, over multiple iterations. Each iteration ends with an executable release, which enables continuous end - user involvement and feedback. As a result, the risks of the project are mitigated at an early stage and stakeholders are ensured that the project requirements are fulfilled.&lt;br /&gt;
&lt;br /&gt;
=== Manage requirements ===&lt;br /&gt;
&lt;br /&gt;
The requirements of a system include the description of the services that the system is able to provide and its operational constraints. RUP documents, organizes and tracks required functionality and constraints and easily communicates business requirements. The use – cases that are used in the process are an excellent way to ensure that requirements are actually those elements that drive the design, implementation and testing of software, making it more likely that the final system fulfills the stakeholders needs.&lt;br /&gt;
&lt;br /&gt;
=== Use component-based architectures ===&lt;br /&gt;
&lt;br /&gt;
Component-based architecture makes the system dynamic; components are independent from the system and interact with other components through well-defined interfaces. Their in-dependency from the system, gives them a great flexibility meaning that they can easily be added, updated or totally replaced. RUP supports component-based software development by providing a systematic approach to defining an architecture using new and existing components.&lt;br /&gt;
&lt;br /&gt;
=== Visually model software ===&lt;br /&gt;
&lt;br /&gt;
A model is an abstraction of reality that can help better comprehend large and complex systems. Visual abstractions help the development team to easily communicate different aspects of the software and see how all the components fit together. RUP uses the [http://www.uml.org/ Unified Modelling Language (UML)] standard which is a graphical language for visualizing and constructing the artifacts of a software-intensive system.&lt;br /&gt;
&lt;br /&gt;
=== Continuously verify software quality ===&lt;br /&gt;
&lt;br /&gt;
In software development, quality should always be reviewed with respect to the requirements based on reliability, functionality , application and system performance. In RUP, quality verification and assessment is built into the process, inside all activities, including all stakeholders and is not treated as a separate activity, performed by a separate group.&lt;br /&gt;
&lt;br /&gt;
=== Control changes to software ===&lt;br /&gt;
&lt;br /&gt;
A software system is developed by a number of teams or individuals, using different platforms and at times being in different locations. As a result, it is essential to somehow make sure that all the changes made in the system are synchronized and constantly verified. RUP ensures that all the individuals working in the project are well informed about any changes and everything is in sync. The process describes how to control, track and monitor changes to enable successful iterative development.&lt;br /&gt;
&lt;br /&gt;
== Limitations ==&lt;br /&gt;
&lt;br /&gt;
While being a complete methodology in itself with an emphasis on accurate documentation and quickly resolving project associated risks, RUP comes with a number of limitations.&lt;br /&gt;
&lt;br /&gt;
* In order for team members to start developing software under this methodology, they need to be &#039;&#039;&#039;experts&#039;&#039;&#039; in their respective fields.&lt;br /&gt;
* The development process can easily become too complex to handle.&lt;br /&gt;
* When working with cutting - edge projects that highly utilize new technology, components will not be able to be reused. &lt;br /&gt;
* While in theory integration throughout the process of software development sounds like a good thing, when working with particularly complex projects with multiple development streams, issues and significant confusion may rise during the stages of testing.&lt;br /&gt;
&lt;br /&gt;
== Conclusion ==&lt;br /&gt;
&lt;br /&gt;
The Rational Unified Process, is an exemplary method for addressing and mitigating risks from the very early stages, by rapidly developing an initial version of the system (prototype) that describes its architecture. There are not fixed requirements from the beginning but rather allows refining requirements , while the project progresses. It expects and actually deals with change pretty well while its main focus is the quality of the product and the degree to which it satisfies its end - users, throughout the project life-cycle. However, while being a complete and well documented methodology, it should be stressed that remains a very complex one. In order to increase the likelihood of success, while adopting this methodology, all the project members need to be &#039;&#039;&#039;experts&#039;&#039;&#039; in their respective fields. The method can easily become too difficult to learn and most importantly too difficult to apply.&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
1) Rational Unified Process vs Microsoft Solutions Framework : A comparative study, Johan W.A Traa &amp;lt;br&amp;gt;&lt;br /&gt;
2) Rational Unified Process: Best Practices for Software Development Teams,  Rational Software white paper &amp;lt;br&amp;gt;&lt;br /&gt;
3) Planning a Project with the Rational Unified Process, David West &amp;lt;br&amp;gt;&lt;br /&gt;
4) Project Management Methodologies, Jason Charvat &amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Lessisv</name></author>
	</entry>
	<entry>
		<id>http://13.50.150.85/index.php?title=Rational_Unified_Process_(RUP)&amp;diff=12392</id>
		<title>Rational Unified Process (RUP)</title>
		<link rel="alternate" type="text/html" href="http://13.50.150.85/index.php?title=Rational_Unified_Process_(RUP)&amp;diff=12392"/>
		<updated>2015-09-22T08:14:00Z</updated>

		<summary type="html">&lt;p&gt;Lessisv: /* Visually model software */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The &#039;&#039;&#039;Rational Unified Process (RUP)&#039;&#039;&#039; is an iterative, &#039;&#039;&#039;software development methodology&#039;&#039;&#039;, firstly introduced by the [https://en.wikipedia.org/wiki/Rational_Software Rational Software Corporation] which was [http://www-03.ibm.com/press/us/en/pressrelease/314.wss acquired by IBM] in 2003. RUP is a disciplined approach to assign tasks within a development organization and software project teams. It was developed to ensure the production of &#039;&#039;&#039;high quality software&#039;&#039;&#039; by providing the development team with a set of &#039;&#039;&#039;guidelines, templates and tool mentors&#039;&#039;&#039;, for all the critical life-cycle activities within a project. This cluster of objects, form a knowledge base that is shared between all project team members. As a result, no matter what each member is working with (e.g testing, designing, managing), they all share a common language and view on how to develop software. Consequently, team productivity is boosted, in order to deliver software that can meet and exceed the needs and expectations of end-users, strictly following a predictable budget and schedule. RUP is the most popular and extensively documented refinement of the [https://en.wikipedia.org/wiki/Unified_Process Unified Process], an iterative and incremental software development process framework. Other worth mentioning forms are the [https://en.wikipedia.org/wiki/OpenUP OpenUP] and [https://en.wikipedia.org/wiki/Agile_Unified_Process Agile Unified Process].&lt;br /&gt;
&lt;br /&gt;
== Process Overview ==&lt;br /&gt;
&lt;br /&gt;
[[File:RUP.png|450px|right|thumb| Figure 1. The iterative model graph shows how the process is structured along two dimensions]]&lt;br /&gt;
&lt;br /&gt;
The best possible way to describe the methodology is through a 2 - dimensional graph.&lt;br /&gt;
* The first dimension (horizontal axis) represents the &#039;&#039;&#039;dynamic aspect&#039;&#039;&#039; of the process. It expresses &#039;&#039;&#039;time&#039;&#039;&#039; in terms of &#039;&#039;&#039;phases&#039;&#039;&#039; and &#039;&#039;&#039;iterations&#039;&#039;&#039;. &lt;br /&gt;
* The second dimension (vertical axis) represents the &#039;&#039;&#039;static aspect&#039;&#039;&#039; of the process. It expresses &#039;&#039;&#039;workflows&#039;&#039;&#039; in terms of 6 core and 3 supporting &#039;&#039;&#039;disciplines&#039;&#039;&#039; (more on that on &amp;quot;Disciplines&amp;quot; section).&lt;br /&gt;
&lt;br /&gt;
=== Time Dimension - Phases and Iterations ===&lt;br /&gt;
When developing software, the project team goes through a multi-step process, from establishing a system&#039;s requirements to designing, implementing and finally maintaining the software with new releases. This is the software life cycle. RUP delicately breaks the software life cycle down to four consecutive phases.&lt;br /&gt;
&lt;br /&gt;
* Inception phase&lt;br /&gt;
* Elaboration phase&lt;br /&gt;
* Construction phase&lt;br /&gt;
* Transition phase&lt;br /&gt;
&lt;br /&gt;
Depending on the project, each of these phases can consist of one to a number of &#039;&#039;&#039;iterations&#039;&#039;&#039;. An iteration is defined as a complete development loop, resulting in a new product release. All the phases include a well-defined milestone, in order to be completed. In the end of every phase, the development team can evaluate whether all the key goals have been achieved, all stakeholders have been considered and the actual expenditures correspond with the planned ones.&lt;br /&gt;
&lt;br /&gt;
[[File:RUP_phases.png|550px|right|thumb| Figure 2. The four phases and milestones of a project]]&lt;br /&gt;
==== Inception Phase ====&lt;br /&gt;
The first phase is the inception phase. The focus of this phase, is understanding the scope of the project and studying if is both worth doing and possible to do. All the internal and external entities that the system will interact with are identified and the nature of the interaction is well defined at a high level. For this reason, the inception phase is primarily significant for new development projects. &lt;br /&gt;
The expected outcome of the inception phase includes :&lt;br /&gt;
&lt;br /&gt;
* A vision document: The document states the general vision of the project including its key requirements, features and main constraints.&lt;br /&gt;
* An initial use-case model (10%-20% complete)&lt;br /&gt;
* An initial project glossary&lt;br /&gt;
* An initial business case, including the business context, success criteria and a financial forecast.&lt;br /&gt;
* An initial risk assessment&lt;br /&gt;
* A project plan (phases and iterations)&lt;br /&gt;
* A business model (if necessary)&lt;br /&gt;
* Prototypes&lt;br /&gt;
&lt;br /&gt;
At the end of the inception phase lies the first major project milestone; the &#039;&#039;&#039;Lifecycle Objective Milestone&#039;&#039;&#039;.&lt;br /&gt;
The inception phase has five evaluation criteria:&lt;br /&gt;
&lt;br /&gt;
* Stakeholder concurrence on scope definition and cost/schedule estimates.&lt;br /&gt;
* Depth and breadth of any prototype that was developed.&lt;br /&gt;
* Actual expenditures versus planned ones.&lt;br /&gt;
* Requirements understanding.&lt;br /&gt;
* Credibility of the cost/schedule estimates, risks and priorities.&lt;br /&gt;
&lt;br /&gt;
If for any reason the project fails to pass this milestone, it can either be completely cancelled or re-designed to successfully meet the criteria.&lt;br /&gt;
 &lt;br /&gt;
==== Elaboration Phase ====&lt;br /&gt;
The second phase is the elaboration phase. The focus of this phase, is establishing a baseline to the architecture of the system, further developing the project plan and analyzing the problem domain while trying to mitigate the highest risk elements. In other words, this is the phase where the project starts to take shape. One of the most important characteristics of this phase, is the production of a component-based architectural prototype. The purpose of this prototype is to address the critical use-cases, that were identified in the previous phase, and hopefully expose the highest technical risks of the project. The expected outcome of the elaboration phase includes:&lt;br /&gt;
&lt;br /&gt;
* A use-case model (at least 80% complete) which will be able to identify all the actors and use-cases.&lt;br /&gt;
* Supplementary requirements (if any).&lt;br /&gt;
* A clear description of the software architecture.&lt;br /&gt;
* An architectural prototype.&lt;br /&gt;
* A more detailed risk assessment and business case.&lt;br /&gt;
* A development plan for the overall project.&lt;br /&gt;
* A preliminary user manual (optional).&lt;br /&gt;
&lt;br /&gt;
At the end of the elaboration phase lies the second major project milestone; the &#039;&#039;&#039;Lifecycle Architecture Milestone&#039;&#039;&#039;.&lt;br /&gt;
The elaboration phase has six evaluation criteria:&lt;br /&gt;
&lt;br /&gt;
* Is the vision stable enough?&lt;br /&gt;
* Is the system architecture stable enough?&lt;br /&gt;
* Have all the major risks been successfully identified and resolved?&lt;br /&gt;
* Is the plan for the construction phase accurate enough?&lt;br /&gt;
* Do all the stakeholders share the opinion that the vision can be achieved by executing the current plan?&lt;br /&gt;
* Is the actual vs planned resource expenditure in acceptable levels?&lt;br /&gt;
&lt;br /&gt;
If the project fails to pass the milestone, there is still time to be re-designed or even cancelled. However, when the project moves to the next phase the associated operation risks raise significantly and changes become much more difficult.&lt;br /&gt;
&lt;br /&gt;
==== Construction Phase====&lt;br /&gt;
The third phase is the construction phase. The focus of this phase, is to develop and integrate all the remaining components and application features into the product. In other words this is the phase where the vision is finally translated into a final stable product, which is based on the architecture that was developed during the previous phases. Most emphasize is given to resources, control and process management in order to fully optimize costs, schedules and quality. The existing prototype evolves via a number of iterations into a fully functional product that meets the stakeholders&#039; needs. The construction phase is usually the longest one of the project life cycle. The expected outcome of the construction phase includes:&lt;br /&gt;
&lt;br /&gt;
* First external release of the software.&lt;br /&gt;
* User manuals.&lt;br /&gt;
* A detailed description of the current release.&lt;br /&gt;
&lt;br /&gt;
At the end of the construction phase lies the third major project milestone; the &#039;&#039;&#039;Initial Operation Capability Milestone&#039;&#039;&#039;.&lt;br /&gt;
The construction phase has three evaluation criteria:&lt;br /&gt;
&lt;br /&gt;
* Is the software release stable enough to be given to the user community?&lt;br /&gt;
* Are all the stakeholders ready for the transition to the user community?&lt;br /&gt;
* Is the actual vs planned resource expenditure in acceptable levels?&lt;br /&gt;
&lt;br /&gt;
If the project fails to pass this milestone, transition may have to be postponed by one release.&lt;br /&gt;
&lt;br /&gt;
==== Transition Phase ====&lt;br /&gt;
The fourth and final phase is the transition phase. The focus of this phase is, as the word says, to transition the software product to the user community. It includes ensuring that the product has been developed to an acceptable quality level, by beta testing the software through the end users, and validating it against the stakeholders&#039; expectations. Once the product has been given for beta testing, a number of issues can arise, requiring the development of new releases (fixing bugs) and adding features that may have been postponed. The expected outcome of the transition phase includes:&lt;br /&gt;
&lt;br /&gt;
* Beta-testing to fix any major [https://en.wikipedia.org/wiki/Software_bug software bugs] and add any missing features.&lt;br /&gt;
* Conversion of operational databases&lt;br /&gt;
* Training of end users and maintainers.&lt;br /&gt;
* Marketing and distribution of the product.&lt;br /&gt;
&lt;br /&gt;
At the end of the transition phase lies the fourth and final major project milestone; the &#039;&#039;&#039;Product Release&#039;&#039;&#039;.&lt;br /&gt;
The transition phase has two evaluation criteria:&lt;br /&gt;
&lt;br /&gt;
* Are the end - users satisfied with the product?&lt;br /&gt;
* Is the actual vs planned resource expenditure in acceptable levels?&lt;br /&gt;
&lt;br /&gt;
==== Iterations ====&lt;br /&gt;
As stated before, every phase can consist of a number of iterations, depending on the project size and scope. RUP, in comparison to the traditional [https://en.wikipedia.org/wiki/Waterfall_model waterfall] approach, is heavily based on iterations. This gives a number of advantages and benefits to the project team, with the most important one being mitigating risks much more earlier in the project. Moreover change is more manageable and there is normally a higher level of reuse. Finally, iterations ensure an overall high quality in the final product and that the project team can learn throughout the developing process.&lt;br /&gt;
&lt;br /&gt;
=== Workflow Dimension - Disciplines ===&lt;br /&gt;
&lt;br /&gt;
[[File:activities.png|350px|right|thumb| Figure 4. Individuals, Roles and Activities]]&lt;br /&gt;
[[File:workflows.png|350px|right|thumb| Figure 5. Example of a workflow]]&lt;br /&gt;
&lt;br /&gt;
A process describes &#039;&#039;&#039;who&#039;&#039;&#039; is doing &#039;&#039;&#039;what&#039;&#039;&#039;, &#039;&#039;&#039;how&#039;&#039;&#039; and &#039;&#039;&#039;when&#039;&#039;&#039;. RUP addresses those terms with four modelling elements; &#039;&#039;&#039;Roles&#039;&#039;&#039;, &#039;&#039;&#039;Activities&#039;&#039;&#039;, &#039;&#039;&#039;Artifacts&#039;&#039;&#039; and &#039;&#039;&#039;Workflows&#039;&#039;&#039; respectively. A &#039;&#039;&#039;role&#039;&#039;&#039;, formally addressed as a worker, describes the behavior and responsibilities of an individual or a group of individuals in order to produce an artifact. Throughout the development of a project, a person can play one or a number of roles. Some examples of roles are the system analyst, designer, tester. &#039;&#039;&#039;Activities&#039;&#039;&#039; are expressed through behaviors. An activity, is a job that a person performs through his role, as seen in Figure 4. The length of an activity may vary from a few hours to a number of days. Examples of activities are: Plan an operation - performed by the role of Project Manager or add a missing feature - performed by the role of a software developer. All activities produce a meaningful result, called an artifact. &#039;&#039;&#039;Artifacts&#039;&#039;&#039;, are the responsibilities of ones role or roles and express a piece of information that is produced, modified or even used by a process. They can act both as input or output of an activity. Examples of artifacts are the source code, the business case, the software architecture. The roles perform activities that can produce a sequence of artifacts, called &#039;&#039;&#039;workflows&#039;&#039;&#039;. Examples of workflows can be seen in Figure 5. &lt;br /&gt;
&lt;br /&gt;
RUP identifies nine core process workflows, called &#039;&#039;&#039;disciplines&#039;&#039;&#039;. Every discipline, addresses a set of activities and artifacts, based upon a set of skills that are common in an ICT project. These disciplines have the ability to arrange the activities and artifacts in such a way, to provide an understanding of the overall project from a waterfall perspective.&lt;br /&gt;
&lt;br /&gt;
There are six core &amp;quot;engineering&amp;quot; disciplines:&lt;br /&gt;
* Business Modelling Discipline&lt;br /&gt;
* Requirements Discipline&lt;br /&gt;
* Analysis and Design Discipline&lt;br /&gt;
* Implementation Discipline&lt;br /&gt;
* Test Discipline&lt;br /&gt;
* Deployment Discipline&lt;br /&gt;
&lt;br /&gt;
And three core &amp;quot;supporting&amp;quot; disciplines:&lt;br /&gt;
* Project Management Discipline&lt;br /&gt;
* Configuration and Change Management Discipline&lt;br /&gt;
* Environment Discipline&lt;br /&gt;
&lt;br /&gt;
==== Business Modelling ====&lt;br /&gt;
&lt;br /&gt;
Miscommunication between the software engineering community and the business engineering community is one of the most common problems among most business engineering efforts. This means that the output from software development efforts is not correctly used as input to the business engineering and vice versa. The purpose of the Business Modelling discipline is to provide a common language between the two communities and create a direct coupling between software and business models. All business processes are documented using &amp;quot;use cases&amp;quot;. This assures that all stakeholders share the same understanding of the demanding organization.&lt;br /&gt;
&lt;br /&gt;
==== Requirements ====&lt;br /&gt;
The purpose of the requirements discipline is to describe in detail &#039;&#039;&#039;what&#039;&#039;&#039; the system should do. Based on that, a Vision document is created where required functionality and constraints are documented. Moreover, actors (end users) and use cases (behaviors of the system) are identified. Use cases are described in detail and each description clearly shows how the system interacts with the actors. This way an agreement is established between the customers and the rest of the stakeholders regarding the system&#039;s capabilities, user-interface and the end user&#039;s needs.&lt;br /&gt;
&lt;br /&gt;
==== Analysis and Design ====&lt;br /&gt;
&lt;br /&gt;
The purpose of the Analysis and Design discipline it to investigate &#039;&#039;&#039;how&#039;&#039;&#039; the system requirements will be translated into a detailed implementation plan. The system needs to:&lt;br /&gt;
* Perform exactly as described in the use-case descriptions.&lt;br /&gt;
* Fulfill all requirements.&lt;br /&gt;
* Have a robust structure.&lt;br /&gt;
&lt;br /&gt;
Analysis and Design result in the creation of a &#039;&#039;&#039;design model&#039;&#039;&#039;. The design model is an abstraction of the system&#039;s architecture and acts as a guide of how the source code should be finally written and structured.&lt;br /&gt;
&lt;br /&gt;
==== Implementation ====&lt;br /&gt;
The purpose of the Implementation discipline is to:&lt;br /&gt;
&lt;br /&gt;
* Arrange the code into subsystems, organized in layers.&lt;br /&gt;
* Implement classes and objects in terms of components.&lt;br /&gt;
* Uni-test the developed components to ensure quality.&lt;br /&gt;
* Integrate the results into an executable system.&lt;br /&gt;
&lt;br /&gt;
The whole system can be realized as an implementation of various components. RUP enables the integration of those components, in a revolutionary way, making the system easier to maintain and increasing the possibilities for future re-use.&lt;br /&gt;
&lt;br /&gt;
==== Test ====&lt;br /&gt;
&lt;br /&gt;
In the implementation discipline, all the developed components were uni-tested individually and were integrated into the system. The purpose of the Test discipline is to assess the system as a whole and verify the product quality. It is a mechanism to verify the smooth interaction between the various components, their proper integration into the system and finally ensure that all requirements have been successfully implemented. All tests are carried out along 4 quality dimensions:&lt;br /&gt;
* Functionality.&lt;br /&gt;
* Reliability.&lt;br /&gt;
* Application Performance.&lt;br /&gt;
* System Performance.&lt;br /&gt;
&lt;br /&gt;
==== Deployment ====&lt;br /&gt;
&lt;br /&gt;
The purpose of the Deployment discipline is primarily to develop product releases and distribute the software to the end – users. More specifically the Deployment discipline focuses at:&lt;br /&gt;
&lt;br /&gt;
* Developing external software releases&lt;br /&gt;
* Distributing the software&lt;br /&gt;
* Installing the software&lt;br /&gt;
* Providing help to the end – users&lt;br /&gt;
* Creating an up-to-date user manual&lt;br /&gt;
* Conducting beta testing&lt;br /&gt;
&lt;br /&gt;
==== Project Management ====&lt;br /&gt;
&lt;br /&gt;
The purpose of the Project Management discipline, is to successfully balance competing objectives, manage and mitigate risks and finally handle any constraints on delivering the product. Project management, ideally provides:&lt;br /&gt;
&lt;br /&gt;
* A framework for managing software-intensive projects.&lt;br /&gt;
* A framework to successfully manage risks.&lt;br /&gt;
* A framework to plan, execute and monitor projects.&lt;br /&gt;
&lt;br /&gt;
While the discipline does not guarantee success, the odds of delivering successful software are greatly improved.&lt;br /&gt;
&lt;br /&gt;
==== Configuration and Change Management ====&lt;br /&gt;
&lt;br /&gt;
The purpose of the Configuration and Change Management Discipline is to control, maintain and configure all the various artifacts that are produced by the different actors that are working on a project. During the software development life cycle, artifacts are regularly updated (changed). In order to understand the current state of an artifact, it is very important to keep track of its location and history; what was the reason and who decided to change the artifact. The discipline helps create a framework that keeps track of all the project assets.&lt;br /&gt;
&lt;br /&gt;
==== Environment ====&lt;br /&gt;
&lt;br /&gt;
The purpose of the environment discipline, is to provide the development team with all the processes, tools and methods for supporting all developing activities. It is responsible for producing a Development Kit, able to provide guidelines and templates for customizing processes.&lt;br /&gt;
&lt;br /&gt;
== Why RUP - Best Practices ==&lt;br /&gt;
&lt;br /&gt;
RUP captures many of the “best practices” that are currently used in modern software development and more particularly in industry by successful organizations. The practices are:&lt;br /&gt;
&lt;br /&gt;
* Develop Software Iteratively&lt;br /&gt;
* Manage Requirements&lt;br /&gt;
* Use component-based architectures&lt;br /&gt;
* Visually model software&lt;br /&gt;
* Continuously verify software quality&lt;br /&gt;
* Control changes to software&lt;br /&gt;
&lt;br /&gt;
=== Develop Software iteratively ===&lt;br /&gt;
&lt;br /&gt;
Today’s high sophisticated software systems, consist of many and complex structures which make it nearly impossible to define the entire system from the very beginning, develop the entire solution and then test the product in the end. RUP uses an iterative approach that allows an increasing understanding of the problem and developing a step – by – step solution, over multiple iterations. Each iteration ends with an executable release, which enables continuous end - user involvement and feedback. As a result, the risks of the project are mitigated at an early stage and stakeholders are ensured that the project requirements are fulfilled.&lt;br /&gt;
&lt;br /&gt;
=== Manage requirements ===&lt;br /&gt;
&lt;br /&gt;
The requirements of a system include the description of the services that the system is able to provide and its operational constraints. RUP documents, organizes and tracks required functionality and constraints and easily communicates business requirements. The use – cases that are used in the process are an excellent way to ensure that requirements are actually those elements that drive the design, implementation and testing of software, making it more likely that the final system fulfills the stakeholders needs.&lt;br /&gt;
&lt;br /&gt;
=== Use component-based architectures ===&lt;br /&gt;
&lt;br /&gt;
Component-based architecture makes the system dynamic; components are independent from the system and interact with other components through well-defined interfaces. Their in-dependency from the system, gives them a great flexibility meaning that they can easily be added, updated or totally replaced. RUP supports component-based software development by providing a systematic approach to defining an architecture using new and existing components.&lt;br /&gt;
&lt;br /&gt;
=== Visually model software ===&lt;br /&gt;
&lt;br /&gt;
A model is an abstraction of reality that can help better comprehend large and complex systems. Visual abstractions help the development team to easily communicate different aspects of the software and see how all the components fit together. RUP uses the [http://www.uml.org/ Unified Modelling Language (UML)] standard which is a graphical language for visualizing and constructing the artifacts of a software-intensive system.&lt;br /&gt;
&lt;br /&gt;
=== Continuously verify software quality ===&lt;br /&gt;
&lt;br /&gt;
In software development, quality should always be reviewed with respect to the requirements based on reliability, functionality , application and system performance. In RUP, quality verification and assessment is built into the process, inside all activities, including all stakeholders and is not treated as a separate activity, performed by a separate group.&lt;br /&gt;
&lt;br /&gt;
=== Control changes to software ===&lt;br /&gt;
&lt;br /&gt;
A software system is developed by a number of teams or individuals, using different platforms and at times being in different locations. As a result, it is essential to somehow make sure that all the changes made in the system are synchronized and constantly verified. RUP ensures that all the individuals working in the project are well informed about any changes and everything is in sync. The process describes how to control, track and monitor changes to enable successful iterative development.&lt;br /&gt;
&lt;br /&gt;
== Limitations ==&lt;br /&gt;
&lt;br /&gt;
While being a complete methodology in itself with an emphasis on accurate documentation and quickly resolving project associated risks, RUP comes with a number of limitations.&lt;br /&gt;
&lt;br /&gt;
* In order for team members to start developing software under this methodology, they need to be &#039;&#039;&#039;experts&#039;&#039;&#039; in their respective fields.&lt;br /&gt;
* The development process can easily become too complex to handle.&lt;br /&gt;
* When working with cutting - edge projects that highly utilize new technology, components will not be able to be reused. &lt;br /&gt;
* While in theory integration throughout the process of software development sounds like a good thing, when working with particularly complex projects with multiple development streams, issues and significant confusion may rise during the stages of testing.&lt;br /&gt;
&lt;br /&gt;
== Conclusion ==&lt;br /&gt;
&lt;br /&gt;
The Rational Unified Process, is an exemplary method for addressing and mitigating risks from the very early stages, by rapidly developing an initial version of the system (prototype) that describes its architecture. There are not fixed requirements from the beginning but rather allows refining requirements , while the project progresses. It expects and actually deals with change pretty well while its main focus is the quality of the product and the degree to which it satisfies its end - users, throughout the project life-cycle. However, while being a complete and well documented methodology, it should be stressed that remains a very complex one. In order to increase the likelihood of success, while adopting this methodology, all the project members need to be &#039;&#039;&#039;experts&#039;&#039;&#039; in their respective fields. The method can easily become too difficult to learn and most importantly too difficult to apply.&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
1) Rational Unified Process vs Microsoft Solutions Framework : A comparative study, Johan W.A Traa &amp;lt;br&amp;gt;&lt;br /&gt;
2) Rational Unified Process: Best Practices for Software Development Teams,  Rational Software white paper &amp;lt;br&amp;gt;&lt;br /&gt;
3) Planning a Project with the Rational Unified Process, David West &amp;lt;br&amp;gt;&lt;br /&gt;
4) Project Management Methodologies, Jason Charvat &amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Lessisv</name></author>
	</entry>
	<entry>
		<id>http://13.50.150.85/index.php?title=Rational_Unified_Process_(RUP)&amp;diff=12391</id>
		<title>Rational Unified Process (RUP)</title>
		<link rel="alternate" type="text/html" href="http://13.50.150.85/index.php?title=Rational_Unified_Process_(RUP)&amp;diff=12391"/>
		<updated>2015-09-22T08:13:12Z</updated>

		<summary type="html">&lt;p&gt;Lessisv: /* References */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The &#039;&#039;&#039;Rational Unified Process (RUP)&#039;&#039;&#039; is an iterative, &#039;&#039;&#039;software development methodology&#039;&#039;&#039;, firstly introduced by the [https://en.wikipedia.org/wiki/Rational_Software Rational Software Corporation] which was [http://www-03.ibm.com/press/us/en/pressrelease/314.wss acquired by IBM] in 2003. RUP is a disciplined approach to assign tasks within a development organization and software project teams. It was developed to ensure the production of &#039;&#039;&#039;high quality software&#039;&#039;&#039; by providing the development team with a set of &#039;&#039;&#039;guidelines, templates and tool mentors&#039;&#039;&#039;, for all the critical life-cycle activities within a project. This cluster of objects, form a knowledge base that is shared between all project team members. As a result, no matter what each member is working with (e.g testing, designing, managing), they all share a common language and view on how to develop software. Consequently, team productivity is boosted, in order to deliver software that can meet and exceed the needs and expectations of end-users, strictly following a predictable budget and schedule. RUP is the most popular and extensively documented refinement of the [https://en.wikipedia.org/wiki/Unified_Process Unified Process], an iterative and incremental software development process framework. Other worth mentioning forms are the [https://en.wikipedia.org/wiki/OpenUP OpenUP] and [https://en.wikipedia.org/wiki/Agile_Unified_Process Agile Unified Process].&lt;br /&gt;
&lt;br /&gt;
== Process Overview ==&lt;br /&gt;
&lt;br /&gt;
[[File:RUP.png|450px|right|thumb| Figure 1. The iterative model graph shows how the process is structured along two dimensions]]&lt;br /&gt;
&lt;br /&gt;
The best possible way to describe the methodology is through a 2 - dimensional graph.&lt;br /&gt;
* The first dimension (horizontal axis) represents the &#039;&#039;&#039;dynamic aspect&#039;&#039;&#039; of the process. It expresses &#039;&#039;&#039;time&#039;&#039;&#039; in terms of &#039;&#039;&#039;phases&#039;&#039;&#039; and &#039;&#039;&#039;iterations&#039;&#039;&#039;. &lt;br /&gt;
* The second dimension (vertical axis) represents the &#039;&#039;&#039;static aspect&#039;&#039;&#039; of the process. It expresses &#039;&#039;&#039;workflows&#039;&#039;&#039; in terms of 6 core and 3 supporting &#039;&#039;&#039;disciplines&#039;&#039;&#039; (more on that on &amp;quot;Disciplines&amp;quot; section).&lt;br /&gt;
&lt;br /&gt;
=== Time Dimension - Phases and Iterations ===&lt;br /&gt;
When developing software, the project team goes through a multi-step process, from establishing a system&#039;s requirements to designing, implementing and finally maintaining the software with new releases. This is the software life cycle. RUP delicately breaks the software life cycle down to four consecutive phases.&lt;br /&gt;
&lt;br /&gt;
* Inception phase&lt;br /&gt;
* Elaboration phase&lt;br /&gt;
* Construction phase&lt;br /&gt;
* Transition phase&lt;br /&gt;
&lt;br /&gt;
Depending on the project, each of these phases can consist of one to a number of &#039;&#039;&#039;iterations&#039;&#039;&#039;. An iteration is defined as a complete development loop, resulting in a new product release. All the phases include a well-defined milestone, in order to be completed. In the end of every phase, the development team can evaluate whether all the key goals have been achieved, all stakeholders have been considered and the actual expenditures correspond with the planned ones.&lt;br /&gt;
&lt;br /&gt;
[[File:RUP_phases.png|550px|right|thumb| Figure 2. The four phases and milestones of a project]]&lt;br /&gt;
==== Inception Phase ====&lt;br /&gt;
The first phase is the inception phase. The focus of this phase, is understanding the scope of the project and studying if is both worth doing and possible to do. All the internal and external entities that the system will interact with are identified and the nature of the interaction is well defined at a high level. For this reason, the inception phase is primarily significant for new development projects. &lt;br /&gt;
The expected outcome of the inception phase includes :&lt;br /&gt;
&lt;br /&gt;
* A vision document: The document states the general vision of the project including its key requirements, features and main constraints.&lt;br /&gt;
* An initial use-case model (10%-20% complete)&lt;br /&gt;
* An initial project glossary&lt;br /&gt;
* An initial business case, including the business context, success criteria and a financial forecast.&lt;br /&gt;
* An initial risk assessment&lt;br /&gt;
* A project plan (phases and iterations)&lt;br /&gt;
* A business model (if necessary)&lt;br /&gt;
* Prototypes&lt;br /&gt;
&lt;br /&gt;
At the end of the inception phase lies the first major project milestone; the &#039;&#039;&#039;Lifecycle Objective Milestone&#039;&#039;&#039;.&lt;br /&gt;
The inception phase has five evaluation criteria:&lt;br /&gt;
&lt;br /&gt;
* Stakeholder concurrence on scope definition and cost/schedule estimates.&lt;br /&gt;
* Depth and breadth of any prototype that was developed.&lt;br /&gt;
* Actual expenditures versus planned ones.&lt;br /&gt;
* Requirements understanding.&lt;br /&gt;
* Credibility of the cost/schedule estimates, risks and priorities.&lt;br /&gt;
&lt;br /&gt;
If for any reason the project fails to pass this milestone, it can either be completely cancelled or re-designed to successfully meet the criteria.&lt;br /&gt;
 &lt;br /&gt;
==== Elaboration Phase ====&lt;br /&gt;
The second phase is the elaboration phase. The focus of this phase, is establishing a baseline to the architecture of the system, further developing the project plan and analyzing the problem domain while trying to mitigate the highest risk elements. In other words, this is the phase where the project starts to take shape. One of the most important characteristics of this phase, is the production of a component-based architectural prototype. The purpose of this prototype is to address the critical use-cases, that were identified in the previous phase, and hopefully expose the highest technical risks of the project. The expected outcome of the elaboration phase includes:&lt;br /&gt;
&lt;br /&gt;
* A use-case model (at least 80% complete) which will be able to identify all the actors and use-cases.&lt;br /&gt;
* Supplementary requirements (if any).&lt;br /&gt;
* A clear description of the software architecture.&lt;br /&gt;
* An architectural prototype.&lt;br /&gt;
* A more detailed risk assessment and business case.&lt;br /&gt;
* A development plan for the overall project.&lt;br /&gt;
* A preliminary user manual (optional).&lt;br /&gt;
&lt;br /&gt;
At the end of the elaboration phase lies the second major project milestone; the &#039;&#039;&#039;Lifecycle Architecture Milestone&#039;&#039;&#039;.&lt;br /&gt;
The elaboration phase has six evaluation criteria:&lt;br /&gt;
&lt;br /&gt;
* Is the vision stable enough?&lt;br /&gt;
* Is the system architecture stable enough?&lt;br /&gt;
* Have all the major risks been successfully identified and resolved?&lt;br /&gt;
* Is the plan for the construction phase accurate enough?&lt;br /&gt;
* Do all the stakeholders share the opinion that the vision can be achieved by executing the current plan?&lt;br /&gt;
* Is the actual vs planned resource expenditure in acceptable levels?&lt;br /&gt;
&lt;br /&gt;
If the project fails to pass the milestone, there is still time to be re-designed or even cancelled. However, when the project moves to the next phase the associated operation risks raise significantly and changes become much more difficult.&lt;br /&gt;
&lt;br /&gt;
==== Construction Phase====&lt;br /&gt;
The third phase is the construction phase. The focus of this phase, is to develop and integrate all the remaining components and application features into the product. In other words this is the phase where the vision is finally translated into a final stable product, which is based on the architecture that was developed during the previous phases. Most emphasize is given to resources, control and process management in order to fully optimize costs, schedules and quality. The existing prototype evolves via a number of iterations into a fully functional product that meets the stakeholders&#039; needs. The construction phase is usually the longest one of the project life cycle. The expected outcome of the construction phase includes:&lt;br /&gt;
&lt;br /&gt;
* First external release of the software.&lt;br /&gt;
* User manuals.&lt;br /&gt;
* A detailed description of the current release.&lt;br /&gt;
&lt;br /&gt;
At the end of the construction phase lies the third major project milestone; the &#039;&#039;&#039;Initial Operation Capability Milestone&#039;&#039;&#039;.&lt;br /&gt;
The construction phase has three evaluation criteria:&lt;br /&gt;
&lt;br /&gt;
* Is the software release stable enough to be given to the user community?&lt;br /&gt;
* Are all the stakeholders ready for the transition to the user community?&lt;br /&gt;
* Is the actual vs planned resource expenditure in acceptable levels?&lt;br /&gt;
&lt;br /&gt;
If the project fails to pass this milestone, transition may have to be postponed by one release.&lt;br /&gt;
&lt;br /&gt;
==== Transition Phase ====&lt;br /&gt;
The fourth and final phase is the transition phase. The focus of this phase is, as the word says, to transition the software product to the user community. It includes ensuring that the product has been developed to an acceptable quality level, by beta testing the software through the end users, and validating it against the stakeholders&#039; expectations. Once the product has been given for beta testing, a number of issues can arise, requiring the development of new releases (fixing bugs) and adding features that may have been postponed. The expected outcome of the transition phase includes:&lt;br /&gt;
&lt;br /&gt;
* Beta-testing to fix any major [https://en.wikipedia.org/wiki/Software_bug software bugs] and add any missing features.&lt;br /&gt;
* Conversion of operational databases&lt;br /&gt;
* Training of end users and maintainers.&lt;br /&gt;
* Marketing and distribution of the product.&lt;br /&gt;
&lt;br /&gt;
At the end of the transition phase lies the fourth and final major project milestone; the &#039;&#039;&#039;Product Release&#039;&#039;&#039;.&lt;br /&gt;
The transition phase has two evaluation criteria:&lt;br /&gt;
&lt;br /&gt;
* Are the end - users satisfied with the product?&lt;br /&gt;
* Is the actual vs planned resource expenditure in acceptable levels?&lt;br /&gt;
&lt;br /&gt;
==== Iterations ====&lt;br /&gt;
As stated before, every phase can consist of a number of iterations, depending on the project size and scope. RUP, in comparison to the traditional [https://en.wikipedia.org/wiki/Waterfall_model waterfall] approach, is heavily based on iterations. This gives a number of advantages and benefits to the project team, with the most important one being mitigating risks much more earlier in the project. Moreover change is more manageable and there is normally a higher level of reuse. Finally, iterations ensure an overall high quality in the final product and that the project team can learn throughout the developing process.&lt;br /&gt;
&lt;br /&gt;
=== Workflow Dimension - Disciplines ===&lt;br /&gt;
&lt;br /&gt;
[[File:activities.png|350px|right|thumb| Figure 4. Individuals, Roles and Activities]]&lt;br /&gt;
[[File:workflows.png|350px|right|thumb| Figure 5. Example of a workflow]]&lt;br /&gt;
&lt;br /&gt;
A process describes &#039;&#039;&#039;who&#039;&#039;&#039; is doing &#039;&#039;&#039;what&#039;&#039;&#039;, &#039;&#039;&#039;how&#039;&#039;&#039; and &#039;&#039;&#039;when&#039;&#039;&#039;. RUP addresses those terms with four modelling elements; &#039;&#039;&#039;Roles&#039;&#039;&#039;, &#039;&#039;&#039;Activities&#039;&#039;&#039;, &#039;&#039;&#039;Artifacts&#039;&#039;&#039; and &#039;&#039;&#039;Workflows&#039;&#039;&#039; respectively. A &#039;&#039;&#039;role&#039;&#039;&#039;, formally addressed as a worker, describes the behavior and responsibilities of an individual or a group of individuals in order to produce an artifact. Throughout the development of a project, a person can play one or a number of roles. Some examples of roles are the system analyst, designer, tester. &#039;&#039;&#039;Activities&#039;&#039;&#039; are expressed through behaviors. An activity, is a job that a person performs through his role, as seen in Figure 4. The length of an activity may vary from a few hours to a number of days. Examples of activities are: Plan an operation - performed by the role of Project Manager or add a missing feature - performed by the role of a software developer. All activities produce a meaningful result, called an artifact. &#039;&#039;&#039;Artifacts&#039;&#039;&#039;, are the responsibilities of ones role or roles and express a piece of information that is produced, modified or even used by a process. They can act both as input or output of an activity. Examples of artifacts are the source code, the business case, the software architecture. The roles perform activities that can produce a sequence of artifacts, called &#039;&#039;&#039;workflows&#039;&#039;&#039;. Examples of workflows can be seen in Figure 5. &lt;br /&gt;
&lt;br /&gt;
RUP identifies nine core process workflows, called &#039;&#039;&#039;disciplines&#039;&#039;&#039;. Every discipline, addresses a set of activities and artifacts, based upon a set of skills that are common in an ICT project. These disciplines have the ability to arrange the activities and artifacts in such a way, to provide an understanding of the overall project from a waterfall perspective.&lt;br /&gt;
&lt;br /&gt;
There are six core &amp;quot;engineering&amp;quot; disciplines:&lt;br /&gt;
* Business Modelling Discipline&lt;br /&gt;
* Requirements Discipline&lt;br /&gt;
* Analysis and Design Discipline&lt;br /&gt;
* Implementation Discipline&lt;br /&gt;
* Test Discipline&lt;br /&gt;
* Deployment Discipline&lt;br /&gt;
&lt;br /&gt;
And three core &amp;quot;supporting&amp;quot; disciplines:&lt;br /&gt;
* Project Management Discipline&lt;br /&gt;
* Configuration and Change Management Discipline&lt;br /&gt;
* Environment Discipline&lt;br /&gt;
&lt;br /&gt;
==== Business Modelling ====&lt;br /&gt;
&lt;br /&gt;
Miscommunication between the software engineering community and the business engineering community is one of the most common problems among most business engineering efforts. This means that the output from software development efforts is not correctly used as input to the business engineering and vice versa. The purpose of the Business Modelling discipline is to provide a common language between the two communities and create a direct coupling between software and business models. All business processes are documented using &amp;quot;use cases&amp;quot;. This assures that all stakeholders share the same understanding of the demanding organization.&lt;br /&gt;
&lt;br /&gt;
==== Requirements ====&lt;br /&gt;
The purpose of the requirements discipline is to describe in detail &#039;&#039;&#039;what&#039;&#039;&#039; the system should do. Based on that, a Vision document is created where required functionality and constraints are documented. Moreover, actors (end users) and use cases (behaviors of the system) are identified. Use cases are described in detail and each description clearly shows how the system interacts with the actors. This way an agreement is established between the customers and the rest of the stakeholders regarding the system&#039;s capabilities, user-interface and the end user&#039;s needs.&lt;br /&gt;
&lt;br /&gt;
==== Analysis and Design ====&lt;br /&gt;
&lt;br /&gt;
The purpose of the Analysis and Design discipline it to investigate &#039;&#039;&#039;how&#039;&#039;&#039; the system requirements will be translated into a detailed implementation plan. The system needs to:&lt;br /&gt;
* Perform exactly as described in the use-case descriptions.&lt;br /&gt;
* Fulfill all requirements.&lt;br /&gt;
* Have a robust structure.&lt;br /&gt;
&lt;br /&gt;
Analysis and Design result in the creation of a &#039;&#039;&#039;design model&#039;&#039;&#039;. The design model is an abstraction of the system&#039;s architecture and acts as a guide of how the source code should be finally written and structured.&lt;br /&gt;
&lt;br /&gt;
==== Implementation ====&lt;br /&gt;
The purpose of the Implementation discipline is to:&lt;br /&gt;
&lt;br /&gt;
* Arrange the code into subsystems, organized in layers.&lt;br /&gt;
* Implement classes and objects in terms of components.&lt;br /&gt;
* Uni-test the developed components to ensure quality.&lt;br /&gt;
* Integrate the results into an executable system.&lt;br /&gt;
&lt;br /&gt;
The whole system can be realized as an implementation of various components. RUP enables the integration of those components, in a revolutionary way, making the system easier to maintain and increasing the possibilities for future re-use.&lt;br /&gt;
&lt;br /&gt;
==== Test ====&lt;br /&gt;
&lt;br /&gt;
In the implementation discipline, all the developed components were uni-tested individually and were integrated into the system. The purpose of the Test discipline is to assess the system as a whole and verify the product quality. It is a mechanism to verify the smooth interaction between the various components, their proper integration into the system and finally ensure that all requirements have been successfully implemented. All tests are carried out along 4 quality dimensions:&lt;br /&gt;
* Functionality.&lt;br /&gt;
* Reliability.&lt;br /&gt;
* Application Performance.&lt;br /&gt;
* System Performance.&lt;br /&gt;
&lt;br /&gt;
==== Deployment ====&lt;br /&gt;
&lt;br /&gt;
The purpose of the Deployment discipline is primarily to develop product releases and distribute the software to the end – users. More specifically the Deployment discipline focuses at:&lt;br /&gt;
&lt;br /&gt;
* Developing external software releases&lt;br /&gt;
* Distributing the software&lt;br /&gt;
* Installing the software&lt;br /&gt;
* Providing help to the end – users&lt;br /&gt;
* Creating an up-to-date user manual&lt;br /&gt;
* Conducting beta testing&lt;br /&gt;
&lt;br /&gt;
==== Project Management ====&lt;br /&gt;
&lt;br /&gt;
The purpose of the Project Management discipline, is to successfully balance competing objectives, manage and mitigate risks and finally handle any constraints on delivering the product. Project management, ideally provides:&lt;br /&gt;
&lt;br /&gt;
* A framework for managing software-intensive projects.&lt;br /&gt;
* A framework to successfully manage risks.&lt;br /&gt;
* A framework to plan, execute and monitor projects.&lt;br /&gt;
&lt;br /&gt;
While the discipline does not guarantee success, the odds of delivering successful software are greatly improved.&lt;br /&gt;
&lt;br /&gt;
==== Configuration and Change Management ====&lt;br /&gt;
&lt;br /&gt;
The purpose of the Configuration and Change Management Discipline is to control, maintain and configure all the various artifacts that are produced by the different actors that are working on a project. During the software development life cycle, artifacts are regularly updated (changed). In order to understand the current state of an artifact, it is very important to keep track of its location and history; what was the reason and who decided to change the artifact. The discipline helps create a framework that keeps track of all the project assets.&lt;br /&gt;
&lt;br /&gt;
==== Environment ====&lt;br /&gt;
&lt;br /&gt;
The purpose of the environment discipline, is to provide the development team with all the processes, tools and methods for supporting all developing activities. It is responsible for producing a Development Kit, able to provide guidelines and templates for customizing processes.&lt;br /&gt;
&lt;br /&gt;
== Why RUP - Best Practices ==&lt;br /&gt;
&lt;br /&gt;
RUP captures many of the “best practices” that are currently used in modern software development and more particularly in industry by successful organizations. The practices are:&lt;br /&gt;
&lt;br /&gt;
* Develop Software Iteratively&lt;br /&gt;
* Manage Requirements&lt;br /&gt;
* Use component-based architectures&lt;br /&gt;
* Visually model software&lt;br /&gt;
* Continuously verify software quality&lt;br /&gt;
* Control changes to software&lt;br /&gt;
&lt;br /&gt;
=== Develop Software iteratively ===&lt;br /&gt;
&lt;br /&gt;
Today’s high sophisticated software systems, consist of many and complex structures which make it nearly impossible to define the entire system from the very beginning, develop the entire solution and then test the product in the end. RUP uses an iterative approach that allows an increasing understanding of the problem and developing a step – by – step solution, over multiple iterations. Each iteration ends with an executable release, which enables continuous end - user involvement and feedback. As a result, the risks of the project are mitigated at an early stage and stakeholders are ensured that the project requirements are fulfilled.&lt;br /&gt;
&lt;br /&gt;
=== Manage requirements ===&lt;br /&gt;
&lt;br /&gt;
The requirements of a system include the description of the services that the system is able to provide and its operational constraints. RUP documents, organizes and tracks required functionality and constraints and easily communicates business requirements. The use – cases that are used in the process are an excellent way to ensure that requirements are actually those elements that drive the design, implementation and testing of software, making it more likely that the final system fulfills the stakeholders needs.&lt;br /&gt;
&lt;br /&gt;
=== Use component-based architectures ===&lt;br /&gt;
&lt;br /&gt;
Component-based architecture makes the system dynamic; components are independent from the system and interact with other components through well-defined interfaces. Their in-dependency from the system, gives them a great flexibility meaning that they can easily be added, updated or totally replaced. RUP supports component-based software development by providing a systematic approach to defining an architecture using new and existing components.&lt;br /&gt;
&lt;br /&gt;
=== Visually model software ===&lt;br /&gt;
&lt;br /&gt;
A model is an abstraction of reality that can help better comprehend large and complex systems. Visual abstractions help the development team to easily communicate different aspects of the software and see how all the components fit together. RUP uses the Unified Modelling Language (UML) standard which is a graphical language for visualizing and constructing the artifacts of a software-intensive system.&lt;br /&gt;
&lt;br /&gt;
=== Continuously verify software quality ===&lt;br /&gt;
&lt;br /&gt;
In software development, quality should always be reviewed with respect to the requirements based on reliability, functionality , application and system performance. In RUP, quality verification and assessment is built into the process, inside all activities, including all stakeholders and is not treated as a separate activity, performed by a separate group.&lt;br /&gt;
&lt;br /&gt;
=== Control changes to software ===&lt;br /&gt;
&lt;br /&gt;
A software system is developed by a number of teams or individuals, using different platforms and at times being in different locations. As a result, it is essential to somehow make sure that all the changes made in the system are synchronized and constantly verified. RUP ensures that all the individuals working in the project are well informed about any changes and everything is in sync. The process describes how to control, track and monitor changes to enable successful iterative development.&lt;br /&gt;
&lt;br /&gt;
== Limitations ==&lt;br /&gt;
&lt;br /&gt;
While being a complete methodology in itself with an emphasis on accurate documentation and quickly resolving project associated risks, RUP comes with a number of limitations.&lt;br /&gt;
&lt;br /&gt;
* In order for team members to start developing software under this methodology, they need to be &#039;&#039;&#039;experts&#039;&#039;&#039; in their respective fields.&lt;br /&gt;
* The development process can easily become too complex to handle.&lt;br /&gt;
* When working with cutting - edge projects that highly utilize new technology, components will not be able to be reused. &lt;br /&gt;
* While in theory integration throughout the process of software development sounds like a good thing, when working with particularly complex projects with multiple development streams, issues and significant confusion may rise during the stages of testing.&lt;br /&gt;
&lt;br /&gt;
== Conclusion ==&lt;br /&gt;
&lt;br /&gt;
The Rational Unified Process, is an exemplary method for addressing and mitigating risks from the very early stages, by rapidly developing an initial version of the system (prototype) that describes its architecture. There are not fixed requirements from the beginning but rather allows refining requirements , while the project progresses. It expects and actually deals with change pretty well while its main focus is the quality of the product and the degree to which it satisfies its end - users, throughout the project life-cycle. However, while being a complete and well documented methodology, it should be stressed that remains a very complex one. In order to increase the likelihood of success, while adopting this methodology, all the project members need to be &#039;&#039;&#039;experts&#039;&#039;&#039; in their respective fields. The method can easily become too difficult to learn and most importantly too difficult to apply.&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
1) Rational Unified Process vs Microsoft Solutions Framework : A comparative study, Johan W.A Traa &amp;lt;br&amp;gt;&lt;br /&gt;
2) Rational Unified Process: Best Practices for Software Development Teams,  Rational Software white paper &amp;lt;br&amp;gt;&lt;br /&gt;
3) Planning a Project with the Rational Unified Process, David West &amp;lt;br&amp;gt;&lt;br /&gt;
4) Project Management Methodologies, Jason Charvat &amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Lessisv</name></author>
	</entry>
	<entry>
		<id>http://13.50.150.85/index.php?title=Rational_Unified_Process_(RUP)&amp;diff=12390</id>
		<title>Rational Unified Process (RUP)</title>
		<link rel="alternate" type="text/html" href="http://13.50.150.85/index.php?title=Rational_Unified_Process_(RUP)&amp;diff=12390"/>
		<updated>2015-09-22T08:12:53Z</updated>

		<summary type="html">&lt;p&gt;Lessisv: /* References */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The &#039;&#039;&#039;Rational Unified Process (RUP)&#039;&#039;&#039; is an iterative, &#039;&#039;&#039;software development methodology&#039;&#039;&#039;, firstly introduced by the [https://en.wikipedia.org/wiki/Rational_Software Rational Software Corporation] which was [http://www-03.ibm.com/press/us/en/pressrelease/314.wss acquired by IBM] in 2003. RUP is a disciplined approach to assign tasks within a development organization and software project teams. It was developed to ensure the production of &#039;&#039;&#039;high quality software&#039;&#039;&#039; by providing the development team with a set of &#039;&#039;&#039;guidelines, templates and tool mentors&#039;&#039;&#039;, for all the critical life-cycle activities within a project. This cluster of objects, form a knowledge base that is shared between all project team members. As a result, no matter what each member is working with (e.g testing, designing, managing), they all share a common language and view on how to develop software. Consequently, team productivity is boosted, in order to deliver software that can meet and exceed the needs and expectations of end-users, strictly following a predictable budget and schedule. RUP is the most popular and extensively documented refinement of the [https://en.wikipedia.org/wiki/Unified_Process Unified Process], an iterative and incremental software development process framework. Other worth mentioning forms are the [https://en.wikipedia.org/wiki/OpenUP OpenUP] and [https://en.wikipedia.org/wiki/Agile_Unified_Process Agile Unified Process].&lt;br /&gt;
&lt;br /&gt;
== Process Overview ==&lt;br /&gt;
&lt;br /&gt;
[[File:RUP.png|450px|right|thumb| Figure 1. The iterative model graph shows how the process is structured along two dimensions]]&lt;br /&gt;
&lt;br /&gt;
The best possible way to describe the methodology is through a 2 - dimensional graph.&lt;br /&gt;
* The first dimension (horizontal axis) represents the &#039;&#039;&#039;dynamic aspect&#039;&#039;&#039; of the process. It expresses &#039;&#039;&#039;time&#039;&#039;&#039; in terms of &#039;&#039;&#039;phases&#039;&#039;&#039; and &#039;&#039;&#039;iterations&#039;&#039;&#039;. &lt;br /&gt;
* The second dimension (vertical axis) represents the &#039;&#039;&#039;static aspect&#039;&#039;&#039; of the process. It expresses &#039;&#039;&#039;workflows&#039;&#039;&#039; in terms of 6 core and 3 supporting &#039;&#039;&#039;disciplines&#039;&#039;&#039; (more on that on &amp;quot;Disciplines&amp;quot; section).&lt;br /&gt;
&lt;br /&gt;
=== Time Dimension - Phases and Iterations ===&lt;br /&gt;
When developing software, the project team goes through a multi-step process, from establishing a system&#039;s requirements to designing, implementing and finally maintaining the software with new releases. This is the software life cycle. RUP delicately breaks the software life cycle down to four consecutive phases.&lt;br /&gt;
&lt;br /&gt;
* Inception phase&lt;br /&gt;
* Elaboration phase&lt;br /&gt;
* Construction phase&lt;br /&gt;
* Transition phase&lt;br /&gt;
&lt;br /&gt;
Depending on the project, each of these phases can consist of one to a number of &#039;&#039;&#039;iterations&#039;&#039;&#039;. An iteration is defined as a complete development loop, resulting in a new product release. All the phases include a well-defined milestone, in order to be completed. In the end of every phase, the development team can evaluate whether all the key goals have been achieved, all stakeholders have been considered and the actual expenditures correspond with the planned ones.&lt;br /&gt;
&lt;br /&gt;
[[File:RUP_phases.png|550px|right|thumb| Figure 2. The four phases and milestones of a project]]&lt;br /&gt;
==== Inception Phase ====&lt;br /&gt;
The first phase is the inception phase. The focus of this phase, is understanding the scope of the project and studying if is both worth doing and possible to do. All the internal and external entities that the system will interact with are identified and the nature of the interaction is well defined at a high level. For this reason, the inception phase is primarily significant for new development projects. &lt;br /&gt;
The expected outcome of the inception phase includes :&lt;br /&gt;
&lt;br /&gt;
* A vision document: The document states the general vision of the project including its key requirements, features and main constraints.&lt;br /&gt;
* An initial use-case model (10%-20% complete)&lt;br /&gt;
* An initial project glossary&lt;br /&gt;
* An initial business case, including the business context, success criteria and a financial forecast.&lt;br /&gt;
* An initial risk assessment&lt;br /&gt;
* A project plan (phases and iterations)&lt;br /&gt;
* A business model (if necessary)&lt;br /&gt;
* Prototypes&lt;br /&gt;
&lt;br /&gt;
At the end of the inception phase lies the first major project milestone; the &#039;&#039;&#039;Lifecycle Objective Milestone&#039;&#039;&#039;.&lt;br /&gt;
The inception phase has five evaluation criteria:&lt;br /&gt;
&lt;br /&gt;
* Stakeholder concurrence on scope definition and cost/schedule estimates.&lt;br /&gt;
* Depth and breadth of any prototype that was developed.&lt;br /&gt;
* Actual expenditures versus planned ones.&lt;br /&gt;
* Requirements understanding.&lt;br /&gt;
* Credibility of the cost/schedule estimates, risks and priorities.&lt;br /&gt;
&lt;br /&gt;
If for any reason the project fails to pass this milestone, it can either be completely cancelled or re-designed to successfully meet the criteria.&lt;br /&gt;
 &lt;br /&gt;
==== Elaboration Phase ====&lt;br /&gt;
The second phase is the elaboration phase. The focus of this phase, is establishing a baseline to the architecture of the system, further developing the project plan and analyzing the problem domain while trying to mitigate the highest risk elements. In other words, this is the phase where the project starts to take shape. One of the most important characteristics of this phase, is the production of a component-based architectural prototype. The purpose of this prototype is to address the critical use-cases, that were identified in the previous phase, and hopefully expose the highest technical risks of the project. The expected outcome of the elaboration phase includes:&lt;br /&gt;
&lt;br /&gt;
* A use-case model (at least 80% complete) which will be able to identify all the actors and use-cases.&lt;br /&gt;
* Supplementary requirements (if any).&lt;br /&gt;
* A clear description of the software architecture.&lt;br /&gt;
* An architectural prototype.&lt;br /&gt;
* A more detailed risk assessment and business case.&lt;br /&gt;
* A development plan for the overall project.&lt;br /&gt;
* A preliminary user manual (optional).&lt;br /&gt;
&lt;br /&gt;
At the end of the elaboration phase lies the second major project milestone; the &#039;&#039;&#039;Lifecycle Architecture Milestone&#039;&#039;&#039;.&lt;br /&gt;
The elaboration phase has six evaluation criteria:&lt;br /&gt;
&lt;br /&gt;
* Is the vision stable enough?&lt;br /&gt;
* Is the system architecture stable enough?&lt;br /&gt;
* Have all the major risks been successfully identified and resolved?&lt;br /&gt;
* Is the plan for the construction phase accurate enough?&lt;br /&gt;
* Do all the stakeholders share the opinion that the vision can be achieved by executing the current plan?&lt;br /&gt;
* Is the actual vs planned resource expenditure in acceptable levels?&lt;br /&gt;
&lt;br /&gt;
If the project fails to pass the milestone, there is still time to be re-designed or even cancelled. However, when the project moves to the next phase the associated operation risks raise significantly and changes become much more difficult.&lt;br /&gt;
&lt;br /&gt;
==== Construction Phase====&lt;br /&gt;
The third phase is the construction phase. The focus of this phase, is to develop and integrate all the remaining components and application features into the product. In other words this is the phase where the vision is finally translated into a final stable product, which is based on the architecture that was developed during the previous phases. Most emphasize is given to resources, control and process management in order to fully optimize costs, schedules and quality. The existing prototype evolves via a number of iterations into a fully functional product that meets the stakeholders&#039; needs. The construction phase is usually the longest one of the project life cycle. The expected outcome of the construction phase includes:&lt;br /&gt;
&lt;br /&gt;
* First external release of the software.&lt;br /&gt;
* User manuals.&lt;br /&gt;
* A detailed description of the current release.&lt;br /&gt;
&lt;br /&gt;
At the end of the construction phase lies the third major project milestone; the &#039;&#039;&#039;Initial Operation Capability Milestone&#039;&#039;&#039;.&lt;br /&gt;
The construction phase has three evaluation criteria:&lt;br /&gt;
&lt;br /&gt;
* Is the software release stable enough to be given to the user community?&lt;br /&gt;
* Are all the stakeholders ready for the transition to the user community?&lt;br /&gt;
* Is the actual vs planned resource expenditure in acceptable levels?&lt;br /&gt;
&lt;br /&gt;
If the project fails to pass this milestone, transition may have to be postponed by one release.&lt;br /&gt;
&lt;br /&gt;
==== Transition Phase ====&lt;br /&gt;
The fourth and final phase is the transition phase. The focus of this phase is, as the word says, to transition the software product to the user community. It includes ensuring that the product has been developed to an acceptable quality level, by beta testing the software through the end users, and validating it against the stakeholders&#039; expectations. Once the product has been given for beta testing, a number of issues can arise, requiring the development of new releases (fixing bugs) and adding features that may have been postponed. The expected outcome of the transition phase includes:&lt;br /&gt;
&lt;br /&gt;
* Beta-testing to fix any major [https://en.wikipedia.org/wiki/Software_bug software bugs] and add any missing features.&lt;br /&gt;
* Conversion of operational databases&lt;br /&gt;
* Training of end users and maintainers.&lt;br /&gt;
* Marketing and distribution of the product.&lt;br /&gt;
&lt;br /&gt;
At the end of the transition phase lies the fourth and final major project milestone; the &#039;&#039;&#039;Product Release&#039;&#039;&#039;.&lt;br /&gt;
The transition phase has two evaluation criteria:&lt;br /&gt;
&lt;br /&gt;
* Are the end - users satisfied with the product?&lt;br /&gt;
* Is the actual vs planned resource expenditure in acceptable levels?&lt;br /&gt;
&lt;br /&gt;
==== Iterations ====&lt;br /&gt;
As stated before, every phase can consist of a number of iterations, depending on the project size and scope. RUP, in comparison to the traditional [https://en.wikipedia.org/wiki/Waterfall_model waterfall] approach, is heavily based on iterations. This gives a number of advantages and benefits to the project team, with the most important one being mitigating risks much more earlier in the project. Moreover change is more manageable and there is normally a higher level of reuse. Finally, iterations ensure an overall high quality in the final product and that the project team can learn throughout the developing process.&lt;br /&gt;
&lt;br /&gt;
=== Workflow Dimension - Disciplines ===&lt;br /&gt;
&lt;br /&gt;
[[File:activities.png|350px|right|thumb| Figure 4. Individuals, Roles and Activities]]&lt;br /&gt;
[[File:workflows.png|350px|right|thumb| Figure 5. Example of a workflow]]&lt;br /&gt;
&lt;br /&gt;
A process describes &#039;&#039;&#039;who&#039;&#039;&#039; is doing &#039;&#039;&#039;what&#039;&#039;&#039;, &#039;&#039;&#039;how&#039;&#039;&#039; and &#039;&#039;&#039;when&#039;&#039;&#039;. RUP addresses those terms with four modelling elements; &#039;&#039;&#039;Roles&#039;&#039;&#039;, &#039;&#039;&#039;Activities&#039;&#039;&#039;, &#039;&#039;&#039;Artifacts&#039;&#039;&#039; and &#039;&#039;&#039;Workflows&#039;&#039;&#039; respectively. A &#039;&#039;&#039;role&#039;&#039;&#039;, formally addressed as a worker, describes the behavior and responsibilities of an individual or a group of individuals in order to produce an artifact. Throughout the development of a project, a person can play one or a number of roles. Some examples of roles are the system analyst, designer, tester. &#039;&#039;&#039;Activities&#039;&#039;&#039; are expressed through behaviors. An activity, is a job that a person performs through his role, as seen in Figure 4. The length of an activity may vary from a few hours to a number of days. Examples of activities are: Plan an operation - performed by the role of Project Manager or add a missing feature - performed by the role of a software developer. All activities produce a meaningful result, called an artifact. &#039;&#039;&#039;Artifacts&#039;&#039;&#039;, are the responsibilities of ones role or roles and express a piece of information that is produced, modified or even used by a process. They can act both as input or output of an activity. Examples of artifacts are the source code, the business case, the software architecture. The roles perform activities that can produce a sequence of artifacts, called &#039;&#039;&#039;workflows&#039;&#039;&#039;. Examples of workflows can be seen in Figure 5. &lt;br /&gt;
&lt;br /&gt;
RUP identifies nine core process workflows, called &#039;&#039;&#039;disciplines&#039;&#039;&#039;. Every discipline, addresses a set of activities and artifacts, based upon a set of skills that are common in an ICT project. These disciplines have the ability to arrange the activities and artifacts in such a way, to provide an understanding of the overall project from a waterfall perspective.&lt;br /&gt;
&lt;br /&gt;
There are six core &amp;quot;engineering&amp;quot; disciplines:&lt;br /&gt;
* Business Modelling Discipline&lt;br /&gt;
* Requirements Discipline&lt;br /&gt;
* Analysis and Design Discipline&lt;br /&gt;
* Implementation Discipline&lt;br /&gt;
* Test Discipline&lt;br /&gt;
* Deployment Discipline&lt;br /&gt;
&lt;br /&gt;
And three core &amp;quot;supporting&amp;quot; disciplines:&lt;br /&gt;
* Project Management Discipline&lt;br /&gt;
* Configuration and Change Management Discipline&lt;br /&gt;
* Environment Discipline&lt;br /&gt;
&lt;br /&gt;
==== Business Modelling ====&lt;br /&gt;
&lt;br /&gt;
Miscommunication between the software engineering community and the business engineering community is one of the most common problems among most business engineering efforts. This means that the output from software development efforts is not correctly used as input to the business engineering and vice versa. The purpose of the Business Modelling discipline is to provide a common language between the two communities and create a direct coupling between software and business models. All business processes are documented using &amp;quot;use cases&amp;quot;. This assures that all stakeholders share the same understanding of the demanding organization.&lt;br /&gt;
&lt;br /&gt;
==== Requirements ====&lt;br /&gt;
The purpose of the requirements discipline is to describe in detail &#039;&#039;&#039;what&#039;&#039;&#039; the system should do. Based on that, a Vision document is created where required functionality and constraints are documented. Moreover, actors (end users) and use cases (behaviors of the system) are identified. Use cases are described in detail and each description clearly shows how the system interacts with the actors. This way an agreement is established between the customers and the rest of the stakeholders regarding the system&#039;s capabilities, user-interface and the end user&#039;s needs.&lt;br /&gt;
&lt;br /&gt;
==== Analysis and Design ====&lt;br /&gt;
&lt;br /&gt;
The purpose of the Analysis and Design discipline it to investigate &#039;&#039;&#039;how&#039;&#039;&#039; the system requirements will be translated into a detailed implementation plan. The system needs to:&lt;br /&gt;
* Perform exactly as described in the use-case descriptions.&lt;br /&gt;
* Fulfill all requirements.&lt;br /&gt;
* Have a robust structure.&lt;br /&gt;
&lt;br /&gt;
Analysis and Design result in the creation of a &#039;&#039;&#039;design model&#039;&#039;&#039;. The design model is an abstraction of the system&#039;s architecture and acts as a guide of how the source code should be finally written and structured.&lt;br /&gt;
&lt;br /&gt;
==== Implementation ====&lt;br /&gt;
The purpose of the Implementation discipline is to:&lt;br /&gt;
&lt;br /&gt;
* Arrange the code into subsystems, organized in layers.&lt;br /&gt;
* Implement classes and objects in terms of components.&lt;br /&gt;
* Uni-test the developed components to ensure quality.&lt;br /&gt;
* Integrate the results into an executable system.&lt;br /&gt;
&lt;br /&gt;
The whole system can be realized as an implementation of various components. RUP enables the integration of those components, in a revolutionary way, making the system easier to maintain and increasing the possibilities for future re-use.&lt;br /&gt;
&lt;br /&gt;
==== Test ====&lt;br /&gt;
&lt;br /&gt;
In the implementation discipline, all the developed components were uni-tested individually and were integrated into the system. The purpose of the Test discipline is to assess the system as a whole and verify the product quality. It is a mechanism to verify the smooth interaction between the various components, their proper integration into the system and finally ensure that all requirements have been successfully implemented. All tests are carried out along 4 quality dimensions:&lt;br /&gt;
* Functionality.&lt;br /&gt;
* Reliability.&lt;br /&gt;
* Application Performance.&lt;br /&gt;
* System Performance.&lt;br /&gt;
&lt;br /&gt;
==== Deployment ====&lt;br /&gt;
&lt;br /&gt;
The purpose of the Deployment discipline is primarily to develop product releases and distribute the software to the end – users. More specifically the Deployment discipline focuses at:&lt;br /&gt;
&lt;br /&gt;
* Developing external software releases&lt;br /&gt;
* Distributing the software&lt;br /&gt;
* Installing the software&lt;br /&gt;
* Providing help to the end – users&lt;br /&gt;
* Creating an up-to-date user manual&lt;br /&gt;
* Conducting beta testing&lt;br /&gt;
&lt;br /&gt;
==== Project Management ====&lt;br /&gt;
&lt;br /&gt;
The purpose of the Project Management discipline, is to successfully balance competing objectives, manage and mitigate risks and finally handle any constraints on delivering the product. Project management, ideally provides:&lt;br /&gt;
&lt;br /&gt;
* A framework for managing software-intensive projects.&lt;br /&gt;
* A framework to successfully manage risks.&lt;br /&gt;
* A framework to plan, execute and monitor projects.&lt;br /&gt;
&lt;br /&gt;
While the discipline does not guarantee success, the odds of delivering successful software are greatly improved.&lt;br /&gt;
&lt;br /&gt;
==== Configuration and Change Management ====&lt;br /&gt;
&lt;br /&gt;
The purpose of the Configuration and Change Management Discipline is to control, maintain and configure all the various artifacts that are produced by the different actors that are working on a project. During the software development life cycle, artifacts are regularly updated (changed). In order to understand the current state of an artifact, it is very important to keep track of its location and history; what was the reason and who decided to change the artifact. The discipline helps create a framework that keeps track of all the project assets.&lt;br /&gt;
&lt;br /&gt;
==== Environment ====&lt;br /&gt;
&lt;br /&gt;
The purpose of the environment discipline, is to provide the development team with all the processes, tools and methods for supporting all developing activities. It is responsible for producing a Development Kit, able to provide guidelines and templates for customizing processes.&lt;br /&gt;
&lt;br /&gt;
== Why RUP - Best Practices ==&lt;br /&gt;
&lt;br /&gt;
RUP captures many of the “best practices” that are currently used in modern software development and more particularly in industry by successful organizations. The practices are:&lt;br /&gt;
&lt;br /&gt;
* Develop Software Iteratively&lt;br /&gt;
* Manage Requirements&lt;br /&gt;
* Use component-based architectures&lt;br /&gt;
* Visually model software&lt;br /&gt;
* Continuously verify software quality&lt;br /&gt;
* Control changes to software&lt;br /&gt;
&lt;br /&gt;
=== Develop Software iteratively ===&lt;br /&gt;
&lt;br /&gt;
Today’s high sophisticated software systems, consist of many and complex structures which make it nearly impossible to define the entire system from the very beginning, develop the entire solution and then test the product in the end. RUP uses an iterative approach that allows an increasing understanding of the problem and developing a step – by – step solution, over multiple iterations. Each iteration ends with an executable release, which enables continuous end - user involvement and feedback. As a result, the risks of the project are mitigated at an early stage and stakeholders are ensured that the project requirements are fulfilled.&lt;br /&gt;
&lt;br /&gt;
=== Manage requirements ===&lt;br /&gt;
&lt;br /&gt;
The requirements of a system include the description of the services that the system is able to provide and its operational constraints. RUP documents, organizes and tracks required functionality and constraints and easily communicates business requirements. The use – cases that are used in the process are an excellent way to ensure that requirements are actually those elements that drive the design, implementation and testing of software, making it more likely that the final system fulfills the stakeholders needs.&lt;br /&gt;
&lt;br /&gt;
=== Use component-based architectures ===&lt;br /&gt;
&lt;br /&gt;
Component-based architecture makes the system dynamic; components are independent from the system and interact with other components through well-defined interfaces. Their in-dependency from the system, gives them a great flexibility meaning that they can easily be added, updated or totally replaced. RUP supports component-based software development by providing a systematic approach to defining an architecture using new and existing components.&lt;br /&gt;
&lt;br /&gt;
=== Visually model software ===&lt;br /&gt;
&lt;br /&gt;
A model is an abstraction of reality that can help better comprehend large and complex systems. Visual abstractions help the development team to easily communicate different aspects of the software and see how all the components fit together. RUP uses the Unified Modelling Language (UML) standard which is a graphical language for visualizing and constructing the artifacts of a software-intensive system.&lt;br /&gt;
&lt;br /&gt;
=== Continuously verify software quality ===&lt;br /&gt;
&lt;br /&gt;
In software development, quality should always be reviewed with respect to the requirements based on reliability, functionality , application and system performance. In RUP, quality verification and assessment is built into the process, inside all activities, including all stakeholders and is not treated as a separate activity, performed by a separate group.&lt;br /&gt;
&lt;br /&gt;
=== Control changes to software ===&lt;br /&gt;
&lt;br /&gt;
A software system is developed by a number of teams or individuals, using different platforms and at times being in different locations. As a result, it is essential to somehow make sure that all the changes made in the system are synchronized and constantly verified. RUP ensures that all the individuals working in the project are well informed about any changes and everything is in sync. The process describes how to control, track and monitor changes to enable successful iterative development.&lt;br /&gt;
&lt;br /&gt;
== Limitations ==&lt;br /&gt;
&lt;br /&gt;
While being a complete methodology in itself with an emphasis on accurate documentation and quickly resolving project associated risks, RUP comes with a number of limitations.&lt;br /&gt;
&lt;br /&gt;
* In order for team members to start developing software under this methodology, they need to be &#039;&#039;&#039;experts&#039;&#039;&#039; in their respective fields.&lt;br /&gt;
* The development process can easily become too complex to handle.&lt;br /&gt;
* When working with cutting - edge projects that highly utilize new technology, components will not be able to be reused. &lt;br /&gt;
* While in theory integration throughout the process of software development sounds like a good thing, when working with particularly complex projects with multiple development streams, issues and significant confusion may rise during the stages of testing.&lt;br /&gt;
&lt;br /&gt;
== Conclusion ==&lt;br /&gt;
&lt;br /&gt;
The Rational Unified Process, is an exemplary method for addressing and mitigating risks from the very early stages, by rapidly developing an initial version of the system (prototype) that describes its architecture. There are not fixed requirements from the beginning but rather allows refining requirements , while the project progresses. It expects and actually deals with change pretty well while its main focus is the quality of the product and the degree to which it satisfies its end - users, throughout the project life-cycle. However, while being a complete and well documented methodology, it should be stressed that remains a very complex one. In order to increase the likelihood of success, while adopting this methodology, all the project members need to be &#039;&#039;&#039;experts&#039;&#039;&#039; in their respective fields. The method can easily become too difficult to learn and most importantly too difficult to apply.&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
1) Rational Unified Process vs Microsoft Solutions Framework : A comparative study, Johan W.A Traa &amp;lt;br&amp;gt;&lt;br /&gt;
2) Rational Unified Process: Best Practices for Software Development Teams,  Rational Software white paper&lt;br /&gt;
3) Planning a Project with the Rational Unified Process, David West&lt;br /&gt;
4) Project Management Methodologies, Jason Charvat&lt;/div&gt;</summary>
		<author><name>Lessisv</name></author>
	</entry>
	<entry>
		<id>http://13.50.150.85/index.php?title=Rational_Unified_Process_(RUP)&amp;diff=12388</id>
		<title>Rational Unified Process (RUP)</title>
		<link rel="alternate" type="text/html" href="http://13.50.150.85/index.php?title=Rational_Unified_Process_(RUP)&amp;diff=12388"/>
		<updated>2015-09-22T08:12:08Z</updated>

		<summary type="html">&lt;p&gt;Lessisv: /* References */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The &#039;&#039;&#039;Rational Unified Process (RUP)&#039;&#039;&#039; is an iterative, &#039;&#039;&#039;software development methodology&#039;&#039;&#039;, firstly introduced by the [https://en.wikipedia.org/wiki/Rational_Software Rational Software Corporation] which was [http://www-03.ibm.com/press/us/en/pressrelease/314.wss acquired by IBM] in 2003. RUP is a disciplined approach to assign tasks within a development organization and software project teams. It was developed to ensure the production of &#039;&#039;&#039;high quality software&#039;&#039;&#039; by providing the development team with a set of &#039;&#039;&#039;guidelines, templates and tool mentors&#039;&#039;&#039;, for all the critical life-cycle activities within a project. This cluster of objects, form a knowledge base that is shared between all project team members. As a result, no matter what each member is working with (e.g testing, designing, managing), they all share a common language and view on how to develop software. Consequently, team productivity is boosted, in order to deliver software that can meet and exceed the needs and expectations of end-users, strictly following a predictable budget and schedule. RUP is the most popular and extensively documented refinement of the [https://en.wikipedia.org/wiki/Unified_Process Unified Process], an iterative and incremental software development process framework. Other worth mentioning forms are the [https://en.wikipedia.org/wiki/OpenUP OpenUP] and [https://en.wikipedia.org/wiki/Agile_Unified_Process Agile Unified Process].&lt;br /&gt;
&lt;br /&gt;
== Process Overview ==&lt;br /&gt;
&lt;br /&gt;
[[File:RUP.png|450px|right|thumb| Figure 1. The iterative model graph shows how the process is structured along two dimensions]]&lt;br /&gt;
&lt;br /&gt;
The best possible way to describe the methodology is through a 2 - dimensional graph.&lt;br /&gt;
* The first dimension (horizontal axis) represents the &#039;&#039;&#039;dynamic aspect&#039;&#039;&#039; of the process. It expresses &#039;&#039;&#039;time&#039;&#039;&#039; in terms of &#039;&#039;&#039;phases&#039;&#039;&#039; and &#039;&#039;&#039;iterations&#039;&#039;&#039;. &lt;br /&gt;
* The second dimension (vertical axis) represents the &#039;&#039;&#039;static aspect&#039;&#039;&#039; of the process. It expresses &#039;&#039;&#039;workflows&#039;&#039;&#039; in terms of 6 core and 3 supporting &#039;&#039;&#039;disciplines&#039;&#039;&#039; (more on that on &amp;quot;Disciplines&amp;quot; section).&lt;br /&gt;
&lt;br /&gt;
=== Time Dimension - Phases and Iterations ===&lt;br /&gt;
When developing software, the project team goes through a multi-step process, from establishing a system&#039;s requirements to designing, implementing and finally maintaining the software with new releases. This is the software life cycle. RUP delicately breaks the software life cycle down to four consecutive phases.&lt;br /&gt;
&lt;br /&gt;
* Inception phase&lt;br /&gt;
* Elaboration phase&lt;br /&gt;
* Construction phase&lt;br /&gt;
* Transition phase&lt;br /&gt;
&lt;br /&gt;
Depending on the project, each of these phases can consist of one to a number of &#039;&#039;&#039;iterations&#039;&#039;&#039;. An iteration is defined as a complete development loop, resulting in a new product release. All the phases include a well-defined milestone, in order to be completed. In the end of every phase, the development team can evaluate whether all the key goals have been achieved, all stakeholders have been considered and the actual expenditures correspond with the planned ones.&lt;br /&gt;
&lt;br /&gt;
[[File:RUP_phases.png|550px|right|thumb| Figure 2. The four phases and milestones of a project]]&lt;br /&gt;
==== Inception Phase ====&lt;br /&gt;
The first phase is the inception phase. The focus of this phase, is understanding the scope of the project and studying if is both worth doing and possible to do. All the internal and external entities that the system will interact with are identified and the nature of the interaction is well defined at a high level. For this reason, the inception phase is primarily significant for new development projects. &lt;br /&gt;
The expected outcome of the inception phase includes :&lt;br /&gt;
&lt;br /&gt;
* A vision document: The document states the general vision of the project including its key requirements, features and main constraints.&lt;br /&gt;
* An initial use-case model (10%-20% complete)&lt;br /&gt;
* An initial project glossary&lt;br /&gt;
* An initial business case, including the business context, success criteria and a financial forecast.&lt;br /&gt;
* An initial risk assessment&lt;br /&gt;
* A project plan (phases and iterations)&lt;br /&gt;
* A business model (if necessary)&lt;br /&gt;
* Prototypes&lt;br /&gt;
&lt;br /&gt;
At the end of the inception phase lies the first major project milestone; the &#039;&#039;&#039;Lifecycle Objective Milestone&#039;&#039;&#039;.&lt;br /&gt;
The inception phase has five evaluation criteria:&lt;br /&gt;
&lt;br /&gt;
* Stakeholder concurrence on scope definition and cost/schedule estimates.&lt;br /&gt;
* Depth and breadth of any prototype that was developed.&lt;br /&gt;
* Actual expenditures versus planned ones.&lt;br /&gt;
* Requirements understanding.&lt;br /&gt;
* Credibility of the cost/schedule estimates, risks and priorities.&lt;br /&gt;
&lt;br /&gt;
If for any reason the project fails to pass this milestone, it can either be completely cancelled or re-designed to successfully meet the criteria.&lt;br /&gt;
 &lt;br /&gt;
==== Elaboration Phase ====&lt;br /&gt;
The second phase is the elaboration phase. The focus of this phase, is establishing a baseline to the architecture of the system, further developing the project plan and analyzing the problem domain while trying to mitigate the highest risk elements. In other words, this is the phase where the project starts to take shape. One of the most important characteristics of this phase, is the production of a component-based architectural prototype. The purpose of this prototype is to address the critical use-cases, that were identified in the previous phase, and hopefully expose the highest technical risks of the project. The expected outcome of the elaboration phase includes:&lt;br /&gt;
&lt;br /&gt;
* A use-case model (at least 80% complete) which will be able to identify all the actors and use-cases.&lt;br /&gt;
* Supplementary requirements (if any).&lt;br /&gt;
* A clear description of the software architecture.&lt;br /&gt;
* An architectural prototype.&lt;br /&gt;
* A more detailed risk assessment and business case.&lt;br /&gt;
* A development plan for the overall project.&lt;br /&gt;
* A preliminary user manual (optional).&lt;br /&gt;
&lt;br /&gt;
At the end of the elaboration phase lies the second major project milestone; the &#039;&#039;&#039;Lifecycle Architecture Milestone&#039;&#039;&#039;.&lt;br /&gt;
The elaboration phase has six evaluation criteria:&lt;br /&gt;
&lt;br /&gt;
* Is the vision stable enough?&lt;br /&gt;
* Is the system architecture stable enough?&lt;br /&gt;
* Have all the major risks been successfully identified and resolved?&lt;br /&gt;
* Is the plan for the construction phase accurate enough?&lt;br /&gt;
* Do all the stakeholders share the opinion that the vision can be achieved by executing the current plan?&lt;br /&gt;
* Is the actual vs planned resource expenditure in acceptable levels?&lt;br /&gt;
&lt;br /&gt;
If the project fails to pass the milestone, there is still time to be re-designed or even cancelled. However, when the project moves to the next phase the associated operation risks raise significantly and changes become much more difficult.&lt;br /&gt;
&lt;br /&gt;
==== Construction Phase====&lt;br /&gt;
The third phase is the construction phase. The focus of this phase, is to develop and integrate all the remaining components and application features into the product. In other words this is the phase where the vision is finally translated into a final stable product, which is based on the architecture that was developed during the previous phases. Most emphasize is given to resources, control and process management in order to fully optimize costs, schedules and quality. The existing prototype evolves via a number of iterations into a fully functional product that meets the stakeholders&#039; needs. The construction phase is usually the longest one of the project life cycle. The expected outcome of the construction phase includes:&lt;br /&gt;
&lt;br /&gt;
* First external release of the software.&lt;br /&gt;
* User manuals.&lt;br /&gt;
* A detailed description of the current release.&lt;br /&gt;
&lt;br /&gt;
At the end of the construction phase lies the third major project milestone; the &#039;&#039;&#039;Initial Operation Capability Milestone&#039;&#039;&#039;.&lt;br /&gt;
The construction phase has three evaluation criteria:&lt;br /&gt;
&lt;br /&gt;
* Is the software release stable enough to be given to the user community?&lt;br /&gt;
* Are all the stakeholders ready for the transition to the user community?&lt;br /&gt;
* Is the actual vs planned resource expenditure in acceptable levels?&lt;br /&gt;
&lt;br /&gt;
If the project fails to pass this milestone, transition may have to be postponed by one release.&lt;br /&gt;
&lt;br /&gt;
==== Transition Phase ====&lt;br /&gt;
The fourth and final phase is the transition phase. The focus of this phase is, as the word says, to transition the software product to the user community. It includes ensuring that the product has been developed to an acceptable quality level, by beta testing the software through the end users, and validating it against the stakeholders&#039; expectations. Once the product has been given for beta testing, a number of issues can arise, requiring the development of new releases (fixing bugs) and adding features that may have been postponed. The expected outcome of the transition phase includes:&lt;br /&gt;
&lt;br /&gt;
* Beta-testing to fix any major [https://en.wikipedia.org/wiki/Software_bug software bugs] and add any missing features.&lt;br /&gt;
* Conversion of operational databases&lt;br /&gt;
* Training of end users and maintainers.&lt;br /&gt;
* Marketing and distribution of the product.&lt;br /&gt;
&lt;br /&gt;
At the end of the transition phase lies the fourth and final major project milestone; the &#039;&#039;&#039;Product Release&#039;&#039;&#039;.&lt;br /&gt;
The transition phase has two evaluation criteria:&lt;br /&gt;
&lt;br /&gt;
* Are the end - users satisfied with the product?&lt;br /&gt;
* Is the actual vs planned resource expenditure in acceptable levels?&lt;br /&gt;
&lt;br /&gt;
==== Iterations ====&lt;br /&gt;
As stated before, every phase can consist of a number of iterations, depending on the project size and scope. RUP, in comparison to the traditional [https://en.wikipedia.org/wiki/Waterfall_model waterfall] approach, is heavily based on iterations. This gives a number of advantages and benefits to the project team, with the most important one being mitigating risks much more earlier in the project. Moreover change is more manageable and there is normally a higher level of reuse. Finally, iterations ensure an overall high quality in the final product and that the project team can learn throughout the developing process.&lt;br /&gt;
&lt;br /&gt;
=== Workflow Dimension - Disciplines ===&lt;br /&gt;
&lt;br /&gt;
[[File:activities.png|350px|right|thumb| Figure 4. Individuals, Roles and Activities]]&lt;br /&gt;
[[File:workflows.png|350px|right|thumb| Figure 5. Example of a workflow]]&lt;br /&gt;
&lt;br /&gt;
A process describes &#039;&#039;&#039;who&#039;&#039;&#039; is doing &#039;&#039;&#039;what&#039;&#039;&#039;, &#039;&#039;&#039;how&#039;&#039;&#039; and &#039;&#039;&#039;when&#039;&#039;&#039;. RUP addresses those terms with four modelling elements; &#039;&#039;&#039;Roles&#039;&#039;&#039;, &#039;&#039;&#039;Activities&#039;&#039;&#039;, &#039;&#039;&#039;Artifacts&#039;&#039;&#039; and &#039;&#039;&#039;Workflows&#039;&#039;&#039; respectively. A &#039;&#039;&#039;role&#039;&#039;&#039;, formally addressed as a worker, describes the behavior and responsibilities of an individual or a group of individuals in order to produce an artifact. Throughout the development of a project, a person can play one or a number of roles. Some examples of roles are the system analyst, designer, tester. &#039;&#039;&#039;Activities&#039;&#039;&#039; are expressed through behaviors. An activity, is a job that a person performs through his role, as seen in Figure 4. The length of an activity may vary from a few hours to a number of days. Examples of activities are: Plan an operation - performed by the role of Project Manager or add a missing feature - performed by the role of a software developer. All activities produce a meaningful result, called an artifact. &#039;&#039;&#039;Artifacts&#039;&#039;&#039;, are the responsibilities of ones role or roles and express a piece of information that is produced, modified or even used by a process. They can act both as input or output of an activity. Examples of artifacts are the source code, the business case, the software architecture. The roles perform activities that can produce a sequence of artifacts, called &#039;&#039;&#039;workflows&#039;&#039;&#039;. Examples of workflows can be seen in Figure 5. &lt;br /&gt;
&lt;br /&gt;
RUP identifies nine core process workflows, called &#039;&#039;&#039;disciplines&#039;&#039;&#039;. Every discipline, addresses a set of activities and artifacts, based upon a set of skills that are common in an ICT project. These disciplines have the ability to arrange the activities and artifacts in such a way, to provide an understanding of the overall project from a waterfall perspective.&lt;br /&gt;
&lt;br /&gt;
There are six core &amp;quot;engineering&amp;quot; disciplines:&lt;br /&gt;
* Business Modelling Discipline&lt;br /&gt;
* Requirements Discipline&lt;br /&gt;
* Analysis and Design Discipline&lt;br /&gt;
* Implementation Discipline&lt;br /&gt;
* Test Discipline&lt;br /&gt;
* Deployment Discipline&lt;br /&gt;
&lt;br /&gt;
And three core &amp;quot;supporting&amp;quot; disciplines:&lt;br /&gt;
* Project Management Discipline&lt;br /&gt;
* Configuration and Change Management Discipline&lt;br /&gt;
* Environment Discipline&lt;br /&gt;
&lt;br /&gt;
==== Business Modelling ====&lt;br /&gt;
&lt;br /&gt;
Miscommunication between the software engineering community and the business engineering community is one of the most common problems among most business engineering efforts. This means that the output from software development efforts is not correctly used as input to the business engineering and vice versa. The purpose of the Business Modelling discipline is to provide a common language between the two communities and create a direct coupling between software and business models. All business processes are documented using &amp;quot;use cases&amp;quot;. This assures that all stakeholders share the same understanding of the demanding organization.&lt;br /&gt;
&lt;br /&gt;
==== Requirements ====&lt;br /&gt;
The purpose of the requirements discipline is to describe in detail &#039;&#039;&#039;what&#039;&#039;&#039; the system should do. Based on that, a Vision document is created where required functionality and constraints are documented. Moreover, actors (end users) and use cases (behaviors of the system) are identified. Use cases are described in detail and each description clearly shows how the system interacts with the actors. This way an agreement is established between the customers and the rest of the stakeholders regarding the system&#039;s capabilities, user-interface and the end user&#039;s needs.&lt;br /&gt;
&lt;br /&gt;
==== Analysis and Design ====&lt;br /&gt;
&lt;br /&gt;
The purpose of the Analysis and Design discipline it to investigate &#039;&#039;&#039;how&#039;&#039;&#039; the system requirements will be translated into a detailed implementation plan. The system needs to:&lt;br /&gt;
* Perform exactly as described in the use-case descriptions.&lt;br /&gt;
* Fulfill all requirements.&lt;br /&gt;
* Have a robust structure.&lt;br /&gt;
&lt;br /&gt;
Analysis and Design result in the creation of a &#039;&#039;&#039;design model&#039;&#039;&#039;. The design model is an abstraction of the system&#039;s architecture and acts as a guide of how the source code should be finally written and structured.&lt;br /&gt;
&lt;br /&gt;
==== Implementation ====&lt;br /&gt;
The purpose of the Implementation discipline is to:&lt;br /&gt;
&lt;br /&gt;
* Arrange the code into subsystems, organized in layers.&lt;br /&gt;
* Implement classes and objects in terms of components.&lt;br /&gt;
* Uni-test the developed components to ensure quality.&lt;br /&gt;
* Integrate the results into an executable system.&lt;br /&gt;
&lt;br /&gt;
The whole system can be realized as an implementation of various components. RUP enables the integration of those components, in a revolutionary way, making the system easier to maintain and increasing the possibilities for future re-use.&lt;br /&gt;
&lt;br /&gt;
==== Test ====&lt;br /&gt;
&lt;br /&gt;
In the implementation discipline, all the developed components were uni-tested individually and were integrated into the system. The purpose of the Test discipline is to assess the system as a whole and verify the product quality. It is a mechanism to verify the smooth interaction between the various components, their proper integration into the system and finally ensure that all requirements have been successfully implemented. All tests are carried out along 4 quality dimensions:&lt;br /&gt;
* Functionality.&lt;br /&gt;
* Reliability.&lt;br /&gt;
* Application Performance.&lt;br /&gt;
* System Performance.&lt;br /&gt;
&lt;br /&gt;
==== Deployment ====&lt;br /&gt;
&lt;br /&gt;
The purpose of the Deployment discipline is primarily to develop product releases and distribute the software to the end – users. More specifically the Deployment discipline focuses at:&lt;br /&gt;
&lt;br /&gt;
* Developing external software releases&lt;br /&gt;
* Distributing the software&lt;br /&gt;
* Installing the software&lt;br /&gt;
* Providing help to the end – users&lt;br /&gt;
* Creating an up-to-date user manual&lt;br /&gt;
* Conducting beta testing&lt;br /&gt;
&lt;br /&gt;
==== Project Management ====&lt;br /&gt;
&lt;br /&gt;
The purpose of the Project Management discipline, is to successfully balance competing objectives, manage and mitigate risks and finally handle any constraints on delivering the product. Project management, ideally provides:&lt;br /&gt;
&lt;br /&gt;
* A framework for managing software-intensive projects.&lt;br /&gt;
* A framework to successfully manage risks.&lt;br /&gt;
* A framework to plan, execute and monitor projects.&lt;br /&gt;
&lt;br /&gt;
While the discipline does not guarantee success, the odds of delivering successful software are greatly improved.&lt;br /&gt;
&lt;br /&gt;
==== Configuration and Change Management ====&lt;br /&gt;
&lt;br /&gt;
The purpose of the Configuration and Change Management Discipline is to control, maintain and configure all the various artifacts that are produced by the different actors that are working on a project. During the software development life cycle, artifacts are regularly updated (changed). In order to understand the current state of an artifact, it is very important to keep track of its location and history; what was the reason and who decided to change the artifact. The discipline helps create a framework that keeps track of all the project assets.&lt;br /&gt;
&lt;br /&gt;
==== Environment ====&lt;br /&gt;
&lt;br /&gt;
The purpose of the environment discipline, is to provide the development team with all the processes, tools and methods for supporting all developing activities. It is responsible for producing a Development Kit, able to provide guidelines and templates for customizing processes.&lt;br /&gt;
&lt;br /&gt;
== Why RUP - Best Practices ==&lt;br /&gt;
&lt;br /&gt;
RUP captures many of the “best practices” that are currently used in modern software development and more particularly in industry by successful organizations. The practices are:&lt;br /&gt;
&lt;br /&gt;
* Develop Software Iteratively&lt;br /&gt;
* Manage Requirements&lt;br /&gt;
* Use component-based architectures&lt;br /&gt;
* Visually model software&lt;br /&gt;
* Continuously verify software quality&lt;br /&gt;
* Control changes to software&lt;br /&gt;
&lt;br /&gt;
=== Develop Software iteratively ===&lt;br /&gt;
&lt;br /&gt;
Today’s high sophisticated software systems, consist of many and complex structures which make it nearly impossible to define the entire system from the very beginning, develop the entire solution and then test the product in the end. RUP uses an iterative approach that allows an increasing understanding of the problem and developing a step – by – step solution, over multiple iterations. Each iteration ends with an executable release, which enables continuous end - user involvement and feedback. As a result, the risks of the project are mitigated at an early stage and stakeholders are ensured that the project requirements are fulfilled.&lt;br /&gt;
&lt;br /&gt;
=== Manage requirements ===&lt;br /&gt;
&lt;br /&gt;
The requirements of a system include the description of the services that the system is able to provide and its operational constraints. RUP documents, organizes and tracks required functionality and constraints and easily communicates business requirements. The use – cases that are used in the process are an excellent way to ensure that requirements are actually those elements that drive the design, implementation and testing of software, making it more likely that the final system fulfills the stakeholders needs.&lt;br /&gt;
&lt;br /&gt;
=== Use component-based architectures ===&lt;br /&gt;
&lt;br /&gt;
Component-based architecture makes the system dynamic; components are independent from the system and interact with other components through well-defined interfaces. Their in-dependency from the system, gives them a great flexibility meaning that they can easily be added, updated or totally replaced. RUP supports component-based software development by providing a systematic approach to defining an architecture using new and existing components.&lt;br /&gt;
&lt;br /&gt;
=== Visually model software ===&lt;br /&gt;
&lt;br /&gt;
A model is an abstraction of reality that can help better comprehend large and complex systems. Visual abstractions help the development team to easily communicate different aspects of the software and see how all the components fit together. RUP uses the Unified Modelling Language (UML) standard which is a graphical language for visualizing and constructing the artifacts of a software-intensive system.&lt;br /&gt;
&lt;br /&gt;
=== Continuously verify software quality ===&lt;br /&gt;
&lt;br /&gt;
In software development, quality should always be reviewed with respect to the requirements based on reliability, functionality , application and system performance. In RUP, quality verification and assessment is built into the process, inside all activities, including all stakeholders and is not treated as a separate activity, performed by a separate group.&lt;br /&gt;
&lt;br /&gt;
=== Control changes to software ===&lt;br /&gt;
&lt;br /&gt;
A software system is developed by a number of teams or individuals, using different platforms and at times being in different locations. As a result, it is essential to somehow make sure that all the changes made in the system are synchronized and constantly verified. RUP ensures that all the individuals working in the project are well informed about any changes and everything is in sync. The process describes how to control, track and monitor changes to enable successful iterative development.&lt;br /&gt;
&lt;br /&gt;
== Limitations ==&lt;br /&gt;
&lt;br /&gt;
While being a complete methodology in itself with an emphasis on accurate documentation and quickly resolving project associated risks, RUP comes with a number of limitations.&lt;br /&gt;
&lt;br /&gt;
* In order for team members to start developing software under this methodology, they need to be &#039;&#039;&#039;experts&#039;&#039;&#039; in their respective fields.&lt;br /&gt;
* The development process can easily become too complex to handle.&lt;br /&gt;
* When working with cutting - edge projects that highly utilize new technology, components will not be able to be reused. &lt;br /&gt;
* While in theory integration throughout the process of software development sounds like a good thing, when working with particularly complex projects with multiple development streams, issues and significant confusion may rise during the stages of testing.&lt;br /&gt;
&lt;br /&gt;
== Conclusion ==&lt;br /&gt;
&lt;br /&gt;
The Rational Unified Process, is an exemplary method for addressing and mitigating risks from the very early stages, by rapidly developing an initial version of the system (prototype) that describes its architecture. There are not fixed requirements from the beginning but rather allows refining requirements , while the project progresses. It expects and actually deals with change pretty well while its main focus is the quality of the product and the degree to which it satisfies its end - users, throughout the project life-cycle. However, while being a complete and well documented methodology, it should be stressed that remains a very complex one. In order to increase the likelihood of success, while adopting this methodology, all the project members need to be &#039;&#039;&#039;experts&#039;&#039;&#039; in their respective fields. The method can easily become too difficult to learn and most importantly too difficult to apply.&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
1) Rational Unified Process vs Microsoft Solutions Framework : A comparative study, Johan W.A Traa&lt;br /&gt;
2) Rational Unified Process: Best Practices for Software Development Teams,  Rational Software white paper&lt;br /&gt;
3) Planning a Project with the Rational Unified Process, David West&lt;br /&gt;
4) Project Management Methodologies, Jason Charvat&lt;/div&gt;</summary>
		<author><name>Lessisv</name></author>
	</entry>
	<entry>
		<id>http://13.50.150.85/index.php?title=Rational_Unified_Process_(RUP)&amp;diff=12382</id>
		<title>Rational Unified Process (RUP)</title>
		<link rel="alternate" type="text/html" href="http://13.50.150.85/index.php?title=Rational_Unified_Process_(RUP)&amp;diff=12382"/>
		<updated>2015-09-22T08:06:38Z</updated>

		<summary type="html">&lt;p&gt;Lessisv: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The &#039;&#039;&#039;Rational Unified Process (RUP)&#039;&#039;&#039; is an iterative, &#039;&#039;&#039;software development methodology&#039;&#039;&#039;, firstly introduced by the [https://en.wikipedia.org/wiki/Rational_Software Rational Software Corporation] which was [http://www-03.ibm.com/press/us/en/pressrelease/314.wss acquired by IBM] in 2003. RUP is a disciplined approach to assign tasks within a development organization and software project teams. It was developed to ensure the production of &#039;&#039;&#039;high quality software&#039;&#039;&#039; by providing the development team with a set of &#039;&#039;&#039;guidelines, templates and tool mentors&#039;&#039;&#039;, for all the critical life-cycle activities within a project. This cluster of objects, form a knowledge base that is shared between all project team members. As a result, no matter what each member is working with (e.g testing, designing, managing), they all share a common language and view on how to develop software. Consequently, team productivity is boosted, in order to deliver software that can meet and exceed the needs and expectations of end-users, strictly following a predictable budget and schedule. RUP is the most popular and extensively documented refinement of the [https://en.wikipedia.org/wiki/Unified_Process Unified Process], an iterative and incremental software development process framework. Other worth mentioning forms are the [https://en.wikipedia.org/wiki/OpenUP OpenUP] and [https://en.wikipedia.org/wiki/Agile_Unified_Process Agile Unified Process].&lt;br /&gt;
&lt;br /&gt;
== Process Overview ==&lt;br /&gt;
&lt;br /&gt;
[[File:RUP.png|450px|right|thumb| Figure 1. The iterative model graph shows how the process is structured along two dimensions]]&lt;br /&gt;
&lt;br /&gt;
The best possible way to describe the methodology is through a 2 - dimensional graph.&lt;br /&gt;
* The first dimension (horizontal axis) represents the &#039;&#039;&#039;dynamic aspect&#039;&#039;&#039; of the process. It expresses &#039;&#039;&#039;time&#039;&#039;&#039; in terms of &#039;&#039;&#039;phases&#039;&#039;&#039; and &#039;&#039;&#039;iterations&#039;&#039;&#039;. &lt;br /&gt;
* The second dimension (vertical axis) represents the &#039;&#039;&#039;static aspect&#039;&#039;&#039; of the process. It expresses &#039;&#039;&#039;workflows&#039;&#039;&#039; in terms of 6 core and 3 supporting &#039;&#039;&#039;disciplines&#039;&#039;&#039; (more on that on &amp;quot;Disciplines&amp;quot; section).&lt;br /&gt;
&lt;br /&gt;
=== Time Dimension - Phases and Iterations ===&lt;br /&gt;
When developing software, the project team goes through a multi-step process, from establishing a system&#039;s requirements to designing, implementing and finally maintaining the software with new releases. This is the software life cycle. RUP delicately breaks the software life cycle down to four consecutive phases.&lt;br /&gt;
&lt;br /&gt;
* Inception phase&lt;br /&gt;
* Elaboration phase&lt;br /&gt;
* Construction phase&lt;br /&gt;
* Transition phase&lt;br /&gt;
&lt;br /&gt;
Depending on the project, each of these phases can consist of one to a number of &#039;&#039;&#039;iterations&#039;&#039;&#039;. An iteration is defined as a complete development loop, resulting in a new product release. All the phases include a well-defined milestone, in order to be completed. In the end of every phase, the development team can evaluate whether all the key goals have been achieved, all stakeholders have been considered and the actual expenditures correspond with the planned ones.&lt;br /&gt;
&lt;br /&gt;
[[File:RUP_phases.png|550px|right|thumb| Figure 2. The four phases and milestones of a project]]&lt;br /&gt;
==== Inception Phase ====&lt;br /&gt;
The first phase is the inception phase. The focus of this phase, is understanding the scope of the project and studying if is both worth doing and possible to do. All the internal and external entities that the system will interact with are identified and the nature of the interaction is well defined at a high level. For this reason, the inception phase is primarily significant for new development projects. &lt;br /&gt;
The expected outcome of the inception phase includes :&lt;br /&gt;
&lt;br /&gt;
* A vision document: The document states the general vision of the project including its key requirements, features and main constraints.&lt;br /&gt;
* An initial use-case model (10%-20% complete)&lt;br /&gt;
* An initial project glossary&lt;br /&gt;
* An initial business case, including the business context, success criteria and a financial forecast.&lt;br /&gt;
* An initial risk assessment&lt;br /&gt;
* A project plan (phases and iterations)&lt;br /&gt;
* A business model (if necessary)&lt;br /&gt;
* Prototypes&lt;br /&gt;
&lt;br /&gt;
At the end of the inception phase lies the first major project milestone; the &#039;&#039;&#039;Lifecycle Objective Milestone&#039;&#039;&#039;.&lt;br /&gt;
The inception phase has five evaluation criteria:&lt;br /&gt;
&lt;br /&gt;
* Stakeholder concurrence on scope definition and cost/schedule estimates.&lt;br /&gt;
* Depth and breadth of any prototype that was developed.&lt;br /&gt;
* Actual expenditures versus planned ones.&lt;br /&gt;
* Requirements understanding.&lt;br /&gt;
* Credibility of the cost/schedule estimates, risks and priorities.&lt;br /&gt;
&lt;br /&gt;
If for any reason the project fails to pass this milestone, it can either be completely cancelled or re-designed to successfully meet the criteria.&lt;br /&gt;
 &lt;br /&gt;
==== Elaboration Phase ====&lt;br /&gt;
The second phase is the elaboration phase. The focus of this phase, is establishing a baseline to the architecture of the system, further developing the project plan and analyzing the problem domain while trying to mitigate the highest risk elements. In other words, this is the phase where the project starts to take shape. One of the most important characteristics of this phase, is the production of a component-based architectural prototype. The purpose of this prototype is to address the critical use-cases, that were identified in the previous phase, and hopefully expose the highest technical risks of the project. The expected outcome of the elaboration phase includes:&lt;br /&gt;
&lt;br /&gt;
* A use-case model (at least 80% complete) which will be able to identify all the actors and use-cases.&lt;br /&gt;
* Supplementary requirements (if any).&lt;br /&gt;
* A clear description of the software architecture.&lt;br /&gt;
* An architectural prototype.&lt;br /&gt;
* A more detailed risk assessment and business case.&lt;br /&gt;
* A development plan for the overall project.&lt;br /&gt;
* A preliminary user manual (optional).&lt;br /&gt;
&lt;br /&gt;
At the end of the elaboration phase lies the second major project milestone; the &#039;&#039;&#039;Lifecycle Architecture Milestone&#039;&#039;&#039;.&lt;br /&gt;
The elaboration phase has six evaluation criteria:&lt;br /&gt;
&lt;br /&gt;
* Is the vision stable enough?&lt;br /&gt;
* Is the system architecture stable enough?&lt;br /&gt;
* Have all the major risks been successfully identified and resolved?&lt;br /&gt;
* Is the plan for the construction phase accurate enough?&lt;br /&gt;
* Do all the stakeholders share the opinion that the vision can be achieved by executing the current plan?&lt;br /&gt;
* Is the actual vs planned resource expenditure in acceptable levels?&lt;br /&gt;
&lt;br /&gt;
If the project fails to pass the milestone, there is still time to be re-designed or even cancelled. However, when the project moves to the next phase the associated operation risks raise significantly and changes become much more difficult.&lt;br /&gt;
&lt;br /&gt;
==== Construction Phase====&lt;br /&gt;
The third phase is the construction phase. The focus of this phase, is to develop and integrate all the remaining components and application features into the product. In other words this is the phase where the vision is finally translated into a final stable product, which is based on the architecture that was developed during the previous phases. Most emphasize is given to resources, control and process management in order to fully optimize costs, schedules and quality. The existing prototype evolves via a number of iterations into a fully functional product that meets the stakeholders&#039; needs. The construction phase is usually the longest one of the project life cycle. The expected outcome of the construction phase includes:&lt;br /&gt;
&lt;br /&gt;
* First external release of the software.&lt;br /&gt;
* User manuals.&lt;br /&gt;
* A detailed description of the current release.&lt;br /&gt;
&lt;br /&gt;
At the end of the construction phase lies the third major project milestone; the &#039;&#039;&#039;Initial Operation Capability Milestone&#039;&#039;&#039;.&lt;br /&gt;
The construction phase has three evaluation criteria:&lt;br /&gt;
&lt;br /&gt;
* Is the software release stable enough to be given to the user community?&lt;br /&gt;
* Are all the stakeholders ready for the transition to the user community?&lt;br /&gt;
* Is the actual vs planned resource expenditure in acceptable levels?&lt;br /&gt;
&lt;br /&gt;
If the project fails to pass this milestone, transition may have to be postponed by one release.&lt;br /&gt;
&lt;br /&gt;
==== Transition Phase ====&lt;br /&gt;
The fourth and final phase is the transition phase. The focus of this phase is, as the word says, to transition the software product to the user community. It includes ensuring that the product has been developed to an acceptable quality level, by beta testing the software through the end users, and validating it against the stakeholders&#039; expectations. Once the product has been given for beta testing, a number of issues can arise, requiring the development of new releases (fixing bugs) and adding features that may have been postponed. The expected outcome of the transition phase includes:&lt;br /&gt;
&lt;br /&gt;
* Beta-testing to fix any major [https://en.wikipedia.org/wiki/Software_bug software bugs] and add any missing features.&lt;br /&gt;
* Conversion of operational databases&lt;br /&gt;
* Training of end users and maintainers.&lt;br /&gt;
* Marketing and distribution of the product.&lt;br /&gt;
&lt;br /&gt;
At the end of the transition phase lies the fourth and final major project milestone; the &#039;&#039;&#039;Product Release&#039;&#039;&#039;.&lt;br /&gt;
The transition phase has two evaluation criteria:&lt;br /&gt;
&lt;br /&gt;
* Are the end - users satisfied with the product?&lt;br /&gt;
* Is the actual vs planned resource expenditure in acceptable levels?&lt;br /&gt;
&lt;br /&gt;
==== Iterations ====&lt;br /&gt;
As stated before, every phase can consist of a number of iterations, depending on the project size and scope. RUP, in comparison to the traditional [https://en.wikipedia.org/wiki/Waterfall_model waterfall] approach, is heavily based on iterations. This gives a number of advantages and benefits to the project team, with the most important one being mitigating risks much more earlier in the project. Moreover change is more manageable and there is normally a higher level of reuse. Finally, iterations ensure an overall high quality in the final product and that the project team can learn throughout the developing process.&lt;br /&gt;
&lt;br /&gt;
=== Workflow Dimension - Disciplines ===&lt;br /&gt;
&lt;br /&gt;
[[File:activities.png|350px|right|thumb| Figure 4. Individuals, Roles and Activities]]&lt;br /&gt;
[[File:workflows.png|350px|right|thumb| Figure 5. Example of a workflow]]&lt;br /&gt;
&lt;br /&gt;
A process describes &#039;&#039;&#039;who&#039;&#039;&#039; is doing &#039;&#039;&#039;what&#039;&#039;&#039;, &#039;&#039;&#039;how&#039;&#039;&#039; and &#039;&#039;&#039;when&#039;&#039;&#039;. RUP addresses those terms with four modelling elements; &#039;&#039;&#039;Roles&#039;&#039;&#039;, &#039;&#039;&#039;Activities&#039;&#039;&#039;, &#039;&#039;&#039;Artifacts&#039;&#039;&#039; and &#039;&#039;&#039;Workflows&#039;&#039;&#039; respectively. A &#039;&#039;&#039;role&#039;&#039;&#039;, formally addressed as a worker, describes the behavior and responsibilities of an individual or a group of individuals in order to produce an artifact. Throughout the development of a project, a person can play one or a number of roles. Some examples of roles are the system analyst, designer, tester. &#039;&#039;&#039;Activities&#039;&#039;&#039; are expressed through behaviors. An activity, is a job that a person performs through his role, as seen in Figure 4. The length of an activity may vary from a few hours to a number of days. Examples of activities are: Plan an operation - performed by the role of Project Manager or add a missing feature - performed by the role of a software developer. All activities produce a meaningful result, called an artifact. &#039;&#039;&#039;Artifacts&#039;&#039;&#039;, are the responsibilities of ones role or roles and express a piece of information that is produced, modified or even used by a process. They can act both as input or output of an activity. Examples of artifacts are the source code, the business case, the software architecture. The roles perform activities that can produce a sequence of artifacts, called &#039;&#039;&#039;workflows&#039;&#039;&#039;. Examples of workflows can be seen in Figure 5. &lt;br /&gt;
&lt;br /&gt;
RUP identifies nine core process workflows, called &#039;&#039;&#039;disciplines&#039;&#039;&#039;. Every discipline, addresses a set of activities and artifacts, based upon a set of skills that are common in an ICT project. These disciplines have the ability to arrange the activities and artifacts in such a way, to provide an understanding of the overall project from a waterfall perspective.&lt;br /&gt;
&lt;br /&gt;
There are six core &amp;quot;engineering&amp;quot; disciplines:&lt;br /&gt;
* Business Modelling Discipline&lt;br /&gt;
* Requirements Discipline&lt;br /&gt;
* Analysis and Design Discipline&lt;br /&gt;
* Implementation Discipline&lt;br /&gt;
* Test Discipline&lt;br /&gt;
* Deployment Discipline&lt;br /&gt;
&lt;br /&gt;
And three core &amp;quot;supporting&amp;quot; disciplines:&lt;br /&gt;
* Project Management Discipline&lt;br /&gt;
* Configuration and Change Management Discipline&lt;br /&gt;
* Environment Discipline&lt;br /&gt;
&lt;br /&gt;
==== Business Modelling ====&lt;br /&gt;
&lt;br /&gt;
Miscommunication between the software engineering community and the business engineering community is one of the most common problems among most business engineering efforts. This means that the output from software development efforts is not correctly used as input to the business engineering and vice versa. The purpose of the Business Modelling discipline is to provide a common language between the two communities and create a direct coupling between software and business models. All business processes are documented using &amp;quot;use cases&amp;quot;. This assures that all stakeholders share the same understanding of the demanding organization.&lt;br /&gt;
&lt;br /&gt;
==== Requirements ====&lt;br /&gt;
The purpose of the requirements discipline is to describe in detail &#039;&#039;&#039;what&#039;&#039;&#039; the system should do. Based on that, a Vision document is created where required functionality and constraints are documented. Moreover, actors (end users) and use cases (behaviors of the system) are identified. Use cases are described in detail and each description clearly shows how the system interacts with the actors. This way an agreement is established between the customers and the rest of the stakeholders regarding the system&#039;s capabilities, user-interface and the end user&#039;s needs.&lt;br /&gt;
&lt;br /&gt;
==== Analysis and Design ====&lt;br /&gt;
&lt;br /&gt;
The purpose of the Analysis and Design discipline it to investigate &#039;&#039;&#039;how&#039;&#039;&#039; the system requirements will be translated into a detailed implementation plan. The system needs to:&lt;br /&gt;
* Perform exactly as described in the use-case descriptions.&lt;br /&gt;
* Fulfill all requirements.&lt;br /&gt;
* Have a robust structure.&lt;br /&gt;
&lt;br /&gt;
Analysis and Design result in the creation of a &#039;&#039;&#039;design model&#039;&#039;&#039;. The design model is an abstraction of the system&#039;s architecture and acts as a guide of how the source code should be finally written and structured.&lt;br /&gt;
&lt;br /&gt;
==== Implementation ====&lt;br /&gt;
The purpose of the Implementation discipline is to:&lt;br /&gt;
&lt;br /&gt;
* Arrange the code into subsystems, organized in layers.&lt;br /&gt;
* Implement classes and objects in terms of components.&lt;br /&gt;
* Uni-test the developed components to ensure quality.&lt;br /&gt;
* Integrate the results into an executable system.&lt;br /&gt;
&lt;br /&gt;
The whole system can be realized as an implementation of various components. RUP enables the integration of those components, in a revolutionary way, making the system easier to maintain and increasing the possibilities for future re-use.&lt;br /&gt;
&lt;br /&gt;
==== Test ====&lt;br /&gt;
&lt;br /&gt;
In the implementation discipline, all the developed components were uni-tested individually and were integrated into the system. The purpose of the Test discipline is to assess the system as a whole and verify the product quality. It is a mechanism to verify the smooth interaction between the various components, their proper integration into the system and finally ensure that all requirements have been successfully implemented. All tests are carried out along 4 quality dimensions:&lt;br /&gt;
* Functionality.&lt;br /&gt;
* Reliability.&lt;br /&gt;
* Application Performance.&lt;br /&gt;
* System Performance.&lt;br /&gt;
&lt;br /&gt;
==== Deployment ====&lt;br /&gt;
&lt;br /&gt;
The purpose of the Deployment discipline is primarily to develop product releases and distribute the software to the end – users. More specifically the Deployment discipline focuses at:&lt;br /&gt;
&lt;br /&gt;
* Developing external software releases&lt;br /&gt;
* Distributing the software&lt;br /&gt;
* Installing the software&lt;br /&gt;
* Providing help to the end – users&lt;br /&gt;
* Creating an up-to-date user manual&lt;br /&gt;
* Conducting beta testing&lt;br /&gt;
&lt;br /&gt;
==== Project Management ====&lt;br /&gt;
&lt;br /&gt;
The purpose of the Project Management discipline, is to successfully balance competing objectives, manage and mitigate risks and finally handle any constraints on delivering the product. Project management, ideally provides:&lt;br /&gt;
&lt;br /&gt;
* A framework for managing software-intensive projects.&lt;br /&gt;
* A framework to successfully manage risks.&lt;br /&gt;
* A framework to plan, execute and monitor projects.&lt;br /&gt;
&lt;br /&gt;
While the discipline does not guarantee success, the odds of delivering successful software are greatly improved.&lt;br /&gt;
&lt;br /&gt;
==== Configuration and Change Management ====&lt;br /&gt;
&lt;br /&gt;
The purpose of the Configuration and Change Management Discipline is to control, maintain and configure all the various artifacts that are produced by the different actors that are working on a project. During the software development life cycle, artifacts are regularly updated (changed). In order to understand the current state of an artifact, it is very important to keep track of its location and history; what was the reason and who decided to change the artifact. The discipline helps create a framework that keeps track of all the project assets.&lt;br /&gt;
&lt;br /&gt;
==== Environment ====&lt;br /&gt;
&lt;br /&gt;
The purpose of the environment discipline, is to provide the development team with all the processes, tools and methods for supporting all developing activities. It is responsible for producing a Development Kit, able to provide guidelines and templates for customizing processes.&lt;br /&gt;
&lt;br /&gt;
== Why RUP - Best Practices ==&lt;br /&gt;
&lt;br /&gt;
RUP captures many of the “best practices” that are currently used in modern software development and more particularly in industry by successful organizations. The practices are:&lt;br /&gt;
&lt;br /&gt;
* Develop Software Iteratively&lt;br /&gt;
* Manage Requirements&lt;br /&gt;
* Use component-based architectures&lt;br /&gt;
* Visually model software&lt;br /&gt;
* Continuously verify software quality&lt;br /&gt;
* Control changes to software&lt;br /&gt;
&lt;br /&gt;
=== Develop Software iteratively ===&lt;br /&gt;
&lt;br /&gt;
Today’s high sophisticated software systems, consist of many and complex structures which make it nearly impossible to define the entire system from the very beginning, develop the entire solution and then test the product in the end. RUP uses an iterative approach that allows an increasing understanding of the problem and developing a step – by – step solution, over multiple iterations. Each iteration ends with an executable release, which enables continuous end - user involvement and feedback. As a result, the risks of the project are mitigated at an early stage and stakeholders are ensured that the project requirements are fulfilled.&lt;br /&gt;
&lt;br /&gt;
=== Manage requirements ===&lt;br /&gt;
&lt;br /&gt;
The requirements of a system include the description of the services that the system is able to provide and its operational constraints. RUP documents, organizes and tracks required functionality and constraints and easily communicates business requirements. The use – cases that are used in the process are an excellent way to ensure that requirements are actually those elements that drive the design, implementation and testing of software, making it more likely that the final system fulfills the stakeholders needs.&lt;br /&gt;
&lt;br /&gt;
=== Use component-based architectures ===&lt;br /&gt;
&lt;br /&gt;
Component-based architecture makes the system dynamic; components are independent from the system and interact with other components through well-defined interfaces. Their in-dependency from the system, gives them a great flexibility meaning that they can easily be added, updated or totally replaced. RUP supports component-based software development by providing a systematic approach to defining an architecture using new and existing components.&lt;br /&gt;
&lt;br /&gt;
=== Visually model software ===&lt;br /&gt;
&lt;br /&gt;
A model is an abstraction of reality that can help better comprehend large and complex systems. Visual abstractions help the development team to easily communicate different aspects of the software and see how all the components fit together. RUP uses the Unified Modelling Language (UML) standard which is a graphical language for visualizing and constructing the artifacts of a software-intensive system.&lt;br /&gt;
&lt;br /&gt;
=== Continuously verify software quality ===&lt;br /&gt;
&lt;br /&gt;
In software development, quality should always be reviewed with respect to the requirements based on reliability, functionality , application and system performance. In RUP, quality verification and assessment is built into the process, inside all activities, including all stakeholders and is not treated as a separate activity, performed by a separate group.&lt;br /&gt;
&lt;br /&gt;
=== Control changes to software ===&lt;br /&gt;
&lt;br /&gt;
A software system is developed by a number of teams or individuals, using different platforms and at times being in different locations. As a result, it is essential to somehow make sure that all the changes made in the system are synchronized and constantly verified. RUP ensures that all the individuals working in the project are well informed about any changes and everything is in sync. The process describes how to control, track and monitor changes to enable successful iterative development.&lt;br /&gt;
&lt;br /&gt;
== Limitations ==&lt;br /&gt;
&lt;br /&gt;
While being a complete methodology in itself with an emphasis on accurate documentation and quickly resolving project associated risks, RUP comes with a number of limitations.&lt;br /&gt;
&lt;br /&gt;
* In order for team members to start developing software under this methodology, they need to be &#039;&#039;&#039;experts&#039;&#039;&#039; in their respective fields.&lt;br /&gt;
* The development process can easily become too complex to handle.&lt;br /&gt;
* When working with cutting - edge projects that highly utilize new technology, components will not be able to be reused. &lt;br /&gt;
* While in theory integration throughout the process of software development sounds like a good thing, when working with particularly complex projects with multiple development streams, issues and significant confusion may rise during the stages of testing.&lt;br /&gt;
&lt;br /&gt;
== Conclusion ==&lt;br /&gt;
&lt;br /&gt;
The Rational Unified Process, is an exemplary method for addressing and mitigating risks from the very early stages, by rapidly developing an initial version of the system (prototype) that describes its architecture. There are not fixed requirements from the beginning but rather allows refining requirements , while the project progresses. It expects and actually deals with change pretty well while its main focus is the quality of the product and the degree to which it satisfies its end - users, throughout the project life-cycle. However, while being a complete and well documented methodology, it should be stressed that remains a very complex one. In order to increase the likelihood of success, while adopting this methodology, all the project members need to be &#039;&#039;&#039;experts&#039;&#039;&#039; in their respective fields. The method can easily become too difficult to learn and most importantly too difficult to apply.&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;/div&gt;</summary>
		<author><name>Lessisv</name></author>
	</entry>
	<entry>
		<id>http://13.50.150.85/index.php?title=Rational_Unified_Process_(RUP)&amp;diff=12380</id>
		<title>Rational Unified Process (RUP)</title>
		<link rel="alternate" type="text/html" href="http://13.50.150.85/index.php?title=Rational_Unified_Process_(RUP)&amp;diff=12380"/>
		<updated>2015-09-22T08:06:14Z</updated>

		<summary type="html">&lt;p&gt;Lessisv: /* Workflow Dimension - Disciplines */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The &#039;&#039;&#039;Rational Unified Process (RUP)&#039;&#039;&#039; is an iterative, &#039;&#039;&#039;software development methodology&#039;&#039;&#039;, firstly introduced by the [https://en.wikipedia.org/wiki/Rational_Software Rational Software Corporation] which was [http://www-03.ibm.com/press/us/en/pressrelease/314.wss acquired by IBM] in 2003. RUP is a disciplined approach to assign tasks within a development organization and software project teams. It was developed to ensure the production of &#039;&#039;&#039;high quality software&#039;&#039;&#039; by providing the development team with a set of &#039;&#039;&#039;guidelines, templates and tool mentors&#039;&#039;&#039;, for all the critical life-cycle activities within a project. This cluster of objects, form a knowledge base that is shared between all project team members. As a result, no matter what each member is working with (e.g testing, designing, managing), they all share a common language and view on how to develop software. Consequently, team productivity is boosted, in order to deliver software that can meet and exceed the needs and expectations of end-users, strictly following a predictable budget and schedule. RUP is the most popular and extensively documented refinement of the [https://en.wikipedia.org/wiki/Unified_Process Unified Process], an iterative and incremental software development process framework. Other worth mentioning forms are the [https://en.wikipedia.org/wiki/OpenUP OpenUP] and [https://en.wikipedia.org/wiki/Agile_Unified_Process Agile Unified Process].&lt;br /&gt;
&lt;br /&gt;
== Process Overview ==&lt;br /&gt;
&lt;br /&gt;
[[File:RUP.png|450px|right|thumb| Figure 1. The iterative model graph shows how the process is structured along two dimensions]]&lt;br /&gt;
&lt;br /&gt;
The best possible way to describe the methodology is through a 2 - dimensional graph.&lt;br /&gt;
* The first dimension (horizontal axis) represents the &#039;&#039;&#039;dynamic aspect&#039;&#039;&#039; of the process. It expresses &#039;&#039;&#039;time&#039;&#039;&#039; in terms of &#039;&#039;&#039;phases&#039;&#039;&#039; and &#039;&#039;&#039;iterations&#039;&#039;&#039;. &lt;br /&gt;
* The second dimension (vertical axis) represents the &#039;&#039;&#039;static aspect&#039;&#039;&#039; of the process. It expresses &#039;&#039;&#039;workflows&#039;&#039;&#039; in terms of 6 core and 3 supporting &#039;&#039;&#039;disciplines&#039;&#039;&#039; (more on that on &amp;quot;Disciplines&amp;quot; section).&lt;br /&gt;
&lt;br /&gt;
=== Time Dimension - Phases and Iterations ===&lt;br /&gt;
When developing software, the project team goes through a multi-step process, from establishing a system&#039;s requirements to designing, implementing and finally maintaining the software with new releases. This is the software life cycle. RUP delicately breaks the software life cycle down to four consecutive phases.&lt;br /&gt;
&lt;br /&gt;
* Inception phase&lt;br /&gt;
* Elaboration phase&lt;br /&gt;
* Construction phase&lt;br /&gt;
* Transition phase&lt;br /&gt;
&lt;br /&gt;
Depending on the project, each of these phases can consist of one to a number of &#039;&#039;&#039;iterations&#039;&#039;&#039;. An iteration is defined as a complete development loop, resulting in a new product release. All the phases include a well-defined milestone, in order to be completed. In the end of every phase, the development team can evaluate whether all the key goals have been achieved, all stakeholders have been considered and the actual expenditures correspond with the planned ones.&lt;br /&gt;
&lt;br /&gt;
[[File:RUP_phases.png|550px|right|thumb| Figure 2. The four phases and milestones of a project]]&lt;br /&gt;
==== Inception Phase ====&lt;br /&gt;
The first phase is the inception phase. The focus of this phase, is understanding the scope of the project and studying if is both worth doing and possible to do. All the internal and external entities that the system will interact with are identified and the nature of the interaction is well defined at a high level. For this reason, the inception phase is primarily significant for new development projects. &lt;br /&gt;
The expected outcome of the inception phase includes :&lt;br /&gt;
&lt;br /&gt;
* A vision document: The document states the general vision of the project including its key requirements, features and main constraints.&lt;br /&gt;
* An initial use-case model (10%-20% complete)&lt;br /&gt;
* An initial project glossary&lt;br /&gt;
* An initial business case, including the business context, success criteria and a financial forecast.&lt;br /&gt;
* An initial risk assessment&lt;br /&gt;
* A project plan (phases and iterations)&lt;br /&gt;
* A business model (if necessary)&lt;br /&gt;
* Prototypes&lt;br /&gt;
&lt;br /&gt;
At the end of the inception phase lies the first major project milestone; the &#039;&#039;&#039;Lifecycle Objective Milestone&#039;&#039;&#039;.&lt;br /&gt;
The inception phase has five evaluation criteria:&lt;br /&gt;
&lt;br /&gt;
* Stakeholder concurrence on scope definition and cost/schedule estimates.&lt;br /&gt;
* Depth and breadth of any prototype that was developed.&lt;br /&gt;
* Actual expenditures versus planned ones.&lt;br /&gt;
* Requirements understanding.&lt;br /&gt;
* Credibility of the cost/schedule estimates, risks and priorities.&lt;br /&gt;
&lt;br /&gt;
If for any reason the project fails to pass this milestone, it can either be completely cancelled or re-designed to successfully meet the criteria.&lt;br /&gt;
 &lt;br /&gt;
==== Elaboration Phase ====&lt;br /&gt;
The second phase is the elaboration phase. The focus of this phase, is establishing a baseline to the architecture of the system, further developing the project plan and analyzing the problem domain while trying to mitigate the highest risk elements. In other words, this is the phase where the project starts to take shape. One of the most important characteristics of this phase, is the production of a component-based architectural prototype. The purpose of this prototype is to address the critical use-cases, that were identified in the previous phase, and hopefully expose the highest technical risks of the project. The expected outcome of the elaboration phase includes:&lt;br /&gt;
&lt;br /&gt;
* A use-case model (at least 80% complete) which will be able to identify all the actors and use-cases.&lt;br /&gt;
* Supplementary requirements (if any).&lt;br /&gt;
* A clear description of the software architecture.&lt;br /&gt;
* An architectural prototype.&lt;br /&gt;
* A more detailed risk assessment and business case.&lt;br /&gt;
* A development plan for the overall project.&lt;br /&gt;
* A preliminary user manual (optional).&lt;br /&gt;
&lt;br /&gt;
At the end of the elaboration phase lies the second major project milestone; the &#039;&#039;&#039;Lifecycle Architecture Milestone&#039;&#039;&#039;.&lt;br /&gt;
The elaboration phase has six evaluation criteria:&lt;br /&gt;
&lt;br /&gt;
* Is the vision stable enough?&lt;br /&gt;
* Is the system architecture stable enough?&lt;br /&gt;
* Have all the major risks been successfully identified and resolved?&lt;br /&gt;
* Is the plan for the construction phase accurate enough?&lt;br /&gt;
* Do all the stakeholders share the opinion that the vision can be achieved by executing the current plan?&lt;br /&gt;
* Is the actual vs planned resource expenditure in acceptable levels?&lt;br /&gt;
&lt;br /&gt;
If the project fails to pass the milestone, there is still time to be re-designed or even cancelled. However, when the project moves to the next phase the associated operation risks raise significantly and changes become much more difficult.&lt;br /&gt;
&lt;br /&gt;
==== Construction Phase====&lt;br /&gt;
The third phase is the construction phase. The focus of this phase, is to develop and integrate all the remaining components and application features into the product. In other words this is the phase where the vision is finally translated into a final stable product, which is based on the architecture that was developed during the previous phases. Most emphasize is given to resources, control and process management in order to fully optimize costs, schedules and quality. The existing prototype evolves via a number of iterations into a fully functional product that meets the stakeholders&#039; needs. The construction phase is usually the longest one of the project life cycle. The expected outcome of the construction phase includes:&lt;br /&gt;
&lt;br /&gt;
* First external release of the software.&lt;br /&gt;
* User manuals.&lt;br /&gt;
* A detailed description of the current release.&lt;br /&gt;
&lt;br /&gt;
At the end of the construction phase lies the third major project milestone; the &#039;&#039;&#039;Initial Operation Capability Milestone&#039;&#039;&#039;.&lt;br /&gt;
The construction phase has three evaluation criteria:&lt;br /&gt;
&lt;br /&gt;
* Is the software release stable enough to be given to the user community?&lt;br /&gt;
* Are all the stakeholders ready for the transition to the user community?&lt;br /&gt;
* Is the actual vs planned resource expenditure in acceptable levels?&lt;br /&gt;
&lt;br /&gt;
If the project fails to pass this milestone, transition may have to be postponed by one release.&lt;br /&gt;
&lt;br /&gt;
==== Transition Phase ====&lt;br /&gt;
The fourth and final phase is the transition phase. The focus of this phase is, as the word says, to transition the software product to the user community. It includes ensuring that the product has been developed to an acceptable quality level, by beta testing the software through the end users, and validating it against the stakeholders&#039; expectations. Once the product has been given for beta testing, a number of issues can arise, requiring the development of new releases (fixing bugs) and adding features that may have been postponed. The expected outcome of the transition phase includes:&lt;br /&gt;
&lt;br /&gt;
* Beta-testing to fix any major [https://en.wikipedia.org/wiki/Software_bug software bugs] and add any missing features.&lt;br /&gt;
* Conversion of operational databases&lt;br /&gt;
* Training of end users and maintainers.&lt;br /&gt;
* Marketing and distribution of the product.&lt;br /&gt;
&lt;br /&gt;
At the end of the transition phase lies the fourth and final major project milestone; the &#039;&#039;&#039;Product Release&#039;&#039;&#039;.&lt;br /&gt;
The transition phase has two evaluation criteria:&lt;br /&gt;
&lt;br /&gt;
* Are the end - users satisfied with the product?&lt;br /&gt;
* Is the actual vs planned resource expenditure in acceptable levels?&lt;br /&gt;
&lt;br /&gt;
==== Iterations ====&lt;br /&gt;
As stated before, every phase can consist of a number of iterations, depending on the project size and scope. RUP, in comparison to the traditional [https://en.wikipedia.org/wiki/Waterfall_model waterfall] approach, is heavily based on iterations. This gives a number of advantages and benefits to the project team, with the most important one being mitigating risks much more earlier in the project. Moreover change is more manageable and there is normally a higher level of reuse. Finally, iterations ensure an overall high quality in the final product and that the project team can learn throughout the developing process.&lt;br /&gt;
&lt;br /&gt;
=== Workflow Dimension - Disciplines ===&lt;br /&gt;
&lt;br /&gt;
[[File:activities.png|350px|right|thumb| Figure 4. Individuals, Roles and Activities]]&lt;br /&gt;
[[File:workflows.png|350px|right|thumb| Figure 5. Example of a workflow]]&lt;br /&gt;
&lt;br /&gt;
A process describes &#039;&#039;&#039;who&#039;&#039;&#039; is doing &#039;&#039;&#039;what&#039;&#039;&#039;, &#039;&#039;&#039;how&#039;&#039;&#039; and &#039;&#039;&#039;when&#039;&#039;&#039;. RUP addresses those terms with four modelling elements; &#039;&#039;&#039;Roles&#039;&#039;&#039;, &#039;&#039;&#039;Activities&#039;&#039;&#039;, &#039;&#039;&#039;Artifacts&#039;&#039;&#039; and &#039;&#039;&#039;Workflows&#039;&#039;&#039; respectively. A &#039;&#039;&#039;role&#039;&#039;&#039;, formally addressed as a worker, describes the behavior and responsibilities of an individual or a group of individuals in order to produce an artifact. Throughout the development of a project, a person can play one or a number of roles. Some examples of roles are the system analyst, designer, tester. &#039;&#039;&#039;Activities&#039;&#039;&#039; are expressed through behaviors. An activity, is a job that a person performs through his role, as seen in Figure 4. The length of an activity may vary from a few hours to a number of days. Examples of activities are: Plan an operation - performed by the role of Project Manager or add a missing feature - performed by the role of a software developer. All activities produce a meaningful result, called an artifact. &#039;&#039;&#039;Artifacts&#039;&#039;&#039;, are the responsibilities of ones role or roles and express a piece of information that is produced, modified or even used by a process. They can act both as input or output of an activity. Examples of artifacts are the source code, the business case, the software architecture. The roles perform activities that can produce a sequence of artifacts, called &#039;&#039;&#039;workflows&#039;&#039;&#039;. Examples of workflows can be seen in Figure 5. &lt;br /&gt;
&lt;br /&gt;
RUP identifies nine core process workflows, called &#039;&#039;&#039;disciplines&#039;&#039;&#039;. Every discipline, addresses a set of activities and artifacts, based upon a set of skills that are common in an ICT project. These disciplines have the ability to arrange the activities and artifacts in such a way, to provide an understanding of the overall project from a waterfall perspective.&lt;br /&gt;
&lt;br /&gt;
There are six core &amp;quot;engineering&amp;quot; disciplines:&lt;br /&gt;
* Business Modelling Discipline&lt;br /&gt;
* Requirements Discipline&lt;br /&gt;
* Analysis and Design Discipline&lt;br /&gt;
* Implementation Discipline&lt;br /&gt;
* Test Discipline&lt;br /&gt;
* Deployment Discipline&lt;br /&gt;
&lt;br /&gt;
And three core &amp;quot;supporting&amp;quot; disciplines:&lt;br /&gt;
* Project Management Discipline&lt;br /&gt;
* Configuration and Change Management Discipline&lt;br /&gt;
* Environment Discipline&lt;br /&gt;
&lt;br /&gt;
==== Business Modelling ====&lt;br /&gt;
&lt;br /&gt;
Miscommunication between the software engineering community and the business engineering community is one of the most common problems among most business engineering efforts. This means that the output from software development efforts is not correctly used as input to the business engineering and vice versa. The purpose of the Business Modelling discipline is to provide a common language between the two communities and create a direct coupling between software and business models. All business processes are documented using &amp;quot;use cases&amp;quot;. This assures that all stakeholders share the same understanding of the demanding organization.&lt;br /&gt;
&lt;br /&gt;
==== Requirements ====&lt;br /&gt;
The purpose of the requirements discipline is to describe in detail &#039;&#039;&#039;what&#039;&#039;&#039; the system should do. Based on that, a Vision document is created where required functionality and constraints are documented. Moreover, actors (end users) and use cases (behaviors of the system) are identified. Use cases are described in detail and each description clearly shows how the system interacts with the actors. This way an agreement is established between the customers and the rest of the stakeholders regarding the system&#039;s capabilities, user-interface and the end user&#039;s needs.&lt;br /&gt;
&lt;br /&gt;
==== Analysis and Design ====&lt;br /&gt;
&lt;br /&gt;
The purpose of the Analysis and Design discipline it to investigate &#039;&#039;&#039;how&#039;&#039;&#039; the system requirements will be translated into a detailed implementation plan. The system needs to:&lt;br /&gt;
* Perform exactly as described in the use-case descriptions.&lt;br /&gt;
* Fulfill all requirements.&lt;br /&gt;
* Have a robust structure.&lt;br /&gt;
&lt;br /&gt;
Analysis and Design result in the creation of a &#039;&#039;&#039;design model&#039;&#039;&#039;. The design model is an abstraction of the system&#039;s architecture and acts as a guide of how the source code should be finally written and structured.&lt;br /&gt;
&lt;br /&gt;
==== Implementation ====&lt;br /&gt;
The purpose of the Implementation discipline is to:&lt;br /&gt;
&lt;br /&gt;
* Arrange the code into subsystems, organized in layers.&lt;br /&gt;
* Implement classes and objects in terms of components.&lt;br /&gt;
* Uni-test the developed components to ensure quality.&lt;br /&gt;
* Integrate the results into an executable system.&lt;br /&gt;
&lt;br /&gt;
The whole system can be realized as an implementation of various components. RUP enables the integration of those components, in a revolutionary way, making the system easier to maintain and increasing the possibilities for future re-use.&lt;br /&gt;
&lt;br /&gt;
==== Test ====&lt;br /&gt;
&lt;br /&gt;
In the implementation discipline, all the developed components were uni-tested individually and were integrated into the system. The purpose of the Test discipline is to assess the system as a whole and verify the product quality. It is a mechanism to verify the smooth interaction between the various components, their proper integration into the system and finally ensure that all requirements have been successfully implemented. All tests are carried out along 4 quality dimensions:&lt;br /&gt;
* Functionality.&lt;br /&gt;
* Reliability.&lt;br /&gt;
* Application Performance.&lt;br /&gt;
* System Performance.&lt;br /&gt;
&lt;br /&gt;
==== Deployment ====&lt;br /&gt;
&lt;br /&gt;
The purpose of the Deployment discipline is primarily to develop product releases and distribute the software to the end – users. More specifically the Deployment discipline focuses at:&lt;br /&gt;
&lt;br /&gt;
* Developing external software releases&lt;br /&gt;
* Distributing the software&lt;br /&gt;
* Installing the software&lt;br /&gt;
* Providing help to the end – users&lt;br /&gt;
* Creating an up-to-date user manual&lt;br /&gt;
* Conducting beta testing&lt;br /&gt;
&lt;br /&gt;
==== Project Management ====&lt;br /&gt;
&lt;br /&gt;
The purpose of the Project Management discipline, is to successfully balance competing objectives, manage and mitigate risks and finally handle any constraints on delivering the product. Project management, ideally provides:&lt;br /&gt;
&lt;br /&gt;
* A framework for managing software-intensive projects.&lt;br /&gt;
* A framework to successfully manage risks.&lt;br /&gt;
* A framework to plan, execute and monitor projects.&lt;br /&gt;
&lt;br /&gt;
While the discipline does not guarantee success, the odds of delivering successful software are greatly improved.&lt;br /&gt;
&lt;br /&gt;
==== Configuration and Change Management ====&lt;br /&gt;
&lt;br /&gt;
The purpose of the Configuration and Change Management Discipline is to control, maintain and configure all the various artifacts that are produced by the different actors that are working on a project. During the software development life cycle, artifacts are regularly updated (changed). In order to understand the current state of an artifact, it is very important to keep track of its location and history; what was the reason and who decided to change the artifact. The discipline helps create a framework that keeps track of all the project assets.&lt;br /&gt;
&lt;br /&gt;
==== Environment ====&lt;br /&gt;
&lt;br /&gt;
The purpose of the environment discipline, is to provide the development team with all the processes, tools and methods for supporting all developing activities. It is responsible for producing a Development Kit, able to provide guidelines and templates for customizing processes.&lt;br /&gt;
&lt;br /&gt;
== Why RUP - Best Practices ==&lt;br /&gt;
&lt;br /&gt;
RUP captures many of the “best practices” that are currently used in modern software development and more particularly in industry by successful organizations. The practices are:&lt;br /&gt;
&lt;br /&gt;
* Develop Software Iteratively&lt;br /&gt;
* Manage Requirements&lt;br /&gt;
* Use component-based architectures&lt;br /&gt;
* Visually model software&lt;br /&gt;
* Continuously verify software quality&lt;br /&gt;
* Control changes to software&lt;br /&gt;
&lt;br /&gt;
=== Develop Software iteratively ===&lt;br /&gt;
&lt;br /&gt;
Today’s high sophisticated software systems, consist of many and complex structures which make it nearly impossible to define the entire system from the very beginning, develop the entire solution and then test the product in the end. RUP uses an iterative approach that allows an increasing understanding of the problem and developing a step – by – step solution, over multiple iterations. Each iteration ends with an executable release, which enables continuous end - user involvement and feedback. As a result, the risks of the project are mitigated at an early stage and stakeholders are ensured that the project requirements are fulfilled.&lt;br /&gt;
&lt;br /&gt;
=== Manage requirements ===&lt;br /&gt;
&lt;br /&gt;
The requirements of a system include the description of the services that the system is able to provide and its operational constraints. RUP documents, organizes and tracks required functionality and constraints and easily communicates business requirements. The use – cases that are used in the process are an excellent way to ensure that requirements are actually those elements that drive the design, implementation and testing of software, making it more likely that the final system fulfills the stakeholders needs.&lt;br /&gt;
&lt;br /&gt;
=== Use component-based architectures ===&lt;br /&gt;
&lt;br /&gt;
Component-based architecture makes the system dynamic; components are independent from the system and interact with other components through well-defined interfaces. Their in-dependency from the system, gives them a great flexibility meaning that they can easily be added, updated or totally replaced. RUP supports component-based software development by providing a systematic approach to defining an architecture using new and existing components.&lt;br /&gt;
&lt;br /&gt;
=== Visually model software ===&lt;br /&gt;
&lt;br /&gt;
A model is an abstraction of reality that can help better comprehend large and complex systems. Visual abstractions help the development team to easily communicate different aspects of the software and see how all the components fit together. RUP uses the Unified Modelling Language (UML) standard which is a graphical language for visualizing and constructing the artifacts of a software-intensive system.&lt;br /&gt;
&lt;br /&gt;
=== Continuously verify software quality ===&lt;br /&gt;
&lt;br /&gt;
In software development, quality should always be reviewed with respect to the requirements based on reliability, functionality , application and system performance. In RUP, quality verification and assessment is built into the process, inside all activities, including all stakeholders and is not treated as a separate activity, performed by a separate group.&lt;br /&gt;
&lt;br /&gt;
=== Control changes to software ===&lt;br /&gt;
&lt;br /&gt;
A software system is developed by a number of teams or individuals, using different platforms and at times being in different locations. As a result, it is essential to somehow make sure that all the changes made in the system are synchronized and constantly verified. RUP ensures that all the individuals working in the project are well informed about any changes and everything is in sync. The process describes how to control, track and monitor changes to enable successful iterative development.&lt;br /&gt;
&lt;br /&gt;
== Limitations ==&lt;br /&gt;
&lt;br /&gt;
While being a complete methodology in itself with an emphasis on accurate documentation and quickly resolving project associated risks, RUP comes with a number of limitations.&lt;br /&gt;
&lt;br /&gt;
* In order for team members to start developing software under this methodology, they need to be &#039;&#039;&#039;experts&#039;&#039;&#039; in their respective fields.&lt;br /&gt;
* The development process can easily become too complex to handle.&lt;br /&gt;
* When working with cutting - edge projects that highly utilize new technology, components will not be able to be reused. &lt;br /&gt;
* While in theory integration throughout the process of software development sounds like a good thing, when working with particularly complex projects with multiple development streams, issues and significant confusion may rise during the stages of testing.&lt;br /&gt;
&lt;br /&gt;
== Conclusion ==&lt;br /&gt;
&lt;br /&gt;
The Rational Unified Process, is an exemplary method for addressing and mitigating risks from the very early stages, by rapidly developing an initial version of the system (prototype) that describes its architecture. There are not fixed requirements from the beginning but rather allows refining requirements , while the project progresses. It expects and actually deals with change pretty well while its main focus is the quality of the product and the degree to which it satisfies its end - users, throughout the project life-cycle. However, while being a complete and well documented methodology, it should be stressed that remains a very complex one. In order to increase the likelihood of success, while adopting this methodology, all the project members need to be &#039;&#039;&#039;experts&#039;&#039;&#039; in their respective fields. The method can easily become too difficult to learn and most importantly too difficult to apply.&lt;/div&gt;</summary>
		<author><name>Lessisv</name></author>
	</entry>
	<entry>
		<id>http://13.50.150.85/index.php?title=Rational_Unified_Process_(RUP)&amp;diff=12376</id>
		<title>Rational Unified Process (RUP)</title>
		<link rel="alternate" type="text/html" href="http://13.50.150.85/index.php?title=Rational_Unified_Process_(RUP)&amp;diff=12376"/>
		<updated>2015-09-22T08:05:06Z</updated>

		<summary type="html">&lt;p&gt;Lessisv: /* Conclusion */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The &#039;&#039;&#039;Rational Unified Process (RUP)&#039;&#039;&#039; is an iterative, &#039;&#039;&#039;software development methodology&#039;&#039;&#039;, firstly introduced by the [https://en.wikipedia.org/wiki/Rational_Software Rational Software Corporation] which was [http://www-03.ibm.com/press/us/en/pressrelease/314.wss acquired by IBM] in 2003. RUP is a disciplined approach to assign tasks within a development organization and software project teams. It was developed to ensure the production of &#039;&#039;&#039;high quality software&#039;&#039;&#039; by providing the development team with a set of &#039;&#039;&#039;guidelines, templates and tool mentors&#039;&#039;&#039;, for all the critical life-cycle activities within a project. This cluster of objects, form a knowledge base that is shared between all project team members. As a result, no matter what each member is working with (e.g testing, designing, managing), they all share a common language and view on how to develop software. Consequently, team productivity is boosted, in order to deliver software that can meet and exceed the needs and expectations of end-users, strictly following a predictable budget and schedule. RUP is the most popular and extensively documented refinement of the [https://en.wikipedia.org/wiki/Unified_Process Unified Process], an iterative and incremental software development process framework. Other worth mentioning forms are the [https://en.wikipedia.org/wiki/OpenUP OpenUP] and [https://en.wikipedia.org/wiki/Agile_Unified_Process Agile Unified Process].&lt;br /&gt;
&lt;br /&gt;
== Process Overview ==&lt;br /&gt;
&lt;br /&gt;
[[File:RUP.png|450px|right|thumb| Figure 1. The iterative model graph shows how the process is structured along two dimensions]]&lt;br /&gt;
&lt;br /&gt;
The best possible way to describe the methodology is through a 2 - dimensional graph.&lt;br /&gt;
* The first dimension (horizontal axis) represents the &#039;&#039;&#039;dynamic aspect&#039;&#039;&#039; of the process. It expresses &#039;&#039;&#039;time&#039;&#039;&#039; in terms of &#039;&#039;&#039;phases&#039;&#039;&#039; and &#039;&#039;&#039;iterations&#039;&#039;&#039;. &lt;br /&gt;
* The second dimension (vertical axis) represents the &#039;&#039;&#039;static aspect&#039;&#039;&#039; of the process. It expresses &#039;&#039;&#039;workflows&#039;&#039;&#039; in terms of 6 core and 3 supporting &#039;&#039;&#039;disciplines&#039;&#039;&#039; (more on that on &amp;quot;Disciplines&amp;quot; section).&lt;br /&gt;
&lt;br /&gt;
=== Time Dimension - Phases and Iterations ===&lt;br /&gt;
When developing software, the project team goes through a multi-step process, from establishing a system&#039;s requirements to designing, implementing and finally maintaining the software with new releases. This is the software life cycle. RUP delicately breaks the software life cycle down to four consecutive phases.&lt;br /&gt;
&lt;br /&gt;
* Inception phase&lt;br /&gt;
* Elaboration phase&lt;br /&gt;
* Construction phase&lt;br /&gt;
* Transition phase&lt;br /&gt;
&lt;br /&gt;
Depending on the project, each of these phases can consist of one to a number of &#039;&#039;&#039;iterations&#039;&#039;&#039;. An iteration is defined as a complete development loop, resulting in a new product release. All the phases include a well-defined milestone, in order to be completed. In the end of every phase, the development team can evaluate whether all the key goals have been achieved, all stakeholders have been considered and the actual expenditures correspond with the planned ones.&lt;br /&gt;
&lt;br /&gt;
[[File:RUP_phases.png|550px|right|thumb| Figure 2. The four phases and milestones of a project]]&lt;br /&gt;
==== Inception Phase ====&lt;br /&gt;
The first phase is the inception phase. The focus of this phase, is understanding the scope of the project and studying if is both worth doing and possible to do. All the internal and external entities that the system will interact with are identified and the nature of the interaction is well defined at a high level. For this reason, the inception phase is primarily significant for new development projects. &lt;br /&gt;
The expected outcome of the inception phase includes :&lt;br /&gt;
&lt;br /&gt;
* A vision document: The document states the general vision of the project including its key requirements, features and main constraints.&lt;br /&gt;
* An initial use-case model (10%-20% complete)&lt;br /&gt;
* An initial project glossary&lt;br /&gt;
* An initial business case, including the business context, success criteria and a financial forecast.&lt;br /&gt;
* An initial risk assessment&lt;br /&gt;
* A project plan (phases and iterations)&lt;br /&gt;
* A business model (if necessary)&lt;br /&gt;
* Prototypes&lt;br /&gt;
&lt;br /&gt;
At the end of the inception phase lies the first major project milestone; the &#039;&#039;&#039;Lifecycle Objective Milestone&#039;&#039;&#039;.&lt;br /&gt;
The inception phase has five evaluation criteria:&lt;br /&gt;
&lt;br /&gt;
* Stakeholder concurrence on scope definition and cost/schedule estimates.&lt;br /&gt;
* Depth and breadth of any prototype that was developed.&lt;br /&gt;
* Actual expenditures versus planned ones.&lt;br /&gt;
* Requirements understanding.&lt;br /&gt;
* Credibility of the cost/schedule estimates, risks and priorities.&lt;br /&gt;
&lt;br /&gt;
If for any reason the project fails to pass this milestone, it can either be completely cancelled or re-designed to successfully meet the criteria.&lt;br /&gt;
 &lt;br /&gt;
==== Elaboration Phase ====&lt;br /&gt;
The second phase is the elaboration phase. The focus of this phase, is establishing a baseline to the architecture of the system, further developing the project plan and analyzing the problem domain while trying to mitigate the highest risk elements. In other words, this is the phase where the project starts to take shape. One of the most important characteristics of this phase, is the production of a component-based architectural prototype. The purpose of this prototype is to address the critical use-cases, that were identified in the previous phase, and hopefully expose the highest technical risks of the project. The expected outcome of the elaboration phase includes:&lt;br /&gt;
&lt;br /&gt;
* A use-case model (at least 80% complete) which will be able to identify all the actors and use-cases.&lt;br /&gt;
* Supplementary requirements (if any).&lt;br /&gt;
* A clear description of the software architecture.&lt;br /&gt;
* An architectural prototype.&lt;br /&gt;
* A more detailed risk assessment and business case.&lt;br /&gt;
* A development plan for the overall project.&lt;br /&gt;
* A preliminary user manual (optional).&lt;br /&gt;
&lt;br /&gt;
At the end of the elaboration phase lies the second major project milestone; the &#039;&#039;&#039;Lifecycle Architecture Milestone&#039;&#039;&#039;.&lt;br /&gt;
The elaboration phase has six evaluation criteria:&lt;br /&gt;
&lt;br /&gt;
* Is the vision stable enough?&lt;br /&gt;
* Is the system architecture stable enough?&lt;br /&gt;
* Have all the major risks been successfully identified and resolved?&lt;br /&gt;
* Is the plan for the construction phase accurate enough?&lt;br /&gt;
* Do all the stakeholders share the opinion that the vision can be achieved by executing the current plan?&lt;br /&gt;
* Is the actual vs planned resource expenditure in acceptable levels?&lt;br /&gt;
&lt;br /&gt;
If the project fails to pass the milestone, there is still time to be re-designed or even cancelled. However, when the project moves to the next phase the associated operation risks raise significantly and changes become much more difficult.&lt;br /&gt;
&lt;br /&gt;
==== Construction Phase====&lt;br /&gt;
The third phase is the construction phase. The focus of this phase, is to develop and integrate all the remaining components and application features into the product. In other words this is the phase where the vision is finally translated into a final stable product, which is based on the architecture that was developed during the previous phases. Most emphasize is given to resources, control and process management in order to fully optimize costs, schedules and quality. The existing prototype evolves via a number of iterations into a fully functional product that meets the stakeholders&#039; needs. The construction phase is usually the longest one of the project life cycle. The expected outcome of the construction phase includes:&lt;br /&gt;
&lt;br /&gt;
* First external release of the software.&lt;br /&gt;
* User manuals.&lt;br /&gt;
* A detailed description of the current release.&lt;br /&gt;
&lt;br /&gt;
At the end of the construction phase lies the third major project milestone; the &#039;&#039;&#039;Initial Operation Capability Milestone&#039;&#039;&#039;.&lt;br /&gt;
The construction phase has three evaluation criteria:&lt;br /&gt;
&lt;br /&gt;
* Is the software release stable enough to be given to the user community?&lt;br /&gt;
* Are all the stakeholders ready for the transition to the user community?&lt;br /&gt;
* Is the actual vs planned resource expenditure in acceptable levels?&lt;br /&gt;
&lt;br /&gt;
If the project fails to pass this milestone, transition may have to be postponed by one release.&lt;br /&gt;
&lt;br /&gt;
==== Transition Phase ====&lt;br /&gt;
The fourth and final phase is the transition phase. The focus of this phase is, as the word says, to transition the software product to the user community. It includes ensuring that the product has been developed to an acceptable quality level, by beta testing the software through the end users, and validating it against the stakeholders&#039; expectations. Once the product has been given for beta testing, a number of issues can arise, requiring the development of new releases (fixing bugs) and adding features that may have been postponed. The expected outcome of the transition phase includes:&lt;br /&gt;
&lt;br /&gt;
* Beta-testing to fix any major [https://en.wikipedia.org/wiki/Software_bug software bugs] and add any missing features.&lt;br /&gt;
* Conversion of operational databases&lt;br /&gt;
* Training of end users and maintainers.&lt;br /&gt;
* Marketing and distribution of the product.&lt;br /&gt;
&lt;br /&gt;
At the end of the transition phase lies the fourth and final major project milestone; the &#039;&#039;&#039;Product Release&#039;&#039;&#039;.&lt;br /&gt;
The transition phase has two evaluation criteria:&lt;br /&gt;
&lt;br /&gt;
* Are the end - users satisfied with the product?&lt;br /&gt;
* Is the actual vs planned resource expenditure in acceptable levels?&lt;br /&gt;
&lt;br /&gt;
==== Iterations ====&lt;br /&gt;
As stated before, every phase can consist of a number of iterations, depending on the project size and scope. RUP, in comparison to the traditional [https://en.wikipedia.org/wiki/Waterfall_model waterfall] approach, is heavily based on iterations. This gives a number of advantages and benefits to the project team, with the most important one being mitigating risks much more earlier in the project. Moreover change is more manageable and there is normally a higher level of reuse. Finally, iterations ensure an overall high quality in the final product and that the project team can learn throughout the developing process.&lt;br /&gt;
&lt;br /&gt;
=== Workflow Dimension - Disciplines ===&lt;br /&gt;
&lt;br /&gt;
[[File:activities.png|350px|right|thumb| Figure 4. Individuals, Roles and Activities]]&lt;br /&gt;
[[File:workflows.png|350px|right|thumb| Figure 5. Example of a workflow]]&lt;br /&gt;
&lt;br /&gt;
A process describes &#039;&#039;&#039;who&#039;&#039;&#039; is doing &#039;&#039;&#039;what&#039;&#039;&#039;, &#039;&#039;&#039;how&#039;&#039;&#039; and &#039;&#039;&#039;when&#039;&#039;&#039;. RUP addresses those terms with four modelling elements; &#039;&#039;&#039;Roles&#039;&#039;&#039;, &#039;&#039;&#039;Activities&#039;&#039;&#039;, &#039;&#039;&#039;Artifacts&#039;&#039;&#039; and &#039;&#039;&#039;Workflows&#039;&#039;&#039; respectively. The relationships between the role, activity and artifact is shown in Figure 3. A &#039;&#039;&#039;role&#039;&#039;&#039;, formally addressed as a worker, describes the behavior and responsibilities of an individual or a group of individuals in order to produce an artifact. Throughout the development of a project, a person can play one or a number of roles. Some examples of roles are the system analyst, designer, tester. &#039;&#039;&#039;Activities&#039;&#039;&#039; are expressed through behaviors. An activity, is a job that a person performs through his role, as seen in Figure 4. The length of an activity may vary from a few hours to a number of days. Examples of activities are: Plan an operation - performed by the role of Project Manager or add a missing feature - performed by the role of a software developer. All activities produce a meaningful result, called an artifact. &#039;&#039;&#039;Artifacts&#039;&#039;&#039;, are the responsibilities of ones role or roles and express a piece of information that is produced, modified or even used by a process. They can act both as input or output of an activity. Examples of artifacts are the source code, the business case, the software architecture. The roles perform activities that can produce a sequence of artifacts, called &#039;&#039;&#039;workflows&#039;&#039;&#039;. Examples of workflows can be seen in Figure 5. &lt;br /&gt;
&lt;br /&gt;
RUP identifies nine core process workflows, called &#039;&#039;&#039;disciplines&#039;&#039;&#039;. Every discipline, addresses a set of activities and artifacts, based upon a set of skills that are common in an ICT project. These disciplines have the ability to arrange the activities and artifacts in such a way, to provide an understanding of the overall project from a waterfall perspective.&lt;br /&gt;
&lt;br /&gt;
There are six core &amp;quot;engineering&amp;quot; disciplines:&lt;br /&gt;
* Business Modelling Discipline&lt;br /&gt;
* Requirements Discipline&lt;br /&gt;
* Analysis and Design Discipline&lt;br /&gt;
* Implementation Discipline&lt;br /&gt;
* Test Discipline&lt;br /&gt;
* Deployment Discipline&lt;br /&gt;
&lt;br /&gt;
And three core &amp;quot;supporting&amp;quot; disciplines:&lt;br /&gt;
* Project Management Discipline&lt;br /&gt;
* Configuration and Change Management Discipline&lt;br /&gt;
* Environment Discipline&lt;br /&gt;
&lt;br /&gt;
==== Business Modelling ====&lt;br /&gt;
&lt;br /&gt;
Miscommunication between the software engineering community and the business engineering community is one of the most common problems among most business engineering efforts. This means that the output from software development efforts is not correctly used as input to the business engineering and vice versa. The purpose of the Business Modelling discipline is to provide a common language between the two communities and create a direct coupling between software and business models. All business processes are documented using &amp;quot;use cases&amp;quot;. This assures that all stakeholders share the same understanding of the demanding organization.&lt;br /&gt;
&lt;br /&gt;
==== Requirements ====&lt;br /&gt;
The purpose of the requirements discipline is to describe in detail &#039;&#039;&#039;what&#039;&#039;&#039; the system should do. Based on that, a Vision document is created where required functionality and constraints are documented. Moreover, actors (end users) and use cases (behaviors of the system) are identified. Use cases are described in detail and each description clearly shows how the system interacts with the actors. This way an agreement is established between the customers and the rest of the stakeholders regarding the system&#039;s capabilities, user-interface and the end user&#039;s needs.&lt;br /&gt;
&lt;br /&gt;
==== Analysis and Design ====&lt;br /&gt;
&lt;br /&gt;
The purpose of the Analysis and Design discipline it to investigate &#039;&#039;&#039;how&#039;&#039;&#039; the system requirements will be translated into a detailed implementation plan. The system needs to:&lt;br /&gt;
* Perform exactly as described in the use-case descriptions.&lt;br /&gt;
* Fulfill all requirements.&lt;br /&gt;
* Have a robust structure.&lt;br /&gt;
&lt;br /&gt;
Analysis and Design result in the creation of a &#039;&#039;&#039;design model&#039;&#039;&#039;. The design model is an abstraction of the system&#039;s architecture and acts as a guide of how the source code should be finally written and structured.&lt;br /&gt;
&lt;br /&gt;
==== Implementation ====&lt;br /&gt;
The purpose of the Implementation discipline is to:&lt;br /&gt;
&lt;br /&gt;
* Arrange the code into subsystems, organized in layers.&lt;br /&gt;
* Implement classes and objects in terms of components.&lt;br /&gt;
* Uni-test the developed components to ensure quality.&lt;br /&gt;
* Integrate the results into an executable system.&lt;br /&gt;
&lt;br /&gt;
The whole system can be realized as an implementation of various components. RUP enables the integration of those components, in a revolutionary way, making the system easier to maintain and increasing the possibilities for future re-use.&lt;br /&gt;
&lt;br /&gt;
==== Test ====&lt;br /&gt;
&lt;br /&gt;
In the implementation discipline, all the developed components were uni-tested individually and were integrated into the system. The purpose of the Test discipline is to assess the system as a whole and verify the product quality. It is a mechanism to verify the smooth interaction between the various components, their proper integration into the system and finally ensure that all requirements have been successfully implemented. All tests are carried out along 4 quality dimensions:&lt;br /&gt;
* Functionality.&lt;br /&gt;
* Reliability.&lt;br /&gt;
* Application Performance.&lt;br /&gt;
* System Performance.&lt;br /&gt;
&lt;br /&gt;
==== Deployment ====&lt;br /&gt;
&lt;br /&gt;
The purpose of the Deployment discipline is primarily to develop product releases and distribute the software to the end – users. More specifically the Deployment discipline focuses at:&lt;br /&gt;
&lt;br /&gt;
* Developing external software releases&lt;br /&gt;
* Distributing the software&lt;br /&gt;
* Installing the software&lt;br /&gt;
* Providing help to the end – users&lt;br /&gt;
* Creating an up-to-date user manual&lt;br /&gt;
* Conducting beta testing&lt;br /&gt;
&lt;br /&gt;
==== Project Management ====&lt;br /&gt;
&lt;br /&gt;
The purpose of the Project Management discipline, is to successfully balance competing objectives, manage and mitigate risks and finally handle any constraints on delivering the product. Project management, ideally provides:&lt;br /&gt;
&lt;br /&gt;
* A framework for managing software-intensive projects.&lt;br /&gt;
* A framework to successfully manage risks.&lt;br /&gt;
* A framework to plan, execute and monitor projects.&lt;br /&gt;
&lt;br /&gt;
While the discipline does not guarantee success, the odds of delivering successful software are greatly improved.&lt;br /&gt;
&lt;br /&gt;
==== Configuration and Change Management ====&lt;br /&gt;
&lt;br /&gt;
The purpose of the Configuration and Change Management Discipline is to control, maintain and configure all the various artifacts that are produced by the different actors that are working on a project. During the software development life cycle, artifacts are regularly updated (changed). In order to understand the current state of an artifact, it is very important to keep track of its location and history; what was the reason and who decided to change the artifact. The discipline helps create a framework that keeps track of all the project assets.&lt;br /&gt;
&lt;br /&gt;
==== Environment ====&lt;br /&gt;
&lt;br /&gt;
The purpose of the environment discipline, is to provide the development team with all the processes, tools and methods for supporting all developing activities. It is responsible for producing a Development Kit, able to provide guidelines and templates for customizing processes.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Why RUP - Best Practices ==&lt;br /&gt;
&lt;br /&gt;
RUP captures many of the “best practices” that are currently used in modern software development and more particularly in industry by successful organizations. The practices are:&lt;br /&gt;
&lt;br /&gt;
* Develop Software Iteratively&lt;br /&gt;
* Manage Requirements&lt;br /&gt;
* Use component-based architectures&lt;br /&gt;
* Visually model software&lt;br /&gt;
* Continuously verify software quality&lt;br /&gt;
* Control changes to software&lt;br /&gt;
&lt;br /&gt;
=== Develop Software iteratively ===&lt;br /&gt;
&lt;br /&gt;
Today’s high sophisticated software systems, consist of many and complex structures which make it nearly impossible to define the entire system from the very beginning, develop the entire solution and then test the product in the end. RUP uses an iterative approach that allows an increasing understanding of the problem and developing a step – by – step solution, over multiple iterations. Each iteration ends with an executable release, which enables continuous end - user involvement and feedback. As a result, the risks of the project are mitigated at an early stage and stakeholders are ensured that the project requirements are fulfilled.&lt;br /&gt;
&lt;br /&gt;
=== Manage requirements ===&lt;br /&gt;
&lt;br /&gt;
The requirements of a system include the description of the services that the system is able to provide and its operational constraints. RUP documents, organizes and tracks required functionality and constraints and easily communicates business requirements. The use – cases that are used in the process are an excellent way to ensure that requirements are actually those elements that drive the design, implementation and testing of software, making it more likely that the final system fulfills the stakeholders needs.&lt;br /&gt;
&lt;br /&gt;
=== Use component-based architectures ===&lt;br /&gt;
&lt;br /&gt;
Component-based architecture makes the system dynamic; components are independent from the system and interact with other components through well-defined interfaces. Their in-dependency from the system, gives them a great flexibility meaning that they can easily be added, updated or totally replaced. RUP supports component-based software development by providing a systematic approach to defining an architecture using new and existing components.&lt;br /&gt;
&lt;br /&gt;
=== Visually model software ===&lt;br /&gt;
&lt;br /&gt;
A model is an abstraction of reality that can help better comprehend large and complex systems. Visual abstractions help the development team to easily communicate different aspects of the software and see how all the components fit together. RUP uses the Unified Modelling Language (UML) standard which is a graphical language for visualizing and constructing the artifacts of a software-intensive system.&lt;br /&gt;
&lt;br /&gt;
=== Continuously verify software quality ===&lt;br /&gt;
&lt;br /&gt;
In software development, quality should always be reviewed with respect to the requirements based on reliability, functionality , application and system performance. In RUP, quality verification and assessment is built into the process, inside all activities, including all stakeholders and is not treated as a separate activity, performed by a separate group.&lt;br /&gt;
&lt;br /&gt;
=== Control changes to software ===&lt;br /&gt;
&lt;br /&gt;
A software system is developed by a number of teams or individuals, using different platforms and at times being in different locations. As a result, it is essential to somehow make sure that all the changes made in the system are synchronized and constantly verified. RUP ensures that all the individuals working in the project are well informed about any changes and everything is in sync. The process describes how to control, track and monitor changes to enable successful iterative development.&lt;br /&gt;
&lt;br /&gt;
== Limitations ==&lt;br /&gt;
&lt;br /&gt;
While being a complete methodology in itself with an emphasis on accurate documentation and quickly resolving project associated risks, RUP comes with a number of limitations.&lt;br /&gt;
&lt;br /&gt;
* In order for team members to start developing software under this methodology, they need to be &#039;&#039;&#039;experts&#039;&#039;&#039; in their respective fields.&lt;br /&gt;
* The development process can easily become too complex to handle.&lt;br /&gt;
* When working with cutting - edge projects that highly utilize new technology, components will not be able to be reused. &lt;br /&gt;
* While in theory integration throughout the process of software development sounds like a good thing, when working with particularly complex projects with multiple development streams, issues and significant confusion may rise during the stages of testing.&lt;br /&gt;
&lt;br /&gt;
== Conclusion ==&lt;br /&gt;
&lt;br /&gt;
The Rational Unified Process, is an exemplary method for addressing and mitigating risks from the very early stages, by rapidly developing an initial version of the system (prototype) that describes its architecture. There are not fixed requirements from the beginning but rather allows refining requirements , while the project progresses. It expects and actually deals with change pretty well while its main focus is the quality of the product and the degree to which it satisfies its end - users, throughout the project life-cycle. However, while being a complete and well documented methodology, it should be stressed that remains a very complex one. In order to increase the likelihood of success, while adopting this methodology, all the project members need to be &#039;&#039;&#039;experts&#039;&#039;&#039; in their respective fields. The method can easily become too difficult to learn and most importantly too difficult to apply.&lt;/div&gt;</summary>
		<author><name>Lessisv</name></author>
	</entry>
	<entry>
		<id>http://13.50.150.85/index.php?title=Rational_Unified_Process_(RUP)&amp;diff=12367</id>
		<title>Rational Unified Process (RUP)</title>
		<link rel="alternate" type="text/html" href="http://13.50.150.85/index.php?title=Rational_Unified_Process_(RUP)&amp;diff=12367"/>
		<updated>2015-09-22T07:52:21Z</updated>

		<summary type="html">&lt;p&gt;Lessisv: /* Limitations */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The &#039;&#039;&#039;Rational Unified Process (RUP)&#039;&#039;&#039; is an iterative, &#039;&#039;&#039;software development methodology&#039;&#039;&#039;, firstly introduced by the [https://en.wikipedia.org/wiki/Rational_Software Rational Software Corporation] which was [http://www-03.ibm.com/press/us/en/pressrelease/314.wss acquired by IBM] in 2003. RUP is a disciplined approach to assign tasks within a development organization and software project teams. It was developed to ensure the production of &#039;&#039;&#039;high quality software&#039;&#039;&#039; by providing the development team with a set of &#039;&#039;&#039;guidelines, templates and tool mentors&#039;&#039;&#039;, for all the critical life-cycle activities within a project. This cluster of objects, form a knowledge base that is shared between all project team members. As a result, no matter what each member is working with (e.g testing, designing, managing), they all share a common language and view on how to develop software. Consequently, team productivity is boosted, in order to deliver software that can meet and exceed the needs and expectations of end-users, strictly following a predictable budget and schedule. RUP is the most popular and extensively documented refinement of the [https://en.wikipedia.org/wiki/Unified_Process Unified Process], an iterative and incremental software development process framework. Other worth mentioning forms are the [https://en.wikipedia.org/wiki/OpenUP OpenUP] and [https://en.wikipedia.org/wiki/Agile_Unified_Process Agile Unified Process].&lt;br /&gt;
&lt;br /&gt;
== Process Overview ==&lt;br /&gt;
&lt;br /&gt;
[[File:RUP.png|450px|right|thumb| Figure 1. The iterative model graph shows how the process is structured along two dimensions]]&lt;br /&gt;
&lt;br /&gt;
The best possible way to describe the methodology is through a 2 - dimensional graph.&lt;br /&gt;
* The first dimension (horizontal axis) represents the &#039;&#039;&#039;dynamic aspect&#039;&#039;&#039; of the process. It expresses &#039;&#039;&#039;time&#039;&#039;&#039; in terms of &#039;&#039;&#039;phases&#039;&#039;&#039; and &#039;&#039;&#039;iterations&#039;&#039;&#039;. &lt;br /&gt;
* The second dimension (vertical axis) represents the &#039;&#039;&#039;static aspect&#039;&#039;&#039; of the process. It expresses &#039;&#039;&#039;workflows&#039;&#039;&#039; in terms of 6 core and 3 supporting &#039;&#039;&#039;disciplines&#039;&#039;&#039; (more on that on &amp;quot;Disciplines&amp;quot; section).&lt;br /&gt;
&lt;br /&gt;
=== Time Dimension - Phases and Iterations ===&lt;br /&gt;
When developing software, the project team goes through a multi-step process, from establishing a system&#039;s requirements to designing, implementing and finally maintaining the software with new releases. This is the software life cycle. RUP delicately breaks the software life cycle down to four consecutive phases.&lt;br /&gt;
&lt;br /&gt;
* Inception phase&lt;br /&gt;
* Elaboration phase&lt;br /&gt;
* Construction phase&lt;br /&gt;
* Transition phase&lt;br /&gt;
&lt;br /&gt;
Depending on the project, each of these phases can consist of one to a number of &#039;&#039;&#039;iterations&#039;&#039;&#039;. An iteration is defined as a complete development loop, resulting in a new product release. All the phases include a well-defined milestone, in order to be completed. In the end of every phase, the development team can evaluate whether all the key goals have been achieved, all stakeholders have been considered and the actual expenditures correspond with the planned ones.&lt;br /&gt;
&lt;br /&gt;
[[File:RUP_phases.png|550px|right|thumb| Figure 2. The four phases and milestones of a project]]&lt;br /&gt;
==== Inception Phase ====&lt;br /&gt;
The first phase is the inception phase. The focus of this phase, is understanding the scope of the project and studying if is both worth doing and possible to do. All the internal and external entities that the system will interact with are identified and the nature of the interaction is well defined at a high level. For this reason, the inception phase is primarily significant for new development projects. &lt;br /&gt;
The expected outcome of the inception phase includes :&lt;br /&gt;
&lt;br /&gt;
* A vision document: The document states the general vision of the project including its key requirements, features and main constraints.&lt;br /&gt;
* An initial use-case model (10%-20% complete)&lt;br /&gt;
* An initial project glossary&lt;br /&gt;
* An initial business case, including the business context, success criteria and a financial forecast.&lt;br /&gt;
* An initial risk assessment&lt;br /&gt;
* A project plan (phases and iterations)&lt;br /&gt;
* A business model (if necessary)&lt;br /&gt;
* Prototypes&lt;br /&gt;
&lt;br /&gt;
At the end of the inception phase lies the first major project milestone; the &#039;&#039;&#039;Lifecycle Objective Milestone&#039;&#039;&#039;.&lt;br /&gt;
The inception phase has five evaluation criteria:&lt;br /&gt;
&lt;br /&gt;
* Stakeholder concurrence on scope definition and cost/schedule estimates.&lt;br /&gt;
* Depth and breadth of any prototype that was developed.&lt;br /&gt;
* Actual expenditures versus planned ones.&lt;br /&gt;
* Requirements understanding.&lt;br /&gt;
* Credibility of the cost/schedule estimates, risks and priorities.&lt;br /&gt;
&lt;br /&gt;
If for any reason the project fails to pass this milestone, it can either be completely cancelled or re-designed to successfully meet the criteria.&lt;br /&gt;
 &lt;br /&gt;
==== Elaboration Phase ====&lt;br /&gt;
The second phase is the elaboration phase. The focus of this phase, is establishing a baseline to the architecture of the system, further developing the project plan and analyzing the problem domain while trying to mitigate the highest risk elements. In other words, this is the phase where the project starts to take shape. One of the most important characteristics of this phase, is the production of a component-based architectural prototype. The purpose of this prototype is to address the critical use-cases, that were identified in the previous phase, and hopefully expose the highest technical risks of the project. The expected outcome of the elaboration phase includes:&lt;br /&gt;
&lt;br /&gt;
* A use-case model (at least 80% complete) which will be able to identify all the actors and use-cases.&lt;br /&gt;
* Supplementary requirements (if any).&lt;br /&gt;
* A clear description of the software architecture.&lt;br /&gt;
* An architectural prototype.&lt;br /&gt;
* A more detailed risk assessment and business case.&lt;br /&gt;
* A development plan for the overall project.&lt;br /&gt;
* A preliminary user manual (optional).&lt;br /&gt;
&lt;br /&gt;
At the end of the elaboration phase lies the second major project milestone; the &#039;&#039;&#039;Lifecycle Architecture Milestone&#039;&#039;&#039;.&lt;br /&gt;
The elaboration phase has six evaluation criteria:&lt;br /&gt;
&lt;br /&gt;
* Is the vision stable enough?&lt;br /&gt;
* Is the system architecture stable enough?&lt;br /&gt;
* Have all the major risks been successfully identified and resolved?&lt;br /&gt;
* Is the plan for the construction phase accurate enough?&lt;br /&gt;
* Do all the stakeholders share the opinion that the vision can be achieved by executing the current plan?&lt;br /&gt;
* Is the actual vs planned resource expenditure in acceptable levels?&lt;br /&gt;
&lt;br /&gt;
If the project fails to pass the milestone, there is still time to be re-designed or even cancelled. However, when the project moves to the next phase the associated operation risks raise significantly and changes become much more difficult.&lt;br /&gt;
&lt;br /&gt;
==== Construction Phase====&lt;br /&gt;
The third phase is the construction phase. The focus of this phase, is to develop and integrate all the remaining components and application features into the product. In other words this is the phase where the vision is finally translated into a final stable product, which is based on the architecture that was developed during the previous phases. Most emphasize is given to resources, control and process management in order to fully optimize costs, schedules and quality. The existing prototype evolves via a number of iterations into a fully functional product that meets the stakeholders&#039; needs. The construction phase is usually the longest one of the project life cycle. The expected outcome of the construction phase includes:&lt;br /&gt;
&lt;br /&gt;
* First external release of the software.&lt;br /&gt;
* User manuals.&lt;br /&gt;
* A detailed description of the current release.&lt;br /&gt;
&lt;br /&gt;
At the end of the construction phase lies the third major project milestone; the &#039;&#039;&#039;Initial Operation Capability Milestone&#039;&#039;&#039;.&lt;br /&gt;
The construction phase has three evaluation criteria:&lt;br /&gt;
&lt;br /&gt;
* Is the software release stable enough to be given to the user community?&lt;br /&gt;
* Are all the stakeholders ready for the transition to the user community?&lt;br /&gt;
* Is the actual vs planned resource expenditure in acceptable levels?&lt;br /&gt;
&lt;br /&gt;
If the project fails to pass this milestone, transition may have to be postponed by one release.&lt;br /&gt;
&lt;br /&gt;
==== Transition Phase ====&lt;br /&gt;
The fourth and final phase is the transition phase. The focus of this phase is, as the word says, to transition the software product to the user community. It includes ensuring that the product has been developed to an acceptable quality level, by beta testing the software through the end users, and validating it against the stakeholders&#039; expectations. Once the product has been given for beta testing, a number of issues can arise, requiring the development of new releases (fixing bugs) and adding features that may have been postponed. The expected outcome of the transition phase includes:&lt;br /&gt;
&lt;br /&gt;
* Beta-testing to fix any major [https://en.wikipedia.org/wiki/Software_bug software bugs] and add any missing features.&lt;br /&gt;
* Conversion of operational databases&lt;br /&gt;
* Training of end users and maintainers.&lt;br /&gt;
* Marketing and distribution of the product.&lt;br /&gt;
&lt;br /&gt;
At the end of the transition phase lies the fourth and final major project milestone; the &#039;&#039;&#039;Product Release&#039;&#039;&#039;.&lt;br /&gt;
The transition phase has two evaluation criteria:&lt;br /&gt;
&lt;br /&gt;
* Are the end - users satisfied with the product?&lt;br /&gt;
* Is the actual vs planned resource expenditure in acceptable levels?&lt;br /&gt;
&lt;br /&gt;
==== Iterations ====&lt;br /&gt;
As stated before, every phase can consist of a number of iterations, depending on the project size and scope. RUP, in comparison to the traditional [https://en.wikipedia.org/wiki/Waterfall_model waterfall] approach, is heavily based on iterations. This gives a number of advantages and benefits to the project team, with the most important one being mitigating risks much more earlier in the project. Moreover change is more manageable and there is normally a higher level of reuse. Finally, iterations ensure an overall high quality in the final product and that the project team can learn throughout the developing process.&lt;br /&gt;
&lt;br /&gt;
=== Workflow Dimension - Disciplines ===&lt;br /&gt;
&lt;br /&gt;
[[File:activities.png|350px|right|thumb| Figure 4. Individuals, Roles and Activities]]&lt;br /&gt;
[[File:workflows.png|350px|right|thumb| Figure 5. Example of a workflow]]&lt;br /&gt;
&lt;br /&gt;
A process describes &#039;&#039;&#039;who&#039;&#039;&#039; is doing &#039;&#039;&#039;what&#039;&#039;&#039;, &#039;&#039;&#039;how&#039;&#039;&#039; and &#039;&#039;&#039;when&#039;&#039;&#039;. RUP addresses those terms with four modelling elements; &#039;&#039;&#039;Roles&#039;&#039;&#039;, &#039;&#039;&#039;Activities&#039;&#039;&#039;, &#039;&#039;&#039;Artifacts&#039;&#039;&#039; and &#039;&#039;&#039;Workflows&#039;&#039;&#039; respectively. The relationships between the role, activity and artifact is shown in Figure 3. A &#039;&#039;&#039;role&#039;&#039;&#039;, formally addressed as a worker, describes the behavior and responsibilities of an individual or a group of individuals in order to produce an artifact. Throughout the development of a project, a person can play one or a number of roles. Some examples of roles are the system analyst, designer, tester. &#039;&#039;&#039;Activities&#039;&#039;&#039; are expressed through behaviors. An activity, is a job that a person performs through his role, as seen in Figure 4. The length of an activity may vary from a few hours to a number of days. Examples of activities are: Plan an operation - performed by the role of Project Manager or add a missing feature - performed by the role of a software developer. All activities produce a meaningful result, called an artifact. &#039;&#039;&#039;Artifacts&#039;&#039;&#039;, are the responsibilities of ones role or roles and express a piece of information that is produced, modified or even used by a process. They can act both as input or output of an activity. Examples of artifacts are the source code, the business case, the software architecture. The roles perform activities that can produce a sequence of artifacts, called &#039;&#039;&#039;workflows&#039;&#039;&#039;. Examples of workflows can be seen in Figure 5. &lt;br /&gt;
&lt;br /&gt;
RUP identifies nine core process workflows, called &#039;&#039;&#039;disciplines&#039;&#039;&#039;. Every discipline, addresses a set of activities and artifacts, based upon a set of skills that are common in an ICT project. These disciplines have the ability to arrange the activities and artifacts in such a way, to provide an understanding of the overall project from a waterfall perspective.&lt;br /&gt;
&lt;br /&gt;
There are six core &amp;quot;engineering&amp;quot; disciplines:&lt;br /&gt;
* Business Modelling Discipline&lt;br /&gt;
* Requirements Discipline&lt;br /&gt;
* Analysis and Design Discipline&lt;br /&gt;
* Implementation Discipline&lt;br /&gt;
* Test Discipline&lt;br /&gt;
* Deployment Discipline&lt;br /&gt;
&lt;br /&gt;
And three core &amp;quot;supporting&amp;quot; disciplines:&lt;br /&gt;
* Project Management Discipline&lt;br /&gt;
* Configuration and Change Management Discipline&lt;br /&gt;
* Environment Discipline&lt;br /&gt;
&lt;br /&gt;
==== Business Modelling ====&lt;br /&gt;
&lt;br /&gt;
Miscommunication between the software engineering community and the business engineering community is one of the most common problems among most business engineering efforts. This means that the output from software development efforts is not correctly used as input to the business engineering and vice versa. The purpose of the Business Modelling discipline is to provide a common language between the two communities and create a direct coupling between software and business models. All business processes are documented using &amp;quot;use cases&amp;quot;. This assures that all stakeholders share the same understanding of the demanding organization.&lt;br /&gt;
&lt;br /&gt;
==== Requirements ====&lt;br /&gt;
The purpose of the requirements discipline is to describe in detail &#039;&#039;&#039;what&#039;&#039;&#039; the system should do. Based on that, a Vision document is created where required functionality and constraints are documented. Moreover, actors (end users) and use cases (behaviors of the system) are identified. Use cases are described in detail and each description clearly shows how the system interacts with the actors. This way an agreement is established between the customers and the rest of the stakeholders regarding the system&#039;s capabilities, user-interface and the end user&#039;s needs.&lt;br /&gt;
&lt;br /&gt;
==== Analysis and Design ====&lt;br /&gt;
&lt;br /&gt;
The purpose of the Analysis and Design discipline it to investigate &#039;&#039;&#039;how&#039;&#039;&#039; the system requirements will be translated into a detailed implementation plan. The system needs to:&lt;br /&gt;
* Perform exactly as described in the use-case descriptions.&lt;br /&gt;
* Fulfill all requirements.&lt;br /&gt;
* Have a robust structure.&lt;br /&gt;
&lt;br /&gt;
Analysis and Design result in the creation of a &#039;&#039;&#039;design model&#039;&#039;&#039;. The design model is an abstraction of the system&#039;s architecture and acts as a guide of how the source code should be finally written and structured.&lt;br /&gt;
&lt;br /&gt;
==== Implementation ====&lt;br /&gt;
The purpose of the Implementation discipline is to:&lt;br /&gt;
&lt;br /&gt;
* Arrange the code into subsystems, organized in layers.&lt;br /&gt;
* Implement classes and objects in terms of components.&lt;br /&gt;
* Uni-test the developed components to ensure quality.&lt;br /&gt;
* Integrate the results into an executable system.&lt;br /&gt;
&lt;br /&gt;
The whole system can be realized as an implementation of various components. RUP enables the integration of those components, in a revolutionary way, making the system easier to maintain and increasing the possibilities for future re-use.&lt;br /&gt;
&lt;br /&gt;
==== Test ====&lt;br /&gt;
&lt;br /&gt;
In the implementation discipline, all the developed components were uni-tested individually and were integrated into the system. The purpose of the Test discipline is to assess the system as a whole and verify the product quality. It is a mechanism to verify the smooth interaction between the various components, their proper integration into the system and finally ensure that all requirements have been successfully implemented. All tests are carried out along 4 quality dimensions:&lt;br /&gt;
* Functionality.&lt;br /&gt;
* Reliability.&lt;br /&gt;
* Application Performance.&lt;br /&gt;
* System Performance.&lt;br /&gt;
&lt;br /&gt;
==== Deployment ====&lt;br /&gt;
&lt;br /&gt;
The purpose of the Deployment discipline is primarily to develop product releases and distribute the software to the end – users. More specifically the Deployment discipline focuses at:&lt;br /&gt;
&lt;br /&gt;
* Developing external software releases&lt;br /&gt;
* Distributing the software&lt;br /&gt;
* Installing the software&lt;br /&gt;
* Providing help to the end – users&lt;br /&gt;
* Creating an up-to-date user manual&lt;br /&gt;
* Conducting beta testing&lt;br /&gt;
&lt;br /&gt;
==== Project Management ====&lt;br /&gt;
&lt;br /&gt;
The purpose of the Project Management discipline, is to successfully balance competing objectives, manage and mitigate risks and finally handle any constraints on delivering the product. Project management, ideally provides:&lt;br /&gt;
&lt;br /&gt;
* A framework for managing software-intensive projects.&lt;br /&gt;
* A framework to successfully manage risks.&lt;br /&gt;
* A framework to plan, execute and monitor projects.&lt;br /&gt;
&lt;br /&gt;
While the discipline does not guarantee success, the odds of delivering successful software are greatly improved.&lt;br /&gt;
&lt;br /&gt;
==== Configuration and Change Management ====&lt;br /&gt;
&lt;br /&gt;
The purpose of the Configuration and Change Management Discipline is to control, maintain and configure all the various artifacts that are produced by the different actors that are working on a project. During the software development life cycle, artifacts are regularly updated (changed). In order to understand the current state of an artifact, it is very important to keep track of its location and history; what was the reason and who decided to change the artifact. The discipline helps create a framework that keeps track of all the project assets.&lt;br /&gt;
&lt;br /&gt;
==== Environment ====&lt;br /&gt;
&lt;br /&gt;
The purpose of the environment discipline, is to provide the development team with all the processes, tools and methods for supporting all developing activities. It is responsible for producing a Development Kit, able to provide guidelines and templates for customizing processes.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Why RUP - Best Practices ==&lt;br /&gt;
&lt;br /&gt;
RUP captures many of the “best practices” that are currently used in modern software development and more particularly in industry by successful organizations. The practices are:&lt;br /&gt;
&lt;br /&gt;
* Develop Software Iteratively&lt;br /&gt;
* Manage Requirements&lt;br /&gt;
* Use component-based architectures&lt;br /&gt;
* Visually model software&lt;br /&gt;
* Continuously verify software quality&lt;br /&gt;
* Control changes to software&lt;br /&gt;
&lt;br /&gt;
=== Develop Software iteratively ===&lt;br /&gt;
&lt;br /&gt;
Today’s high sophisticated software systems, consist of many and complex structures which make it nearly impossible to define the entire system from the very beginning, develop the entire solution and then test the product in the end. RUP uses an iterative approach that allows an increasing understanding of the problem and developing a step – by – step solution, over multiple iterations. Each iteration ends with an executable release, which enables continuous end - user involvement and feedback. As a result, the risks of the project are mitigated at an early stage and stakeholders are ensured that the project requirements are fulfilled.&lt;br /&gt;
&lt;br /&gt;
=== Manage requirements ===&lt;br /&gt;
&lt;br /&gt;
The requirements of a system include the description of the services that the system is able to provide and its operational constraints. RUP documents, organizes and tracks required functionality and constraints and easily communicates business requirements. The use – cases that are used in the process are an excellent way to ensure that requirements are actually those elements that drive the design, implementation and testing of software, making it more likely that the final system fulfills the stakeholders needs.&lt;br /&gt;
&lt;br /&gt;
=== Use component-based architectures ===&lt;br /&gt;
&lt;br /&gt;
Component-based architecture makes the system dynamic; components are independent from the system and interact with other components through well-defined interfaces. Their in-dependency from the system, gives them a great flexibility meaning that they can easily be added, updated or totally replaced. RUP supports component-based software development by providing a systematic approach to defining an architecture using new and existing components.&lt;br /&gt;
&lt;br /&gt;
=== Visually model software ===&lt;br /&gt;
&lt;br /&gt;
A model is an abstraction of reality that can help better comprehend large and complex systems. Visual abstractions help the development team to easily communicate different aspects of the software and see how all the components fit together. RUP uses the Unified Modelling Language (UML) standard which is a graphical language for visualizing and constructing the artifacts of a software-intensive system.&lt;br /&gt;
&lt;br /&gt;
=== Continuously verify software quality ===&lt;br /&gt;
&lt;br /&gt;
In software development, quality should always be reviewed with respect to the requirements based on reliability, functionality , application and system performance. In RUP, quality verification and assessment is built into the process, inside all activities, including all stakeholders and is not treated as a separate activity, performed by a separate group.&lt;br /&gt;
&lt;br /&gt;
=== Control changes to software ===&lt;br /&gt;
&lt;br /&gt;
A software system is developed by a number of teams or individuals, using different platforms and at times being in different locations. As a result, it is essential to somehow make sure that all the changes made in the system are synchronized and constantly verified. RUP ensures that all the individuals working in the project are well informed about any changes and everything is in sync. The process describes how to control, track and monitor changes to enable successful iterative development.&lt;br /&gt;
&lt;br /&gt;
== Limitations ==&lt;br /&gt;
&lt;br /&gt;
While being a complete methodology in itself with an emphasis on accurate documentation and quickly resolving project associated risks, RUP comes with a number of limitations.&lt;br /&gt;
&lt;br /&gt;
* In order for team members to start developing software under this methodology, they need to be &#039;&#039;&#039;experts&#039;&#039;&#039; in their respective fields.&lt;br /&gt;
* The development process can easily become too complex to handle.&lt;br /&gt;
* When working with cutting - edge projects that highly utilize new technology, components will not be able to be reused. &lt;br /&gt;
* While in theory integration throughout the process of software development sounds like a good thing, when working with particularly complex projects with multiple development streams, issues and significant confusion may rise during the stages of testing.&lt;br /&gt;
&lt;br /&gt;
== Conclusion ==&lt;/div&gt;</summary>
		<author><name>Lessisv</name></author>
	</entry>
	<entry>
		<id>http://13.50.150.85/index.php?title=Rational_Unified_Process_(RUP)&amp;diff=12366</id>
		<title>Rational Unified Process (RUP)</title>
		<link rel="alternate" type="text/html" href="http://13.50.150.85/index.php?title=Rational_Unified_Process_(RUP)&amp;diff=12366"/>
		<updated>2015-09-22T07:51:46Z</updated>

		<summary type="html">&lt;p&gt;Lessisv: /* Limitations */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The &#039;&#039;&#039;Rational Unified Process (RUP)&#039;&#039;&#039; is an iterative, &#039;&#039;&#039;software development methodology&#039;&#039;&#039;, firstly introduced by the [https://en.wikipedia.org/wiki/Rational_Software Rational Software Corporation] which was [http://www-03.ibm.com/press/us/en/pressrelease/314.wss acquired by IBM] in 2003. RUP is a disciplined approach to assign tasks within a development organization and software project teams. It was developed to ensure the production of &#039;&#039;&#039;high quality software&#039;&#039;&#039; by providing the development team with a set of &#039;&#039;&#039;guidelines, templates and tool mentors&#039;&#039;&#039;, for all the critical life-cycle activities within a project. This cluster of objects, form a knowledge base that is shared between all project team members. As a result, no matter what each member is working with (e.g testing, designing, managing), they all share a common language and view on how to develop software. Consequently, team productivity is boosted, in order to deliver software that can meet and exceed the needs and expectations of end-users, strictly following a predictable budget and schedule. RUP is the most popular and extensively documented refinement of the [https://en.wikipedia.org/wiki/Unified_Process Unified Process], an iterative and incremental software development process framework. Other worth mentioning forms are the [https://en.wikipedia.org/wiki/OpenUP OpenUP] and [https://en.wikipedia.org/wiki/Agile_Unified_Process Agile Unified Process].&lt;br /&gt;
&lt;br /&gt;
== Process Overview ==&lt;br /&gt;
&lt;br /&gt;
[[File:RUP.png|450px|right|thumb| Figure 1. The iterative model graph shows how the process is structured along two dimensions]]&lt;br /&gt;
&lt;br /&gt;
The best possible way to describe the methodology is through a 2 - dimensional graph.&lt;br /&gt;
* The first dimension (horizontal axis) represents the &#039;&#039;&#039;dynamic aspect&#039;&#039;&#039; of the process. It expresses &#039;&#039;&#039;time&#039;&#039;&#039; in terms of &#039;&#039;&#039;phases&#039;&#039;&#039; and &#039;&#039;&#039;iterations&#039;&#039;&#039;. &lt;br /&gt;
* The second dimension (vertical axis) represents the &#039;&#039;&#039;static aspect&#039;&#039;&#039; of the process. It expresses &#039;&#039;&#039;workflows&#039;&#039;&#039; in terms of 6 core and 3 supporting &#039;&#039;&#039;disciplines&#039;&#039;&#039; (more on that on &amp;quot;Disciplines&amp;quot; section).&lt;br /&gt;
&lt;br /&gt;
=== Time Dimension - Phases and Iterations ===&lt;br /&gt;
When developing software, the project team goes through a multi-step process, from establishing a system&#039;s requirements to designing, implementing and finally maintaining the software with new releases. This is the software life cycle. RUP delicately breaks the software life cycle down to four consecutive phases.&lt;br /&gt;
&lt;br /&gt;
* Inception phase&lt;br /&gt;
* Elaboration phase&lt;br /&gt;
* Construction phase&lt;br /&gt;
* Transition phase&lt;br /&gt;
&lt;br /&gt;
Depending on the project, each of these phases can consist of one to a number of &#039;&#039;&#039;iterations&#039;&#039;&#039;. An iteration is defined as a complete development loop, resulting in a new product release. All the phases include a well-defined milestone, in order to be completed. In the end of every phase, the development team can evaluate whether all the key goals have been achieved, all stakeholders have been considered and the actual expenditures correspond with the planned ones.&lt;br /&gt;
&lt;br /&gt;
[[File:RUP_phases.png|550px|right|thumb| Figure 2. The four phases and milestones of a project]]&lt;br /&gt;
==== Inception Phase ====&lt;br /&gt;
The first phase is the inception phase. The focus of this phase, is understanding the scope of the project and studying if is both worth doing and possible to do. All the internal and external entities that the system will interact with are identified and the nature of the interaction is well defined at a high level. For this reason, the inception phase is primarily significant for new development projects. &lt;br /&gt;
The expected outcome of the inception phase includes :&lt;br /&gt;
&lt;br /&gt;
* A vision document: The document states the general vision of the project including its key requirements, features and main constraints.&lt;br /&gt;
* An initial use-case model (10%-20% complete)&lt;br /&gt;
* An initial project glossary&lt;br /&gt;
* An initial business case, including the business context, success criteria and a financial forecast.&lt;br /&gt;
* An initial risk assessment&lt;br /&gt;
* A project plan (phases and iterations)&lt;br /&gt;
* A business model (if necessary)&lt;br /&gt;
* Prototypes&lt;br /&gt;
&lt;br /&gt;
At the end of the inception phase lies the first major project milestone; the &#039;&#039;&#039;Lifecycle Objective Milestone&#039;&#039;&#039;.&lt;br /&gt;
The inception phase has five evaluation criteria:&lt;br /&gt;
&lt;br /&gt;
* Stakeholder concurrence on scope definition and cost/schedule estimates.&lt;br /&gt;
* Depth and breadth of any prototype that was developed.&lt;br /&gt;
* Actual expenditures versus planned ones.&lt;br /&gt;
* Requirements understanding.&lt;br /&gt;
* Credibility of the cost/schedule estimates, risks and priorities.&lt;br /&gt;
&lt;br /&gt;
If for any reason the project fails to pass this milestone, it can either be completely cancelled or re-designed to successfully meet the criteria.&lt;br /&gt;
 &lt;br /&gt;
==== Elaboration Phase ====&lt;br /&gt;
The second phase is the elaboration phase. The focus of this phase, is establishing a baseline to the architecture of the system, further developing the project plan and analyzing the problem domain while trying to mitigate the highest risk elements. In other words, this is the phase where the project starts to take shape. One of the most important characteristics of this phase, is the production of a component-based architectural prototype. The purpose of this prototype is to address the critical use-cases, that were identified in the previous phase, and hopefully expose the highest technical risks of the project. The expected outcome of the elaboration phase includes:&lt;br /&gt;
&lt;br /&gt;
* A use-case model (at least 80% complete) which will be able to identify all the actors and use-cases.&lt;br /&gt;
* Supplementary requirements (if any).&lt;br /&gt;
* A clear description of the software architecture.&lt;br /&gt;
* An architectural prototype.&lt;br /&gt;
* A more detailed risk assessment and business case.&lt;br /&gt;
* A development plan for the overall project.&lt;br /&gt;
* A preliminary user manual (optional).&lt;br /&gt;
&lt;br /&gt;
At the end of the elaboration phase lies the second major project milestone; the &#039;&#039;&#039;Lifecycle Architecture Milestone&#039;&#039;&#039;.&lt;br /&gt;
The elaboration phase has six evaluation criteria:&lt;br /&gt;
&lt;br /&gt;
* Is the vision stable enough?&lt;br /&gt;
* Is the system architecture stable enough?&lt;br /&gt;
* Have all the major risks been successfully identified and resolved?&lt;br /&gt;
* Is the plan for the construction phase accurate enough?&lt;br /&gt;
* Do all the stakeholders share the opinion that the vision can be achieved by executing the current plan?&lt;br /&gt;
* Is the actual vs planned resource expenditure in acceptable levels?&lt;br /&gt;
&lt;br /&gt;
If the project fails to pass the milestone, there is still time to be re-designed or even cancelled. However, when the project moves to the next phase the associated operation risks raise significantly and changes become much more difficult.&lt;br /&gt;
&lt;br /&gt;
==== Construction Phase====&lt;br /&gt;
The third phase is the construction phase. The focus of this phase, is to develop and integrate all the remaining components and application features into the product. In other words this is the phase where the vision is finally translated into a final stable product, which is based on the architecture that was developed during the previous phases. Most emphasize is given to resources, control and process management in order to fully optimize costs, schedules and quality. The existing prototype evolves via a number of iterations into a fully functional product that meets the stakeholders&#039; needs. The construction phase is usually the longest one of the project life cycle. The expected outcome of the construction phase includes:&lt;br /&gt;
&lt;br /&gt;
* First external release of the software.&lt;br /&gt;
* User manuals.&lt;br /&gt;
* A detailed description of the current release.&lt;br /&gt;
&lt;br /&gt;
At the end of the construction phase lies the third major project milestone; the &#039;&#039;&#039;Initial Operation Capability Milestone&#039;&#039;&#039;.&lt;br /&gt;
The construction phase has three evaluation criteria:&lt;br /&gt;
&lt;br /&gt;
* Is the software release stable enough to be given to the user community?&lt;br /&gt;
* Are all the stakeholders ready for the transition to the user community?&lt;br /&gt;
* Is the actual vs planned resource expenditure in acceptable levels?&lt;br /&gt;
&lt;br /&gt;
If the project fails to pass this milestone, transition may have to be postponed by one release.&lt;br /&gt;
&lt;br /&gt;
==== Transition Phase ====&lt;br /&gt;
The fourth and final phase is the transition phase. The focus of this phase is, as the word says, to transition the software product to the user community. It includes ensuring that the product has been developed to an acceptable quality level, by beta testing the software through the end users, and validating it against the stakeholders&#039; expectations. Once the product has been given for beta testing, a number of issues can arise, requiring the development of new releases (fixing bugs) and adding features that may have been postponed. The expected outcome of the transition phase includes:&lt;br /&gt;
&lt;br /&gt;
* Beta-testing to fix any major [https://en.wikipedia.org/wiki/Software_bug software bugs] and add any missing features.&lt;br /&gt;
* Conversion of operational databases&lt;br /&gt;
* Training of end users and maintainers.&lt;br /&gt;
* Marketing and distribution of the product.&lt;br /&gt;
&lt;br /&gt;
At the end of the transition phase lies the fourth and final major project milestone; the &#039;&#039;&#039;Product Release&#039;&#039;&#039;.&lt;br /&gt;
The transition phase has two evaluation criteria:&lt;br /&gt;
&lt;br /&gt;
* Are the end - users satisfied with the product?&lt;br /&gt;
* Is the actual vs planned resource expenditure in acceptable levels?&lt;br /&gt;
&lt;br /&gt;
==== Iterations ====&lt;br /&gt;
As stated before, every phase can consist of a number of iterations, depending on the project size and scope. RUP, in comparison to the traditional [https://en.wikipedia.org/wiki/Waterfall_model waterfall] approach, is heavily based on iterations. This gives a number of advantages and benefits to the project team, with the most important one being mitigating risks much more earlier in the project. Moreover change is more manageable and there is normally a higher level of reuse. Finally, iterations ensure an overall high quality in the final product and that the project team can learn throughout the developing process.&lt;br /&gt;
&lt;br /&gt;
=== Workflow Dimension - Disciplines ===&lt;br /&gt;
&lt;br /&gt;
[[File:activities.png|350px|right|thumb| Figure 4. Individuals, Roles and Activities]]&lt;br /&gt;
[[File:workflows.png|350px|right|thumb| Figure 5. Example of a workflow]]&lt;br /&gt;
&lt;br /&gt;
A process describes &#039;&#039;&#039;who&#039;&#039;&#039; is doing &#039;&#039;&#039;what&#039;&#039;&#039;, &#039;&#039;&#039;how&#039;&#039;&#039; and &#039;&#039;&#039;when&#039;&#039;&#039;. RUP addresses those terms with four modelling elements; &#039;&#039;&#039;Roles&#039;&#039;&#039;, &#039;&#039;&#039;Activities&#039;&#039;&#039;, &#039;&#039;&#039;Artifacts&#039;&#039;&#039; and &#039;&#039;&#039;Workflows&#039;&#039;&#039; respectively. The relationships between the role, activity and artifact is shown in Figure 3. A &#039;&#039;&#039;role&#039;&#039;&#039;, formally addressed as a worker, describes the behavior and responsibilities of an individual or a group of individuals in order to produce an artifact. Throughout the development of a project, a person can play one or a number of roles. Some examples of roles are the system analyst, designer, tester. &#039;&#039;&#039;Activities&#039;&#039;&#039; are expressed through behaviors. An activity, is a job that a person performs through his role, as seen in Figure 4. The length of an activity may vary from a few hours to a number of days. Examples of activities are: Plan an operation - performed by the role of Project Manager or add a missing feature - performed by the role of a software developer. All activities produce a meaningful result, called an artifact. &#039;&#039;&#039;Artifacts&#039;&#039;&#039;, are the responsibilities of ones role or roles and express a piece of information that is produced, modified or even used by a process. They can act both as input or output of an activity. Examples of artifacts are the source code, the business case, the software architecture. The roles perform activities that can produce a sequence of artifacts, called &#039;&#039;&#039;workflows&#039;&#039;&#039;. Examples of workflows can be seen in Figure 5. &lt;br /&gt;
&lt;br /&gt;
RUP identifies nine core process workflows, called &#039;&#039;&#039;disciplines&#039;&#039;&#039;. Every discipline, addresses a set of activities and artifacts, based upon a set of skills that are common in an ICT project. These disciplines have the ability to arrange the activities and artifacts in such a way, to provide an understanding of the overall project from a waterfall perspective.&lt;br /&gt;
&lt;br /&gt;
There are six core &amp;quot;engineering&amp;quot; disciplines:&lt;br /&gt;
* Business Modelling Discipline&lt;br /&gt;
* Requirements Discipline&lt;br /&gt;
* Analysis and Design Discipline&lt;br /&gt;
* Implementation Discipline&lt;br /&gt;
* Test Discipline&lt;br /&gt;
* Deployment Discipline&lt;br /&gt;
&lt;br /&gt;
And three core &amp;quot;supporting&amp;quot; disciplines:&lt;br /&gt;
* Project Management Discipline&lt;br /&gt;
* Configuration and Change Management Discipline&lt;br /&gt;
* Environment Discipline&lt;br /&gt;
&lt;br /&gt;
==== Business Modelling ====&lt;br /&gt;
&lt;br /&gt;
Miscommunication between the software engineering community and the business engineering community is one of the most common problems among most business engineering efforts. This means that the output from software development efforts is not correctly used as input to the business engineering and vice versa. The purpose of the Business Modelling discipline is to provide a common language between the two communities and create a direct coupling between software and business models. All business processes are documented using &amp;quot;use cases&amp;quot;. This assures that all stakeholders share the same understanding of the demanding organization.&lt;br /&gt;
&lt;br /&gt;
==== Requirements ====&lt;br /&gt;
The purpose of the requirements discipline is to describe in detail &#039;&#039;&#039;what&#039;&#039;&#039; the system should do. Based on that, a Vision document is created where required functionality and constraints are documented. Moreover, actors (end users) and use cases (behaviors of the system) are identified. Use cases are described in detail and each description clearly shows how the system interacts with the actors. This way an agreement is established between the customers and the rest of the stakeholders regarding the system&#039;s capabilities, user-interface and the end user&#039;s needs.&lt;br /&gt;
&lt;br /&gt;
==== Analysis and Design ====&lt;br /&gt;
&lt;br /&gt;
The purpose of the Analysis and Design discipline it to investigate &#039;&#039;&#039;how&#039;&#039;&#039; the system requirements will be translated into a detailed implementation plan. The system needs to:&lt;br /&gt;
* Perform exactly as described in the use-case descriptions.&lt;br /&gt;
* Fulfill all requirements.&lt;br /&gt;
* Have a robust structure.&lt;br /&gt;
&lt;br /&gt;
Analysis and Design result in the creation of a &#039;&#039;&#039;design model&#039;&#039;&#039;. The design model is an abstraction of the system&#039;s architecture and acts as a guide of how the source code should be finally written and structured.&lt;br /&gt;
&lt;br /&gt;
==== Implementation ====&lt;br /&gt;
The purpose of the Implementation discipline is to:&lt;br /&gt;
&lt;br /&gt;
* Arrange the code into subsystems, organized in layers.&lt;br /&gt;
* Implement classes and objects in terms of components.&lt;br /&gt;
* Uni-test the developed components to ensure quality.&lt;br /&gt;
* Integrate the results into an executable system.&lt;br /&gt;
&lt;br /&gt;
The whole system can be realized as an implementation of various components. RUP enables the integration of those components, in a revolutionary way, making the system easier to maintain and increasing the possibilities for future re-use.&lt;br /&gt;
&lt;br /&gt;
==== Test ====&lt;br /&gt;
&lt;br /&gt;
In the implementation discipline, all the developed components were uni-tested individually and were integrated into the system. The purpose of the Test discipline is to assess the system as a whole and verify the product quality. It is a mechanism to verify the smooth interaction between the various components, their proper integration into the system and finally ensure that all requirements have been successfully implemented. All tests are carried out along 4 quality dimensions:&lt;br /&gt;
* Functionality.&lt;br /&gt;
* Reliability.&lt;br /&gt;
* Application Performance.&lt;br /&gt;
* System Performance.&lt;br /&gt;
&lt;br /&gt;
==== Deployment ====&lt;br /&gt;
&lt;br /&gt;
The purpose of the Deployment discipline is primarily to develop product releases and distribute the software to the end – users. More specifically the Deployment discipline focuses at:&lt;br /&gt;
&lt;br /&gt;
* Developing external software releases&lt;br /&gt;
* Distributing the software&lt;br /&gt;
* Installing the software&lt;br /&gt;
* Providing help to the end – users&lt;br /&gt;
* Creating an up-to-date user manual&lt;br /&gt;
* Conducting beta testing&lt;br /&gt;
&lt;br /&gt;
==== Project Management ====&lt;br /&gt;
&lt;br /&gt;
The purpose of the Project Management discipline, is to successfully balance competing objectives, manage and mitigate risks and finally handle any constraints on delivering the product. Project management, ideally provides:&lt;br /&gt;
&lt;br /&gt;
* A framework for managing software-intensive projects.&lt;br /&gt;
* A framework to successfully manage risks.&lt;br /&gt;
* A framework to plan, execute and monitor projects.&lt;br /&gt;
&lt;br /&gt;
While the discipline does not guarantee success, the odds of delivering successful software are greatly improved.&lt;br /&gt;
&lt;br /&gt;
==== Configuration and Change Management ====&lt;br /&gt;
&lt;br /&gt;
The purpose of the Configuration and Change Management Discipline is to control, maintain and configure all the various artifacts that are produced by the different actors that are working on a project. During the software development life cycle, artifacts are regularly updated (changed). In order to understand the current state of an artifact, it is very important to keep track of its location and history; what was the reason and who decided to change the artifact. The discipline helps create a framework that keeps track of all the project assets.&lt;br /&gt;
&lt;br /&gt;
==== Environment ====&lt;br /&gt;
&lt;br /&gt;
The purpose of the environment discipline, is to provide the development team with all the processes, tools and methods for supporting all developing activities. It is responsible for producing a Development Kit, able to provide guidelines and templates for customizing processes.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Why RUP - Best Practices ==&lt;br /&gt;
&lt;br /&gt;
RUP captures many of the “best practices” that are currently used in modern software development and more particularly in industry by successful organizations. The practices are:&lt;br /&gt;
&lt;br /&gt;
* Develop Software Iteratively&lt;br /&gt;
* Manage Requirements&lt;br /&gt;
* Use component-based architectures&lt;br /&gt;
* Visually model software&lt;br /&gt;
* Continuously verify software quality&lt;br /&gt;
* Control changes to software&lt;br /&gt;
&lt;br /&gt;
=== Develop Software iteratively ===&lt;br /&gt;
&lt;br /&gt;
Today’s high sophisticated software systems, consist of many and complex structures which make it nearly impossible to define the entire system from the very beginning, develop the entire solution and then test the product in the end. RUP uses an iterative approach that allows an increasing understanding of the problem and developing a step – by – step solution, over multiple iterations. Each iteration ends with an executable release, which enables continuous end - user involvement and feedback. As a result, the risks of the project are mitigated at an early stage and stakeholders are ensured that the project requirements are fulfilled.&lt;br /&gt;
&lt;br /&gt;
=== Manage requirements ===&lt;br /&gt;
&lt;br /&gt;
The requirements of a system include the description of the services that the system is able to provide and its operational constraints. RUP documents, organizes and tracks required functionality and constraints and easily communicates business requirements. The use – cases that are used in the process are an excellent way to ensure that requirements are actually those elements that drive the design, implementation and testing of software, making it more likely that the final system fulfills the stakeholders needs.&lt;br /&gt;
&lt;br /&gt;
=== Use component-based architectures ===&lt;br /&gt;
&lt;br /&gt;
Component-based architecture makes the system dynamic; components are independent from the system and interact with other components through well-defined interfaces. Their in-dependency from the system, gives them a great flexibility meaning that they can easily be added, updated or totally replaced. RUP supports component-based software development by providing a systematic approach to defining an architecture using new and existing components.&lt;br /&gt;
&lt;br /&gt;
=== Visually model software ===&lt;br /&gt;
&lt;br /&gt;
A model is an abstraction of reality that can help better comprehend large and complex systems. Visual abstractions help the development team to easily communicate different aspects of the software and see how all the components fit together. RUP uses the Unified Modelling Language (UML) standard which is a graphical language for visualizing and constructing the artifacts of a software-intensive system.&lt;br /&gt;
&lt;br /&gt;
=== Continuously verify software quality ===&lt;br /&gt;
&lt;br /&gt;
In software development, quality should always be reviewed with respect to the requirements based on reliability, functionality , application and system performance. In RUP, quality verification and assessment is built into the process, inside all activities, including all stakeholders and is not treated as a separate activity, performed by a separate group.&lt;br /&gt;
&lt;br /&gt;
=== Control changes to software ===&lt;br /&gt;
&lt;br /&gt;
A software system is developed by a number of teams or individuals, using different platforms and at times being in different locations. As a result, it is essential to somehow make sure that all the changes made in the system are synchronized and constantly verified. RUP ensures that all the individuals working in the project are well informed about any changes and everything is in sync. The process describes how to control, track and monitor changes to enable successful iterative development.&lt;br /&gt;
&lt;br /&gt;
== Limitations ==&lt;br /&gt;
&lt;br /&gt;
While being a complete methodology in itself with an emphasis on accurate documentation and quickly resolving project associated risks, RUP comes with a number of limitations.&lt;br /&gt;
&lt;br /&gt;
* In order for team members to start developing software under this methodology, they need to be &#039;&#039;&#039;experts&#039;&#039;&#039; in their respective fields.&lt;br /&gt;
* The development process can easily become too complex to handle.&lt;br /&gt;
* When working with cutting - edge projects, that highly utilize new technology, components will not be able to be reused. &lt;br /&gt;
* While in theory integration throughout the process of software development sounds like a good thing, when working with particularly complex projects with multiple development streams, issues and significant confusion may rise during the stages of testing.&lt;br /&gt;
&lt;br /&gt;
== Conclusion ==&lt;/div&gt;</summary>
		<author><name>Lessisv</name></author>
	</entry>
	<entry>
		<id>http://13.50.150.85/index.php?title=Rational_Unified_Process_(RUP)&amp;diff=12344</id>
		<title>Rational Unified Process (RUP)</title>
		<link rel="alternate" type="text/html" href="http://13.50.150.85/index.php?title=Rational_Unified_Process_(RUP)&amp;diff=12344"/>
		<updated>2015-09-22T07:27:11Z</updated>

		<summary type="html">&lt;p&gt;Lessisv: /* Control changes to software */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The &#039;&#039;&#039;Rational Unified Process (RUP)&#039;&#039;&#039; is an iterative, &#039;&#039;&#039;software development methodology&#039;&#039;&#039;, firstly introduced by the [https://en.wikipedia.org/wiki/Rational_Software Rational Software Corporation] which was [http://www-03.ibm.com/press/us/en/pressrelease/314.wss acquired by IBM] in 2003. RUP is a disciplined approach to assign tasks within a development organization and software project teams. It was developed to ensure the production of &#039;&#039;&#039;high quality software&#039;&#039;&#039; by providing the development team with a set of &#039;&#039;&#039;guidelines, templates and tool mentors&#039;&#039;&#039;, for all the critical life-cycle activities within a project. This cluster of objects, form a knowledge base that is shared between all project team members. As a result, no matter what each member is working with (e.g testing, designing, managing), they all share a common language and view on how to develop software. Consequently, team productivity is boosted, in order to deliver software that can meet and exceed the needs and expectations of end-users, strictly following a predictable budget and schedule. RUP is the most popular and extensively documented refinement of the [https://en.wikipedia.org/wiki/Unified_Process Unified Process], an iterative and incremental software development process framework. Other worth mentioning forms are the [https://en.wikipedia.org/wiki/OpenUP OpenUP] and [https://en.wikipedia.org/wiki/Agile_Unified_Process Agile Unified Process].&lt;br /&gt;
&lt;br /&gt;
== Process Overview ==&lt;br /&gt;
&lt;br /&gt;
[[File:RUP.png|450px|right|thumb| Figure 1. The iterative model graph shows how the process is structured along two dimensions]]&lt;br /&gt;
&lt;br /&gt;
The best possible way to describe the methodology is through a 2 - dimensional graph.&lt;br /&gt;
* The first dimension (horizontal axis) represents the &#039;&#039;&#039;dynamic aspect&#039;&#039;&#039; of the process. It expresses &#039;&#039;&#039;time&#039;&#039;&#039; in terms of &#039;&#039;&#039;phases&#039;&#039;&#039; and &#039;&#039;&#039;iterations&#039;&#039;&#039;. &lt;br /&gt;
* The second dimension (vertical axis) represents the &#039;&#039;&#039;static aspect&#039;&#039;&#039; of the process. It expresses &#039;&#039;&#039;workflows&#039;&#039;&#039; in terms of 6 core and 3 supporting &#039;&#039;&#039;disciplines&#039;&#039;&#039; (more on that on &amp;quot;Disciplines&amp;quot; section).&lt;br /&gt;
&lt;br /&gt;
=== Time Dimension - Phases and Iterations ===&lt;br /&gt;
When developing software, the project team goes through a multi-step process, from establishing a system&#039;s requirements to designing, implementing and finally maintaining the software with new releases. This is the software life cycle. RUP delicately breaks the software life cycle down to four consecutive phases.&lt;br /&gt;
&lt;br /&gt;
* Inception phase&lt;br /&gt;
* Elaboration phase&lt;br /&gt;
* Construction phase&lt;br /&gt;
* Transition phase&lt;br /&gt;
&lt;br /&gt;
Depending on the project, each of these phases can consist of one to a number of &#039;&#039;&#039;iterations&#039;&#039;&#039;. An iteration is defined as a complete development loop, resulting in a new product release. All the phases include a well-defined milestone, in order to be completed. In the end of every phase, the development team can evaluate whether all the key goals have been achieved, all stakeholders have been considered and the actual expenditures correspond with the planned ones.&lt;br /&gt;
&lt;br /&gt;
[[File:RUP_phases.png|550px|right|thumb| Figure 2. The four phases and milestones of a project]]&lt;br /&gt;
==== Inception Phase ====&lt;br /&gt;
The first phase is the inception phase. The focus of this phase, is understanding the scope of the project and studying if is both worth doing and possible to do. All the internal and external entities that the system will interact with are identified and the nature of the interaction is well defined at a high level. For this reason, the inception phase is primarily significant for new development projects. &lt;br /&gt;
The expected outcome of the inception phase includes :&lt;br /&gt;
&lt;br /&gt;
* A vision document: The document states the general vision of the project including its key requirements, features and main constraints.&lt;br /&gt;
* An initial use-case model (10%-20% complete)&lt;br /&gt;
* An initial project glossary&lt;br /&gt;
* An initial business case, including the business context, success criteria and a financial forecast.&lt;br /&gt;
* An initial risk assessment&lt;br /&gt;
* A project plan (phases and iterations)&lt;br /&gt;
* A business model (if necessary)&lt;br /&gt;
* Prototypes&lt;br /&gt;
&lt;br /&gt;
At the end of the inception phase lies the first major project milestone; the &#039;&#039;&#039;Lifecycle Objective Milestone&#039;&#039;&#039;.&lt;br /&gt;
The inception phase has five evaluation criteria:&lt;br /&gt;
&lt;br /&gt;
* Stakeholder concurrence on scope definition and cost/schedule estimates.&lt;br /&gt;
* Depth and breadth of any prototype that was developed.&lt;br /&gt;
* Actual expenditures versus planned ones.&lt;br /&gt;
* Requirements understanding.&lt;br /&gt;
* Credibility of the cost/schedule estimates, risks and priorities.&lt;br /&gt;
&lt;br /&gt;
If for any reason the project fails to pass this milestone, it can either be completely cancelled or re-designed to successfully meet the criteria.&lt;br /&gt;
 &lt;br /&gt;
==== Elaboration Phase ====&lt;br /&gt;
The second phase is the elaboration phase. The focus of this phase, is establishing a baseline to the architecture of the system, further developing the project plan and analyzing the problem domain while trying to mitigate the highest risk elements. In other words, this is the phase where the project starts to take shape. One of the most important characteristics of this phase, is the production of a component-based architectural prototype. The purpose of this prototype is to address the critical use-cases, that were identified in the previous phase, and hopefully expose the highest technical risks of the project. The expected outcome of the elaboration phase includes:&lt;br /&gt;
&lt;br /&gt;
* A use-case model (at least 80% complete) which will be able to identify all the actors and use-cases.&lt;br /&gt;
* Supplementary requirements (if any).&lt;br /&gt;
* A clear description of the software architecture.&lt;br /&gt;
* An architectural prototype.&lt;br /&gt;
* A more detailed risk assessment and business case.&lt;br /&gt;
* A development plan for the overall project.&lt;br /&gt;
* A preliminary user manual (optional).&lt;br /&gt;
&lt;br /&gt;
At the end of the elaboration phase lies the second major project milestone; the &#039;&#039;&#039;Lifecycle Architecture Milestone&#039;&#039;&#039;.&lt;br /&gt;
The elaboration phase has six evaluation criteria:&lt;br /&gt;
&lt;br /&gt;
* Is the vision stable enough?&lt;br /&gt;
* Is the system architecture stable enough?&lt;br /&gt;
* Have all the major risks been successfully identified and resolved?&lt;br /&gt;
* Is the plan for the construction phase accurate enough?&lt;br /&gt;
* Do all the stakeholders share the opinion that the vision can be achieved by executing the current plan?&lt;br /&gt;
* Is the actual vs planned resource expenditure in acceptable levels?&lt;br /&gt;
&lt;br /&gt;
If the project fails to pass the milestone, there is still time to be re-designed or even cancelled. However, when the project moves to the next phase the associated operation risks raise significantly and changes become much more difficult.&lt;br /&gt;
&lt;br /&gt;
==== Construction Phase====&lt;br /&gt;
The third phase is the construction phase. The focus of this phase, is to develop and integrate all the remaining components and application features into the product. In other words this is the phase where the vision is finally translated into a final stable product, which is based on the architecture that was developed during the previous phases. Most emphasize is given to resources, control and process management in order to fully optimize costs, schedules and quality. The existing prototype evolves via a number of iterations into a fully functional product that meets the stakeholders&#039; needs. The construction phase is usually the longest one of the project life cycle. The expected outcome of the construction phase includes:&lt;br /&gt;
&lt;br /&gt;
* First external release of the software.&lt;br /&gt;
* User manuals.&lt;br /&gt;
* A detailed description of the current release.&lt;br /&gt;
&lt;br /&gt;
At the end of the construction phase lies the third major project milestone; the &#039;&#039;&#039;Initial Operation Capability Milestone&#039;&#039;&#039;.&lt;br /&gt;
The construction phase has three evaluation criteria:&lt;br /&gt;
&lt;br /&gt;
* Is the software release stable enough to be given to the user community?&lt;br /&gt;
* Are all the stakeholders ready for the transition to the user community?&lt;br /&gt;
* Is the actual vs planned resource expenditure in acceptable levels?&lt;br /&gt;
&lt;br /&gt;
If the project fails to pass this milestone, transition may have to be postponed by one release.&lt;br /&gt;
&lt;br /&gt;
==== Transition Phase ====&lt;br /&gt;
The fourth and final phase is the transition phase. The focus of this phase is, as the word says, to transition the software product to the user community. It includes ensuring that the product has been developed to an acceptable quality level, by beta testing the software through the end users, and validating it against the stakeholders&#039; expectations. Once the product has been given for beta testing, a number of issues can arise, requiring the development of new releases (fixing bugs) and adding features that may have been postponed. The expected outcome of the transition phase includes:&lt;br /&gt;
&lt;br /&gt;
* Beta-testing to fix any major [https://en.wikipedia.org/wiki/Software_bug software bugs] and add any missing features.&lt;br /&gt;
* Conversion of operational databases&lt;br /&gt;
* Training of end users and maintainers.&lt;br /&gt;
* Marketing and distribution of the product.&lt;br /&gt;
&lt;br /&gt;
At the end of the transition phase lies the fourth and final major project milestone; the &#039;&#039;&#039;Product Release&#039;&#039;&#039;.&lt;br /&gt;
The transition phase has two evaluation criteria:&lt;br /&gt;
&lt;br /&gt;
* Are the end - users satisfied with the product?&lt;br /&gt;
* Is the actual vs planned resource expenditure in acceptable levels?&lt;br /&gt;
&lt;br /&gt;
==== Iterations ====&lt;br /&gt;
As stated before, every phase can consist of a number of iterations, depending on the project size and scope. RUP, in comparison to the traditional [https://en.wikipedia.org/wiki/Waterfall_model waterfall] approach, is heavily based on iterations. This gives a number of advantages and benefits to the project team, with the most important one being mitigating risks much more earlier in the project. Moreover change is more manageable and there is normally a higher level of reuse. Finally, iterations ensure an overall high quality in the final product and that the project team can learn throughout the developing process.&lt;br /&gt;
&lt;br /&gt;
=== Workflow Dimension - Disciplines ===&lt;br /&gt;
&lt;br /&gt;
[[File:activities.png|350px|right|thumb| Figure 4. Individuals, Roles and Activities]]&lt;br /&gt;
[[File:workflows.png|350px|right|thumb| Figure 5. Example of a workflow]]&lt;br /&gt;
&lt;br /&gt;
A process describes &#039;&#039;&#039;who&#039;&#039;&#039; is doing &#039;&#039;&#039;what&#039;&#039;&#039;, &#039;&#039;&#039;how&#039;&#039;&#039; and &#039;&#039;&#039;when&#039;&#039;&#039;. RUP addresses those terms with four modelling elements; &#039;&#039;&#039;Roles&#039;&#039;&#039;, &#039;&#039;&#039;Activities&#039;&#039;&#039;, &#039;&#039;&#039;Artifacts&#039;&#039;&#039; and &#039;&#039;&#039;Workflows&#039;&#039;&#039; respectively. The relationships between the role, activity and artifact is shown in Figure 3. A &#039;&#039;&#039;role&#039;&#039;&#039;, formally addressed as a worker, describes the behavior and responsibilities of an individual or a group of individuals in order to produce an artifact. Throughout the development of a project, a person can play one or a number of roles. Some examples of roles are the system analyst, designer, tester. &#039;&#039;&#039;Activities&#039;&#039;&#039; are expressed through behaviors. An activity, is a job that a person performs through his role, as seen in Figure 4. The length of an activity may vary from a few hours to a number of days. Examples of activities are: Plan an operation - performed by the role of Project Manager or add a missing feature - performed by the role of a software developer. All activities produce a meaningful result, called an artifact. &#039;&#039;&#039;Artifacts&#039;&#039;&#039;, are the responsibilities of ones role or roles and express a piece of information that is produced, modified or even used by a process. They can act both as input or output of an activity. Examples of artifacts are the source code, the business case, the software architecture. The roles perform activities that can produce a sequence of artifacts, called &#039;&#039;&#039;workflows&#039;&#039;&#039;. Examples of workflows can be seen in Figure 5. &lt;br /&gt;
&lt;br /&gt;
RUP identifies nine core process workflows, called &#039;&#039;&#039;disciplines&#039;&#039;&#039;. Every discipline, addresses a set of activities and artifacts, based upon a set of skills that are common in an ICT project. These disciplines have the ability to arrange the activities and artifacts in such a way, to provide an understanding of the overall project from a waterfall perspective.&lt;br /&gt;
&lt;br /&gt;
There are six core &amp;quot;engineering&amp;quot; disciplines:&lt;br /&gt;
* Business Modelling Discipline&lt;br /&gt;
* Requirements Discipline&lt;br /&gt;
* Analysis and Design Discipline&lt;br /&gt;
* Implementation Discipline&lt;br /&gt;
* Test Discipline&lt;br /&gt;
* Deployment Discipline&lt;br /&gt;
&lt;br /&gt;
And three core &amp;quot;supporting&amp;quot; disciplines:&lt;br /&gt;
* Project Management Discipline&lt;br /&gt;
* Configuration and Change Management Discipline&lt;br /&gt;
* Environment Discipline&lt;br /&gt;
&lt;br /&gt;
==== Business Modelling ====&lt;br /&gt;
&lt;br /&gt;
Miscommunication between the software engineering community and the business engineering community is one of the most common problems among most business engineering efforts. This means that the output from software development efforts is not correctly used as input to the business engineering and vice versa. The purpose of the Business Modelling discipline is to provide a common language between the two communities and create a direct coupling between software and business models. All business processes are documented using &amp;quot;use cases&amp;quot;. This assures that all stakeholders share the same understanding of the demanding organization.&lt;br /&gt;
&lt;br /&gt;
==== Requirements ====&lt;br /&gt;
The purpose of the requirements discipline is to describe in detail &#039;&#039;&#039;what&#039;&#039;&#039; the system should do. Based on that, a Vision document is created where required functionality and constraints are documented. Moreover, actors (end users) and use cases (behaviors of the system) are identified. Use cases are described in detail and each description clearly shows how the system interacts with the actors. This way an agreement is established between the customers and the rest of the stakeholders regarding the system&#039;s capabilities, user-interface and the end user&#039;s needs.&lt;br /&gt;
&lt;br /&gt;
==== Analysis and Design ====&lt;br /&gt;
&lt;br /&gt;
The purpose of the Analysis and Design discipline it to investigate &#039;&#039;&#039;how&#039;&#039;&#039; the system requirements will be translated into a detailed implementation plan. The system needs to:&lt;br /&gt;
* Perform exactly as described in the use-case descriptions.&lt;br /&gt;
* Fulfill all requirements.&lt;br /&gt;
* Have a robust structure.&lt;br /&gt;
&lt;br /&gt;
Analysis and Design result in the creation of a &#039;&#039;&#039;design model&#039;&#039;&#039;. The design model is an abstraction of the system&#039;s architecture and acts as a guide of how the source code should be finally written and structured.&lt;br /&gt;
&lt;br /&gt;
==== Implementation ====&lt;br /&gt;
The purpose of the Implementation discipline is to:&lt;br /&gt;
&lt;br /&gt;
* Arrange the code into subsystems, organized in layers.&lt;br /&gt;
* Implement classes and objects in terms of components.&lt;br /&gt;
* Uni-test the developed components to ensure quality.&lt;br /&gt;
* Integrate the results into an executable system.&lt;br /&gt;
&lt;br /&gt;
The whole system can be realized as an implementation of various components. RUP enables the integration of those components, in a revolutionary way, making the system easier to maintain and increasing the possibilities for future re-use.&lt;br /&gt;
&lt;br /&gt;
==== Test ====&lt;br /&gt;
&lt;br /&gt;
In the implementation discipline, all the developed components were uni-tested individually and were integrated into the system. The purpose of the Test discipline is to assess the system as a whole and verify the product quality. It is a mechanism to verify the smooth interaction between the various components, their proper integration into the system and finally ensure that all requirements have been successfully implemented. All tests are carried out along 4 quality dimensions:&lt;br /&gt;
* Functionality.&lt;br /&gt;
* Reliability.&lt;br /&gt;
* Application Performance.&lt;br /&gt;
* System Performance.&lt;br /&gt;
&lt;br /&gt;
==== Deployment ====&lt;br /&gt;
&lt;br /&gt;
The purpose of the Deployment discipline is primarily to develop product releases and distribute the software to the end – users. More specifically the Deployment discipline focuses at:&lt;br /&gt;
&lt;br /&gt;
* Developing external software releases&lt;br /&gt;
* Distributing the software&lt;br /&gt;
* Installing the software&lt;br /&gt;
* Providing help to the end – users&lt;br /&gt;
* Creating an up-to-date user manual&lt;br /&gt;
* Conducting beta testing&lt;br /&gt;
&lt;br /&gt;
==== Project Management ====&lt;br /&gt;
&lt;br /&gt;
The purpose of the Project Management discipline, is to successfully balance competing objectives, manage and mitigate risks and finally handle any constraints on delivering the product. Project management, ideally provides:&lt;br /&gt;
&lt;br /&gt;
* A framework for managing software-intensive projects.&lt;br /&gt;
* A framework to successfully manage risks.&lt;br /&gt;
* A framework to plan, execute and monitor projects.&lt;br /&gt;
&lt;br /&gt;
While the discipline does not guarantee success, the odds of delivering successful software are greatly improved.&lt;br /&gt;
&lt;br /&gt;
==== Configuration and Change Management ====&lt;br /&gt;
&lt;br /&gt;
The purpose of the Configuration and Change Management Discipline is to control, maintain and configure all the various artifacts that are produced by the different actors that are working on a project. During the software development life cycle, artifacts are regularly updated (changed). In order to understand the current state of an artifact, it is very important to keep track of its location and history; what was the reason and who decided to change the artifact. The discipline helps create a framework that keeps track of all the project assets.&lt;br /&gt;
&lt;br /&gt;
==== Environment ====&lt;br /&gt;
&lt;br /&gt;
The purpose of the environment discipline, is to provide the development team with all the processes, tools and methods for supporting all developing activities. It is responsible for producing a Development Kit, able to provide guidelines and templates for customizing processes.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Why RUP - Best Practices ==&lt;br /&gt;
&lt;br /&gt;
RUP captures many of the “best practices” that are currently used in modern software development and more particularly in industry by successful organizations. The practices are:&lt;br /&gt;
&lt;br /&gt;
* Develop Software Iteratively&lt;br /&gt;
* Manage Requirements&lt;br /&gt;
* Use component-based architectures&lt;br /&gt;
* Visually model software&lt;br /&gt;
* Continuously verify software quality&lt;br /&gt;
* Control changes to software&lt;br /&gt;
&lt;br /&gt;
=== Develop Software iteratively ===&lt;br /&gt;
&lt;br /&gt;
Today’s high sophisticated software systems, consist of many and complex structures which make it nearly impossible to define the entire system from the very beginning, develop the entire solution and then test the product in the end. RUP uses an iterative approach that allows an increasing understanding of the problem and developing a step – by – step solution, over multiple iterations. Each iteration ends with an executable release, which enables continuous end - user involvement and feedback. As a result, the risks of the project are mitigated at an early stage and stakeholders are ensured that the project requirements are fulfilled.&lt;br /&gt;
&lt;br /&gt;
=== Manage requirements ===&lt;br /&gt;
&lt;br /&gt;
The requirements of a system include the description of the services that the system is able to provide and its operational constraints. RUP documents, organizes and tracks required functionality and constraints and easily communicates business requirements. The use – cases that are used in the process are an excellent way to ensure that requirements are actually those elements that drive the design, implementation and testing of software, making it more likely that the final system fulfills the stakeholders needs.&lt;br /&gt;
&lt;br /&gt;
=== Use component-based architectures ===&lt;br /&gt;
&lt;br /&gt;
Component-based architecture makes the system dynamic; components are independent from the system and interact with other components through well-defined interfaces. Their in-dependency from the system, gives them a great flexibility meaning that they can easily be added, updated or totally replaced. RUP supports component-based software development by providing a systematic approach to defining an architecture using new and existing components.&lt;br /&gt;
&lt;br /&gt;
=== Visually model software ===&lt;br /&gt;
&lt;br /&gt;
A model is an abstraction of reality that can help better comprehend large and complex systems. Visual abstractions help the development team to easily communicate different aspects of the software and see how all the components fit together. RUP uses the Unified Modelling Language (UML) standard which is a graphical language for visualizing and constructing the artifacts of a software-intensive system.&lt;br /&gt;
&lt;br /&gt;
=== Continuously verify software quality ===&lt;br /&gt;
&lt;br /&gt;
In software development, quality should always be reviewed with respect to the requirements based on reliability, functionality , application and system performance. In RUP, quality verification and assessment is built into the process, inside all activities, including all stakeholders and is not treated as a separate activity, performed by a separate group.&lt;br /&gt;
&lt;br /&gt;
=== Control changes to software ===&lt;br /&gt;
&lt;br /&gt;
A software system is developed by a number of teams or individuals, using different platforms and at times being in different locations. As a result, it is essential to somehow make sure that all the changes made in the system are synchronized and constantly verified. RUP ensures that all the individuals working in the project are well informed about any changes and everything is in sync. The process describes how to control, track and monitor changes to enable successful iterative development.&lt;br /&gt;
&lt;br /&gt;
== Limitations ==&lt;br /&gt;
&lt;br /&gt;
== Conclusion ==&lt;/div&gt;</summary>
		<author><name>Lessisv</name></author>
	</entry>
	<entry>
		<id>http://13.50.150.85/index.php?title=Rational_Unified_Process_(RUP)&amp;diff=12323</id>
		<title>Rational Unified Process (RUP)</title>
		<link rel="alternate" type="text/html" href="http://13.50.150.85/index.php?title=Rational_Unified_Process_(RUP)&amp;diff=12323"/>
		<updated>2015-09-22T07:14:32Z</updated>

		<summary type="html">&lt;p&gt;Lessisv: /* Continuously verify software quality */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The &#039;&#039;&#039;Rational Unified Process (RUP)&#039;&#039;&#039; is an iterative, &#039;&#039;&#039;software development methodology&#039;&#039;&#039;, firstly introduced by the [https://en.wikipedia.org/wiki/Rational_Software Rational Software Corporation] which was [http://www-03.ibm.com/press/us/en/pressrelease/314.wss acquired by IBM] in 2003. RUP is a disciplined approach to assign tasks within a development organization and software project teams. It was developed to ensure the production of &#039;&#039;&#039;high quality software&#039;&#039;&#039; by providing the development team with a set of &#039;&#039;&#039;guidelines, templates and tool mentors&#039;&#039;&#039;, for all the critical life-cycle activities within a project. This cluster of objects, form a knowledge base that is shared between all project team members. As a result, no matter what each member is working with (e.g testing, designing, managing), they all share a common language and view on how to develop software. Consequently, team productivity is boosted, in order to deliver software that can meet and exceed the needs and expectations of end-users, strictly following a predictable budget and schedule. RUP is the most popular and extensively documented refinement of the [https://en.wikipedia.org/wiki/Unified_Process Unified Process], an iterative and incremental software development process framework. Other worth mentioning forms are the [https://en.wikipedia.org/wiki/OpenUP OpenUP] and [https://en.wikipedia.org/wiki/Agile_Unified_Process Agile Unified Process].&lt;br /&gt;
&lt;br /&gt;
== Process Overview ==&lt;br /&gt;
&lt;br /&gt;
[[File:RUP.png|450px|right|thumb| Figure 1. The iterative model graph shows how the process is structured along two dimensions]]&lt;br /&gt;
&lt;br /&gt;
The best possible way to describe the methodology is through a 2 - dimensional graph.&lt;br /&gt;
* The first dimension (horizontal axis) represents the &#039;&#039;&#039;dynamic aspect&#039;&#039;&#039; of the process. It expresses &#039;&#039;&#039;time&#039;&#039;&#039; in terms of &#039;&#039;&#039;phases&#039;&#039;&#039; and &#039;&#039;&#039;iterations&#039;&#039;&#039;. &lt;br /&gt;
* The second dimension (vertical axis) represents the &#039;&#039;&#039;static aspect&#039;&#039;&#039; of the process. It expresses &#039;&#039;&#039;workflows&#039;&#039;&#039; in terms of 6 core and 3 supporting &#039;&#039;&#039;disciplines&#039;&#039;&#039; (more on that on &amp;quot;Disciplines&amp;quot; section).&lt;br /&gt;
&lt;br /&gt;
=== Time Dimension - Phases and Iterations ===&lt;br /&gt;
When developing software, the project team goes through a multi-step process, from establishing a system&#039;s requirements to designing, implementing and finally maintaining the software with new releases. This is the software life cycle. RUP delicately breaks the software life cycle down to four consecutive phases.&lt;br /&gt;
&lt;br /&gt;
* Inception phase&lt;br /&gt;
* Elaboration phase&lt;br /&gt;
* Construction phase&lt;br /&gt;
* Transition phase&lt;br /&gt;
&lt;br /&gt;
Depending on the project, each of these phases can consist of one to a number of &#039;&#039;&#039;iterations&#039;&#039;&#039;. An iteration is defined as a complete development loop, resulting in a new product release. All the phases include a well-defined milestone, in order to be completed. In the end of every phase, the development team can evaluate whether all the key goals have been achieved, all stakeholders have been considered and the actual expenditures correspond with the planned ones.&lt;br /&gt;
&lt;br /&gt;
[[File:RUP_phases.png|550px|right|thumb| Figure 2. The four phases and milestones of a project]]&lt;br /&gt;
==== Inception Phase ====&lt;br /&gt;
The first phase is the inception phase. The focus of this phase, is understanding the scope of the project and studying if is both worth doing and possible to do. All the internal and external entities that the system will interact with are identified and the nature of the interaction is well defined at a high level. For this reason, the inception phase is primarily significant for new development projects. &lt;br /&gt;
The expected outcome of the inception phase includes :&lt;br /&gt;
&lt;br /&gt;
* A vision document: The document states the general vision of the project including its key requirements, features and main constraints.&lt;br /&gt;
* An initial use-case model (10%-20% complete)&lt;br /&gt;
* An initial project glossary&lt;br /&gt;
* An initial business case, including the business context, success criteria and a financial forecast.&lt;br /&gt;
* An initial risk assessment&lt;br /&gt;
* A project plan (phases and iterations)&lt;br /&gt;
* A business model (if necessary)&lt;br /&gt;
* Prototypes&lt;br /&gt;
&lt;br /&gt;
At the end of the inception phase lies the first major project milestone; the &#039;&#039;&#039;Lifecycle Objective Milestone&#039;&#039;&#039;.&lt;br /&gt;
The inception phase has five evaluation criteria:&lt;br /&gt;
&lt;br /&gt;
* Stakeholder concurrence on scope definition and cost/schedule estimates.&lt;br /&gt;
* Depth and breadth of any prototype that was developed.&lt;br /&gt;
* Actual expenditures versus planned ones.&lt;br /&gt;
* Requirements understanding.&lt;br /&gt;
* Credibility of the cost/schedule estimates, risks and priorities.&lt;br /&gt;
&lt;br /&gt;
If for any reason the project fails to pass this milestone, it can either be completely cancelled or re-designed to successfully meet the criteria.&lt;br /&gt;
 &lt;br /&gt;
==== Elaboration Phase ====&lt;br /&gt;
The second phase is the elaboration phase. The focus of this phase, is establishing a baseline to the architecture of the system, further developing the project plan and analyzing the problem domain while trying to mitigate the highest risk elements. In other words, this is the phase where the project starts to take shape. One of the most important characteristics of this phase, is the production of a component-based architectural prototype. The purpose of this prototype is to address the critical use-cases, that were identified in the previous phase, and hopefully expose the highest technical risks of the project. The expected outcome of the elaboration phase includes:&lt;br /&gt;
&lt;br /&gt;
* A use-case model (at least 80% complete) which will be able to identify all the actors and use-cases.&lt;br /&gt;
* Supplementary requirements (if any).&lt;br /&gt;
* A clear description of the software architecture.&lt;br /&gt;
* An architectural prototype.&lt;br /&gt;
* A more detailed risk assessment and business case.&lt;br /&gt;
* A development plan for the overall project.&lt;br /&gt;
* A preliminary user manual (optional).&lt;br /&gt;
&lt;br /&gt;
At the end of the elaboration phase lies the second major project milestone; the &#039;&#039;&#039;Lifecycle Architecture Milestone&#039;&#039;&#039;.&lt;br /&gt;
The elaboration phase has six evaluation criteria:&lt;br /&gt;
&lt;br /&gt;
* Is the vision stable enough?&lt;br /&gt;
* Is the system architecture stable enough?&lt;br /&gt;
* Have all the major risks been successfully identified and resolved?&lt;br /&gt;
* Is the plan for the construction phase accurate enough?&lt;br /&gt;
* Do all the stakeholders share the opinion that the vision can be achieved by executing the current plan?&lt;br /&gt;
* Is the actual vs planned resource expenditure in acceptable levels?&lt;br /&gt;
&lt;br /&gt;
If the project fails to pass the milestone, there is still time to be re-designed or even cancelled. However, when the project moves to the next phase the associated operation risks raise significantly and changes become much more difficult.&lt;br /&gt;
&lt;br /&gt;
==== Construction Phase====&lt;br /&gt;
The third phase is the construction phase. The focus of this phase, is to develop and integrate all the remaining components and application features into the product. In other words this is the phase where the vision is finally translated into a final stable product, which is based on the architecture that was developed during the previous phases. Most emphasize is given to resources, control and process management in order to fully optimize costs, schedules and quality. The existing prototype evolves via a number of iterations into a fully functional product that meets the stakeholders&#039; needs. The construction phase is usually the longest one of the project life cycle. The expected outcome of the construction phase includes:&lt;br /&gt;
&lt;br /&gt;
* First external release of the software.&lt;br /&gt;
* User manuals.&lt;br /&gt;
* A detailed description of the current release.&lt;br /&gt;
&lt;br /&gt;
At the end of the construction phase lies the third major project milestone; the &#039;&#039;&#039;Initial Operation Capability Milestone&#039;&#039;&#039;.&lt;br /&gt;
The construction phase has three evaluation criteria:&lt;br /&gt;
&lt;br /&gt;
* Is the software release stable enough to be given to the user community?&lt;br /&gt;
* Are all the stakeholders ready for the transition to the user community?&lt;br /&gt;
* Is the actual vs planned resource expenditure in acceptable levels?&lt;br /&gt;
&lt;br /&gt;
If the project fails to pass this milestone, transition may have to be postponed by one release.&lt;br /&gt;
&lt;br /&gt;
==== Transition Phase ====&lt;br /&gt;
The fourth and final phase is the transition phase. The focus of this phase is, as the word says, to transition the software product to the user community. It includes ensuring that the product has been developed to an acceptable quality level, by beta testing the software through the end users, and validating it against the stakeholders&#039; expectations. Once the product has been given for beta testing, a number of issues can arise, requiring the development of new releases (fixing bugs) and adding features that may have been postponed. The expected outcome of the transition phase includes:&lt;br /&gt;
&lt;br /&gt;
* Beta-testing to fix any major [https://en.wikipedia.org/wiki/Software_bug software bugs] and add any missing features.&lt;br /&gt;
* Conversion of operational databases&lt;br /&gt;
* Training of end users and maintainers.&lt;br /&gt;
* Marketing and distribution of the product.&lt;br /&gt;
&lt;br /&gt;
At the end of the transition phase lies the fourth and final major project milestone; the &#039;&#039;&#039;Product Release&#039;&#039;&#039;.&lt;br /&gt;
The transition phase has two evaluation criteria:&lt;br /&gt;
&lt;br /&gt;
* Are the end - users satisfied with the product?&lt;br /&gt;
* Is the actual vs planned resource expenditure in acceptable levels?&lt;br /&gt;
&lt;br /&gt;
==== Iterations ====&lt;br /&gt;
As stated before, every phase can consist of a number of iterations, depending on the project size and scope. RUP, in comparison to the traditional [https://en.wikipedia.org/wiki/Waterfall_model waterfall] approach, is heavily based on iterations. This gives a number of advantages and benefits to the project team, with the most important one being mitigating risks much more earlier in the project. Moreover change is more manageable and there is normally a higher level of reuse. Finally, iterations ensure an overall high quality in the final product and that the project team can learn throughout the developing process.&lt;br /&gt;
&lt;br /&gt;
=== Workflow Dimension - Disciplines ===&lt;br /&gt;
&lt;br /&gt;
[[File:activities.png|350px|right|thumb| Figure 4. Individuals, Roles and Activities]]&lt;br /&gt;
[[File:workflows.png|350px|right|thumb| Figure 5. Example of a workflow]]&lt;br /&gt;
&lt;br /&gt;
A process describes &#039;&#039;&#039;who&#039;&#039;&#039; is doing &#039;&#039;&#039;what&#039;&#039;&#039;, &#039;&#039;&#039;how&#039;&#039;&#039; and &#039;&#039;&#039;when&#039;&#039;&#039;. RUP addresses those terms with four modelling elements; &#039;&#039;&#039;Roles&#039;&#039;&#039;, &#039;&#039;&#039;Activities&#039;&#039;&#039;, &#039;&#039;&#039;Artifacts&#039;&#039;&#039; and &#039;&#039;&#039;Workflows&#039;&#039;&#039; respectively. The relationships between the role, activity and artifact is shown in Figure 3. A &#039;&#039;&#039;role&#039;&#039;&#039;, formally addressed as a worker, describes the behavior and responsibilities of an individual or a group of individuals in order to produce an artifact. Throughout the development of a project, a person can play one or a number of roles. Some examples of roles are the system analyst, designer, tester. &#039;&#039;&#039;Activities&#039;&#039;&#039; are expressed through behaviors. An activity, is a job that a person performs through his role, as seen in Figure 4. The length of an activity may vary from a few hours to a number of days. Examples of activities are: Plan an operation - performed by the role of Project Manager or add a missing feature - performed by the role of a software developer. All activities produce a meaningful result, called an artifact. &#039;&#039;&#039;Artifacts&#039;&#039;&#039;, are the responsibilities of ones role or roles and express a piece of information that is produced, modified or even used by a process. They can act both as input or output of an activity. Examples of artifacts are the source code, the business case, the software architecture. The roles perform activities that can produce a sequence of artifacts, called &#039;&#039;&#039;workflows&#039;&#039;&#039;. Examples of workflows can be seen in Figure 5. &lt;br /&gt;
&lt;br /&gt;
RUP identifies nine core process workflows, called &#039;&#039;&#039;disciplines&#039;&#039;&#039;. Every discipline, addresses a set of activities and artifacts, based upon a set of skills that are common in an ICT project. These disciplines have the ability to arrange the activities and artifacts in such a way, to provide an understanding of the overall project from a waterfall perspective.&lt;br /&gt;
&lt;br /&gt;
There are six core &amp;quot;engineering&amp;quot; disciplines:&lt;br /&gt;
* Business Modelling Discipline&lt;br /&gt;
* Requirements Discipline&lt;br /&gt;
* Analysis and Design Discipline&lt;br /&gt;
* Implementation Discipline&lt;br /&gt;
* Test Discipline&lt;br /&gt;
* Deployment Discipline&lt;br /&gt;
&lt;br /&gt;
And three core &amp;quot;supporting&amp;quot; disciplines:&lt;br /&gt;
* Project Management Discipline&lt;br /&gt;
* Configuration and Change Management Discipline&lt;br /&gt;
* Environment Discipline&lt;br /&gt;
&lt;br /&gt;
==== Business Modelling ====&lt;br /&gt;
&lt;br /&gt;
Miscommunication between the software engineering community and the business engineering community is one of the most common problems among most business engineering efforts. This means that the output from software development efforts is not correctly used as input to the business engineering and vice versa. The purpose of the Business Modelling discipline is to provide a common language between the two communities and create a direct coupling between software and business models. All business processes are documented using &amp;quot;use cases&amp;quot;. This assures that all stakeholders share the same understanding of the demanding organization.&lt;br /&gt;
&lt;br /&gt;
==== Requirements ====&lt;br /&gt;
The purpose of the requirements discipline is to describe in detail &#039;&#039;&#039;what&#039;&#039;&#039; the system should do. Based on that, a Vision document is created where required functionality and constraints are documented. Moreover, actors (end users) and use cases (behaviors of the system) are identified. Use cases are described in detail and each description clearly shows how the system interacts with the actors. This way an agreement is established between the customers and the rest of the stakeholders regarding the system&#039;s capabilities, user-interface and the end user&#039;s needs.&lt;br /&gt;
&lt;br /&gt;
==== Analysis and Design ====&lt;br /&gt;
&lt;br /&gt;
The purpose of the Analysis and Design discipline it to investigate &#039;&#039;&#039;how&#039;&#039;&#039; the system requirements will be translated into a detailed implementation plan. The system needs to:&lt;br /&gt;
* Perform exactly as described in the use-case descriptions.&lt;br /&gt;
* Fulfill all requirements.&lt;br /&gt;
* Have a robust structure.&lt;br /&gt;
&lt;br /&gt;
Analysis and Design result in the creation of a &#039;&#039;&#039;design model&#039;&#039;&#039;. The design model is an abstraction of the system&#039;s architecture and acts as a guide of how the source code should be finally written and structured.&lt;br /&gt;
&lt;br /&gt;
==== Implementation ====&lt;br /&gt;
The purpose of the Implementation discipline is to:&lt;br /&gt;
&lt;br /&gt;
* Arrange the code into subsystems, organized in layers.&lt;br /&gt;
* Implement classes and objects in terms of components.&lt;br /&gt;
* Uni-test the developed components to ensure quality.&lt;br /&gt;
* Integrate the results into an executable system.&lt;br /&gt;
&lt;br /&gt;
The whole system can be realized as an implementation of various components. RUP enables the integration of those components, in a revolutionary way, making the system easier to maintain and increasing the possibilities for future re-use.&lt;br /&gt;
&lt;br /&gt;
==== Test ====&lt;br /&gt;
&lt;br /&gt;
In the implementation discipline, all the developed components were uni-tested individually and were integrated into the system. The purpose of the Test discipline is to assess the system as a whole and verify the product quality. It is a mechanism to verify the smooth interaction between the various components, their proper integration into the system and finally ensure that all requirements have been successfully implemented. All tests are carried out along 4 quality dimensions:&lt;br /&gt;
* Functionality.&lt;br /&gt;
* Reliability.&lt;br /&gt;
* Application Performance.&lt;br /&gt;
* System Performance.&lt;br /&gt;
&lt;br /&gt;
==== Deployment ====&lt;br /&gt;
&lt;br /&gt;
The purpose of the Deployment discipline is primarily to develop product releases and distribute the software to the end – users. More specifically the Deployment discipline focuses at:&lt;br /&gt;
&lt;br /&gt;
* Developing external software releases&lt;br /&gt;
* Distributing the software&lt;br /&gt;
* Installing the software&lt;br /&gt;
* Providing help to the end – users&lt;br /&gt;
* Creating an up-to-date user manual&lt;br /&gt;
* Conducting beta testing&lt;br /&gt;
&lt;br /&gt;
==== Project Management ====&lt;br /&gt;
&lt;br /&gt;
The purpose of the Project Management discipline, is to successfully balance competing objectives, manage and mitigate risks and finally handle any constraints on delivering the product. Project management, ideally provides:&lt;br /&gt;
&lt;br /&gt;
* A framework for managing software-intensive projects.&lt;br /&gt;
* A framework to successfully manage risks.&lt;br /&gt;
* A framework to plan, execute and monitor projects.&lt;br /&gt;
&lt;br /&gt;
While the discipline does not guarantee success, the odds of delivering successful software are greatly improved.&lt;br /&gt;
&lt;br /&gt;
==== Configuration and Change Management ====&lt;br /&gt;
&lt;br /&gt;
The purpose of the Configuration and Change Management Discipline is to control, maintain and configure all the various artifacts that are produced by the different actors that are working on a project. During the software development life cycle, artifacts are regularly updated (changed). In order to understand the current state of an artifact, it is very important to keep track of its location and history; what was the reason and who decided to change the artifact. The discipline helps create a framework that keeps track of all the project assets.&lt;br /&gt;
&lt;br /&gt;
==== Environment ====&lt;br /&gt;
&lt;br /&gt;
The purpose of the environment discipline, is to provide the development team with all the processes, tools and methods for supporting all developing activities. It is responsible for producing a Development Kit, able to provide guidelines and templates for customizing processes.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Why RUP - Best Practices ==&lt;br /&gt;
&lt;br /&gt;
RUP captures many of the “best practices” that are currently used in modern software development and more particularly in industry by successful organizations. The practices are:&lt;br /&gt;
&lt;br /&gt;
* Develop Software Iteratively&lt;br /&gt;
* Manage Requirements&lt;br /&gt;
* Use component-based architectures&lt;br /&gt;
* Visually model software&lt;br /&gt;
* Continuously verify software quality&lt;br /&gt;
* Control changes to software&lt;br /&gt;
&lt;br /&gt;
=== Develop Software iteratively ===&lt;br /&gt;
&lt;br /&gt;
Today’s high sophisticated software systems, consist of many and complex structures which make it nearly impossible to define the entire system from the very beginning, develop the entire solution and then test the product in the end. RUP uses an iterative approach that allows an increasing understanding of the problem and developing a step – by – step solution, over multiple iterations. Each iteration ends with an executable release, which enables continuous end - user involvement and feedback. As a result, the risks of the project are mitigated at an early stage and stakeholders are ensured that the project requirements are fulfilled.&lt;br /&gt;
&lt;br /&gt;
=== Manage requirements ===&lt;br /&gt;
&lt;br /&gt;
The requirements of a system include the description of the services that the system is able to provide and its operational constraints. RUP documents, organizes and tracks required functionality and constraints and easily communicates business requirements. The use – cases that are used in the process are an excellent way to ensure that requirements are actually those elements that drive the design, implementation and testing of software, making it more likely that the final system fulfills the stakeholders needs.&lt;br /&gt;
&lt;br /&gt;
=== Use component-based architectures ===&lt;br /&gt;
&lt;br /&gt;
Component-based architecture makes the system dynamic; components are independent from the system and interact with other components through well-defined interfaces. Their in-dependency from the system, gives them a great flexibility meaning that they can easily be added, updated or totally replaced. RUP supports component-based software development by providing a systematic approach to defining an architecture using new and existing components.&lt;br /&gt;
&lt;br /&gt;
=== Visually model software ===&lt;br /&gt;
&lt;br /&gt;
A model is an abstraction of reality that can help better comprehend large and complex systems. Visual abstractions help the development team to easily communicate different aspects of the software and see how all the components fit together. RUP uses the Unified Modelling Language (UML) standard which is a graphical language for visualizing and constructing the artifacts of a software-intensive system.&lt;br /&gt;
&lt;br /&gt;
=== Continuously verify software quality ===&lt;br /&gt;
&lt;br /&gt;
In software development, quality should always be reviewed with respect to the requirements based on reliability, functionality , application and system performance. In RUP, quality verification and assessment is built into the process, inside all activities, including all stakeholders and is not treated as a separate activity, performed by a separate group.&lt;br /&gt;
&lt;br /&gt;
=== Control changes to software ===&lt;br /&gt;
&lt;br /&gt;
== Limitations ==&lt;br /&gt;
&lt;br /&gt;
== Conclusion ==&lt;/div&gt;</summary>
		<author><name>Lessisv</name></author>
	</entry>
	<entry>
		<id>http://13.50.150.85/index.php?title=Rational_Unified_Process_(RUP)&amp;diff=12291</id>
		<title>Rational Unified Process (RUP)</title>
		<link rel="alternate" type="text/html" href="http://13.50.150.85/index.php?title=Rational_Unified_Process_(RUP)&amp;diff=12291"/>
		<updated>2015-09-22T06:56:00Z</updated>

		<summary type="html">&lt;p&gt;Lessisv: /* Visually model software */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The &#039;&#039;&#039;Rational Unified Process (RUP)&#039;&#039;&#039; is an iterative, &#039;&#039;&#039;software development methodology&#039;&#039;&#039;, firstly introduced by the [https://en.wikipedia.org/wiki/Rational_Software Rational Software Corporation] which was [http://www-03.ibm.com/press/us/en/pressrelease/314.wss acquired by IBM] in 2003. RUP is a disciplined approach to assign tasks within a development organization and software project teams. It was developed to ensure the production of &#039;&#039;&#039;high quality software&#039;&#039;&#039; by providing the development team with a set of &#039;&#039;&#039;guidelines, templates and tool mentors&#039;&#039;&#039;, for all the critical life-cycle activities within a project. This cluster of objects, form a knowledge base that is shared between all project team members. As a result, no matter what each member is working with (e.g testing, designing, managing), they all share a common language and view on how to develop software. Consequently, team productivity is boosted, in order to deliver software that can meet and exceed the needs and expectations of end-users, strictly following a predictable budget and schedule. RUP is the most popular and extensively documented refinement of the [https://en.wikipedia.org/wiki/Unified_Process Unified Process], an iterative and incremental software development process framework. Other worth mentioning forms are the [https://en.wikipedia.org/wiki/OpenUP OpenUP] and [https://en.wikipedia.org/wiki/Agile_Unified_Process Agile Unified Process].&lt;br /&gt;
&lt;br /&gt;
== Process Overview ==&lt;br /&gt;
&lt;br /&gt;
[[File:RUP.png|450px|right|thumb| Figure 1. The iterative model graph shows how the process is structured along two dimensions]]&lt;br /&gt;
&lt;br /&gt;
The best possible way to describe the methodology is through a 2 - dimensional graph.&lt;br /&gt;
* The first dimension (horizontal axis) represents the &#039;&#039;&#039;dynamic aspect&#039;&#039;&#039; of the process. It expresses &#039;&#039;&#039;time&#039;&#039;&#039; in terms of &#039;&#039;&#039;phases&#039;&#039;&#039; and &#039;&#039;&#039;iterations&#039;&#039;&#039;. &lt;br /&gt;
* The second dimension (vertical axis) represents the &#039;&#039;&#039;static aspect&#039;&#039;&#039; of the process. It expresses &#039;&#039;&#039;workflows&#039;&#039;&#039; in terms of 6 core and 3 supporting &#039;&#039;&#039;disciplines&#039;&#039;&#039; (more on that on &amp;quot;Disciplines&amp;quot; section).&lt;br /&gt;
&lt;br /&gt;
=== Time Dimension - Phases and Iterations ===&lt;br /&gt;
When developing software, the project team goes through a multi-step process, from establishing a system&#039;s requirements to designing, implementing and finally maintaining the software with new releases. This is the software life cycle. RUP delicately breaks the software life cycle down to four consecutive phases.&lt;br /&gt;
&lt;br /&gt;
* Inception phase&lt;br /&gt;
* Elaboration phase&lt;br /&gt;
* Construction phase&lt;br /&gt;
* Transition phase&lt;br /&gt;
&lt;br /&gt;
Depending on the project, each of these phases can consist of one to a number of &#039;&#039;&#039;iterations&#039;&#039;&#039;. An iteration is defined as a complete development loop, resulting in a new product release. All the phases include a well-defined milestone, in order to be completed. In the end of every phase, the development team can evaluate whether all the key goals have been achieved, all stakeholders have been considered and the actual expenditures correspond with the planned ones.&lt;br /&gt;
&lt;br /&gt;
[[File:RUP_phases.png|550px|right|thumb| Figure 2. The four phases and milestones of a project]]&lt;br /&gt;
==== Inception Phase ====&lt;br /&gt;
The first phase is the inception phase. The focus of this phase, is understanding the scope of the project and studying if is both worth doing and possible to do. All the internal and external entities that the system will interact with are identified and the nature of the interaction is well defined at a high level. For this reason, the inception phase is primarily significant for new development projects. &lt;br /&gt;
The expected outcome of the inception phase includes :&lt;br /&gt;
&lt;br /&gt;
* A vision document: The document states the general vision of the project including its key requirements, features and main constraints.&lt;br /&gt;
* An initial use-case model (10%-20% complete)&lt;br /&gt;
* An initial project glossary&lt;br /&gt;
* An initial business case, including the business context, success criteria and a financial forecast.&lt;br /&gt;
* An initial risk assessment&lt;br /&gt;
* A project plan (phases and iterations)&lt;br /&gt;
* A business model (if necessary)&lt;br /&gt;
* Prototypes&lt;br /&gt;
&lt;br /&gt;
At the end of the inception phase lies the first major project milestone; the &#039;&#039;&#039;Lifecycle Objective Milestone&#039;&#039;&#039;.&lt;br /&gt;
The inception phase has five evaluation criteria:&lt;br /&gt;
&lt;br /&gt;
* Stakeholder concurrence on scope definition and cost/schedule estimates.&lt;br /&gt;
* Depth and breadth of any prototype that was developed.&lt;br /&gt;
* Actual expenditures versus planned ones.&lt;br /&gt;
* Requirements understanding.&lt;br /&gt;
* Credibility of the cost/schedule estimates, risks and priorities.&lt;br /&gt;
&lt;br /&gt;
If for any reason the project fails to pass this milestone, it can either be completely cancelled or re-designed to successfully meet the criteria.&lt;br /&gt;
 &lt;br /&gt;
==== Elaboration Phase ====&lt;br /&gt;
The second phase is the elaboration phase. The focus of this phase, is establishing a baseline to the architecture of the system, further developing the project plan and analyzing the problem domain while trying to mitigate the highest risk elements. In other words, this is the phase where the project starts to take shape. One of the most important characteristics of this phase, is the production of a component-based architectural prototype. The purpose of this prototype is to address the critical use-cases, that were identified in the previous phase, and hopefully expose the highest technical risks of the project. The expected outcome of the elaboration phase includes:&lt;br /&gt;
&lt;br /&gt;
* A use-case model (at least 80% complete) which will be able to identify all the actors and use-cases.&lt;br /&gt;
* Supplementary requirements (if any).&lt;br /&gt;
* A clear description of the software architecture.&lt;br /&gt;
* An architectural prototype.&lt;br /&gt;
* A more detailed risk assessment and business case.&lt;br /&gt;
* A development plan for the overall project.&lt;br /&gt;
* A preliminary user manual (optional).&lt;br /&gt;
&lt;br /&gt;
At the end of the elaboration phase lies the second major project milestone; the &#039;&#039;&#039;Lifecycle Architecture Milestone&#039;&#039;&#039;.&lt;br /&gt;
The elaboration phase has six evaluation criteria:&lt;br /&gt;
&lt;br /&gt;
* Is the vision stable enough?&lt;br /&gt;
* Is the system architecture stable enough?&lt;br /&gt;
* Have all the major risks been successfully identified and resolved?&lt;br /&gt;
* Is the plan for the construction phase accurate enough?&lt;br /&gt;
* Do all the stakeholders share the opinion that the vision can be achieved by executing the current plan?&lt;br /&gt;
* Is the actual vs planned resource expenditure in acceptable levels?&lt;br /&gt;
&lt;br /&gt;
If the project fails to pass the milestone, there is still time to be re-designed or even cancelled. However, when the project moves to the next phase the associated operation risks raise significantly and changes become much more difficult.&lt;br /&gt;
&lt;br /&gt;
==== Construction Phase====&lt;br /&gt;
The third phase is the construction phase. The focus of this phase, is to develop and integrate all the remaining components and application features into the product. In other words this is the phase where the vision is finally translated into a final stable product, which is based on the architecture that was developed during the previous phases. Most emphasize is given to resources, control and process management in order to fully optimize costs, schedules and quality. The existing prototype evolves via a number of iterations into a fully functional product that meets the stakeholders&#039; needs. The construction phase is usually the longest one of the project life cycle. The expected outcome of the construction phase includes:&lt;br /&gt;
&lt;br /&gt;
* First external release of the software.&lt;br /&gt;
* User manuals.&lt;br /&gt;
* A detailed description of the current release.&lt;br /&gt;
&lt;br /&gt;
At the end of the construction phase lies the third major project milestone; the &#039;&#039;&#039;Initial Operation Capability Milestone&#039;&#039;&#039;.&lt;br /&gt;
The construction phase has three evaluation criteria:&lt;br /&gt;
&lt;br /&gt;
* Is the software release stable enough to be given to the user community?&lt;br /&gt;
* Are all the stakeholders ready for the transition to the user community?&lt;br /&gt;
* Is the actual vs planned resource expenditure in acceptable levels?&lt;br /&gt;
&lt;br /&gt;
If the project fails to pass this milestone, transition may have to be postponed by one release.&lt;br /&gt;
&lt;br /&gt;
==== Transition Phase ====&lt;br /&gt;
The fourth and final phase is the transition phase. The focus of this phase is, as the word says, to transition the software product to the user community. It includes ensuring that the product has been developed to an acceptable quality level, by beta testing the software through the end users, and validating it against the stakeholders&#039; expectations. Once the product has been given for beta testing, a number of issues can arise, requiring the development of new releases (fixing bugs) and adding features that may have been postponed. The expected outcome of the transition phase includes:&lt;br /&gt;
&lt;br /&gt;
* Beta-testing to fix any major [https://en.wikipedia.org/wiki/Software_bug software bugs] and add any missing features.&lt;br /&gt;
* Conversion of operational databases&lt;br /&gt;
* Training of end users and maintainers.&lt;br /&gt;
* Marketing and distribution of the product.&lt;br /&gt;
&lt;br /&gt;
At the end of the transition phase lies the fourth and final major project milestone; the &#039;&#039;&#039;Product Release&#039;&#039;&#039;.&lt;br /&gt;
The transition phase has two evaluation criteria:&lt;br /&gt;
&lt;br /&gt;
* Are the end - users satisfied with the product?&lt;br /&gt;
* Is the actual vs planned resource expenditure in acceptable levels?&lt;br /&gt;
&lt;br /&gt;
==== Iterations ====&lt;br /&gt;
As stated before, every phase can consist of a number of iterations, depending on the project size and scope. RUP, in comparison to the traditional [https://en.wikipedia.org/wiki/Waterfall_model waterfall] approach, is heavily based on iterations. This gives a number of advantages and benefits to the project team, with the most important one being mitigating risks much more earlier in the project. Moreover change is more manageable and there is normally a higher level of reuse. Finally, iterations ensure an overall high quality in the final product and that the project team can learn throughout the developing process.&lt;br /&gt;
&lt;br /&gt;
=== Workflow Dimension - Disciplines ===&lt;br /&gt;
&lt;br /&gt;
[[File:activities.png|350px|right|thumb| Figure 4. Individuals, Roles and Activities]]&lt;br /&gt;
[[File:workflows.png|350px|right|thumb| Figure 5. Example of a workflow]]&lt;br /&gt;
&lt;br /&gt;
A process describes &#039;&#039;&#039;who&#039;&#039;&#039; is doing &#039;&#039;&#039;what&#039;&#039;&#039;, &#039;&#039;&#039;how&#039;&#039;&#039; and &#039;&#039;&#039;when&#039;&#039;&#039;. RUP addresses those terms with four modelling elements; &#039;&#039;&#039;Roles&#039;&#039;&#039;, &#039;&#039;&#039;Activities&#039;&#039;&#039;, &#039;&#039;&#039;Artifacts&#039;&#039;&#039; and &#039;&#039;&#039;Workflows&#039;&#039;&#039; respectively. The relationships between the role, activity and artifact is shown in Figure 3. A &#039;&#039;&#039;role&#039;&#039;&#039;, formally addressed as a worker, describes the behavior and responsibilities of an individual or a group of individuals in order to produce an artifact. Throughout the development of a project, a person can play one or a number of roles. Some examples of roles are the system analyst, designer, tester. &#039;&#039;&#039;Activities&#039;&#039;&#039; are expressed through behaviors. An activity, is a job that a person performs through his role, as seen in Figure 4. The length of an activity may vary from a few hours to a number of days. Examples of activities are: Plan an operation - performed by the role of Project Manager or add a missing feature - performed by the role of a software developer. All activities produce a meaningful result, called an artifact. &#039;&#039;&#039;Artifacts&#039;&#039;&#039;, are the responsibilities of ones role or roles and express a piece of information that is produced, modified or even used by a process. They can act both as input or output of an activity. Examples of artifacts are the source code, the business case, the software architecture. The roles perform activities that can produce a sequence of artifacts, called &#039;&#039;&#039;workflows&#039;&#039;&#039;. Examples of workflows can be seen in Figure 5. &lt;br /&gt;
&lt;br /&gt;
RUP identifies nine core process workflows, called &#039;&#039;&#039;disciplines&#039;&#039;&#039;. Every discipline, addresses a set of activities and artifacts, based upon a set of skills that are common in an ICT project. These disciplines have the ability to arrange the activities and artifacts in such a way, to provide an understanding of the overall project from a waterfall perspective.&lt;br /&gt;
&lt;br /&gt;
There are six core &amp;quot;engineering&amp;quot; disciplines:&lt;br /&gt;
* Business Modelling Discipline&lt;br /&gt;
* Requirements Discipline&lt;br /&gt;
* Analysis and Design Discipline&lt;br /&gt;
* Implementation Discipline&lt;br /&gt;
* Test Discipline&lt;br /&gt;
* Deployment Discipline&lt;br /&gt;
&lt;br /&gt;
And three core &amp;quot;supporting&amp;quot; disciplines:&lt;br /&gt;
* Project Management Discipline&lt;br /&gt;
* Configuration and Change Management Discipline&lt;br /&gt;
* Environment Discipline&lt;br /&gt;
&lt;br /&gt;
==== Business Modelling ====&lt;br /&gt;
&lt;br /&gt;
Miscommunication between the software engineering community and the business engineering community is one of the most common problems among most business engineering efforts. This means that the output from software development efforts is not correctly used as input to the business engineering and vice versa. The purpose of the Business Modelling discipline is to provide a common language between the two communities and create a direct coupling between software and business models. All business processes are documented using &amp;quot;use cases&amp;quot;. This assures that all stakeholders share the same understanding of the demanding organization.&lt;br /&gt;
&lt;br /&gt;
==== Requirements ====&lt;br /&gt;
The purpose of the requirements discipline is to describe in detail &#039;&#039;&#039;what&#039;&#039;&#039; the system should do. Based on that, a Vision document is created where required functionality and constraints are documented. Moreover, actors (end users) and use cases (behaviors of the system) are identified. Use cases are described in detail and each description clearly shows how the system interacts with the actors. This way an agreement is established between the customers and the rest of the stakeholders regarding the system&#039;s capabilities, user-interface and the end user&#039;s needs.&lt;br /&gt;
&lt;br /&gt;
==== Analysis and Design ====&lt;br /&gt;
&lt;br /&gt;
The purpose of the Analysis and Design discipline it to investigate &#039;&#039;&#039;how&#039;&#039;&#039; the system requirements will be translated into a detailed implementation plan. The system needs to:&lt;br /&gt;
* Perform exactly as described in the use-case descriptions.&lt;br /&gt;
* Fulfill all requirements.&lt;br /&gt;
* Have a robust structure.&lt;br /&gt;
&lt;br /&gt;
Analysis and Design result in the creation of a &#039;&#039;&#039;design model&#039;&#039;&#039;. The design model is an abstraction of the system&#039;s architecture and acts as a guide of how the source code should be finally written and structured.&lt;br /&gt;
&lt;br /&gt;
==== Implementation ====&lt;br /&gt;
The purpose of the Implementation discipline is to:&lt;br /&gt;
&lt;br /&gt;
* Arrange the code into subsystems, organized in layers.&lt;br /&gt;
* Implement classes and objects in terms of components.&lt;br /&gt;
* Uni-test the developed components to ensure quality.&lt;br /&gt;
* Integrate the results into an executable system.&lt;br /&gt;
&lt;br /&gt;
The whole system can be realized as an implementation of various components. RUP enables the integration of those components, in a revolutionary way, making the system easier to maintain and increasing the possibilities for future re-use.&lt;br /&gt;
&lt;br /&gt;
==== Test ====&lt;br /&gt;
&lt;br /&gt;
In the implementation discipline, all the developed components were uni-tested individually and were integrated into the system. The purpose of the Test discipline is to assess the system as a whole and verify the product quality. It is a mechanism to verify the smooth interaction between the various components, their proper integration into the system and finally ensure that all requirements have been successfully implemented. All tests are carried out along 4 quality dimensions:&lt;br /&gt;
* Functionality.&lt;br /&gt;
* Reliability.&lt;br /&gt;
* Application Performance.&lt;br /&gt;
* System Performance.&lt;br /&gt;
&lt;br /&gt;
==== Deployment ====&lt;br /&gt;
&lt;br /&gt;
The purpose of the Deployment discipline is primarily to develop product releases and distribute the software to the end – users. More specifically the Deployment discipline focuses at:&lt;br /&gt;
&lt;br /&gt;
* Developing external software releases&lt;br /&gt;
* Distributing the software&lt;br /&gt;
* Installing the software&lt;br /&gt;
* Providing help to the end – users&lt;br /&gt;
* Creating an up-to-date user manual&lt;br /&gt;
* Conducting beta testing&lt;br /&gt;
&lt;br /&gt;
==== Project Management ====&lt;br /&gt;
&lt;br /&gt;
The purpose of the Project Management discipline, is to successfully balance competing objectives, manage and mitigate risks and finally handle any constraints on delivering the product. Project management, ideally provides:&lt;br /&gt;
&lt;br /&gt;
* A framework for managing software-intensive projects.&lt;br /&gt;
* A framework to successfully manage risks.&lt;br /&gt;
* A framework to plan, execute and monitor projects.&lt;br /&gt;
&lt;br /&gt;
While the discipline does not guarantee success, the odds of delivering successful software are greatly improved.&lt;br /&gt;
&lt;br /&gt;
==== Configuration and Change Management ====&lt;br /&gt;
&lt;br /&gt;
The purpose of the Configuration and Change Management Discipline is to control, maintain and configure all the various artifacts that are produced by the different actors that are working on a project. During the software development life cycle, artifacts are regularly updated (changed). In order to understand the current state of an artifact, it is very important to keep track of its location and history; what was the reason and who decided to change the artifact. The discipline helps create a framework that keeps track of all the project assets.&lt;br /&gt;
&lt;br /&gt;
==== Environment ====&lt;br /&gt;
&lt;br /&gt;
The purpose of the environment discipline, is to provide the development team with all the processes, tools and methods for supporting all developing activities. It is responsible for producing a Development Kit, able to provide guidelines and templates for customizing processes.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Why RUP - Best Practices ==&lt;br /&gt;
&lt;br /&gt;
RUP captures many of the “best practices” that are currently used in modern software development and more particularly in industry by successful organizations. The practices are:&lt;br /&gt;
&lt;br /&gt;
* Develop Software Iteratively&lt;br /&gt;
* Manage Requirements&lt;br /&gt;
* Use component-based architectures&lt;br /&gt;
* Visually model software&lt;br /&gt;
* Continuously verify software quality&lt;br /&gt;
* Control changes to software&lt;br /&gt;
&lt;br /&gt;
=== Develop Software iteratively ===&lt;br /&gt;
&lt;br /&gt;
Today’s high sophisticated software systems, consist of many and complex structures which make it nearly impossible to define the entire system from the very beginning, develop the entire solution and then test the product in the end. RUP uses an iterative approach that allows an increasing understanding of the problem and developing a step – by – step solution, over multiple iterations. Each iteration ends with an executable release, which enables continuous end - user involvement and feedback. As a result, the risks of the project are mitigated at an early stage and stakeholders are ensured that the project requirements are fulfilled.&lt;br /&gt;
&lt;br /&gt;
=== Manage requirements ===&lt;br /&gt;
&lt;br /&gt;
The requirements of a system include the description of the services that the system is able to provide and its operational constraints. RUP documents, organizes and tracks required functionality and constraints and easily communicates business requirements. The use – cases that are used in the process are an excellent way to ensure that requirements are actually those elements that drive the design, implementation and testing of software, making it more likely that the final system fulfills the stakeholders needs.&lt;br /&gt;
&lt;br /&gt;
=== Use component-based architectures ===&lt;br /&gt;
&lt;br /&gt;
Component-based architecture makes the system dynamic; components are independent from the system and interact with other components through well-defined interfaces. Their in-dependency from the system, gives them a great flexibility meaning that they can easily be added, updated or totally replaced. RUP supports component-based software development by providing a systematic approach to defining an architecture using new and existing components.&lt;br /&gt;
&lt;br /&gt;
=== Visually model software ===&lt;br /&gt;
&lt;br /&gt;
A model is an abstraction of reality that can help better comprehend large and complex systems. Visual abstractions help the development team to easily communicate different aspects of the software and see how all the components fit together. RUP uses the Unified Modelling Language (UML) standard which is a graphical language for visualizing and constructing the artifacts of a software-intensive system.&lt;br /&gt;
&lt;br /&gt;
=== Continuously verify software quality ===&lt;br /&gt;
=== Control changes to software ===&lt;br /&gt;
&lt;br /&gt;
== Limitations ==&lt;br /&gt;
&lt;br /&gt;
== Conclusion ==&lt;/div&gt;</summary>
		<author><name>Lessisv</name></author>
	</entry>
</feed>