Wednesday, July 27, 2005

Book: IT Architecture Toolkit


I just received the book IT Architecture Toolkit. This is a must read and 5 stars book, considered the "Bible" for architects. Read the review from Amazon:

Enterprise IT architecture made practical--finally!

There's only one way to maximize legacy infrastructure while integrating new partners, technologies, applications, and data streams: begin with a coherent enterprise architecture. But most approaches to enterprise architecture have been far too complex and theoretical--until now. IT Architecture Toolkit is a breakthrough: a practical, simple, rapid, and complete approach to delivering on the promise of enterprise architecture.

Jane Carbone's approach has been proven in mid-market and Fortune 500 enterprises alike. Step by step, Carbone shows how to integrate business, architecture, implementation, and all key outputs: for data, applications, technology, and people. Whether you're an IT leader, architect, planner, or analyst, you'll learn how to:

  • Create strong, auditable links with business drivers
  • Model your architecture simply, easily, and quickly
  • Translate your models to real, manageable projects.
  • Define the value proposition for architecture and establish realistic metrics
  • Achieve buy-in throughout your organization
  • Manage the "soft" aspects of your architecture initiative, including processes, roles, responsibilities, and organizational structure

Carbone provides a "soup to nuts" collection of methods and examples. Using her exercises, you'll construct a complete draft architecture for your own business: one that will handle change, opportunity, growth, mergers, downsizing . . . whatever comes your way.

Tuesday, July 26, 2005

What is the value of Requirements?

This article is an except from the book "Requirements-Led Project Management : Discovering David's Slingshot (Hardcover)" by Suzanne Robertson, James Robertson. The text begins with an intesresting comment:

Whenever we make an investment—some stocks, a new car—or do some work, we like to think we get something in return for the money or effort expended. In this chapter, we look at your investment in requirements and what you can expect in return. And though all men may be considered equal, all requirements are not. Some requirements are crucial to the product, while others are gold-plated luxuries. We discuss how business people and requirements analysts can determine how much to invest in requirements, by focusing on the value of requirements to their organization.

"Improved software practices provide returns ranging from 300% to 1900% and average about 500% ... The reason for these excep tionally high returns is ... improved practices [that] have been avail able for decades, but most organizations aren't using. Risk of adopting these practices is low; payoff is high."

—Steve McConnell, Professional Software Development

SYS-CON Exclusive: What's New in Eclipse 3.1?

Link to Article: Since Eclipse's first release in 2001, it has become a popular environment for Java development. In the period between March 10 and May 11, 2005, users downloaded over 17,000 copies of one of the production SDK releases and over 3,500 copies of one of the stable (milestone) SDK builds on average every day. A vibrant eco-system of developers, plug-in providers, authors, and bloggers has grown up around it. Eclipse has also gained the backing of the key Java vendors including BEA, Borland, IBM, SAP, and Sybase. Developers like Eclipse because it provides a great platform for building Java applications, and companies like it because it unifies their software tools under one open source umbrella.
 
Take a look also in Eclipse-Wiki page.
 
Here is 7 (seven) good reasons to migrate to Eclipse 3.1?
 
1) Full support for the new language construtions in J2SE 5.0 (or J2SE 1.5): generics, annotations, enuns, auto boxing, enhanced for loop etc.
2) Fast compilation. Eclipse 3.1 has its own compiler that brings some benefits: besides raise you productivity, we have now smoother debugging and refactoring and a lot of diagnostic warinings.
3) Eclipse 3.1 improves its Ant support by including the latest version of Ant.
4) This version is a lot faster and uses far less memory for common operations, comparing with version 3.0.
5) Ready for large projects: Eclipse Platform team created one consisting of 135 separate projects and 70,000 classes and other resources. Good enough hum?
6) Return of the Java Client: the Rich Client Platform (RCP) is a subset of Eclipse that provides a framework for application development.
7) Over 7,000 enhancements requests and bug reports have been addressed in release 3.1.
 
 

