Cloud Foundry: Design and Architecture
Derek Collison discusses the goals, the design premises and patterns employed in creating the architecture of Cloud Foundry, VMware’s open source PaaS, unveiling internal architectural details.
The content has been bookmarked!
There was an error bookmarking this content! Please retry.
Posted by Werner Schuster on Jan 17, 2009
In this talk from RubyFringe, Luke Francl wonders if Testing is overrated.
The question is certainly provocative nowadays, with TDD and other practices becoming ever more popular. However, Luke shows how testing can't catch all problems and how energy spent on achieving 100% test coverage would be better spent on other activities such as Code Reviews.
Watch Luke Francl's "Testing is Overrated".
Continuous Delivery: Anatomy of a Deployment Pipeline
Improving Software Delivery Cycles: Pre-requisites and Inhibitors
RDBMS to NoSQL: Managing the Transition
Combining Inspections, Static Analysis, Testing to Achieve >95% Defect Removal Efficiency
In today’s hyper-competitive world, later may be too late to adopt Agile development and this Roadmap for Success will help you get started. Download "Agile Development: A Manager's Roadmap for Success" now!
TDD is not just about testing, it’s a design technique.
Interesting presentation and good sense of humor while presenting
Agreed.
It is really astonishing where the scripting languages are getting too and selling it progress....
(Unit) Testing is not about getting all bugs at once. It's about getting (and fixing) bugs fast (even if you don't do TDD).
When you write a code with test, other developers can go in and change it and see if they broke anything functionality that you did.
And if during the course of usage, a bug arises, you can debug your code easier if you have tests all around. Because those states who are not tested are most likely be the suspect (thereby decreasing the states that you have to go through).
Having unit tests will not guarantee a bug-free system. But it should speed things up in fixing them.
... for real-world feedback. It is a substitute that is repeatable and instantaneous and with no damage done.
Exposure to the real world is actually better, since it better (very effective, actually) to find errors in the specifications. However, making errors in the real world, when you are developing money-moving software with more than 10 digits for the amount, is not so practical.
Agreed.
Without good unit testing, refactorings are suicide.
I will take this (humorous but well argued) presentation as really a re-affirmation of the valuable but within-limits benefits of unit testing. As with any good thing, we have to be careful to clearly set expectations of its limitations: I agree that metrics get sometimes out of hand and become meaningless, I also agree that you can't test what wasn't implemented and should have and that unit code testing does not replace end-user testing.
With that said, code testing does improve quality of implemented code and features (in my own experience), it provides a firm base to validate the aging code (as during refactoring) and new features against and, not lastly, provides a form of code documentation (most importantly the intention behind the code -- not just mere comments in code -- which will be valuable years later, as some code runs and it is maintained by many people for long periods of time.) I would not discard here the sense of confidence good tests passed inspire in developers, especially important during difficult project periods. I would also think that scripting/dynamic languages need more testing because of the absent/reduced compiler-supported validation. The problem with insufficient negative case testing -- testing for what could go wrong -- comes from the fact that, in reality, too little attention is given to that -- starting with requirements, use cases, etc -- at a project/product technical and management level, and that is something we can do something about.
I have not seen code reviews ensure quality of code in a sustainable manner, either as a code reviewer or reviewee -- unless if that is part of pair-programming -- but that could be subjective.
To conclude, I believe we should be doing (more) testing but understand and act upon its limitations and benefits vs. costs for each particular situation.
Derek Collison discusses the goals, the design premises and patterns employed in creating the architecture of Cloud Foundry, VMware’s open source PaaS, unveiling internal architectural details.
Andrew Watson talks about the work of the OMG, where CORBA is alive and well (hint: in your car), UML and UML Profiles vs. custom Modeling languages, DDS and other middleware, and much more.
Sohil Shah discusses creating iPhone and Android enterprise mobile applications based on cloud services using the open source platform OpenMobster.
Paul Sanford presents the transformations supported by data throughout its life cycle, and how that can be better done with Splunk, an engine for monitoring and analyzing machine-generated data.
A common “best practice” for unit tests is to only write a one assertion in each test. I intend to question this advice by showing that multiple assertions per test are both necessary and beneficial.
John Rauser presents the architectural and technological evolution of Amazon retail websites starting with 1994 and ending with adopting Amazon Web Services.
Michael Stal discusses system architecture quality, how to avoid architectural erosion, how to deal with refactoring, and design principles for architecture evolution.
Every developer has had to integrate with another system, API or component. Tis article provides strategies to handle the change and for he separating system boundaries.
8 comments
Watch Thread Reply