Title: Large scale software systems Abstract: Software systems that consist of many hundred kilo lines of code to a million lines of code are large scale software systems. One or more software images are created for customer consumption from this common code base. We will look at two important problems and associated case studies with respect to their evolution in this talk. Infrastructure evolution Products are increasingly based on third-party software. This could be open-source or licensed software libraries. The frequency of infrastructure revisions in the products depends on the level of maturity and velocity of these underlying libraries. Usually, the newer version of a library is required to fight obsolescence, security, usability, scalability and performance challenges. In some cases, much awaited features come with revisions. Absorption of these revisions is not very straight-forward. It requires changing few lines of code across hundreds to thousands of source files. Products increasingly find it difficult to absorb these changes because of the cost associated with them. Cost associated with the changes in terms of people, and time is usually high. So these changes are deferred until they become a mandatory requirement. We will look at two case studies. We will also look at solutions that were experimented for faster evolution. Maintaining performance The initial version of the product is built with a set of environmental and design assumptions. Based on these assumptions, code flow is optimized such that 80% of the inputs are processed quickly while the rest take more time. This 80-20 thumb rule is popular. With evolution, many conditional branches are revisited to either allow or restrict code flow into a branch. Unanticipated feature implementations complicate smoother evolution. These factors tend to bloat the primary code flows and skew the time required for processing the inputs. At this point, the initial optimizations become grossly insufficient. We will look at two solutions that are being experimented in this context.