XML Rich-Client Technology

This article from JDJ talk about the new "XML Rich-Client Technology". J2EE is the best for server-side but not so good as .NET is in the client-side. Until now!, according to this proposal. Let's see the rationale:

Which platform to use Java or .NET? Developers ask this question all the time. Java has been widely adopted because of its overwhelming benefits on the server side, but Java has less to offer on the client side. .NET has made inroads into the enterprise by leveraging its stronger rich-client capabilities. An alternative solution for enterprise-scale Internet application development is the emerging XML-based rich-client technology.



Monday, July 25, 2005

UML for the Software Developer (by DevX.com)

This serie of 6 articles from devx.com details the Unified Modeling Language (UML). Mark Goetsch explains how to build class, the UML diagrams, Aggregation etc. The context of these articles are:
 
- Part 1 - Building Class: "whatever language you code, however you feel about documentation... ...you will end up using models or modeling yourself"
- Part 2 - Mastering Associations: "use associations to define the way in which your applications's classes communicate"
- Part 3 - Aggregation: "aggregation (special form of association) is another way to establish the relationship between classes"
- Parte 4 - Deployment Diagrams: "the willing of any system is to be deployed :-), so, this article shows how to use deployment diagrams to coordinate the end-game activity between differents teams"
- Part 5 - Components Diagrams: "their ability to show interdependencies between application's components make component diagrams invaluable"
- Part 6 - Interaction Diagrams: "interaction or sequence diagrams are the critical link between the static class diagram and how the class behave; a well-defined sequence diagram will find missing classes, elucidade the sequence of events for class interaction, and define the methods needed for reach class"
 
Good reading!

Service-Oriented Architecture (by Developer.com)

The site developer.com has published a article (25 pages) about SOA. It covers the basic of SOA with a pratical example: a service named BankAccountService that manipulates both checking and saving accounts.

Wednesday, July 20, 2005

How do You Define Software Architecture?

SEI has a good material devoted to to Software Engineering. Stating with the basic question, How do You Define Software Architecture?. This page presents many classical definitions from the most known authors of Software Engineering, as well as the definitions that the comunity around the world submitted to SEI. Another must reading article is that one that defines the Duties of a Software Architecture. Let's point out some definitions:
  • "The software architecture of a program or computing system is the structure or structures of the system, which comprise software elements, the externally visible properties of those elements, and the relationships among them. First, architecture defines elements. The architecture embodies information about how the elements relate to each other. This means that architecture specifically omits certain information about elements that does not pertain to their interaction. Thus, an architecture is foremost an abstraction of a system that suppresses details of elements that do not affect how they use, are used by, relate to, or interact with other elements. In nearly all modern systems, elements interact with each other by means of interfaces that partition details about an element into public and private parts. Architecture is concerned with the public side of this division; private details of elements—details having to do solely with internal implementation—are not architectural...."
  • "An architecture is the set of significant decisions about the organization of a software system, the selection of the structural elements and their interfaces by which the system is composed, together with their behavior as specified in the collaborations among those elements, the composition of these structural and behavioral elements into progressively larger subsystems, and the architectural style that guides this organization---these elements and their interfaces, their collaborations, and their composition (The UML Modeling Language User Guide, Addison-Wesley, 1999)." -- Booch, Rumbaugh, Jacobson 1999
  • [Lane 90]: Software architecture is the study of the large-scale structure and performance of software systems. Important aspects of a system's architecture include the division of functions among system modules, the means of communication between modules, and the representation of shared information.

Tuesday, July 19, 2005

Software Design Quotes

Glen Vanderburg keeps this page with quotes related to Software Design. Below you can read some of them.
- ...with proper design, the features come cheaply. This approach is arduous, but continues to succeed -- Dennis Ritchie
- The problem with using C++ is that there's already a strong tendency in the language to require you to know everything before you can do anything. -- Larry Wall (father of PERL)


