Table of Contents Previous Section Next Section

2.11 Exercises

EXERCISE 2.1 Define your career plan for the next two years. As your career progresses to higher levels of seniority, you will be expected to require redirection on a less frequent basis, with the maximum being about once a year. Planning is essential, so making a career plan at this early stage of your reading would be a positive step. Identify your goals, and then identify what you need to know to achieve your goals (i.e., knowledge gaps). Be brutally honest.

EXAMPLE SOLUTION: Three years ago, my goal was to continue in technical architecture roles and increase my knowledge in several areas so that I could be a more complete contributor. In particular, I wanted to gain extensive experience in UML modeling, design patterns, and software process and to reconnect with programming fundamentals. I also wanted to gain some management experiences to add to my resume. I wanted to give the research and development cycle one more go, for both personal and professional reasons. After all, I joined this industry because I loved programming. At the back of my mind was a desire to help some friends in small commercial businesses, but I sorely lacked experience in this area, having worked mostly for large defense contractors and think tanks. Having a list of what I wanted to learn, I next consulted the Internet, the world's most extensive collection of free resources. I located several books, training courses, and other information that helped me identify specific learning targets.

Being a relatively independent middle manager on the technical ladder, I adjusted my workload to align with my goals. I prepared a tutorial on UML and defined an architecture using UML notation, which was within the scope of our research. I downloaded the latest version of the Java programming language from Sun Microsystems and began programming the first phase of the architectural prototype. I was having fun and achieving my goals while performing useful architectural research and evangelism for my firm, which was in the midst of UML adoption. Reviewing my results with co-workers enriched my learning experience and helped my firm to move forward on UML-related initiatives. Also I pursued directed readings and attended a patterns workshop, which greatly enriched my knowledge of the field.

Having achieved a modicum of success on this path, I was ready for the next phase: replanning. In the pre-Y2K days, the software industry was very profitable. Opportunities abounded. I lacked much of the essential knowledge to help my friends in small commercial businesses (my ultimate goal). In addition, I wanted to do more technical architectural work, on a faster cycle. Defining a new architecture every month would be ideal, but that kind of opportunity was not available at my current firm. Also, business in my firm was in a cooling-off period.

A career change was in order. I took a job at a very stable, highly reputable small commercial firm (e.g., their paychecks came regularly, and they always cleared the bank). This new firm knew everything that I wanted to learn-a perfect match. At the library, I discovered the book resources to learn the requisite areas of knowledge that I was lacking, a bit of business training, and so forth. I was able to read about these matters and apply them on the job daily. I was able to complete several interesting architectural projects, including a financial system specification, a middleware architecture specification for a large telecommunications firm, and a high-level architecture for a real-time system. In addition, I was able to do a great deal of UML modeling, learn Visual Basic and C++, and do some CORBA programming. I was also teaching courses on the topics that I wanted to master-excellent progress, by any standards of performance. At this point, I had achieved the technical goals that I had set two years earlier. It is once again time to replan, as this exercise continues in real life.

EXERCISE 2.2 Select an architectural framework for use in your current firm (or customer's organization)-for example, RM-ODP, Zachman Framework, or 4+1 Model View. Write a brief profile description about how the framework should be applied in your organization.

BACKGROUND FOR SOLUTION: Having a framework is far superior to working without one. Whatever framework you choose, you will need to manage certain conventions and guidelines for applying it in your organization. The need for these profile conventions is most obvious in the selection of the Zachman Framework. Since you have thirty candidate specifications to write, you must address two issues. First, handling thirty specifications is too much work, and you should compress and simplify the amount of effort required to plan a system. Focus on the useful, practical elements for your domain of application. Combine elements as appropriate to ensure coverage without elevating the document-driven aspects to an unreasonable level. Second, if there is no profile, you can't possibly expect any two architectures to be comparable. You should select essential and optional viewpoints to be specified and define what they mean in your organization's terminology. You can also propose conventions for how these viewpoints will be documented, such as a template for each viewpoint, and notational conventions. These steps are required for any responsible application of these powerful frameworks.

EXERCISE 2.3 Create a pattern system for use in your organization. Select patterns from among the available pattern catalogs to cover the areas of greatest concern and need in your organization.

BACKGROUND FOR SOLUTION: A pattern system is documented in a simple tabular form. Use page 380 of Pattern-Oriented Software Architecture: A System of Patterns [Buschmann 1996] as your starting point. The pattern-system table lists the names of each pattern, along with their book page reference, for quick retrieval. Implicit in this exercise is the selection of the key patterns catalogs (i.e., books) that would be readily available to every developer. Remember that patterns are lessons learned. The purpose of this exercise is to create a job aid so that your developer can more effectively apply lessons learned. Also consider including sources such as [Fowler 1997], [Gamma 1994], and [Mowbray 1997a, 1997b] to your list of candidate catalogs.

    Table of Contents Previous Section Next Section