Skip to main content

If you don't have an IBM ID and password, register here.

By clicking Submit, you agree to the developerWorks terms of use.

The first time you sign into developerWorks, a profile is created for you. This profile includes the first name, last name, and display name you identified when you registered with developerWorks. Select information in your developerWorks profile is displayed to the public, but you may edit the information at any time. Your first name, last name (unless you choose to hide them), and display name will accompany the content that you post.

All information submitted is secure.

The first time you sign in to developerWorks, a profile is created for you, so you need to choose a display name. Your display name accompanies the content you post on developerworks.

Please choose a display name between 3-31 characters. Your display name must be unique in the developerWorks community and should not be your email address for privacy reasons.

By clicking Submit, you agree to the developerWorks terms of use.

All information submitted is secure.

Selecting the best tools for your software system design

Improve your project life cycle

Arun Chhatpar (arunchhatpar@gmail.com), Software Architect, OmniViz
Arun Chhatpar currently works as a software architect at OmniViz, Inc. He has more than nine years of industry experience developing J2EE applications and is a Sun Certified Enterprise Software Architect. His specialty is core client-server architectures.

Summary:  So many tools, and so little time! If you're an IT architect, it can be a daunting task to select the right design tools when architecting your software system. Explore a survey of tools to help determine which ones are best suited to each phase of the project life cycle -- and while you're at it, discover how to improve your time to delivery.

Date:  13 Feb 2007
Level:  Intermediate

Comments:  

Introduction

If you're an IT architect, you are involved in almost all phases of the software development life cycle and must make critical decisions that decide the fate of a software application. Many of these decisions may be based on your personal experience and knowledge, but system design and architecture tools often play a bigger role in this process.

In this article get more information about various tools and the underlying concepts behind them. We also compare popular software tools for an IT architect, including the IBM® Rational® suite of products, which provides a complete set of tools to get the job done in the most efficient way.

If you're a software architect either using a tool or in the process of adapting a tool for system design and architecting needs, this article can provide you with relevant information. You need to be familiar with the different phases of the software development life cycle. Actual design and architecting process or UML diagrams are beyond the scope of this article.


Why do architects need tools?

One of the best definitions of architecture I have come across is from Bobby Woolf, a member of IBM Software Services for WebSphere®, who said, "The architecture of a system is the highest level of shared understanding of that system by the experts who create it." (See Resources.) System architecture primarily comprises software elements and the relationships among them. It defines what these software elements are and how they relate to each other. In the past, it was common to describe this system on paper, but the drawback to this approach is that it's not highly reusable. With the evolution of software and software tools, architects have overcome this limitation.

Using software tools provide easier ways to:

  1. Communicate ideas and designs with and among stakeholders
  2. Reuse parts of your design in similar systems through transferable abstractions
  3. Track changes and manage schedules and timelines

What is the architect's role in the software development life cycle?

A software development life cycle consists of five important phases, shown in Figure 1.


Figure 1. Five phases of the software development life cycle
five phases of the software development life cycle

So where does an architect fit in? Is it in requirements, design, implementation, or testing? The answer is ALL of them. An architect's role spans from requirements gathering through deployment.

Table 1 describes some of the activities an architect performs in these phases.


Table 1. Phases that an architect participates in
PhaseActivities
RequirementsIt is a common misconception that an architect has no role to play during the requirements phase. In fact, this is the point when an architect can understand the so-called "quality attributes" of software as perceived by the stakeholders.
Analysis and designDuring this phase an architect provides a high-level design of the system identifying the software elements, their interfaces, and the relationship between them. Deployment of these elements is also described during this phase.
Implementation and developmentThe actual development and coding of your software happens in this phase. During this phase the software architecture is subjected to verifications and corrections, which can lead to changes in the design and effectively on the timeline of the project.
Testing and QADuring this phase the quality attributes of the software (scalability, performance characteristics, etc.) are verified.
DeploymentIn this phase an IT architect scrutinizes the final deployment of the software application on deployment platforms.

