Bindings, Platforms, and Innovation
This presentation focuses on the Internet and separating myth from fact, history from the future, and the mundane from the imaginative. Bob Frankston presents a vision of what could and should be.
Tracking change and innovation in the enterprise software development community
Posted by Niclas Nilsson on Oct 12, 2007 08:39 PM
Eoin Woods, one of the IASA Fellows has published an article about what he considers to be the top ten software architecture mistakes - mistakes that are too often learned the hard way. Brief excerpts of the ten points are below:
Business Benefits of Open Source SOA
Open Source Middleware Reference Architecture Whitepaper
SOAsocial.com - See what the SOA community is Talking About
Comprehensive Threat Protection for REST, SOA, and Web 2.0 Applications
These look like requirements/system analysis mistakes.
IMHO, they qualify as "Architecture", but in several cases they are "System" rather than "Software". Kit
IMHO, they qualify as "Architecture", but in several cases they are "System" rather than "Software".
Kit
Totally agree, provided that software architecture is two, technology/software architecture (like Anders architecting C# for example), and system architecture, as we all do in our custom solutions and products/properties.
What I'd say is that they're all mistakes made by software architects. And you're right, they're not all to do with design of the software structure. They include mistakes relating to requirements, design, technology, planning and analysis ... because these are all things that as software architects we end up being closely involved with. Eoin.
I agree with Eoin, but another question pops up in my head: What does an architectural mistake that is not related to requirements look like? Kind regards Niclas Nilsson --- blog: http://niclasnilsson.se
DIY Security which Eion has mentioned is good example for an architecture mistake. Other mistakes could include: 1) Workflow component Vs Database queries for building queues, inboxes 2) ORM Vs DAO Vs JDBC (probably not common nowadays) 3) Rich client (AJAX vs Webstart Vs Flash client) Vs Thin client 4) Spring POJO Vs EJB3 5) RPC styles - native (java remoting,JSON) vs XML 6) Vertical vs Horizontal scaling and so on... Obviously these are technology dependent (server, desktop, mobile etc) and context dependent (one is favorable over other based on requirements, maturity, standardization etc). But in general, i tend to think that major portion of architectural choices and therefore mistakes are to do with category/sub-category selection. (category: Rich client -> Sub-category: AJAX -> Vendor: DOJO)
I don't know if the proper term for this is "goldplating", or "over-design/architecture", the mistake is to use an architectural style without really considering why (probably due to mistakes #3 and #5). E.g. I have seen projects where the architect wants to build an application framework before any application can be developed, but doing frameworks is hard. And I have seen projects where the architect says: We shall have a layered architecture, and btw I have added a few new layers of my own, the developers must use all these layers, and in the end each layer just shuffles data back and forth. I think I am becoming an advocate of just in time architecture, really.
Thanks for this good article with some common mistakes made on many software projects. I really liked the one about trying to fit too much on one diagram. I have done that one in the past.
+1 (I have this anti-pattern)
I don't think #4 is a mistake unless it is the ONLY representation you give of the architecture to your team and stakeholders. I find an all-inclusive diagram essential to fitting the entire problem space in my head and then expressing it lucidly to the team + stakeholders. It is basically my mind-map of the solution being built. If you can't express that cohesively, you are likely missing key considerations for the solution - and that will result in #1. Cheers, Zubin Wadia CTO www.imagework.com "Business Acceleration Through Process Automation"
Totally. Definitely a common mistake, particularly where people have new or "pet" technologies or patterns that they're determined to include. I just couldn't fit it into the list and keep the title ;-)
The most common architectural mistake I have seen is allowing technical architecture (concerns) to override business architecture (requirements). Businesses then structure and limit themselves to support technology instead of the other way round. Packaged software, by its nature, often introduces and exacerbates this problem.
> Packed software ... IMO this one opens a whole new breed of errors, all of them rooted in attempting to architect the users' behaviour on behalf of a stiff system. This mistake is "fixed" by applying a huge amount of management power. See http://dilbert.com
> Packed software ...
IMO this one opens a whole new breed of errors, all of them rooted in attempting to architect the users' behaviour on behalf of a stiff system.
This mistake is "fixed" by applying a huge amount of management power.
See dilbert.com
Well said
This presentation focuses on the Internet and separating myth from fact, history from the future, and the mundane from the imaginative. Bob Frankston presents a vision of what could and should be.
This article explores the use of JBoss and jBPM to implement design solutions that effectively address the issue of orchestrating long running activities.
This presentation covers the use of graph databases as an optimal solution for data that is difficult to fit in static tables, rapidly evolving data or data that has a lot of optional attributes.
This session introduces Real Options and shows how it can help in running your project. Real Options is a decision-making process that can be used to manage risk.
This article discusses the use of bindings on services and references (including the instance of non-configured bindings) as the means to implement SCA communications in a Web and SOA environment.
After a short introduction to DSLs, Scott Davis plays with the keyboard showing how to approach the creation of a DSL by typing working snippets of Groovy code that get executed.
IBM Rational and InfoQ present, Scaling Agile with C/ALM, an eBook showing organizations how to become “finely tuned software delivery machines” by enabling team integration and scaling.
Amanda Laucher presents a real life enterprise application written in F#. She shows actual code snippets, explaining design decisions and suggesting how to use some of the F# constructs.
14 comments
Watch Thread Reply