Monday, July 18, 2005

Enterprise Blogs: the new trend

Enterprise Blogs are useful for many reasons:
  - Information is always there; it is difficult to search that magic tip that your friend sent you 6 months ago among tons of emails;

 - Co-workers and friends can add comments and complement your posts with alternatives, offering a new point of view that you probably never had though before. This is what makes a good discussion;

 - Share! Share! Share! "If you have an apple and I have an apple and we exchange these apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas." -- George Bernard Shaw

There are lots of good reasons that would encorage you to promote blog activities among your team members. IBM bets in this new trend: read this article (in Portuguese) or this (in English).

Sunday, July 17, 2005

Agile Modeling by Scott Ambler

Scott Ambler is one of the  best authors of "Agile Development". A good source if the Agile Modeling Site Map, a collection of essays and a general guideline about this methodology. Let's see what Wikipedia says about Agile Methodology:
Agile software development evolved in the mid 1990s as part of the reaction against "heavyweight" methods, like the Rational Unified Process

(RUP). The processes originated from those methods were seen as bureaucratic, slow, demeaning, and contradicted the ways that software engineers actually work.

Initially, agile methods were called "lightweight methods." In 2001, prominent members of the community met at Snowbird (see "The Agile Manifesto," above) and adopted the name "agile methods." Later, some of these people formed the Agile Alliance [1], a non-profit organization that promotes agile development.

Early agile methods--created prior to 2000--include Scrum (in management), Crystal Clear, Extreme Programming, Adaptive Software Development, and DSDM.

Extreme Programming, while it may not have been the first agile method, unarguably established the popularity of agile methods. Extreme Programming was created by Kent Beck in 1996 as a way to rescue the struggling Chrysler Comprehensive Compensation (C3) project. The methodology was refined by Ron Jeffries' full-time coaching and public discussion on Ward Cunningham's Portland Pattern Repository wiki . In 2000, Kent Beck published the first book on Extreme Programming [2]. Elements of Extreme Programming appear to be based on Scrum and Ward Cunningham's Episodes pattern language.

Thursday, July 14, 2005

Patterns: GoF at Wikipedia

Not only GoF is "defined" by Wikipedia, all the patterns present in "Design Pattern" book are defined as well. See the example of observer pattern.

Software Architecture Handbook

Grady Booch, chief scientist of old Rational, now IBM/Rational, has a page devoted to Software Architecture. The project (his Handbook) is yet under construction but you can find useful information from one of the fathers of UML. One of the best places of this project is Booch's Blog (needs 30 sec. registration). Enjoy!

Wednesday, July 13, 2005

Java Blogs: a good source

I consider Java Weblogs at Sun as an excellent source of reliable information. I always find good high-level discussion. Here are two examples:

- Jonh Reynold's blog

- Kirill Grouchnikov's blog

Tuesday, July 12, 2005

