Wednesday, June 28, 2006

I am engaging on a new project focusing on the processes needed to facilitate communication and collaboration to manage the SOA environment. I believe that the requirements for communication and collaboration should be aligned with the life cycle of a service. I have defined the life cycle steps associated with services in an SOA environment.

- Define the service requirement - Specifying the purpose, functionality, interfaces etc of the services as well as service level agreements.

- Plan the service development - Prioritizing when the service must be developed as well as approving the budget and resources required.

- Design/Selecting service - Specifying in detail how the service will comply with the requirements.

- Build/Acquire service - Developing the service or acquire the service according to the design specification.

- Test service - Making sure the service and actually can perform in an operational environment.

- Manage service portfolio - Monitoring services availability, service states and compliance against the agreed service levels.

- Deploy service - Making the service available so that it can be called on in the operational environment.

- Publish service - Making the service definition and state knowable so that the service can be found and used by consumers.

- Find service - A consumer requesting or identifying a service that will satisfy a requirement.

- Invoke service - Adhering to security requirements, and protocols to call on the service and receive a response from the service called within an operational context.

- Enable service integration - Enable the infrastructure with the capacity to coordinate and enable the execution of services.
- Change service - Extending the functionality of the service to adapt to new user requirements.

- Decommission service - phasing the service out when it will no longer be supported or needed.

Each step of the life cycle will require a contribution from different stakeholders and different decision parameters. Each step can be seen as a use case of the service oriented architecture with its own actors defining Business and IT requirements.Bottom line: To ensure communication and collaboration between Business and IT in the service oriented environment consideration must be taken of the complete life cycle of a service.


Robin Mulkers writes:
I see it like this.Define the service requirement, Find the service/Select the service and manage service portfolios are a single process of SOA change management. This process has 3 actors, the service consumer who comes with his requirements, thepotential service providers who do manage specific systems or resources that are potentially needed by the consumer and the enterprise architect or service librarian who makes sure that the service is compliant with enterprise policies and shares a commonlook and feel (cares about canonical models, naming conventions and granularity for example).Design, Build/Acquire, Change, Test is an optional process that is used when an existing service must be changed or a new service must be created.Deploy, publish, enable service integration, decommission service are operational processesInvoke service is not a process I think.There are also management processes like gathering service usage metrics, change metrics.If your SOA uses intermediaries like security appliances or ESB kind of platforms, then there are processes to manage those platforms as well.And last but not least, defining several processes is one thing. Having those processes working together is another thing which is maybe even more critical for a successful SOA.

Tuesday, June 20, 2006

When a project fails , whose bad is it anyway ?

This is referenece to a Planet TW blog:

Anand Vishwanath: When a project fails , whose bad is it anyway ? ...




When a project fails , whose bad is it anyway ?


A couple of drinks with Thoughtworkers , is like asking for hours of debate over some hot issues. This time it was not only developers, but even some manager “types “. The topic of discussion was that if a project fails, who is most likely to be in the firing line, the project manager or the lead architect.


I think Managers


  • Have the most interaction with the clients (whether useful or not ;-) ).
  • Are answerable to the client why functionality was not delivered in an iteration when the technical team was playing technical cards, refactoring, clearing technical debt etcâ€�
  • Do the project planning/scheduling etcâ€� which has more visibility to the clients.
The technical team on the other hand
  • Has to figure out a way to deal with legacy codebases
  • Work with less skilled client developers
  • Keep clearing technical debt etcâ€�


All while trying to deliver required number of story points in an iteration.

Also not to mention the salary for yours truly Project Manager is far too high compared to a Technical Lead in the team. Wonder why ?

Monday, June 19, 2006

When we do denormalization in our database design

From BDOTNET forum,

The main reason for renormalization is leverage performance and helpful for ad-hoc reporting . In some situation a database design in 3rd normal form may require more table joins to process a query this additional table joins can degrade performance , rather than it can be achieved in 2nd or 1st normal form.

Another reason to denormalize a database is to simplify ad-hoc reporting. Ad-hoc reporting is the unstructured reporting and querying performed by end users. End users are often confused when they have to join a significant number of tables. To avoid the confusion, you can create a special set of tables designed for ad-hoc reporting.

Friday, June 09, 2006

How to become an Architect

Worldwide Institute of Software Architects
http://www.wwisa.org/wwisamain/index.htm

Role of Software Architects
http://www.wwisa.org/wwisamain/role.htm

Books and Tools on Software Architects
http://www.wwisa.org/wwisamain/books.htm

http://designpatternsfor.net/