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.
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:
- Communicate ideas and designs with and among stakeholders
- Reuse parts of your design in similar systems through transferable abstractions
- Track changes and manage schedules and timelines
A software development life cycle consists of five important phases, shown in Figure 1.
Figure 1. 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
|Requirements||It 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 design||During 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 development||The 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 QA||During this phase the quality attributes of the software (scalability, performance characteristics, etc.) are verified.|
|Deployment||In 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.
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.
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.
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.
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.
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.
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.
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 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.)
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.
Here are some tools that an IT architect might find useful for testing.
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 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
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.
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.
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.
Bobby Woolf's New to Architecture is an excellent place to start for resources related to software architecture.
The Volere Web site lists a variety of requirements gathering and management tools.
- Software Architecture in Practice, by Len Bass, Paul Clements, Rick Kazman is a very good book on software architecture.
- Comparison of UML Modeling Tools is a PDF comparing different software architecting tools.
- Michael Flanakin's blog is a site comparing UML tools.
Review a long list of IDEs for almost every language.
The article "Anatomy of a Software Development Role: Deployment" describes challenges in software deployment.
Learn more about open source technology from developerWorks. Get extensive how-to information, tools, and project updates to help you develop with open source technologies, and use them with IBM products.
Stay current with developerWorks technical events and webcasts.
- Podcasts: Tune in and catch up with IBM technical experts.
Get products and technologies
Get a trial version of IBM Rational Software Architect.
Get a trial version of IBM Rational RequisitePro.
Get additional trial versions of Rational software.
Get the Open Source Requirements Management Tool.
Get a trial version of IBM Rational Software Modeler.
Visit ArgoUML's home page.
Get TestLink, an open source testing tool.
Get NetSupport DNA.
Get the Empirum Software Management tool.