Showing posts with label Architecture. Show all posts
Showing posts with label Architecture. Show all posts

Saturday, 28 November 2009

More goodies from MS

My interest in software scalability and performance often leads me to Microsoft's Parallel Framework Extensions team BLOG, which recently published this great presentation from their parallelism tour...

Saturday, 14 June 2008

Paralell Extensions for .NET

In case if you have not noticed Parallel Extensions for .NET got released!

You can check them in action implementing e.g.

Sunday, 25 May 2008

Goodies from MS Labs

There are a lot great ideas developing in Microsoft Labs. Inspired by several posts I read I went to check the projects up and found at least two of interest...

Wednesday, 7 May 2008

Spring Source - the viable alternative to J2EE?

J2EE projects tend to be very complex, spanning multiple layers, using various technologies from IOC, ORM to AJAX. Their clustering, performance, fail-over and deployment are extremely important aspects, which are hard to manage...

Spring Framework was very successful in helping with some of those difficult aspects. Now after getting venture capital backing, Interface21 presents us with Spring Source - an alternative to J2EE. Take a look at this article in which Rob Harrop, in usual fashion, very precisely describes what the Spring Source is all about and where it is going.

I wonder if great tooling and OSGI support will help in adoption of this project?

Sunday, 10 February 2008

SOA vs OOAD

Quite long time ago it has struck me that the new mantra: Service Oriented Architecture and well established Object Oriented Analysis shared many traits. Both practises as well as many other design techniques flourish on commonality extraction and reuse but there is more to it, as usual...

The question to answer is: Why to have SOA as a new term to allow us talking about the componentization of the software? There is a very good article on SOA Magazine discussing just that. It highlights the commonalities and differences in both approaches. In precise manner shows the fact that SOA expands OOAD by raising it up a layer of abstraction and encapsulation. Therefore this paradigm has the capacity to clearly address touch points between the business and the application of the technology. Capturing business benefits, as defined by OOAD at technological low level and transferring them up for better visibility and to complement other factors at the enterprise level.

Thursday, 29 November 2007

Theory of programming

When I came to the UK and have been interviewed by my first employer, I needed to explain away the fears and ensure that the code I write, is using English. Not enough said, I prefer English for being precise and concise. This allowed me to think, I could write the code, which could be read as a book and this way easily communicate its meaning...

During my studies I have been thought and proven, that the best and durable solutions are "simple" in nature. But only with the right level of flexibility they can prove to be a valuable business propositions. To strike the right balance there, is hard but possible.

Over years within industry, I have learned to grasp principles describing general ideas first. So that their application does not overshadow the intent of the design. Object oriented methodologies have somehow kept me away from troubles, which mismanagement of side effects and their locality can lead to.

The DRY principle has been always in my mind as repetition leads to redundancy and maintenance nightmares. So unless there is a good reason (like performance) factoring commonalities out has always been my goal when coding.

Anyway, I could go on and on here. But I would be simply repeating the content of this excellent article published recently by Dr Dobb's Journal, which discusses the theory of programming, which BTW, for those who know me, know also that I could sign with both of my hands ;)

Thursday, 15 November 2007

Next generation semantic layer


Thanks Dave for pointing out, this article about the new offering of the Oracle semantic layer. IMHO, the semantic layer has always been a place of great potential. Here is more details on What Oracle tries to bring to the semantic technologies.

Wednesday, 14 November 2007

Databases: Yesterday, Today, and Tomorrow

Check this out, how Jim Starkey, who is a Senior Software Architect at MySQL, challenges our way of thinking when dealing with databases...

The article available on the Dr Dobbs. But lacks navigable references, so I thought of adding them here:

The semantic data model
Falcon - the transactional storage engine

Enjoy!

Monday, 12 November 2007

Commodisation of mobile services

Now, six weeks before Xmass, we being bombarded with new exciting offers dealing with new mobile devices and development platforms...

First is Skype to announce its Skype phone. Well, I have been using Skype for some time now and indeed it is a robust free, video enabled, VOIP application. But I am not sure, what is the benefit of owning the prebuild Skype phone. As it is possible to have the Skype application installed on any phone which has fast enough internet connection and runs Windows CE OS. Anybody?

