Archive

Archive for the ‘Software Architecture’ Category

What’s an Architect?

December 15, 2009 akantos Leave a comment

A stranger is traveling down a road on a hot summer day. As he progresses, he comes upon a man working by the side of the road breaking rocks.

“What are you doing?” he asks the man.

The man looks up at him. “I’m breaking rocks. What does it look like I’m doing? Now get out of my way and let me get back to it.”

The stranger continues down the road and soon comes upon a second man breaking rocks in the hot sun. The man is working hard and sweating freely.

“What are you doing?” asks the stranger.

The man looks up and smiles.

“I’m working for a living,” he says. “But it’s hard work. Maybe you have a better job for me?”

The stranger shakes his head and moves on. Pretty soon he comes on a third man breaking rocks. The sun is at its zenith now, the man is straining, and sweat is pouring off him.

“What are you doing?” asks the stranger. The man pauses, takes a drink of water, smiles, and raises his arms to the sky.

“I’m building a cathedral,” he breathes.

The stranger looks at him for a moment and says, “We’re starting a new company. How would you like to be our chief architect?”

If you’re looking to advanced your architecture thinking style and learn how noble you should be, try this book out but remember, what makes you Architecture the beautiful One is what the other says and how it is easier and faster to learn. Not just what you believe!

Amazon Web Services

December 1, 2009 akantos Leave a comment

Other day I was hiring a dedicated server. In doubt about whether choose between windows 2003 standard or web server. I’ve chosen the standard one. It has message queuing system and I needed it so much. Then stumbled at Amazon Web Services – Then I felt myself stupid. They provide Queuing services and worse – at very cheap price.

That comes as lesson… nowadays we can just architect solutions without take into account the new approach of services in the cloud. Amazon Web Services is just a sample which provides a lots of interesting services like Storage (very cheap), scalable mysql server (not that cheap but considerable if you’re really doing business) and many others.

I know there are other service providers which in my point view still needs clarify what services they provide and what cost is going to be at end. I’ve seen some services about cloud computing which always appear to be more expensive than it should. They also miss details which makes me unable to calculate exactly what I going to need.
How I would know how much processor cycles my application is going to need in month? Still not comfortable these days, hope it get better!

Code Generation Conference

November 17, 2009 akantos 1 comment

I found out the Code Generation conference. Happens in Europe and sounds to be nice. They talk about code Generation and Model-Driven Software Development. The community says that the event has a strong practical focus and an emphasis on sharing experiences and knowledge and I hope to be there next year.

Automated Software Design Research Group

November 13, 2009 akantos Leave a comment

Lean software development demands too much automation. Of course, the idea is to make more with less and have higher quality until delivering software functionalities most important for the business. This path is hard, really hard. You’ll probably have to rethink all your gained knowledge and start developed a solid wisdom through research. Constantly looking new ways to do what you do today and improve what you think you need not.

Not every IT company will really benefit of Lean Thinking. Such style demand too much research and intellectual work which results will came along the way. You need to keep traces so to really understand the intangible results. This is expense, and you may give up in the very beginning.

I believe that the worse thing still the daily operation activities along low budget and unprepared managerial staff. People are too involved with day-to-day problems and stop everything aiming rethink their work in such advanced way can be a laborious process that can simply never happen!

Any way… I would like to present the Automated Software Design Research Group. This group explores new ways to develop software. They have a lot of academic papers (Dissertations and Theses) which can simply be applied to your life. Even if you not in Lean or Agile environment.
See ya..

Calling it “services”

August 10, 2009 akantos Leave a comment

I do believe that a language does form the reality we experience. It express the meaning of truth.

Service is an architecture term which confuses people about what they doing now. And believe, that can lead us to complexities over complexities. So understant and diferentiate responsabilities is a key approach to avoid system complexty.
I’ve seen many folkes, especially the newbie (with less than 3 years with distributing computing) calling “Service” any business logic and data access package that they build.

The image below shows us a holistic view about a hierarchical packing style which most applications are built.

What makes your service be a business logic or simple data access layer from the past architecture style? A simple word: coupling.

