Dealing with a single system is challenging enough, but the game changes dramatically on a multi-system, distributed platform. MASSIVE platforms can consist of more than fifty distributed systems and components, integrated to process millions of transactions per day-from millions of users-while processing hundreds of terabytes of data. The ramifications of one component or system not scaling to support this load might cost hundreds of thousands or millions of dollars in lost revenue for a single system disruption. Mark Lustig explains how to integrate performance engineering across the entire development lifecycle. The world of MASSIVE platforms requires a disciplined approach to building, measuring, and ensuring system scalability, performance, and throughput.
Quality in delivered software is intangible and very different from quality in physical goods. Some external attributes of quality software-free from defects and easy to maintain-are reflections of the code's internal qualities. When classes and methods are cohesive, non-redundant, well-encapsulated, assertive, and explicitly coupled, they are less prone to mistakes and far easier to debug, test, and maintain. David Bernstein asserts that paying attention to code quality helps us focus on the key principles, patterns, and practices used by expert developers. If you don't pay attention to critical code quality attributes, iterative development practices can quickly degrade code into a maintenance nightmare. Join David and your peers to take a deep dive into the code qualities that make software more maintainable and less bug friendly.
Overly complex code? Duplicate code? Inherent coupling? Been there, done that. Beyond these specific code issues, you may believe that something is inherently wrong with your project-increased pressure, decreased velocity, those broken functions that just never get fixed. Although there are no magic bullets to fix these problems, Emad Georgy shares how he has applied a novel, technical debt model as a predictor of overall product value. Emad has used this model at strategic and business levels to bring focus to the issue of technical debt and to obtain resources and prioritization to address debt. You also can use the technical debt model to identify anti-patterns-architecture, process, and project perspectives-in your organization.
The question of how much-or how little-design to do up-front on a project often leads to a conundrum. Too much design often results in overkill engineering that results in extra complexity and wasted effort. Too little design results in insufficient system structures that result in extra complexity and wasted effort. So, how can you determine the right balance for a given application or system? Alan Shalloway offers a proven approach to determine how much design work to do before beginning the code-build steps in a project. Alan has learned that the trick is to discover and ponder what you don’t know, how it may affect you, and then how to isolate these risks in your code in the simplest way possible.
You are probably familiar with maturity models for software development such as CMMI. In this thought-provoking session, Default.aspx Pope and Ellen Hill describe a corresponding five-stage maturity model for software quality engineering-not just testing-which addresses the challenges organizations face when attempting to improve the their software’s quality. Default.aspx and Ellen introduce their model for software quality maturity and discuss how you can use this model to baseline your organizations' current level and map out a path for improvement. You'll learn how to assess where you are now on the ladder: (1) do nothing, (2) write documents and create forms, (3) measure the process, (4) improve based on metrics, or (5) automate tools and process.
Gregory Pope, Lawrence Livermore National Laboratory
Soon mobile devices will be able to do most everything, right? Although it's fun to talk about how much mobile devices can or will do soon, limitations and constraints remain now and will for a long time. With the lower-tier market offering scaled-down devices, even the latest generation mobile devices have hardware, network, and operating system constraints. These limitations will seriously affect the architecture, design, and testing decisions for your mobile development projects. Jacob Stevens offers a primer on the unique dynamics and constraints of these lucrative platforms. Learn about the implications of mobile platform constraints that impact development and, ultimately, your customers' experience. Discover potential failure points hidden in hardware specifications and explore the trade-offs necessary for mobile success.
As software development teams seek greater efficiency and effectiveness, they often find that they are held back by old IT architecture for development and test. They wrestle with low-powered servers, difficult-to-scale static environments, and a slow IT provisioning and change processes. Today, software leaders at Calypso, Centric Group, Serena Software, and others have radically changed the way they build, test, and deploy software-almost exclusively using cloud computing to power their development processes. Some teams report benefits of 75% faster development cycles with 70% lower operating costs. Brian White describes the techniques and practices employed and success factors you can follow to achieve similar results. Brian provides specifics on which application workloads are ideal for the cloud model and how the use of cloud computing supports Agile development practices.
Testers and managers have wrestled with the problem of evaluating software products and testing efforts, often using approaches derived from manufacturing, construction, and physical sciences. These approaches have been partially successful because software products aren't physical products.
Have you heard any of these from your development staff or said them yourself? "Our software and systems are too fragile." "Technical debt is killing us." "We need more time to refactor." Having quality code is great, but we should understand why it matters and specifically what is important to your situation. Joel Tosi begins by defining and discussing some common code metrics-code complexity, coverage, object distance, afferent/efferent coupling, and cohesion. From there, Joel takes you through an application with poor code metrics and shows how this application would be difficult to enhance and extend in the future. Joel wraps up with a discussion about what metrics are applicable for specific situations such as legacy applications, prototypes, and startups. You'll come away from this class with a better understanding of code metrics and how to apply them pragmatically.
Assaults against digital assets are unquestionably on the rise. If you create applications that handle valuable assets, your code WILL be attacked. In addition to lost revenue and productivity, the consequences of compromised systems can include loss of trust, a tarnished reputation, and legal problems. Much like quality assurance, it’s important to have a holistic approach to security that unifies people, process, and technology. Cassio Goldschmidt introduces defense techniques that measurably reduce the number and severity of software vulnerabilities. These include secure coding techniques, minimizing the use of unsafe functions, use of compiler and linker security options, and specialized static analysis tools. Enrich your development lifecycle with threat modeling, security code review, penetration testing, and vulnerability management.