Title: Software engineering and testing at Microsoft : A research perspective
Abstract: Software is changing the world. But the software that drives this change is continuously growing in complexity and functionality. At the same time release cycles are shortening and customer expectations are rising. How does Microsoft guarantee trustworthy software in this challenging environment? In this talk I will shortly present Microsoft's approach to testing: its engineering life cycle, the role that testers play, and the used test tools and systems. I will then drill down into technologies (and tools) that my team championed in the last years: model-based testing with SpecExplorer, unit testing with Pex, security testing with Sage, and concurrency testing with Chess and friends. While these tools improve the effectiveness of software testing dramatically, there are still plenty of research challenges ahead, some of which I will address. Only if we tackle these successfully, we might be able to say someday that software bugs are as rare as power outages.
Title: Designing for Failure: Challenges for developing and testing complex systems of systems
Abstract: In this talk, I will discuss some of the issues that affect the construction of large-scale complex systems of systems and will suggest that current approaches for developing and testing software are inappropriate for these systems. I will suggest that approaches to engineering based on reductionism do not scale and will explain why we need to shift focus from system correctness to system failure. I will discuss the need to design and test systems so that they can recover from 'normal failures'.
Title: Tunable Architectures or How to Get the Most out of Your Multicore
Laptops with four cores, PCs with 16, and servers 48 cores per chip -- the era of multicore has arrived. Programming these machines, however, poses many challenges. In this talk, I discuss the issue of performance tuning. Because multicore computers differ significantly in hardware characteristics, Software developers hand-tune parallel programs for a given platform. This is tedious and leads to non-portable code. Although the architecture of parallel applications also requires adaptation to achieve best performance, it is rarely modified because of the additional effort. The Tunable Architectures approach proposed in this talk automates the architecture adaptation of parallel programs and uses an auto-tuner to find the best-performing architectural choice for a given machine. We introduce a new architecture description language based on parallel patterns. Several case studies demonstrate significant performance improvements due to automatic architecture tuning and show the applicability of the approach to industrial applications. The talk also points out several other research areas in the multicore software challenge, in particular parallel testing, finding concurrency defects, and re-engineering sequential programs for parallelization.
Title: Customers as Integral Part of SAP’s Quality Strategy
Customer focus is becoming increasingly important. This talk focuses on how SAP masters this challenge and presents the new framework of SAP’s Quality Strategy – “Delight the customer”. Alongside a number of new aspects, the three programs “Customer Proof”, “Customer Validation” and “Customer Connection” were set up to integrate SAP customers even more and even earlier in the product life cycle. This is seen as a key success factor for SAP when it comes to delivering high-quality products in a sustainable way. Another important aspect of SAP’s Quality Strategy is the approach to implement LEAN, which moves us forward to a more agile product creation process. It will also be explained how SAP manages to transfer a manufacturing focused methodology to the software industry and how its impacts on software production and our customers are seen. The combination of continuous improvement processes and the focus on people make LEAN the right production model for SAP.