Contract-First using a custom DSL

Has been while since my last post.  There’s nothing easy about doing consulting and keep researching. The fact is, I was misplaced on contract first approach and I know I’ll put forward some conclusions.

  1. Contract-first approach demands strong organization and standardization.
  2. You can’t count on off-the-shelf tools.  You likely develop your own Domain Specific language.
  3. I left off-the-shelf code generation tool (I’ll not post it’s name in this case) for Industry Standards. Last approach was about taking tables structure and give life to application by generating all necessary files.  I was too coupled to the database platform. Different database versions & vendors, operation systems used to gave a lot of headaches. By Tomas Erl literature I was doing a negatively case of coupling. I started to live all the promisses bad dreams by keep going on this approach. By the next image you can conclude that my code generation tool was really coupling to many different vendors technology, from the source (tables) to the engine (code generation framework) to the assets (text templates).

    DSL Framework Vision

  4. I Start work with XML Schema Industry standard. It was need good ideas to be organized and produce high quality code. It increase the need for methodology and standardization.
    The economies of reuse was increased because it became a flexible structure.

    Code Generation Framework Vision based on Industry Standards

    Code Generation Framework Vision based on Industry Standards

Change to Industry Standards was a good thing because it is wisdom and experienced approach recommendation  from serious institutions which researches are solid results that doesn’t keep changing every year as when we are based on technology platform which we start to accompany their bugs, different versions and releases of trial and error.

Achieving high productivity inside environments is important to understand and improve process. Build a Dialect language or Domain Specific Language based on industry standards instead on technology platform will easy lot of implementation pain as meaning of control but also will demand most talent engineering to help out on conceptions. It is not a easy path but has no better ROI.

References

  • Software Product Lines: Practices and Patterns – Chapter 1,4 – Paul Clements and Linda Northrop/2001
  • Software Engineering (7th Edition) – Chapter 18 – Ian Sommerville/2004
  • Software Factories: Assembling Applications with Patterns, Models, Frameworks, and Tools – Chapter 2,7,10,11,14,15 – by Jack Greenfield, Keith Short, Steve Cook, and Stuart Kent (Paperback – Aug. 16, 2004)
  • Service-Oriented Architecture (SOA): Concepts, Technology, and Design – Chapter 10,11,14,15 – Thomas Erl/2005
  • SOA Principles of Service Design – Chapter 6,7 - Thomas Erl/ 2007
  • Domain Specifc Languages – Martin Fowler -http://www.martinfowler.com/bliki/DomainSpecificLanguage.html (at 06/2010)

Wireframing is not prototyping

Quplog’s post talks something interesting about what I’m dealing with these days. Loads of new application pretending to be a mix of prototype and wireframing tool are ruining some viewpoints.

I’ve seen some Microsoft SketchFlow users claiming they are doing wireframe when actually they are working in prototype. In fact, they were just wasting time. Concepts differ, have look at:

Wikipedia defines website wireframes as follows:

“A website wireframe is a basic visual guide used in interface design to suggest the structure of a website and relationships between its pages.”

http://en.wikipedia.org/wiki/Website_wireframe

Prototyping, on the other hand, gets the following summary:

“The conventional purpose of a prototype is to allow users of the software to evaluate developers’ proposals for the design of the eventual product by actually trying them out”
http://en.wikipedia.org/wiki/Software_prototyping

Behavior and visuals indeed has different audiences to attend. Software prototyping is about evaluation, testing, verification, and function. Not wireframing. And doesn’t matter whether you’re working on desktop or web application. If you starting a project with a powerful tool which can deliver code when you’re still wireframing, you’ll have to think about framework, logical and physical structure, components and other hell things which you shouldn’t care at that moment. If you do so, please, consider to have some training and education at the subject.

Anyway, these are 18 tools on the subject. I use Balamiq, because it is simple, nice, productive and license is affordable cheap.

Skype Architecture is example of “consider the context”

Skype is a well know software for communication nowadays and uses Postgre database. Also, some of Skype’s employees are huge contributors to Postgre open-source project. They are a very example about keep essential business logic close to the data where it can work most efficiently. But this is balanced against limitations like difficulties with releasing, debugging and unit testing.
Skype Architect Sourav Mazumder in his article “Learnings from Five Years as a Skype Architect” talks about two things I would like to extend.

  1. One fundamental thing about being a system architect is consider about context where to you are in not in the context of your own preferences. Consider to use design patterns is a professional approach but most of time we need to adapt.
  2. His critic about SOA seems to have no fundamental wisdom about the topic. In fact, SOA is not about solving an everyday software engineering problems right the way. The presented example of company which was unsuccessful about adopting SOA, is classical example about wrong project planning. It has to be with communication not distributed computing embraced about services principles and tools. When he says that this fault is architect’s fault I could confirm that he seems someone which is complaining about something they don’t understand well giving examples. SOA could not be raised by a software architect only. Business people should jointly go in as SOA project leader would work with some consultant as facilitator. Again, the right skill and people involvement result in good communication or project failure.

In the end, I recommend to read Sourav Mazumder’s article. There’s a lot of experience to take from Skype Architect.

What’s an Architect?

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

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!

Follow

Get every new post delivered to your Inbox.