Then the Jesus phone - as this is how the iPhone has been named in blogsphere. It always makes people go WOW and ask to keep it touch it etc. I have to admit, like the user experience on offer there. The large touch screen is very well integrated with the applications, what is not the case for other platforms unfortunately. There is a problem though. The phone is expensive, locked to the provider networks and does not give much out to the developers; apparently for sake of stability and security...

And the latest is the Android, which has just published its SDKs and made it available for download. The whole idea is to open up the mobile OS platform to the developers community. There are no Android powered phones on the market at the moment, but prototype preview looks very promising. Android is being build upon Linux kernel, comes with several applications like web browser based which is a fork of Safari. Its architecture aims at componentization and mashups allowing merging 2D and 3D graphics. There is even a draw published to help with incubating new applications...

Thankfully to software developers, it seems there is more and more opportunities to build distributed software services, which can be seamlessly integrated on closer and closer to hand and more powerful devices. BTW: Should we find a new name for those new mobile devices as they are not only just phones but music and video players, cameras, navigation units etc...?



Sunday, 28 October 2007

Webscape changes

There was a lot of buzz on what the Web 2.0 is or should be. The idea was to bring more semantics to support intuitive and more relevant queries when performing searches, building story lines etc. But this nirvana still seems long way off...

Never the less the landscape or web-scape is indeed changing. Service providers like Amazon keep reinventing the web by adding new offerings on top of their strong platform of web services. Now they promote HaaS (hardware as a service) with their new elastic computing cloud (EC2). EC2 plus simple storage service (S3) gives us a distributed virtualization platform, where users can define their nodes and pay for their utilization on pay as you go basis.

On software side Yahoo provides their pipes allowing us to mash feeds up and this way provide with new shapes of outputs. This leads to new ways of dealing with the web content trying to use web pages themselves as web services. There are many unanswered questions left out there, about IP, content ownership etc. But this web scratching approach seems to be the enabler technology to help with structuring the mainly unstructured web content. And in this way maybe to narrow the gap between computer and human generated content.

The end-user client tools undergo changes as well. As result of web migration of our calendars, tags, address books, maps, photo albums etc., new data access metaphors are required. Desktop applications look more web like and web apps want to share your desktop (more often now being off-line enabled). Libraries like: GWT, Sriptaculous, YUI, FLEX have plenty to offer to help matching up the desktop experience by providing gadgets and add-ons.

Recent contributors to the arena are Mozilla's Prism and Microsoft's Popfly sitting on top of Silverlight, which I have decided to test and written a Popfly components:

  1. block allowing to geo-position your URL source (but this needs more work due to the URL lookup service not returning good results)
  2. mashup to show MSN book list as a Popfly carousel
Do not know about you, but I tend to use more and more computers over time. This makes me migrate my data to the web, so I can easily get hold of it when needed. Thankfully the aforementioned technologies let me do it with more and more ease and less frustration. Many smart people were saying that we can see desktop applications making the full circle from being run from smart-server on dumb clients, to full clients and now coming back to the server. The thing is the server is not going to be only smart but distributed and componentized. Don't you think?


Wednesday, 17 October 2007

PFX, PLINQ and TPL

You must take a look at the Programming in the Age of Concurrency by Anders Hejlsberg and Joe Duffy: Concurrent Programming with PFX posted on Channel 9...

It is great to see this natural, one would think, progression of lambdas into task managing, which no doubt will be simplifying concurrent implementations. Think mutexes, semaphores, critical sections, monitors, locks, threads etc. being hidden behind API simply accepting lambdas expressing your execution requirements. The same with workload control and optimization. This looks fantastic.

Here are some more links to Joe's articles, simply copied from his blog:
  1. Parallel LINQ: Running Queries on Multi-Core Processors. An overview of an implementation of LINQ-to-Objects and -XML which automagically uses data parallelism internally to execute declarative language queries. It supports the full set of LINQ operators, and several ways of consuming output in parallel.
  2. Parallel Performance: Optimize Managed Code for Multi-Core Machines. Describes the Task Parallel Library (TPL), a new "thread pool on steroids" with cancellation, waiting, and pool isolation support, among many other things. Uses dynamic work stealing techniques (see here and here) for superior scalability.