What Developers Want? (by O'Reilly)

This article at ONLamp/O'Reilly presents ten tips that the software developers desire:

1. Ease of Use and Short Learning Curves
2. Library Routines and Application Service Modules for Faster Implementation
3. Seamless Migration and Transparent Upgrades
4. Comprehensive Functional Modules
5. Plug and Play: Service-Oriented Architectures
6. Performance-Optimized Blueprints
7. Open Standards Compliance
8. Rapid Development and Deployment Tools
9. Template Configurations
10. Probes and Debugging Tools

Good reading!

Quality in Brazilian Software

The page of "Quality and Productivity Brazilian Program" (PBQP), headed by MCT, presents links (1 e 2) to presentations and seminars related to Software Engineering and Quality of Software.

Monday, July 11, 2005

The Future of C++, by Bjarne Stroustrup

 Bjarne Stroustrup, the father of C++, wrote this essay (pdf) about the future of C++, named C++0x. Slashdot note: "Bjarne Stroustrup, the father of C++, has written an essay [PDF] on the features of the upcoming C++0x standard. In his essay, he argues that new features should whenever possible go into the standard library and not into the language, but that the language needs to shave of a few rough corners to make it easier to use for novices."

Scotty: Web-based Trouble Ticket

You are a IT manager and you are desperate for a web-based trouble ticket system? I introduce you Scotty, a Brazilian trouble ticket program, web based and, very important, open source. Scotty is written in PHP for Linux environment (installation) and all you users need is a browser.

Sunday, July 10, 2005

Re: More About SOA and WebServices

This time @ IBM. This is an excellent source of articles and red books about SOA and web services in general. From the beginning to the current start-of-art regarding service oriented architecture (see this series: 1 e 2). Another interesting link @ IBM and this issue is this.

Saturday, July 09, 2005

Desktop PC: Migration to Linux

Thinking about migration your desktops to Linux? Nowadays we have many options. There are many distributions that are focused in desktop, such as: Mandriva, Novell Desktop / SuSE, Fedora (open source Red Hat), Linspire etc. All these distribution's are well-known and have a good support, if not through a contract($), through the large Linux community. Some useful links that can help you to make the right decision:
Anyway, besides pick up one of these excellent distributions above, this is what I would consider when migrating to Linux:
  1. OpenOffice Brazil
  2. CodeWeavers (one of the best support for Windows applications on Linux)
  3. XP Desktop for Linux (excellent)

Good luck.

What is Software Design?

This is a classical article about Software Design. An except:
"This article assumes that final source code is the real software design and then examines some of the consequences of that assumption. I may not be able to prove that this point of view is correct, but I hope to shown that it does explain some of the observed facts of the software industry, including the popularity of C++."

Perl::Threads

Yes, Perl has threads! To start, check this two interesting links:

- Perl Threads Web Presentation, by a Perl group from Israel
- Perl Thread Tutorial, from Perldoc.com

Have fun!

Project Management

There is an excellent book from O'Reilly about project management: The Art of Project Management (April 2005, ISBN: 0-596-00786-8, 400 pages, $39.95 US). It is a new approach, more technical, less theoretical and not entirely PMBoK oriented. Very interesting. There is a sample chapter available on-line: Chapter 3: How to figure out what to do (PDF).

If you are a Amazon fan, like me, you can find it here. Talking about Amazon, read part of "Editorial Review" section:

"In The Art of Project Management, you'll learn from a veteran manager of software and web development how to plan, manage and lead projects. This personal account of hard lessons learned over a decade of work in the industry distills complex concepts and challenges into practical nuggets of useful advice. Inspiring, funny, honest, and compelling, this is the book you and your team need to have within arms reach. It will serve you well with your current work, and on future projects to come.

Topics include:

  • How to make things happen
  • Making good decisions
  • Specifications and requirements
  • Ideas and what to do with them
  • How not to annoy people
  • Leadership and trust
  • The truth about making dates
  • What to do when things go wrong..."

A Good WIKI

Looking for a good WIKI? Try TWiki. See also this excellent article from Linux Magazine (issue 55, June 2005).

Enterprise Architecture (EA)

Enterprise Architecture (EA)

What is EA?
-This first essay bring us some light in this subject:
This article discusses Enterprise Architectures as they relate to the broad decisions that must be made by an organization as it creates its organizational information support system.

-This one is a classic article by Scott Ambler (Ronin Int.). Please do not forget to read the references (item 10);

- Web Services Jornal has a lot of Articles related to EA and Web Services;

- Service Oriented Architecture is another good source of articles from Microsoft.

Zachman Framework

Have you ever heard about Zachman Framework? If you are interested in
Software Architecture and Enterprise Architecture read all you can
about this framework.

Java Ten years latter

Interview with the father of the Java language, by CNET.com:
SAN FRANCISCO--Ten years ago, Sun Microsystems publicly debuted Java, software that initially helped establish the company's forward-thinking reputation and that later spread to most corners of the computer industry. James Gosling is the man behind the technology.