Ralph Johnson defined architecture as "the decisions that you wish you could get right early in a project, but that you are not necessarily more likely to get them right than any other". Given our inability to tell the future how can we design effectively for it? Much project management thinking is based on the elimination of uncertainty, and advice on software architecture and guidance for future-proofing code often revolves around adding complexity to embrace uncertainty. In most cases, this is exactly the opposite path to the one that should be taken.
The talk looks at how uncertainty, lack of knowledge and options can be used to partition and structure the code in a system.
Almost all significant applications involve some sort of database. Many challenges come up when automating tests of data-intensive applications, including test repeatability, performance, transactional integrity and parallel test execution. This session will present solutions to these problems along with concrete implementations. Participants will be expected to have a working knowledge of relational databases and an understanding of the principles of database programming and test automation.