By being declarative and not over specifying, isn't functional approach way for the future?

PS. Have you tried F#, which just went into production?

Are we all turning into system integrators?

Take a look at this article discussing "The Future of Software Development". It is a nice retrospective view on software development, with some ideas of things to come, which IMHO are about right.
What is interesting, is the importance of libraries, what you probably noticed coding your systems anyway. There are more and more of them in use around us. You can hardly escape (to mention a few from outside of javax.*): Log4J, Hibernate, Spring etc.

Thanks to those libraries we start to play more of the role of integrators. This is great as highlights the fact: integration is necessary and important. It is a green field, where new applications and ideas of how to put them together are growing. But what is even more important, by employing specialized libraries, we can focus on the core of the problem rather then build necessary tooling, information pipe-lining from scratch. Don't you think?

Monday, 15 October 2007

Should the architect code?

OMG - not that question again! You can find it here and here and here and in many other places as well...

Well, I have to admit, very often I am inclined to say NO. This answer happens, when I am terribly busy:
I guess, you have noticed the open ended bullet above. The discussions, persuasions, meetings with internal and external parties never end, while in construction or transition.

At the same time, I am a software developer. This is what I have been doing for ages. This is one of the main reasons, why I am in his industry. I simply love to see how software can simplify our lives, provide solutions to our problems and business needs.

My passion for the software, was born when I got with my fist computer - ZX Spectrum Plus. I went on exploring VB, Logo and ended with ZX80 Assembler. Then Delphi, SQL, UML, C++, Java, JavaScript, CAL and many more to come. All of that because I like to code, I like dealing with:
But all of this in balance with the incurred cost, always taking into account the concerns as raised in mythical man month

Thanks to this affection of mine, I draw my diagrams and write specs with more freedom, as hopefully I can:
  • Notice what part of the proposed scope seems too ambitious for the proposed time scale
  • Pick and choose the right third party libraries to be able to focus on the core of the problem
  • Evaluate ideas first hand and find integration issues
  • Shape SLAs to allow enough freedom for future evolution / extensibility
  • Maintain SLAs to the advantage of the business and developers
  • Discuss proposals in depth with the developers
  • Propose new ways of solving the problems, what makes all the geeks within the team tick
I guess, now you know my answer to this question and know why I do constantly experiment with the code.
To avoid empty words, check these few code gadgets , my experiments which are available to the public domain
;)

How many of those mistakes, have we seen made, in our projects?

There is a great entry on InfoQ, containing excerpts about top ten software architecture mistakes. And indeed, how many of them have we seen made in our projects?

The excerpt is based on very interesting articles about "Avoiding the Icebergs" and published on ITArchitect.co.uk site.

PS. Great to see Business Objects on the list of useful links;)

Tuesday, 25 September 2007

Herb Sutter's Talks

There is a very good series of recorded talks, given to the folks at Googleplex on concurrency by Herb Sutter. Check them up to learn about the caveats of memory utilization, synchronization techniques and gotchas in multi-core environments, processor pipe-lining , locality of reference and the effects they have on performance of the software.

The first talk

Tuesday, 4 September 2007

Connecting SOA with ESB

There is a lot of discussions and various blog posts on the subject of service oriented architecture - SOA. Question is: How do I employ SOA effectively, having ESB at hand?

I have found an interesting article by Bobby Woolf of IBM discussing exactly this matter. It seems Microsoft is concurring as Nick Malik is highlighting in his post.

It is great to see convergence like this. Following the thought - there are many occasions when business modellers have deep influence on the service bus. To make their life easier, would it not be great to provide with extensions to the existing BPM management tools and administer your ESB? Maybe even standardise then?

Saturday, 19 May 2007

Am I a software architect?

Am I a software architect? - any chance you have asked yourself this question recently. Before you answer this, take some time and check out, what is it that makes one a software architect - as the term seems to become a bit ambiguous over recent years. IMHO it is due to this ambiguity, that many of us struggle to define our relation to software architecture correctly and there is a quite large hum on the web discussing exactly this subject...