If your project builds the service together with the requestor application, this means that this service is coupled to the requestor application. In order to run the requestor application, the service must be in place. Otherwise they won’t work and doesn’t matter if you are using interfaces and pattern like MVC, MVP, and object injection in anyway. The project structure is organized but still monolithic.

Service means a logic (data access or business algorithms) that can be exposed to any consumer either using web services standards or with queuing mechanism.

There are different services model which can be built in a SOA ecosystem.

  1. Application service
    • A generic category used to represent services that contain logic derived
      from a solution or technology platform. Services are generally
      distinguished as application services when creating service abstraction
      layers.
  2. Business service
    • A generic category used to represent services that contain business
      logic. When establishing specialized service layers, services that fall
      into the business service layer are collectively referred to as business
      services. However, individually these services are classified as
      entity-centric or task-centric business services.
  3. Controller service
    • A service that composes others. Variations of this model exist,
      depending on the position of the controller in the composition hierarchy.
      The parent controller service can be classified as the master controller
      and a service that composes a subset of a larger composition can be
      labeled a sub-controller.
  4. Entity-centric business service
    • A business process-agnostic variation of the business service that
      represents one or more related business entities. This type of service is
      created when establishing a business service layer.
  5. Hybrid service
    • A service that contains both business and application logic. Most
      services created as part of traditional distributed solutions fall into this
      category. When organizing services into abstraction layers, hybrid
      services are considered part of the application service layer.
  6. Integration service
    • An application service that also acts as an endpoint to a solution
      environment for cross-application integration purposes.
  7. Integration service
    • An application service that also acts as an endpoint to a solution
      environment for cross-application integration purposes.
  8. Integration service
    • An application service that also acts as an endpoint to a solution
      environment for cross-application integration purposes.
  9. Process service
    • A service that represents a business process as implemented by an
      orchestration platform and described by a process definition. Process
      services reside in the orchestration service layer.
  10. Task-centric business service
    • A business process-specific variation of the business service that
      represents an atomic unit of process logic. Task-centric services are
      different from process services in that the process logic is provided by
      the underlying service logic, not by a separate process definition.
  11. Utility service
    • A service that offers reusable logic. This category is primarily intended
      for the classification of solution-agnostic application services. However,
      it also can be used to refer to reusable business services.
  12. Wrapper service
    • A type of integration service that encapsulates and exposes logic
      residing within a legacy system. Wrapper services are commonly
      provided by legacy system vendors and therefore frequently introduce
      non-standardized interfaces.

That was just an overview I’ve taken from Tomas Erl’s book Thomas Erl – Service-Oriented Architecture (SOA) – Concepts, Technology, and Design (2005). There’s no doubt that you should read the series so you can fully understand what SOA means.

Categories: Pattern Tags: ,

SOA in the Cloud

July 15, 2009 akantos Leave a comment

Cloud computing isn’t a new market term for selling. Some folks get it very negative but it shouldn’t be like that. Could computing is a form that involves the interaction of several virtualized resources, meaning that many servers are connecting and sharing information. It is a service evolution typically in the form of infrastructure as a service (IaaS), platform as a service (PaaS), or software as a service (SaaS).

In software world, distributing computing gave us the first pass into the cloud computing. Without many pattern we used to build lot of staffs using Remoting, autonomous programs, etc.

Thereafter, service-oriented computing raises from distributing computing generation encompassing its own paradigms and design principles, design pattern, pattern languages, forming a distinct architectural model.

Enter the contemporary SOA, a new way for software architecture, enhancing efficiency, agility, and productivity of the business process. Bringing software development projects more close to real changing business world.

An SOA implementation may consist of a combination of technologies, products, APIs, supporting infrastructure extension establishing an environment suitable for solution logic obeying service-orientation design principles. Fit into this, cloud computing would advance SOA and maybe reduce costs if we think about paying resources on demand. In this case, resouces means services in SOA cloud environment …

That’s just a thought, there a lot of concern regarding backups strategies on clouding computing…

Anyaway…

Usability Link

July 13, 2009 akantos Leave a comment

Usability has everything to be with system archtecture. I don’t need to be expert but it cost me nothing to get in touch with some practices.

The following articles may help at project beginning. You may read those before coding or even before making any wireframe for developers.

So.. Choose your path:

Coupling & Usability

