You've made a commitment to automate unit testing as part of your development process or you are spending precious resources for automated functional testing at higher levels. You may be asking yourself: How good are those tests anyway? Are many tests checking the same thing while large parts of the code go completely untested? Are your tests triggering the exceptions that normally show up only in production? Are your automated tests adequately covering the code, the requirements-both, neither? Andrew discusses the truths and untruths about code coverage and looks at the tools available to gather and report coverage metrics in both the opensource and commercial worlds. He describes the different types of code coverage, their advantages and disadvantages, and how to interpret the results of coverage reports.
The concept of mutation testing and how it fits into a code coverage strategy
The technique of expressing requirements as user stories is one of the most broadly applicable techniques introduced by Extreme Programming. In fact, user stories are an effective approach on all time-constrained projects, not just those using Agile methods. Mike Cohn explains how to identify the functionality for a user story and how to write it well. He describes the attributes all good user stories must exhibit and presents guidelines for writing them. Learn to employ user role modeling when gathering a project’s initial stories. Whether you are a developer, tester, manager, or analyst, you can learn to write user stories that will speed up development and help you deliver the systems that users really need.
Defining a user story and learning how to write one
Six attributes of all user stories
Thirteen guidelines for writing better user stories
While effective for modeling requirements, analysis, or design of a software system, UML diagrams are typically used in isolation or only for portions of a system. The resulting inconsistencies have the potential to create more confusion than clarity, negating the investment in the modeling process. Explore tips, tricks, and techniques to build a complete, traceable UML model for all aspects of a software application. Thomas Bullinger shares ways to gather behavioral requirements and map them into UML use cases. Learn to map use cases onto sequence or activity diagrams and extract them onto class diagrams. In a recursive process, each of the UML diagrams and associated descriptions is logically related to ensure a complete problem model and a consistent design solution.
Create self-consistent UML models of requirements behavior and designs
Manage change in UML models to reflect updates to requirements
Designing Web services is all about the interface. Although tools for Web services development have advanced to the point where exposing application functionality is simple, the ease of building Web services does not diminish the need for careful planning and a highly functional design. Dave Mount opens his presentation by spinning the cautionary tale of slapping together a Web services interface on a poorly structured application. This scenario serves as a reference point for a subsequent discussion of the pitfalls of a poorly designed interface. Dave illustrates techniques for correcting problems and improving the Web services interface. Looking at high profile Web services provided by Google, eBay, and Salesforce.com, he shows how an external perspective that emphasizes consistency and conceptual clarity is key to Web services interface design.
The latest generation of Web technologies-AJAX, improved client-side scripting, support for extensive DOM manipulation in browsers, content syndication, Web service APIs, and simple interchange formats such as JSON-are all driving new, powerful Web applications. Based on his work on real world "Web 2.0" applications, Ivan Krstic discusses the security implications of these new technologies. Ivan describes specific attacks such as Web-based worms, XSS, CSRF, and HTTP response splitting and offers advice on mitigating security risks during the engineering process. Learn how standard security guidelines such as The Confidentiality-Integrity-Availability (CIA) model apply to the modern Web and about the role of cryptography and crypto-engineering in Web security.
Many organizations have achieved success in using the SEI Capability Maturity Model Integrated (CMMI®) as a framework for their process improvement program. Steven Lett describes the structure and contents of the CMMI®, including the continuous and staged versions of the model. He discusses each of the five maturity levels and their process areas, the specific and generic practices that exist within each process area, and the typical process documentation and work products required for each. Learn an effective approach that companies take in driving change across their software engineering organizations. Find out how the model is meant to be interpreted and take back examples of the successes that companies have experienced in using both CMMI® and the earlier Capability Maturity Model (CMM®). Capability Maturity Model® and CMMI® are registered trademarks of Carnegie Mellon University.
Too many teams create very decent products that, for whatever reason, fail to rise above the crowd and truly capture the popular imagination. They are surprised when their products are mostly ignored by the marketplace, which seems to be captivated by some other shiny geegaw that's functionally inferior and more expensive. In many product categories, from software to consumer electronics, the product with the most market share is often more expensive and less functional than the number two product. Joel Spolsky will explore why this happens and suggest some ways to design a "blue chip" product that people will love. After you get great software and products using the usual repertoire of debugging, usability testing, etc., you have to go still further and think about beauty, user happiness, and emotional impact. Let Joel help you figure out what makes truly great software-great.
With the global availability of talented development people there is a growing trend toward the commoditization of software development. No longer is it enough to simply be a developer with knowledge of specific languages or algorithms in order to maintain your competitive edge in the marketplace. To compete, you must become a complete developer-someone who can, for example, write some code in the morning and in the afternoon update the requirements Wiki with the results of the latest customer review meeting with your marketing team. This talk explores what it takes to be a genuinely valuable complete developer in today’s world of agile development, outsourcing, globalization, and an increasingly complex business environment.
Struggling to help your team or organization become more innovative? Have great ideas but can't seem to get them off the ground? We all try to influence others, whether we want to move our department to a better development method or suggest a Friday night movie for the family. We discover new ideas to take back to our workplace but then struggle to make something happen. How can we successfully influence change? From her latest book Fearless Change:
Enough of the stories ... Where is the quantitative proof that Agile methods like Extreme Programming (XP) deliver higher productivity and quality? Such data has been missing for years, perhaps because agile practitioners and metrics experts have never fully cooperated to crack this difficult problem. Whatever the reason, the wait is now over. Metrics expert Michael Mah will discuss how he successfully applied productivity benchmarking techniques on numerous real-world XP projects and how a company's development approach was transformed using agile methods. He'll give an overview of the projects, explain an approach to gathering "Agile Productivity Metrics," review how the data was interpreted, and show what was revealed in the time-to-market and quality numbers. Michael concludes with a glimpse of the kind of agile management and measurement that is possible-when you collect the right information.