CSC/ECE 517 Fall 2013/ch1 1w48 x: Difference between revisions

From Expertiza_Wiki
Jump to navigation Jump to search
No edit summary
 
(118 intermediate revisions by the same user not shown)
Line 1: Line 1:
= Introduction =
= Introduction =
Object-Oriented(O-O) design tools are mainly used to create UML visual model for software design, such as the IBM® Rational Rose®, Microsoft Visio and PowerDesigner.
The Unified Modeling Language(UML) is a standardized language approved by the Objective Management Group&trade; (OMG&trade;). UML is used for sepcifying, visualizing, constructing, and documenting models in software systems.The UML was developed by Grady Booch, Ivar Jacobson and James Rumbaugh at Rational Software in the 1990s.<ref>Marc Hamilton (1999) ''Software Development: A Guide to Building Reliable Systems'' p.48</ref>The UML has synthesized the notations of the Booch method, the Object-modeling technique (OMT) and Object-oriented software engineering (OOSE) by fusing them into a single, common and widely usable modeling language.<ref>OMG Unified Modeling Language (OMG UML), Superstructure. Version 2.4.1 http://www.omg.org/spec/UML/2.4.1/Superstructure</ref>


The Unified Modeling Language(UML) is a standardized language approved by the Objective Management Group&trade; (OMG&trade;). UML is used for sepcifying, visualizing, constructing, and documenting models in software systems.The Unified Modeling Language was developed by Grady Booch, Ivar Jacobson and James Rumbaugh at Rational Software in the 1990s.<ref>Marc Hamilton (1999) ''Software Development: A Guide to Building Reliable Systems'' p.48</ref>UML has synthesized the notations of the Booch method, the Object-modeling technique (OMT) and Object-oriented software engineering (OOSE) by fusing them into a single, common and widely usable modeling language.<ref>{{cite web|url=http://www.omg.org/spec/UML/2.4.1/Superstructure |title=OMG Unified Modeling Language (OMG UML), Superstructure. Version 2.4.1 |publisher=Object Management Group |accessdate=2013-03-28}}</ref>
== O-O Design Tools ==
There are a lot of object oriented design tools can be used for software development.<ref>List of UML modeling tools http://en.wikipedia.org/wiki/List_of_Unified_Modeling_Language_tools</ref> Rational Rose&reg; and Enterprise Architect are the most popular commercial design tools used for developing complex software system.


=== O-O Design Tools ===
====IBM&reg; Rational Rose&reg;====
There are a lot of object oriented design tools can be used for software development.  
Rational Rose&reg;<ref>IBM&reg; Rational Rose&reg; family http://www-03.ibm.com/software/products/us/en/ratirosefami</ref> is a set of UML modeling tools for software design, which is produced and marketed by the Rational division of IBM (previous Rational Software Corporation, the developer of UML). By use of Rational Rose&reg; software engineers can create visual models of software architectures, databases, application requirements and reusable assets. The Rational Rose&reg; product family provides a set of model-driven capabilities for developing Java Platform, UNIX and Linux Platforms, and Microsoft Visual Studio-based software applications.  Rational Rose&reg; includes tools for reverse engineering and code generation of classes and architectures, for example, it allows software developers to generate code for Java Enterprise Edition software applications from visual models using the UML. Rational Rose&reg; supports various of software development languages, it offers round-trip engineering for Ada, ANSI C++, C, C++, CORBA, Java, MicrosoftVisual Basic and MicrosoftVisual C++ languages, as well as database designs.<ref>IBM Rational Rose Datasheet ftp://public.dhe.ibm.com/software/rational/web/datasheets/rose_ds.pdf</ref> Rational Rose&reg; provides full team support. The team management features support the development of large and complex projects. By the help of configuration management and version control system, changes made to a model can be set available to other teammates. Rational Rose&reg; helps teams create rich applications based on robust architectures.<ref>IBM Rational Rose Datasheet ftp://public.dhe.ibm.com/software/rational/web/datasheets/rose_ds.pdf</ref>
 
====Enterprise Architect====
Enterprise Architect is a visual modeling, comprehensive UML analysis and design tool.
Enterprise Architect supports a number of methods of modeling business processes using UML as the foundation modeling language.<ref>Enterprise Architect http://en.wikipedia.org/wiki/Enterprise_Architect_(Visual_Modeling_Platform)#General_features</ref>
Enterprise Architect supports round-trip engineering (generation and reverse engineering) of source code for many programming languages, such as ActionScript, C, C++, C#, PHP, Python and so on.<ref>Enterprise Architect http://www.sparxsystems.com/products/ea/index.html</ref> Like Rational Rose&reg;, Enterprise Architect also provides full life cycle support for software and system engineering. The reverse engineering supported by Enterprise Architect can help developers visualize applications of a wide range of programming languages and database repository schema.
 
====Microsoft Visio ====
Microsoft Visio is a diagramming and vector graphics application. In Microsoft Visio Professional 2000, it first time provide support for UML modeling. The Microsoft Visio UML Model Diagram template provides full support for creating object-oriented models of complex software system. But it only support programming languages developed by Microsoft, such as Visual Basic, Visual Basic.NET and Microsoft Visual C#.NET.
 
== Agile Development ==
==== Overview ====
[[File:AgileDevelopment.gif|frame|Iterative requirement definition process<ref>Support agile development by using IBM Rational Requirements Composer http://www.ibm.com/developerworks/rational/library/09/supportagiledevelopmentbyusingibmrationalrequirementscomposer/ </ref>]]
Agile development is a methodology that reduces software development cost and risk, improves quality and enhances your customers’ satisfaction by better meeting their needs and expectations.<ref>IBM what is agile? http://www-01.ibm.com/software/rational/agile/</ref> Agile development methods promote evolutionary development, teamwork, collaboration, and process adaptability throughout the life-cycle of the project, and encourage rapid and flexible response to change.<ref>Agile software development http://en.wikipedia.org/wiki/Agile_software_development</ref>
 
Agile development is based on iterative and incremental development. It break tasks into small increments with minimal planning and do not directly involve long-term planning. Iterations are short time frames that typically last from one to four weeks. Each iteration involves a cross function team working in all functions: planning, requirements analysis, design, coding, unit testing, and acceptance testing.At the end of the iteration a working product is demonstrated to stakeholders. This minimizes overall risk and allows the project to adapt to changes quickly.  An iteration might not add enough functionality to warrant a market release, but the goal is to have an available release (with minimal bugs) at the end of each iteration.<ref name="embracing change"> Beck, Kent (1999). "Embracing Change with Extreme Programming". Computer 32 (10): 70–77. doi:10.1109/2.796139</ref> Multiple iterations might be required to release a product or new features.
 
A customer representative is appointed by stakeholders to act on their behalf and makes a personal commitment to being available for Developers to answer mid-iteration questions in every agile team.<ref>Gauthier, Alexandre (17 August 2011). "What is scrum". Planbox. http://support.planbox.com/knowledgebase/topics/34844-agile-project-management-resources#roles</ref> After each iteration, stakeholders will review progress and evaluate priorities with a view to optimizing the return on investment and ensuring alignment with customer needs and company goals.<ref>Agile software development http://en.wikipedia.org/wiki/Agile_software_development#cite_ref-12</ref>
 
==== Agile Manifesto ====
In February 2001, 17 software developers<ref>Kent Beck, Mike Beedle, Arie van Bennekum, Alistair Cockburn, Ward Cunningham, Martin Fowler, James Grenning, Jim Highsmith, Andrew Hunt, Ron Jeffries, Jon Kern, Brian Marick, Robert C. Martin, Stephen J. Mellor, Ken Schwaber, Jeff Sutherland, and Dave Thomas</ref> published the Manifesto for Agile Software Development to define the approach now known as agile software development at Snowbird, Utah.Some of the authors formed the Agile Alliance<ref>Agile Alliance http://www.agilealliance.org/</ref><ref>Agile software development http://en.wikipedia.org/wiki/Agile_software_development</ref>, a nonprofit organization that support those who explore and apply Agile principles and practices to make the software industry productive, humane, and sustainable.<ref>The Alliance Mission and operations http://www.agilealliance.org/the-alliance/</ref>
The Agile Manifesto reads, in its entirety, as follows:<ref>Manifesto for Agile Software Development http://agilemanifesto.org/</ref>
 
 
<div class="center" style="width: auto; margin-left: auto; margin-right: auto;">
 
We are uncovering better ways of developing
 
software by doing it and helping others do it.
 
Through this work we have come to value:
 
<span style="font-size: 150%">'''Individuals and interactions'''</span> over processes and tools
 
<span style="font-size: 150%">'''Working software'''</span> over comprehensive documentation
 
<span style="font-size: 150%">'''Customer collaboration'''</span> over contract negotiation
 
<span style="font-size: 150%">'''Responding to change'''</span> over following a plan
 
 
That is, while there is value in the items on
 
the right, we value the items on the left more.
 
</div>
The further explanation of the manifesto items on the left with the agile software development context are describe as follow:<ref>Ambler, S.W. "Examining the Agile Manifesto". Retrieved 6 April 2011. http://www.ambysoft.com/essays/agileManifesto.html</ref>
 
* Individuals and interactions – in agile development, self-organization and motivation are important, as are interactions like co-location and pair programming.
* Working software – working software will be more useful and welcome than just presenting documents to clients in meetings.
* Customer collaboration – requirements cannot be fully collected at the beginning of the software development cycle, therefore continuous customer or stakeholder involvement is very important.
* Responding to change – agile development is focused on quick responses to change and continuous development.
 
The authors of Agile Manifesto refined the philosophies captured in agile manifesto into a collection of twelve principles to get a better understanding of agile methods.<ref>Principles behind the Agile Manifesto http://www.agilemanifesto.org/principles.html</ref>
# Our highest priority is to satisfy the customer through early and continuous delivery of valuable software.
# Welcome changing requirements, even late in development. Agile processes harness change for the customer's competitive advantage.
# Deliver working software frequently, from a couple of weeks to a couple of months, with a preference to the shorter timescale.
# Business people and developers must work together daily throughout the project.
# Build projects around motivated individuals. Give them the environment and support they need, and trust them to get the job done.
# The most efficient and effective method of conveying information to and within a development team is face-to-face conversation.
# Working software is the primary measure of progress.
# Agile processes promote sustainable development. The sponsors, developers, and users should be able to maintain a constant pace indefinitely.
# Continuous attention to technical excellence and good design enhances agility.
# Simplicity--the art of maximizing the amount of work not done--is essential.
# The best architectures, requirements, and designs emerge from self-organizing teams.
# At regular intervals, the team reflects on how to become more effective, then tunes and adjusts its behavior accordingly.
 
====Agile Methods====
 
Common agile software development methods include:
* Extreme Programming(XP)
* Scrum
* Test-Driven Development (TDD)
* Agile Modeling
* Agile Unified Process (ATDD)
* Continuous Integration (CI)
* Crystal Clear
* Crystal Methods
* Dynamic Systems Development Method (DSDM)
* Feature Driven Development(FDD)
* Graphical System Design
 
= Agile Development with IBM&reg; Rational&reg; =
 
IBM&reg; Rational&reg; has integrated tooling to plan, build and deliver agile projects for software and products. An adaptive process framework provided by Rational allowing developers to automate and replicate agile best practices. It also support team agile development. Tools and best practice support to extend agile to product and systems development, support large and distributed teams, and effectively meet compliance mandates.<ref>Agile Development http://www-01.ibm.com/software/rational/agile/</ref>The IBM Rational&reg; Products can help product development teams to be more agile by providing agile planning and execution, allowing teams to flexibly plan and manage delivery. Rational&reg; products also provide life cycle capabilities including requirements management, model based architecture and design, quality management and change and configuration management.
 
= A step-by-step example: Fantasy Bookstore =
An online bookstore application will be used as example to show how Rational Requirements Composer fits into the agile development process.<ref>Support agile development by using IBM Rational Requirements Composer
http://www.ibm.com/developerworks/rational/library/09/supportagiledevelopmentbyusingibmrationalrequirementscomposer/</ref>
 
<span style="font-size: 120%">'''Project description:'''</span>
 
Fantasy Bookstore is an online bookstore application used to sell books in various categories. It supports several payment methods, remittances, Cash on Delivery (COD), credit cards.
To define the requirements of Fantasy Bookstore, you can follow the process explained previously.
 
<span style="font-size: 120%">'''Preparation steps'''</span>
 
<span style="font-size: 110%">'''Set up the project'''</span>
 
* After installing and configuring Rational Requirements Composer server, you need to connect to a repository that connects you to a Rational Requirements Composer server where your team can create projects and store project artifacts.
* Then you can create a project named Fantasy Bookstore , using the base project template, which includes the attributes group only.
 
[[File:Connect to the repository.jpg]]
 
<span style="font-size: 120%">'''Create and add users to the project'''</span>
After creating the project, use the administration page to add users to the project and assign member roles. In our bookstore project, we grouped the team into three roles:
* '''Administrator:''' Perform administration actions, such as setting up project and folders, manage user access, and so forth
* '''Author:''' Compose project artifacts.
* '''Reviewer:''' Review project artifacts and provide comments.
 
 
[[File:Manage user roles in Rational Requirements Composer.jpg]]
 
<span style="font-size: 130%">'''1. Assess the problem and upload artifacts'''</span>
 
The business analyst interviews the client to gather documents and information for the Fantasy Bookstore. Then the analyst imports the documents into Rational Requirements Composer.
 
* In the created project, you can create folders to contain various project artifacts.
* For the existing artifacts, such as documents and images, you can use the upload feature or just drag the file from your local folder to the Rational Requirements Composer folder view. In our project, we uploaded the document for the result of the interview with the stakeholder.
 
[[File:Upload the document to the project.jpg]]
 
<span style="font-size: 130%">'''2. Document the assessment'''</span>
The business analyst creates a series of documents and other artifacts to express the current system and the proposed solution.
 
* '''Glossaries:''' The business analyst extracts terms from the results of the interview with the stakeholder to create project glossary entries, such as those for catalog, shopping cart, common user, VIP user, and so forth.
* '''Use cases:''' Like other requirement analysis tools, Rational Requirements Composer provides tools and views to create use cases. Before you write use cases, create three types of actors in the bookstore project: administrator, user, VIP user. Then create seven use cases in the Fantasy Bookstore project. In the use case, you can easily add other existing artifacts in the project. The screen capture in The figure below shows lists all use cases in Fantasy Bookstore project.
 
[[File:Use cases.jpg]]
 
* '''Use case diagram:''' In Rational Requirements Composer, you can easily compose the use case diagram by using the existing use cases and actors, or you can simply create new ones.
 
[[File:Use case diagram.jpg]]
 
* '''Sketches:''' An important feature in Rational Requirements Composer is that it provides a handy palette and widgets to create a draft of the user interface (called the sketch) that is easy to compose and modify. The sketches help development teams to understand the requirement and present their designs in a convenient way. It is very useful in agile development projects, especially when using iterative design and implementation methods.
Sketches are composed of images, parts, panels, and pages.
* '''Part:''' You can create a common part that can be used in multipage pages. In the Fantasy Bookstore project, Victor, the UI designer, creates a header part, which is the common header of all pages, as following the screen captures in Figure 7 shows.
 
[[File:Part.jpg]]
 
* '''Panel:''' Multiple UI controls can compose a panel. Victor groups a text area and a button to create a sign-in panel (see Figure below).
 
[[File:Panel.jpg]]
 
 
* '''Page:''' By combining parts and panels, you can create pages. Victor adds the header part and sig- in panel to form the sign-in page. Besides the sign-in page, Victor also creates book search pages and payment pages for other use cases (see the three examples that follow).
 
[[File:Sign-in page.jpg]]


Rational Rose&reg;, Visio, and PowerDesign are three most popular UML modeling tools used in software development.  
[[File:Search Page.jpg]]


====IBM&reg; Rational Rose&reg;====
[[File:Payment selection page.jpg]]
Rational Rose&reg; is a set of UML modeling tools for software design, which is produced and marketed by the Rational division of IBM (previous Rational Software Corporation, the developer of UML). By use of Rational Rose&reg; software engineers can create visual models of software architectures, databases, application requirements and reusable assets. The Rational Rose&reg; product family provides a set of model-driven capabilities for developing Java Platform, UNIX and Linux Platforms, and Microsoft Visual Studio-based software applications. Rational Rose&reg; includes tools for reverse engineering and forward engineering of classes and architectures, for example, it allows software developers to generate code for Java Enterprise Edition software applications from visual models using the UML. Rational Rose&reg; provides full team support. By the help of configuration management and version control system, changes made to a model can be set available to other teammates. Another advantage of Rational Rose is Add-Ins feature. This allows developers to install programming languages, such as C++, PowerBuilder, Forte, java, Visual Basic, and XML to generate necessary codes.  
 
 
* '''Screen flow:''' After you have created sketches, you can create screen flow documentation to indicate the flow of pages.
* '''Storyboard:''' Storyboards present a whole user story by frames that are composed of sketches. With a storyboard, stakeholders can easily review the whole flow of the user interface and interactions. Based on the sketches, Victor creates the storyboard of a whole book shopping story. The story includes the following use cases: sign in > search a book > view book detail > add book to cart > view cart > pay for the book. The story board is composed of frames in these use cases, as Figure 12 shows. Rational Requirements Composer provides an easy way to create frames from existing sketches or previous frames. Because Fantasy Bookstore supports two payment methods, remittance and Cash on Delivery (COD), Victor creates two storyboards for these two methods.
 
[[File:Storyboard of book shopping.jpg]]
 
* '''Define requirements:''' You can create requirements from existing artifacts. For example, you can open a storyboard, right-click on the component that you want to draft a requirement for, and then select Mark As Requirement to add a requirement in Rational Requirements Composer. You can also open other artifacts, such as a use case document, and highlight text to extract a requirement, as figure below illustrates.
 
[[File:Extract requirement in context.jpg]]
 
For example, in the sign-in panel, we created three requirements (see Figure 14):
* The password should be invisible.
* Show an error message if the user ID or password is invalid.
* The length of the user ID is from 3 to 20 characters.
 
[[File:Sign-in requirement.jpg]]
 
<span style="font-size: 120%">'''Review the assessments'''</span>
 
After creating the artifacts and requirements, Victor invites other team members to review the assessment documentation and add comments. He sends a link to the project home page to team members in an e-mail message. He specifies the scope and purpose of the review. Team members log in to the project, navigate from the home page to the review documents and artifacts, and add comments. Comments can be added to any project artifact. Figure 15 shows an example, where Alice asks questions that she adds as comments on the sign-in page. Victor answers her questions by adding his replies as comments. All comments can be tracked easily.
 
[[File:Comments in reviews of the sign-in page assessment.jpg]]
 
<span style="font-size: 120%">'''Present to stakeholders and get feedback'''</span>
 
There are two ways to present the artifacts to stakeholders:
* Export the artifacts as Microsoft® Word documents. Stakeholders can then view these artifacts locally.
* Present them by using the Web UI. Stakeholders can log into the Rational Requirements Composer server Web UI to review the project artifacts and can also add comments directly, as Figure 16 shows.
 
[[File:Review the assessments view in the Web UI.jpg]]


After reviewing the two payment storyboards, a stakeholder proposed a change: "The bookstore should support payment by credit cards." This is a change to the requirement. Therefore, the artifact author, Victor, modifies the related artifacts to incorporate this change.


* Add a new interview result document for this change.
* Modify glossaries by adding a term, "credit card."
* Modify payment use cases by adding a third payment method.
* Modify the payment sketch by adding the credit card option.
* Add a storyboard for payment by credit card.
* Add a requirement of payment by credit card.


List of Tools, most of them are released before 2007.
Figures listed below illustrate the modifications to payment sketches. Because sketches are composed from different parts and panels, it is easy to modify existing sketches for the change requirement.
Compare them


=== Agile Development ===
[[File:Add payment method option.jpg]]


= Examples =
[[File:Add credit card input.jpg]]
O-O Design Tools example. Rational Rose


= Hyperlinks to important terms =
[[File:Add credit card information on confirmation page.jpg]]
UML


List of UML Modeling tools
Steps 5 to 7 can be repeated iteratively until all requirements are clarified and the user interface is confirmed with stakeholders. This can fit into agile development process easily.


How to choose a UML modeling tool
<span style="font-size: 120%">'''Deliver and manage requirement baseline in Rational RequisitePro'''</span>


Rational Rose
With iterations from step 2 to step 4, you can define the requirement baseline of the project. To manage requirements, the business analyst adds the requirements with Rational RequisitePro. Rational Requirements Composer is designed to integrate with Rational RequisitePro to cooperate in requirements management. You can choose to create and manage requirements in a Rational RequisitePro project and then import them into a Rational Requirements Composer project for more definition and elaboration. Similarly, you can define requirements in Rational Requirements Composer and add the requirements to a Rational RequisitePro project.


Microsoft Visio
= Hyperlinks to important terms =


PowerDesign
# [http://www.amazon.com/dp/0131111558/?tag=stackoverfl08-20 Agile and Iterative Development: A Manager's Guide]
# [http://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=796139 Beck, Kent (1999). "Embracing Change with Extreme Programming". Computer 32 (10): 70–77. doi:10.1109/2.796139]
# [http://www.ambysoft.com/essays/agileManifesto.html Ambler, S.W. "Examining the Agile Manifesto". Retrieved 6 April 2011.]
# [http://www.ibm.com/developerworks/rational/library/09/supportagiledevelopmentbyusingibmrationalrequirementscomposer/index.html Support agile development by using IBM Rational Requirements Composer]
# [http://www.ibm.com/developerworks/rational/agile/outsourcing-agile-development-projects-1/index.html Outsourcing agile development projects: Part 1. Key things to consider before you start]
# [http://www.ibm.com/developerworks/rational/agile/outsourcing-agile-development-projects-2/index.html Outsourcing agile development projects: Part 2. Top five tips for success]
# [http://www-01.ibm.com/software/rational/uml/ IBM Rational Software's UML Resource Page]


IBM Rational Software's UML Resource Page http://www-01.ibm.com/software/rational/uml/
= References =
= References =
<references/>
<references/>

Latest revision as of 04:24, 7 October 2013

Introduction

Object-Oriented(O-O) design tools are mainly used to create UML visual model for software design, such as the IBM® Rational Rose®, Microsoft Visio and PowerDesigner. The Unified Modeling Language(UML) is a standardized language approved by the Objective Management Group™ (OMG™). UML is used for sepcifying, visualizing, constructing, and documenting models in software systems.The UML was developed by Grady Booch, Ivar Jacobson and James Rumbaugh at Rational Software in the 1990s.<ref>Marc Hamilton (1999) Software Development: A Guide to Building Reliable Systems p.48</ref>The UML has synthesized the notations of the Booch method, the Object-modeling technique (OMT) and Object-oriented software engineering (OOSE) by fusing them into a single, common and widely usable modeling language.<ref>OMG Unified Modeling Language (OMG UML), Superstructure. Version 2.4.1 http://www.omg.org/spec/UML/2.4.1/Superstructure</ref>

O-O Design Tools

There are a lot of object oriented design tools can be used for software development.<ref>List of UML modeling tools http://en.wikipedia.org/wiki/List_of_Unified_Modeling_Language_tools</ref> Rational Rose® and Enterprise Architect are the most popular commercial design tools used for developing complex software system.

IBM® Rational Rose®

Rational Rose®<ref>IBM® Rational Rose® family http://www-03.ibm.com/software/products/us/en/ratirosefami</ref> is a set of UML modeling tools for software design, which is produced and marketed by the Rational division of IBM (previous Rational Software Corporation, the developer of UML). By use of Rational Rose® software engineers can create visual models of software architectures, databases, application requirements and reusable assets. The Rational Rose® product family provides a set of model-driven capabilities for developing Java Platform, UNIX and Linux Platforms, and Microsoft Visual Studio-based software applications. Rational Rose® includes tools for reverse engineering and code generation of classes and architectures, for example, it allows software developers to generate code for Java Enterprise Edition software applications from visual models using the UML. Rational Rose® supports various of software development languages, it offers round-trip engineering for Ada, ANSI C++, C, C++, CORBA, Java, MicrosoftVisual Basic and MicrosoftVisual C++ languages, as well as database designs.<ref>IBM Rational Rose Datasheet ftp://public.dhe.ibm.com/software/rational/web/datasheets/rose_ds.pdf</ref> Rational Rose® provides full team support. The team management features support the development of large and complex projects. By the help of configuration management and version control system, changes made to a model can be set available to other teammates. Rational Rose® helps teams create rich applications based on robust architectures.<ref>IBM Rational Rose Datasheet ftp://public.dhe.ibm.com/software/rational/web/datasheets/rose_ds.pdf</ref>

Enterprise Architect

Enterprise Architect is a visual modeling, comprehensive UML analysis and design tool. Enterprise Architect supports a number of methods of modeling business processes using UML as the foundation modeling language.<ref>Enterprise Architect http://en.wikipedia.org/wiki/Enterprise_Architect_(Visual_Modeling_Platform)#General_features</ref> Enterprise Architect supports round-trip engineering (generation and reverse engineering) of source code for many programming languages, such as ActionScript, C, C++, C#, PHP, Python and so on.<ref>Enterprise Architect http://www.sparxsystems.com/products/ea/index.html</ref> Like Rational Rose®, Enterprise Architect also provides full life cycle support for software and system engineering. The reverse engineering supported by Enterprise Architect can help developers visualize applications of a wide range of programming languages and database repository schema.

Microsoft Visio

Microsoft Visio is a diagramming and vector graphics application. In Microsoft Visio Professional 2000, it first time provide support for UML modeling. The Microsoft Visio UML Model Diagram template provides full support for creating object-oriented models of complex software system. But it only support programming languages developed by Microsoft, such as Visual Basic, Visual Basic.NET and Microsoft Visual C#.NET.

Agile Development

Overview

Iterative requirement definition process<ref>Support agile development by using IBM Rational Requirements Composer http://www.ibm.com/developerworks/rational/library/09/supportagiledevelopmentbyusingibmrationalrequirementscomposer/ </ref>

Agile development is a methodology that reduces software development cost and risk, improves quality and enhances your customers’ satisfaction by better meeting their needs and expectations.<ref>IBM what is agile? http://www-01.ibm.com/software/rational/agile/</ref> Agile development methods promote evolutionary development, teamwork, collaboration, and process adaptability throughout the life-cycle of the project, and encourage rapid and flexible response to change.<ref>Agile software development http://en.wikipedia.org/wiki/Agile_software_development</ref>

Agile development is based on iterative and incremental development. It break tasks into small increments with minimal planning and do not directly involve long-term planning. Iterations are short time frames that typically last from one to four weeks. Each iteration involves a cross function team working in all functions: planning, requirements analysis, design, coding, unit testing, and acceptance testing.At the end of the iteration a working product is demonstrated to stakeholders. This minimizes overall risk and allows the project to adapt to changes quickly. An iteration might not add enough functionality to warrant a market release, but the goal is to have an available release (with minimal bugs) at the end of each iteration.<ref name="embracing change"> Beck, Kent (1999). "Embracing Change with Extreme Programming". Computer 32 (10): 70–77. doi:10.1109/2.796139</ref> Multiple iterations might be required to release a product or new features.

A customer representative is appointed by stakeholders to act on their behalf and makes a personal commitment to being available for Developers to answer mid-iteration questions in every agile team.<ref>Gauthier, Alexandre (17 August 2011). "What is scrum". Planbox. http://support.planbox.com/knowledgebase/topics/34844-agile-project-management-resources#roles</ref> After each iteration, stakeholders will review progress and evaluate priorities with a view to optimizing the return on investment and ensuring alignment with customer needs and company goals.<ref>Agile software development http://en.wikipedia.org/wiki/Agile_software_development#cite_ref-12</ref>

Agile Manifesto

In February 2001, 17 software developers<ref>Kent Beck, Mike Beedle, Arie van Bennekum, Alistair Cockburn, Ward Cunningham, Martin Fowler, James Grenning, Jim Highsmith, Andrew Hunt, Ron Jeffries, Jon Kern, Brian Marick, Robert C. Martin, Stephen J. Mellor, Ken Schwaber, Jeff Sutherland, and Dave Thomas</ref> published the Manifesto for Agile Software Development to define the approach now known as agile software development at Snowbird, Utah.Some of the authors formed the Agile Alliance<ref>Agile Alliance http://www.agilealliance.org/</ref><ref>Agile software development http://en.wikipedia.org/wiki/Agile_software_development</ref>, a nonprofit organization that support those who explore and apply Agile principles and practices to make the software industry productive, humane, and sustainable.<ref>The Alliance Mission and operations http://www.agilealliance.org/the-alliance/</ref> The Agile Manifesto reads, in its entirety, as follows:<ref>Manifesto for Agile Software Development http://agilemanifesto.org/</ref>


We are uncovering better ways of developing

software by doing it and helping others do it.

Through this work we have come to value:

Individuals and interactions over processes and tools

Working software over comprehensive documentation

Customer collaboration over contract negotiation

Responding to change over following a plan


That is, while there is value in the items on

the right, we value the items on the left more.

The further explanation of the manifesto items on the left with the agile software development context are describe as follow:<ref>Ambler, S.W. "Examining the Agile Manifesto". Retrieved 6 April 2011. http://www.ambysoft.com/essays/agileManifesto.html</ref>

  • Individuals and interactions – in agile development, self-organization and motivation are important, as are interactions like co-location and pair programming.
  • Working software – working software will be more useful and welcome than just presenting documents to clients in meetings.
  • Customer collaboration – requirements cannot be fully collected at the beginning of the software development cycle, therefore continuous customer or stakeholder involvement is very important.
  • Responding to change – agile development is focused on quick responses to change and continuous development.

The authors of Agile Manifesto refined the philosophies captured in agile manifesto into a collection of twelve principles to get a better understanding of agile methods.<ref>Principles behind the Agile Manifesto http://www.agilemanifesto.org/principles.html</ref>

  1. Our highest priority is to satisfy the customer through early and continuous delivery of valuable software.
  2. Welcome changing requirements, even late in development. Agile processes harness change for the customer's competitive advantage.
  3. Deliver working software frequently, from a couple of weeks to a couple of months, with a preference to the shorter timescale.
  4. Business people and developers must work together daily throughout the project.
  5. Build projects around motivated individuals. Give them the environment and support they need, and trust them to get the job done.
  6. The most efficient and effective method of conveying information to and within a development team is face-to-face conversation.
  7. Working software is the primary measure of progress.
  8. Agile processes promote sustainable development. The sponsors, developers, and users should be able to maintain a constant pace indefinitely.
  9. Continuous attention to technical excellence and good design enhances agility.
  10. Simplicity--the art of maximizing the amount of work not done--is essential.
  11. The best architectures, requirements, and designs emerge from self-organizing teams.
  12. At regular intervals, the team reflects on how to become more effective, then tunes and adjusts its behavior accordingly.

Agile Methods

Common agile software development methods include:

  • Extreme Programming(XP)
  • Scrum
  • Test-Driven Development (TDD)
  • Agile Modeling
  • Agile Unified Process (ATDD)
  • Continuous Integration (CI)
  • Crystal Clear
  • Crystal Methods
  • Dynamic Systems Development Method (DSDM)
  • Feature Driven Development(FDD)
  • Graphical System Design

Agile Development with IBM® Rational®

IBM® Rational® has integrated tooling to plan, build and deliver agile projects for software and products. An adaptive process framework provided by Rational allowing developers to automate and replicate agile best practices. It also support team agile development. Tools and best practice support to extend agile to product and systems development, support large and distributed teams, and effectively meet compliance mandates.<ref>Agile Development http://www-01.ibm.com/software/rational/agile/</ref>The IBM Rational® Products can help product development teams to be more agile by providing agile planning and execution, allowing teams to flexibly plan and manage delivery. Rational® products also provide life cycle capabilities including requirements management, model based architecture and design, quality management and change and configuration management.

A step-by-step example: Fantasy Bookstore

An online bookstore application will be used as example to show how Rational Requirements Composer fits into the agile development process.<ref>Support agile development by using IBM Rational Requirements Composer

http://www.ibm.com/developerworks/rational/library/09/supportagiledevelopmentbyusingibmrationalrequirementscomposer/</ref>

Project description:

Fantasy Bookstore is an online bookstore application used to sell books in various categories. It supports several payment methods, remittances, Cash on Delivery (COD), credit cards. To define the requirements of Fantasy Bookstore, you can follow the process explained previously.

Preparation steps

Set up the project

  • After installing and configuring Rational Requirements Composer server, you need to connect to a repository that connects you to a Rational Requirements Composer server where your team can create projects and store project artifacts.
  • Then you can create a project named Fantasy Bookstore , using the base project template, which includes the attributes group only.

Create and add users to the project After creating the project, use the administration page to add users to the project and assign member roles. In our bookstore project, we grouped the team into three roles:

  • Administrator: Perform administration actions, such as setting up project and folders, manage user access, and so forth
  • Author: Compose project artifacts.
  • Reviewer: Review project artifacts and provide comments.


1. Assess the problem and upload artifacts

The business analyst interviews the client to gather documents and information for the Fantasy Bookstore. Then the analyst imports the documents into Rational Requirements Composer.

  • In the created project, you can create folders to contain various project artifacts.
  • For the existing artifacts, such as documents and images, you can use the upload feature or just drag the file from your local folder to the Rational Requirements Composer folder view. In our project, we uploaded the document for the result of the interview with the stakeholder.

2. Document the assessment The business analyst creates a series of documents and other artifacts to express the current system and the proposed solution.

  • Glossaries: The business analyst extracts terms from the results of the interview with the stakeholder to create project glossary entries, such as those for catalog, shopping cart, common user, VIP user, and so forth.
  • Use cases: Like other requirement analysis tools, Rational Requirements Composer provides tools and views to create use cases. Before you write use cases, create three types of actors in the bookstore project: administrator, user, VIP user. Then create seven use cases in the Fantasy Bookstore project. In the use case, you can easily add other existing artifacts in the project. The screen capture in The figure below shows lists all use cases in Fantasy Bookstore project.

  • Use case diagram: In Rational Requirements Composer, you can easily compose the use case diagram by using the existing use cases and actors, or you can simply create new ones.

  • Sketches: An important feature in Rational Requirements Composer is that it provides a handy palette and widgets to create a draft of the user interface (called the sketch) that is easy to compose and modify. The sketches help development teams to understand the requirement and present their designs in a convenient way. It is very useful in agile development projects, especially when using iterative design and implementation methods.

Sketches are composed of images, parts, panels, and pages.

  • Part: You can create a common part that can be used in multipage pages. In the Fantasy Bookstore project, Victor, the UI designer, creates a header part, which is the common header of all pages, as following the screen captures in Figure 7 shows.

  • Panel: Multiple UI controls can compose a panel. Victor groups a text area and a button to create a sign-in panel (see Figure below).


  • Page: By combining parts and panels, you can create pages. Victor adds the header part and sig- in panel to form the sign-in page. Besides the sign-in page, Victor also creates book search pages and payment pages for other use cases (see the three examples that follow).


  • Screen flow: After you have created sketches, you can create screen flow documentation to indicate the flow of pages.
  • Storyboard: Storyboards present a whole user story by frames that are composed of sketches. With a storyboard, stakeholders can easily review the whole flow of the user interface and interactions. Based on the sketches, Victor creates the storyboard of a whole book shopping story. The story includes the following use cases: sign in > search a book > view book detail > add book to cart > view cart > pay for the book. The story board is composed of frames in these use cases, as Figure 12 shows. Rational Requirements Composer provides an easy way to create frames from existing sketches or previous frames. Because Fantasy Bookstore supports two payment methods, remittance and Cash on Delivery (COD), Victor creates two storyboards for these two methods.

  • Define requirements: You can create requirements from existing artifacts. For example, you can open a storyboard, right-click on the component that you want to draft a requirement for, and then select Mark As Requirement to add a requirement in Rational Requirements Composer. You can also open other artifacts, such as a use case document, and highlight text to extract a requirement, as figure below illustrates.

For example, in the sign-in panel, we created three requirements (see Figure 14):

  • The password should be invisible.
  • Show an error message if the user ID or password is invalid.
  • The length of the user ID is from 3 to 20 characters.

Review the assessments

After creating the artifacts and requirements, Victor invites other team members to review the assessment documentation and add comments. He sends a link to the project home page to team members in an e-mail message. He specifies the scope and purpose of the review. Team members log in to the project, navigate from the home page to the review documents and artifacts, and add comments. Comments can be added to any project artifact. Figure 15 shows an example, where Alice asks questions that she adds as comments on the sign-in page. Victor answers her questions by adding his replies as comments. All comments can be tracked easily.

Present to stakeholders and get feedback

There are two ways to present the artifacts to stakeholders:

  • Export the artifacts as Microsoft® Word documents. Stakeholders can then view these artifacts locally.
  • Present them by using the Web UI. Stakeholders can log into the Rational Requirements Composer server Web UI to review the project artifacts and can also add comments directly, as Figure 16 shows.

After reviewing the two payment storyboards, a stakeholder proposed a change: "The bookstore should support payment by credit cards." This is a change to the requirement. Therefore, the artifact author, Victor, modifies the related artifacts to incorporate this change.

  • Add a new interview result document for this change.
  • Modify glossaries by adding a term, "credit card."
  • Modify payment use cases by adding a third payment method.
  • Modify the payment sketch by adding the credit card option.
  • Add a storyboard for payment by credit card.
  • Add a requirement of payment by credit card.

Figures listed below illustrate the modifications to payment sketches. Because sketches are composed from different parts and panels, it is easy to modify existing sketches for the change requirement.

Steps 5 to 7 can be repeated iteratively until all requirements are clarified and the user interface is confirmed with stakeholders. This can fit into agile development process easily.

Deliver and manage requirement baseline in Rational RequisitePro

With iterations from step 2 to step 4, you can define the requirement baseline of the project. To manage requirements, the business analyst adds the requirements with Rational RequisitePro. Rational Requirements Composer is designed to integrate with Rational RequisitePro to cooperate in requirements management. You can choose to create and manage requirements in a Rational RequisitePro project and then import them into a Rational Requirements Composer project for more definition and elaboration. Similarly, you can define requirements in Rational Requirements Composer and add the requirements to a Rational RequisitePro project.

Hyperlinks to important terms

  1. Agile and Iterative Development: A Manager's Guide
  2. Beck, Kent (1999). "Embracing Change with Extreme Programming". Computer 32 (10): 70–77. doi:10.1109/2.796139
  3. Ambler, S.W. "Examining the Agile Manifesto". Retrieved 6 April 2011.
  4. Support agile development by using IBM Rational Requirements Composer
  5. Outsourcing agile development projects: Part 1. Key things to consider before you start
  6. Outsourcing agile development projects: Part 2. Top five tips for success
  7. IBM Rational Software's UML Resource Page

References

<references/>