July 13, 2009 akantos Leave a comment

For the past months I heavily have been researching about improving system design and turn out system coupling problems in many aspects, builds, algorithms, etc.

Let usability comes as another official one.

I got some insights after reading the book The Elements of User Experience, that usability is another key to increasing coupling and system complexity. These things are really connected.

Poor usability leads developers to work without direction. Free to do whatever they want, whatever their experience is leading them to.

I still need to reflect about this as I’ve seen developers complaining about hard devolvement to achieve usability requirements sometimes this could be related to individual experiences.

We’re human; we try to easy things when difficulties come up as we try to avoid new things when we are accustomed to the old ones.

Books for the Enterprise

August 20, 2008 akantos Leave a comment

Yeap.. That’s the year!

That’s right! I have done a lot of educational investment aiming to make 2009 a more profitable year.

A part from Microsoft Certification book (which is not recycle), the others may rest forever at any bookshelf. I don’t have much time but I’ll try to make a resume on each of them in the future.

1. Pattern-Oriented Software Architecture Volume 4: A Pattern Language for Distributed Computing (good)

2. MCPD Self-Paced Training Kit (Exam 70-549): Designing and Developing Enterprise Applications Using the Microsoft .NET Framework (Certification Series) – shit

3. Architecting Enterprise Solutions: Patterns for High-Capability Internet-based Systems

4. Managing Customer Relationships: A Strategic Framework

5. SaaS Architecture, Adoption and Monetization of SaaS Projects using Best Practice Service Strategy, Service Design, Service Transition, Service Operation and Continual Service Improvement Processes

 

Patterns-Oriented Software Architecture (POSA) – A pattern Language for Distributed Computing

July 28, 2008 akantos Leave a comment

Li o livro Patterns-Oriented Software Architecture (POSA) – A pattern Language for Distributed Computing. Vi neste uma ferramenta essencial para usar na revisão de conceitos antes de iniciar qualquer tipo de arquitetura. No POSA, eu achei um conceito profissional que serviu até para amadurecer minha visão sobre MVP/MVC e uso de interfaces em geral, contratos, criação de camadas, dentre muitos outros assuntos.

No inicio do ano conversei com um amigo do trabalho sobre várias formas avançadas e utilização de Design Patterns, aplicando todos os modelos GoF em C#. O interessante é que, dentre os mais de 20 patterns, não usamos nem 5.

Nem toda arquitetura de software se resume aos frameworks aos quais estamos acostumados e nem sempre vamos poder usar hibernates, modelos próprios de persistência de dados pelo mundo a fora.Pensando assim e sempre pequisando, eu encontrei nesse livro uma ferramenta fascinante para me auxiliar nas adversidades da indústria de TI pelo mundo.

O Livro POSA usa a engenharia de software em aplicações distribuídas, menciona diferentes arquiteturas, comparando-as e dizendo os patterns que podemos utilizar em cada uma, e também, falando com detalhes sobre cada pattern. Compondo arquiteturas para as mais variadas situações:

  • Suporte a desevolvimento independente e evolução com diferrentes partes do sistemas (layers), criando camadas no estilo OSI.
  • Design que considera mudanças de user interfaces, que podem ser mais frequentes que o dominio das funcionalides (MVC)
  • Design que considera diferentes responsabilidades funcionais de uma aplicação podendo requerer diferentes user interfaces paradigms (presentation abstract control ou MVP – Model View Presenter).
  • Suporte para escalabilidade e adaptabilidade funcional em diferentes cenários de deployment Design preparado para evolução a partir de integração de mudanças não previstas anteriormente (Reflection) Design para processamento de streaming de dados (Pipes and Filters)
  • Design sustentável de aplicações que resolvem tarefas que não contém estratégia de soluções determinísticas ou fuzzy (blackboard)

Por falta de conhecimento, a gente não entende certas construções. Estamos tão acostumados com nosso modelo próprio que perdermos nossa humildade em aceitar o desconhecido.

Gosto muito de arquitetura de software e entendo que não dá para nascer arquiteto. Acredito que precisamos ter no mínimo uma formação em ciência da computação e/ou 5 anos de experiência em projetos, revigorando nosso conhecimento em camadas, orientação a objetos, etc.