Earlier this year Ganesh Prasad discussed the concept of thinking of SOA as "Dependency-Oriented Thinking". Based upon further interactions and involvement with real-world use cases, Ganesh has come up with a dozen principles which he believes can help successful SOA.
The Open-Closed Principle, OCP, part of the object-orientation SOLID principles, was recently criticised by Jon Skeet and Robert Ashton who both believes the principle is doing more harm than good. Robert C. Martin, who identified the principles in the early 2000s, however, defends the principle, arguing that you have to look at the full description, not just the short definition.
Will Tschumy outlined five design principles at the recently held //build/ with a series of screenshots to showcase the user interface enhancements of various products released over the last few years.
Software Architecture is one of the important topics for software engineers, because many failures of software development projects are caused by inadequate design. Thus, it is essential to learn more about architectural issues in theory and practice. Interesting new books that have been published recently or in the near future could be very helpful
Software Craftsmanship has been a hot topic as of late. Joshua Kerievsky posits a possible counter-perspective to the underlying "code must always be clean!" ethos of the craftsmanship movement; something he calls "Sufficient Design". Learn about what Joshua means, and hear thoughts also from Bob Martin and Ron Jeffries on Kerievsky's ideas.
A number of commentators have been talking about the perceived dichotomy between Agile techniques and architectural thinking. This post investigates some of the tensions between Big Up Front Design (BDUF) and You Aint Gonna Need It (YAGNI) thinking and looks at how the two approaches can in fact work together in complimentary ways.
In addition to well established principles and anti-principles, Steve Jones’ new post introduces the notion of non-principles of an SOA implementation and explains why they are important.
Bruce Eckel, Michael Feathers, Niclas Nilsson, Keith Braithwaite, and others on the question: should languages be fully flexible, allowing the developers to tweak them as they like, and trusting they will be responsible in their work, or should there be clear constraints set in the language from its design phase to avoid mistakes that create bad code, hard to maintain or to read?
Purpose and intent are just as important as skill in effective software development. Skill allows you to deliver value in difficult technical circumstances. Clear purpose and positive intent allow you to deliver value in difficult social and business circumstances. Kent Beck shares his design technique which involves both intent and a small set of strategies he uses when designing.
This session addresses the abstract notion of simplicity, looks at why it is critical in modern UI design and answers questions: Why does simplicity matter? Is there a meaningful definition of simplicity? Why do design processes and good intentions undermine simplicity? What processes and techniques can software developers use to achieve simplicity?
A recent discussion on the Extreme Programming Yahoo Group explored the apparent conflict between making software reusable and the XP practice of not writing code until it is needed. Ron Jeffries and others shared insights about the costs and benefits of code reuse, as well as how and when to do it in an agile environment.
C# 4.0 implemented a change that assured optimized and non -optimized compiles yielded consistent results. This "Fix" emphasized some design problems with locking mechanisms.
The last few weeks, a public dispute has been going on between Joel Spolsky and Robert C Martin (Uncle Bob) about Test-Driven Development and about the SOLID principles of OO design. Here is a summary and review of the match.
A member of the stack overflow community asked "Is design now a subset of refactoring?" The question highlights a common misunderstanding about the agile approach to emergent design. A common agile mantra is: "Test. Code. Refactor. Repeat!" This approach doesn't replace design; it simply spreads the work out over the life of the project.
In this presentation recorded during QCon London 2008, Stefan Tilkov introduces the audience to REST seen as an architectural style. He thinks that REST is not an alternative to SOA but it can serve SOA to reach its goals. Stefan also covers other related topics: HTTP, WS-*, SOAP, CORBA, RPC, enterprise, in an attempt to make the listeners understand what REST is and what is not and how it helps.