In each of these phases the IT architect has to constantly evaluate her design to make sure it meets the requirements. And if the requirements change, which in the real world is quite common, the schedule and timeline of the final product need to be updated accordingly. Use of good software tools makes this job easier. Let's take a look at the tools available for each phase of this cycle.


Tools for requirements analysis, gathering, and management

Requirements analysis is a crucial part of the system design process whereby all the stakeholders of the system identify the needs and requirements of the client and the software application itself. It's a long process and affects the final product, so the IT architect must be sure not to miss out on anything. The requirements analysis and management tools must have all the functions necessary to carry out all these tasks.

There are some good tools in the market for requirements analysis, gathering and management. The top one in that list is IBM Rational RequisitePro.

IBM Rational RequisitePro

The IBM Rational® RequisitePro® solution is a requirements and use-case management tool for project teams who want to improve the communication of project goals, enhance collaborative development, reduce project risk, and increase the quality of applications before deployment.

Rational RequisitePro features provide:

  • Advanced Microsoft® Word® integration (Word is the most commonly used tool by IT architects to collect requirements for any system. RequisitePro does not try to take that away from the user; instead it's well integrated with Word. The user works and saves the collected data in Word, but behind the scenes, RequisitePro saves it in the centrally located database.)
  • A robust database infrastructure and support for a number of industry-standard enterprise databases, such as IBM DB2®, Oracle, and Microsoft SQL Server.
  • Ability to create and compare project baselines
  • Detailed changed impact analysis with audit trails and e-mail notifications
  • In-depth traceability and coverage analysis
  • A robust, flexible, built-in reporting system.
  • A module to provide Web access for distributed teams
  • The ability for users to define their own requirement types
  • A number of configurable project and document templates

See Resources for more information and to download a trial version from IBM.

Open source requirements management tool

If you are looking for an open source product for requirements gathering and management, there is one in active development. It's called Open Source Requirements Management Tool (OSRMT). (See Resources.)

This tool also uses a database to save all data and it uses JDBC to connect to the databases, so you have a good choice of databases to select from. It officially supports Oracle (Express) database, MySql 4.1, and SQL Server (Express) database, to name a few.

It's written in Java™ and also provides a Web-based interface for collaboration. The tool also supports traceability in a several ways: You can select an artifact and browse for the dependent counterpart, or you can simply drag an artifact on top of another to create the dependency. An artifact in OSRMT can be a feature, requirements, design items, source code or test cases.

The features in this tool allows you to:

  • Use the list of defined artifacts (included with the product), and you can define your own as well
  • Attach supporting documents, which can be binary attachments to your artifacts
  • Trace the entire history of changes and the impact of that change on the system, highlighting which test cases must be used to validate the change
  • Import/export reference data in XML format
  • Customize user views

OSRMT does lack one important feature; there is no support for Word documents. It's easy and intuitive to first write down your requirements in a Word document and then work on them in your desired tool of choice. IBM Rational RequisitePro does offer the advantage of integration with Word, making it a much easier tool to use.


Tools for system design and architecture

It is no myth that properly architected systems always gain a strategic advantage over unseen problems in the software development life cycle. A well-designed and architected system helps to reduce costs when requirements or business needs change or upgrades need to occur. It also helps the architect manage resources in a very cost-efficient manner. The quality of a well-architected system is also much higher than one that was just slapped together with patches of code.

System design and architecture tools greatly help IT architects in achieving robust and high-quality software. There are almost a dozen such tools available in the market today; the ones that provide more functionality than others are the ones we discuss next.

IBM Rational Software Modeler

Rational Rose® has been a popular and widely used system design and modeling tool. After Rational merged with IBM, it came out with the next generation of this tool called Rational Software Modeler, which offers many new features. It has almost everything you need for modeling workflows for your software system. The features of this tool provide:

  • Rich support for modeling with Unified Modeling Language (UML) 2.1
  • An open, extensible Eclipse 3.2 software development environment
  • Easy installation and ease of use, with flexible installation options in a single product for Microsoft Windows and Linux®
  • Automated traceability, from requirements to design
  • Tight integration with other IBM Rational software design and architecting products, such as Rational RequisitePro and Rational Software Architect, making collaborative development very easy
  • A well-defined set of design patterns, which you can use in your models directly or you can author your own to ensure that conventions and best practices are followed
  • Model-to-model and model-to-code transformation development tools

My experience with this tool has been very satisfactory. I find it very easy to create all my UML diagrams and share them with my peers.

ArgoUML

A good open source tool for system design and architects is ArgoUML. (See Resources for more information). It has an interesting set of features that make it one of the most popular UML tools available in the market. ArgoUML is:

  • Based on open standards (XMI, SVG and PGML)
  • Written completely in Java language, so it's platform independent
  • Open source, which makes it easy to extend or even customize it to your specific needs
  • Based on UML 1.4

The most significant difference between Rational Software Modeler and ArgoUML is that Software Modeler supports UML 2.1, while ArgoUML supports 1.4.

The latest version of ArgoUML is quite impressive. The best thing about this tool is that if you have Java installed on your machine, you can just run it as a Web Start Application. You don't need to install any software, because you use Java's Web Start technology to run the application.


Tools for implementation and development

Based upon the platform you are going to develop your application on, there are different tools available to make your development task easier. Being a Java pro, I prefer Eclipse. It is one of the most widely used integrated development environment (IDEs) for development.

Eclipse

Eclipse is an open source IDE to develop applications in different languages. Although it's well known for its Java IDE, there are subprojects from the Eclipse community for other languages, such as AspectJ programming, C/C++, and COBOL. Some of the main advantages of using the Eclipse IDE are:

  • You can edit source code files, compile and debug your project seamlessly from within a single IDE.
  • It is an open source project with open standards.
  • Hundreds of plug-ins are available for everything from formatting, profiling to debugging, some open source and some are commercial.
  • It fits development projects of any scale.

These are just a few of the many advantages offered by using the Eclipse IDE. You should definitely try it for yourself to get a feel for it. (See Resources for a link.)

Other development tools

As mentioned earlier, there are many tools available that might suit your particular needs, some are open source and some are commercial. Here is small list to get you started:

  • NetBeans came from Sun, but now is open source
  • JBuilder from Borland
  • Visual Studio from Microsoft
  • JDeveloper from Oracle

See Resources for a good link to all these tools.


Tools for testing and QA

Here are some tools that an IT architect might find useful for testing.

IBM Rational Functional Tester

IBM's Rational Functional Tester is an excellent testing tool for testing Java, Microsoft Visual Studio .NET, and Web-based applications. This tool is automated and can be used for both functional and regression testing. Its features provide:

  • Novice testers with automated capabilities for activities such as data-driven testing
  • Native Java and .NET editor and debugger for advanced users
  • Version control support that enables parallel development of test scripts and concurrent usage by geographically distributed teams

This tool offers many advantages but there is one disadvantage; it's available only on Linux.

TestLink

TestLink is an open source Web-based test-case test-management and test-execution system under the GPL license (free to use). The basic idea here is that the QA teams can create and manage test cases as well as organize them into test plans. These test plans then allow team members to execute test cases and track test results dynamically. It also has a very useful sub system to generate reports.

Main features of TestLink include:

  • Dynamic organization of test cases
  • Detailed test execution reports and metrics associated with them
  • Useful, meaningful, and customizable reports
  • Customizable to fit your requirements and processes

Tools for software deployment

The IT architect does not typically play a key role in deployment; that is a job of a deployment manager or a release manager. Tools that are useful for deployment of any application include:

  • Batch/shell scripts. Use this basic approach to string together a set of commands; for the most part, the scripts are platform independent.
  • Packaging and package management tools. Create highly customizable installation kits; two key tools are are InstallAnywhere and InstallShield.
  • Virtualization software. Use software tools (VMWare and Microsoft Virtual PC) to easily manage remote deployments and updates.

Other tools are available, but it's necessary to limit this list to the scope of this article.


Overview of other tools currently available

Apart from the tools covered in this article, there are literally dozens of tools designed for each phase of the software development life cycle. It's impossible to mention each one in this brief article, but here are some others you should consider.

For requirements gathering and management:

For system design and architecture:

This list should get you started; check out these products and start improving your productivity.

Summary

You can see that choosing the right tool for your job can dramatically impact you and your team's overall productivity. In this article you looked at some of the most popular tools an architect can use in each phase of the software development life cycle to improve productivity, including requirements gathering and management tools. These tools should increase your efficiency to deliver products on time as well as help you manage changes in requirements. The system design tools should help you communicate your ideas better to all the stakeholders of your project. Hopefully, this article helps steer you toward designing better software systems and improving time to delivery.


Resources

Learn

Get products and technologies

Discuss

About the author

Arun Chhatpar currently works as a software architect at OmniViz, Inc. He has more than nine years of industry experience developing J2EE applications and is a Sun Certified Enterprise Software Architect. His specialty is core client-server architectures.

Report abuse help

Report abuse

Thank you. This entry has been flagged for moderator attention.


Report abuse help

Report abuse

Report abuse submission failed. Please try again later.


developerWorks: Sign in

If you don't have an IBM ID and password, register here.


Forgot your IBM ID?


Forgot your password?
Change your password


By clicking Submit, you agree to the developerWorks terms of use.

 


The first time you sign into developerWorks, a profile is created for you. This profile includes the first name, last name, and display name you identified when you registered with developerWorks. Select information in your developerWorks profile is displayed to the public, but you may edit the information at any time. Your first name, last name (unless you choose to hide them), and display name will accompany the content that you post.

Choose your display name

The first time you sign in to developerWorks, a profile is created for you, so you need to choose a display name. Your display name accompanies the content you post on developerWorks.

Please choose a display name between 3-31 characters. Your display name must be unique in the developerWorks community and should not be your email address for privacy reasons.

(Must be between 3 – 31 characters.)


By clicking Submit, you agree to the developerWorks terms of use.

 


Rate this article

Comments

Help: Update or add to My dW interests

What's this?

This little timesaver lets you update your My developerWorks profile with just one click! The general subject of this content (AIX and UNIX, Information Management, Lotus, Rational, Tivoli, WebSphere, Java, Linux, Open source, SOA and Web services, Web development, or XML) will be added to the interests section of your profile, if it's not there already. You only need to be logged in to My developerWorks.

And what's the point of adding your interests to your profile? That's how you find other users with the same interests as yours, and see what they're reading and contributing to the community. Your interests also help us recommend relevant developerWorks content to you.

View your My developerWorks profile

Return from help

Help: Remove from My dW interests

What's this?

Removing this interest does not alter your profile, but rather removes this piece of content from a list of all content for which you've indicated interest. In a future enhancement to My developerWorks, you'll be able to see a record of that content.

View your My developerWorks profile

Return from help

static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=1
Zone=Rational
ArticleID=195856
ArticleTitle=Selecting the best tools for your software system design
publish-date=02132007
author1-email=arunchhatpar@gmail.com
author1-email-cc=ruterbo@us.ibm.com

Tags

Help
Use the search field to find all types of content in My developerWorks with that tag.

Use the slider bar to see more or fewer tags.

For articles in technology zones (such as Java technology, Linux, Open source, XML), Popular tags shows the top tags for all technology zones. For articles in product zones (such as Info Mgmt, Rational, WebSphere), Popular tags shows the top tags for just that product zone.

For articles in technology zones (such as Java technology, Linux, Open source, XML), My tags shows your tags for all technology zones. For articles in product zones (such as Info Mgmt, Rational, WebSphere), My tags shows your tags for just that product zone.

Use the search field to find all types of content in My developerWorks with that tag. Popular tags shows the top tags for this particular content zone (for example, Java technology, Linux, WebSphere). My tags shows your tags for this particular content zone (for example, Java technology, Linux, WebSphere).