What is software architecture?
By Wikipedia :
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 between them. The term also refers to documentation of a system's software architecture.

Why should we pay attention to architecture?
It would be scary to even ask such a question to a professional civil engineer. Is seems okay to do it in software domain though... Anyways, architecture serves both technical and organizational purposes. Architecture is the essential foundation for agility, responsiveness and effectiveness - in other words it serves the business. Check this article to learn how exactly.

Who is right for the architect role?
If you are a techie, as soon as you become an architect, you might realize that the technical aspects of the role, are the ones easier to handle. Critical technical skills include ability to:
  • make assertions about the technology directions
  • determine consequences for the technical strategies.
As an architect you will need various soft skills to succeed like ability to:

Personality traits supporting this include:


For remaining information refer to this article or coding architecture.

How do I create an architecture?
The deliverable of the architecting process is the architecture document, motivating and describing the structure of the system through various views. However, though system structuring is at the heart of the architecting process, it is just one of several activities critical to the creation of a good architecture. Architectural requirements are needed to focus the structuring activities. Different architectural approaches tend to yield differing degrees of fit to various system requirements, and modeling and evaluating alternatives, and analyzing tradeoffs among them, are an important part of the structuring phase. Lastly, a validation phase provides early indicators of, and hence an opportunity to resolve, problems with the architecture.
More can be found here

Where does architecture fit in development?
Architeture comprises evaluation and feasibility studies, component and interface design, documentation plus SLA maintenance. It is a lot things to do, but still, you do not have to give up coding. Another thing is, that the architect remains accountable for the software, so it is no good to deliver paper work and let it go.

What type of the software architect am I?
Hang on, I am a software architect but how to describe my role so it is meaningful t others, as there are so many types of architect roles. If you are not sure, Microsoft's Skyscrapr will provide you with consistent architect role definitions. Roles are also discussed by this article with an emphasis on progression. In other words how far am I from becoming an enterprise architect.

Who needs architect - anyway?
So now is the time to ask this final question. It is really a great title of an article published by Martin Fowler, which is a great read as the following quote hopefully shows:
Software is not limited by physics, like buildings are. It is limited by imagination, by design, by organization. In short, it is limited by properties of people, not by properties of the world. “We have met the enemy, and he is us.

So what kind of architect are you?

P.S.
If you are interested and want to learn more take a look on the coding architecture blog and its posts. It is very good read.

Friday, 11 May 2007

Is future functional?

Paul's article made me write this entry, to challenge my long living inner feelings about the future for functional programming.

It is thanks to Luke Evans, that I got introduced to the world of Lambda. He is the author of CAL Haskell like language, which I had a chance to use to evaluate various ideas. My OOP background has not really prepared me well, for a universe, where function has a privilege of being a first class citizen. So after dealing with STL, being under the influence of Andrei Alexandrescu book about Modern C++ Design and his LOKI C++ library; the only thing that came to mind then, that helped me accommodate functional concepts, was partial template specialization...

Ever since, I touched Haskell like code, I must admit - I have been affected and influenced by its consistency, preciseness and re-usability of constructs. I though that
functional was a real progression of dealing with abstractions and generalization in programming

I am not surprised therefore to see functional concepts popping into existence in other languages like:

I even casted more friendly eye, upon JavaScript, which can be considered functional, as this article nicely shows. Forgive my ignorance, but I am not mentioning here languages like ERLANG , OCAML or Python etc...

So, is future going to look functional?

Some suggestions can be found in this very interesting video lecture by Philip Wadler about "Faith, Evolution, and Programming Languages". , which is made available on Google Tech talks.

Another interesting video discusses "Software Composability and the Future of Languages" and shows recorded conversation of such software gurus like Anders Hejlsberg, Herb Sutter, Erik Meijer, Brian Beckman.

I wonder if the functional languages will bringing a panacea for hyper-threaded / multi-core CPU architectures as book "Programming Erlang" seems to hint.

Another interesting insights can be drawn from TIOBE's website showing programming community index (no surprises for May - it is Ruby on top).