>> Andrew Begel: So I'd like to introduce Yvonne Dittrich. She is a visiting researcher, visiting the Vibe Group for another six weeks working with me, Andrew Begel, on the Studying One Microsoft. And the Yvonne is a professor at IT University of Copenhagen in Denmark, and she does a lot of work in qualitative empirical studies of software development and software engineering; and she has worked in the past the University of Hamburg, she's also been at IT Madras, IT Mondi in the last couple of years in India during a lot of globally distributed software development studies. And the first time I heard of Yvonne she had been talking about her dissertation work where she had software developers go to group therapy to learn how to talk to each other properly, and that just seemed so incredibly awesome and I just want everybody to do that. So everyone’s dysfunctional; everyone could use some therapy. But now we're going to have some, she's going to talk today about some software engineering ecosystem work that she's done in the last year or so, or the last couple years at, in her job as a professor. So, Yvonne. >> Yvonne Dittrich: Thank you very much, and thank you for inviting me here. It's a pleasure to meet all the people here at Microsoft Research. Yes; and actually this is a piece of research that has been going on that I would like to present to you today. It has been going on for a while and it's called Software Engineering Beyond the Project. We all, when we talk about software engineering we all take for granted software engineering takes place in projects, wouldn’t you say so? So that's what we're teaching, what we are planning for, what messages are attributing. So what is a project? Well, these are a number of definitions. We don't have to go read them. Kind of when it breaks down there's a number of characteristics of a project. So a project has a predefined outcome, a goal. Even if it's not exactly specified there is some idea that should be a product afterwards. It’s normally said to have a beginning and an end. It has limited researchers, there's not kind of, there is a limited number of people working at it for a limited time, and it consists of a number of tasks and activities. So that is in the definitions that the software engineering community provides for what a project is. But what if that is not the case? What if software development takes place in a different way? And what does that mean for software engineering? So that is what I would like to talk about today. And I will start with some very, very [inaudible] research where I started to get my doubts about our perception of what the discipline is about. Then I will repeat the main part of the talk while looking into software products and that is probably very relevant for Microsoft because Microsoft is working with software products. That's more or less what you're doing. And then in a way, what does that mean then afterwards for software engineering? What are the questions? If the project is maybe not the main entity of the activities or the main way of organizing the activities we are supporting what does that then mean for software engineering as a discipline? What are the open questions here? So I will start with some beginning doubts, and that was in the late 90s when I started to do research at [inaudible] Institute of Technology after my PhD. We were actually starting to work with the government, and as I came in as a software engineering researcher I thought okay, I would like to talk to the engineers and to the designers. So we talked with people from a onestop shop and that was in a time when Sweden, the municipality administration got reorganized into, so that you have a one-stop shop where citizens go and about 95 percent of all the issues were taking care for there. And it was in this reorganization that we asked, and we asked the head of the one-stop shop of a small municipality in southern Sweden, and she said well the designers, that's us, are kind of like, took me a bit of time to understand and to appreciate that statement because I thought kind of the designers that's where the computer scientists, that's the technicians, that's the people who are actually doing the things, the staff. But if you started to look at the development of technology from a use context perspective you suddenly had, the technology was only part of what was there to design. So we started to call all these people and local designers. These are the one-stop shop people at, it’s all this work, we’re a part of that. So on the one hand they developed software with different developers they hired and their own IT people. On the other hand they kind of discussed with the back office people about what the service provision. And of course by introducing computers into service provision you have the citizens coming in and you have to negotiate what does it mean to provide municipal services now partly online. So if you look at that then you have different things that get designed and you have to find foci of design. And of course not all the design is about technology in the narrow sense, but it might be technology in use, how we are actually deploying technology to both provide better services. How does the services change for that? And one of the things that came about when you look at the software development from this work infrastructure perspective you had no clear defined projects, but you had a diversity of interlaced practices of design and use. So you had projects where people were developing specialized software; you have products that were customized, configured for a specific context; you had the development of Internet which was both context development and technology development and all that work kind of going on at the same time. So I started, I also thought kind of okay, well there's some software engineers. And if you hear municipal administrators talking about software engineering I've seldom heard people being that derogatory about software engineers as they are. The main providers are actually providing software for the whole government so they have a much bigger picture and small municipalities are not in their focus. So they were kind of not very, not liked very much. But then I thought kind of like well, but you must have some people with whom you are like to work as software engineers, and they pointed me to a five person company selling an off-theshelf booking system. They had set in a very strange place, nearly a village from an American perspective in southern Sweden in the woods, of these five people actually two were developing the basic software. The two and two others were customizing the software for the specific municipalities but they had customers all over the place. They have over 300 customers, that means municipalities using their software in southern Sweden, in the whole Scandinavia, Finland, Sweden, Denmark, and Norway. And we looked at their development practice, and at that point in time the HL Manifesto was not out yet; so we called this, what we saw, HL practices. So they themselves, they said oh, we’re doing it, kind of we know that we are not doing the software engineering way of things, but we are actually getting things done and we don't, we manage to get our report line at a time that we use on report, support we get that down. So we looked at how they actually developed software; and they released 20, they had 20 releases per year. Most of these releases were very small upgrades. About once or twice a year they had a bigger release, but you actually had to change the database, so the database scheme. So they had kind of bigger installation scripts underneath. And that was the first time I thought kind of like where is the project? They have been doing that for 10 years at that point in time, 10, 15 years. And they were kind of like continuously supporting the software and continuously releasing the software; they were happy with it. They enjoyed actually new challenges now and then. So they were moving from a very oldfashioned database to a SQL database. They were moving from, they were moving actually with that, they were moving to Java so it was not high-end technology. They were happy with it, the customers were happy with it, the users were happy. So this is somehow a different way of developing software than what I expected to see in this situation. And that was also the first time I started to practice of the development of a product. And then over the time I did more empirical research and I saw the same pattern again and again and again. And that is what I want to talk about today and the implications of that. To define software products, software products are programs that are developed to be used by more than one user and or customer and often need to be configured and customized for the specific use context. I distinguish between configuration and customization. Configuration is through predefined interfaces like, for example, the definition of filters for email readers, clients. Customization is when you actually start to mess around with the code. In many cases you can do both. They are used over an extended span of time and they are continuously updated to match the evolving needs of a market. So that is our definition for that. These are examples. For example, Microsoft Word is a product. You can actually configure it, permanently change its behavior through a configuration interface, but you can also go down to the programming name which the macros and exchange the macros. So you can actually develop your own word. Over the time I did research with several companies; and I will talk about these four products, four cases in more depth. So we’ll come back to them again. I'm using a similar figure as for the diversification of the design and the use context from the perspective of the use context to look at what we started to call ecosystems. And this one is one of the things that we are talking about. This is Dynamics Nav. At that point in time there were a few years before the research they were acquired by Microsoft. What I'm describing here is the boxes are organizations or companies. The people in there they are groups of developers or users, so they are stakeholders. The arrows mean the corporation around the design of some kind. And here you have multiple organizations. So that's the notation. How I did the research, the thing is that I actually recognized this common pattern after a number of research projects with these software products companies. So we've done a lot of research mainly together with PhD students on the individual projects, but they all focused on different areas. So how do you then kind of, you know that there is something that has something in common, but how do you actually make that accountable in a scientific way? So I went back and did interviews with the partners and with the people in the companies we did the research with. So it is an interview study; it's based on the three interviews per company, and it's with open coding, actual coding. That's how I derived a theme so that I came to talk about; and it's based on and triangulated with previous ethnographical fieldwork and long-term contact. So one of the companies is actually people that I know for 20 years, they are friends and they run a company on developing a software product. The triangulating fieldwork is a documented in a number of articles. I don't have time to put them up for reading now, if you're interested I can provide the slides and you can follow up on some of the themes. However, that is the documentation of the underlying empirical work I based the interview study on. The first product I would like to talk about, and I'll talk you through that with a bit more detail because you will see that makes it also easier then to follow the analysis because it's pulling out the commonalities between this ecosystems. That is UIQ. UIQ is a daughter of Symbian, the Symbian Company. You might know that Symbian OS was founded to counter Microsoft phone initiatives as a joint venture by Siemens, Motorola, Ericsson. They were founded actually in Blekinge, that is close to the university I was working at the time, and we did research with them. We did research focusing on interaction design and user experience with the interaction design group in this company. So UIQ was, then at some point in time Symbian was a split up into Symbian OS and UI framework on top of the operating system. So the Symbian OS was moved to London also to have more people, be able to hire more people, but UIQ stayed in Blekinge. What they did, they did a user interface framework. They developed that in parallel with specific applications for the customers that were also the owners of the company. And that is interesting because you all know Nokia was buying out the others and made Symbian and UIQ the software open source and that killed the company. So you could think about it as an ecosystem because actually if you changed it too much you might actually destroy it. They developed their product, their framework they developed in parallel with applications based on it. They developed, these applications were done [inaudible] and kind of further beautified by the customers and owners and then there's the users here. You have, on the other hand, you had third-party developers who also, they were not so prominent as users and customers and that was maybe one of the errors that the management did here. On the other side, they incorporated a high level of Symbian because the user interface framework was depending on functionality from the operating system. The second tier is innovation. Innovation is developing in ERP systems. ERP systems traditionally came with their own proprietary database and their own proprietary language development environment. That is still the case for innovation. At the time of the interview they were actually slowly moving the technology stack implementing as the database and the implementation of the proprietary language and the runtime system over to Microsoft technology. For that, that was in the beginning of the interview, I wasn't really aware of it, but that they actually had to communicate and drive requirements into the Microsoft organization. And they didn't discuss very much about it. So for that they had too much pains. These ERP systems, I said that there's these frameworks and proprietor languages, databases, runtime systems. That is done by, they distinguish between two groups of developers, framework developers and application developers. And the framework developers, they are responsible for this backend side of it. And they say there's different kinds of developers. There is different types of developers. So these are people who are kind of really interested in compiler construction, performance, very hard technical stuff. Application developers are, have often a business background and they are, they know about the domain. And that is the administration of all the data in the company. So the idea of an ERP system is that you run your whole bookkeeping administration accounts, human resource, through the application. Opposite to other ERP systems the idea here was not as a division and except targeting smaller companies then, for example SAP who is the high-end product in the market, and that meant also that they said okay, we are providing basic functionality but they are opened very quickly for partners to not only configure the software but to actually customize the code. So the ERP systems are shipped together with the development environment for these people to actually program. These customizations can be changes in the business rules but it can be so-called verticals. That means they're developing a whole new module, for example, a module for a specific business area. We had one partner, they were developing for a small airplane carrier. They developed a whole module about what is a flight and what are seats and tickets and pilots and attendees? So this means that you do a vertical, so you have changes in the database, you do a piece of program that has some interaction with the base program, and then you do the interface on top of that. And of course for that they are communicating very tightly with the customers here. The next thing is also they were also fun. They were a company doing hydraulic simulation for, that's actually the nicest pictures in my sideshow. What they're doing they're simulating water flow and they have one-dimensional, two-dimensional, and three-dimensional simulation engines and they combine them sometimes. This is Canberra, Australia; and do you see kind of a river here? It's not exactly under the blue line but, so what you do is you're abstracting the topography of a water system. You identify sections for the model, you use the sections and you define how the riverbed looks like. You have rainwater, runoff system models there, and based on that then you run simulations, for example saying if you have heavy rainfall how will the water in the river behave, when will it flood, things like that. So you can also simulate, for example, what happens if a dam breaks? The company is one of three or four worldwide leading companies in that technique. They have been modeling the Nile system, for example. That's also one of the things I learned, the reason why Egypt has a big military. They are so much depending on the Nile so they have to be able to protect their water sources. So that is one of the motivations for them. Anyway, I should've doubled that slide. So at the time of the interview they were reorganizing their organization. Previously, the simulation engines were maintained and developed by departments focusing on certain modeling tasks. So their main business, as their main business they regarded consultancy for governments and for other actors[phonetic] about impacts of constructions on the behavior of the water, on the behavior of oceans or rivers. So they had the engines and the software maintained close to these consultancy groups. They recognized that was not, on the long run this was not actually a sustainable way for the software part of it, and they wanted to sell the software more independently than before. So they started to develop a software in an own unit, but of course these people in this software development unit they were tightly interacting with the people using the software for these specific consultancies. On the other hand they were developing not only that the people here were configuring or kind of defining the simulation models that were run by the systems they were also, when you found a kind of element, a simulation element that was not yet supported by the system these people had hydraulic engineering education so they might have a PhD in applied mathematics, so they all could program. So they actually all added to the code base which was also an issue because it meant that the code base developed sometimes in a pretty uncontrolled way. However, these people in the city, when we kind of did the research with them they started to develop another set of customers where you had kind of permanent simulation of water systems in order to manage the water system at the same time. So they would actually continuously say okay, if we have so many rain then we might actually have flooding in two days in the city. So that means how can we prevent that and how come we work with that ahead of time? So that was the water management solutions where you did not want to ship report to the customer but you shipped the whole system, operational system to the customer and of course the other users who used the software as well. The last system is a very different system that is a system administration tool. Here, it is again a very small company who on the one hand did system administration for governmental organizations in Germany. So they had their specific customers and they kind of, in order to do the system administration they had the need to have an automatic distribution and installation tool for software in the local area network. There are industrial solutions for that. I'm counting on that some of, one of the solutions might actually be produced here. However, they are very expensive. They don't work for small organizations. So they developed, and then thought okay, well kind of let’s do it ourselves. So they developed an open-source product that they, together with the customer, they first developed that. However, as it was an open-source, of course other people can use it. Here again we have to the basic software but to run the software you need installation scripts for specific programs on specific operating systems and specific hardware. And these installation scripts they were of course done by them but they were also done and shared by the open source community. On the other side, with this tool they shipped a UNIX kernel. So every time the UNIX kernel changed they had to change. And also every time the operating systems changed they had to change. So one of the big projects was to make this system able to handle Windows Vista because that obviously worked very differently from the previous Windows versions. So, yes. So now kind of why did I talk you all through these kind of different cases and different examples and what can we learn about them? One of the main things is that if you look at the series of ecosystems, in none of the ecosystems there was, the development took place in one place. So there was, so the final design, the thing that was a surrounding here with the user that was based on one hands the direct communication with the people installing that system here, but that, again, was based on some other software and sometimes the chain here like in an innovation chain this was actually much longer. And each of these stages added to the final software. That means you have to think about an interlaced system or kind of related system, communicating system of different designed constituencies. What happens here on the use side is depending on the processes and design decisions taken far away from the user so it's also difficult to influence this. So I'm also into user and design and development of software. So a lot of the usability methods that we are actually teaching they kind of take for granted that the [inaudible] system, so the software engineer then developing the software has actually is in charge of the design. But that might not be the case. In all places for that reason one of the things that was identified as most problematic was the communication with the user and with the user community. And all the companies did extra work to be in touch with their user organization. So here in innovation they had big conferences, worldwide conferences where they invited users, partners, introduced new features, discussed new features with them. Here they had the same thing. They had companies, conferences, user conferences where they also tried to identify new features, new directions to go to. UIQ had their own user group because where they did long-term studies of the usage of certain applications and features in the phone. So in other words, as it is not clear who exactly is the user and you're not cooperating with the user you have to, so there's a different way of interacting with your user community. >>: Sorry, can I ask>> Yvonne Dittrich: Yeah. >>: Clarifying question. When you talk about users in this context does each group talk about the user one step down the line, like the framework developers, users of the application developers not the customers? Is it that kind of user or does everybody realize the end customer who actually pays money is the user? >> Yvonne Dittrich: Everybody is pretty aware that the end customer is the main user. And these are the people who are paying the show. So all of them are kind of getting into this. Here, what comes from a usability point of view, here is, so the usability work at this product development has to take that into account that you're not actually developing for a specific user but you're developing for a whole group of users. And I think that actually Microsoft had the most advanced system in place here, but also UIQ was not that bad. They were also very, very good. The other thing is, from a software engineering point of view, you have actually a situation where you have a use before you have a design. So there's people using the software and who are acquitted the software who actually know what the software can do for them. So have also a different level of interaction with the user. You're not developing from scratch. From a product point of view, and that might be more interesting also from a technical side here, you need technologies that supports both of the evolution and the deference of the design. So the design is deferred to use context and you can say like okay, well what does that mean? We have a lot of technologies that support kind of the rationalization or generalization of design. We have aspect [inaudible] development we have tried, we have model driven development, things like that. However, all of these kind of technologies are focusing normally on having software engineers as users. However, if you do it like that you don't have necessarily software engineers as users in these ecosystems. You might have software engineers as users, you might have business people as users, you might even have people who have no software education and no technical education as somebody who's actually configuring the software. So in other words, the challenge here is to make these technologies, to lift them up to the user level, to main expert level. The other thing is that when you kind of combine evolution and the deference of design, especially if you have to allow the user to change your code, your source code or the source code of the application, then you get problems with the upgrade because you have a two-dimensional evolution of the software. And that is still an unresolved issue because the techniques that we have for that they work when you can anticipate at exactly which kind of places you will have a change, but they don't work when you cannot predict which kind of places will change. A colleague of mine who is into programming languages, in the beginning of some of the research underlying it he said [inaudible]. They just have to use our technologies. In the end, two years later he wrote an article together with one of the PhD students detailing how all the technologies from the scientific community fall short in supporting, for example, ERP customizations in this respect. What you also have is the end user development interface that is here for customization and configuration. That is only one of the technical interfaces between the design constituencies. So also the interface here, for example, between on one hand UIQ and Symbian and [inaudible] it that here somehow the interface works in API. This was also an API. So the interface, the technical interfaces, they are separating and breaching between different design constituencies. And these interfaces are contested because you want to do the development here sometimes they kind of reported about that they didn't have the resources to develop a specific feature. These guys wanted it, so they developed it themselves because they also have, and at some point in time they were saying well kind of, anyhow we have this bit of code here that every time you change something here, and that is rather frequent, we have to change with it. So this actually should be maintained here. So they shipped code between companies and they did the same here between UIQ and Symbian. So in other words, these interfaces have to be carefully also maintained over time. And last thing is as you have these multiple level evaluation on all the companies worked you thought kind of they should have a high level of architectural documentation; they didn't. They worked with what we called a walking architecture; that means people who have the architecture in their head, and walked around. And they were, and we discussed with them, why don't you just write it down? Why don't you distribute it? Why don’t you have a website explaining your architecture, especially with these big ones where you had a huge number of people developing the software. Innovation that point in time there were about 200 people developing the software. They said well, as of as one of the PhD students working with the architecture in the project she did an interview with a number of randomly selected, but she wanted to a fair, to the [inaudible] in Germany and kind of talked to people and had a number of different, did interviews there and what came out of it is that one of the reasons why the architects were reluctant to put down the description of the architecture is that then the developers would use the architecture without consulting them, and that meant that they wouldn't get an update about what were critical aspects in the software. So they used, in a way somehow they used, we called that in the article good architectural reasons for bad architectural documentation. You had a question. >>:. It's interesting, I was thinking about the way that you talked about the interfaces between each group and that what we learn in school how to evolve your APIs you think [inaudible], you make a subclass or you make an interface, and then you just add interfaces for extra functionality but you try not to delete old functionality. But the notion of being able to sort of change the boundary, where the functionality is at all, like the API it’s here, well, actually it needs to be pushed further up this way and this one needs to be pushed back; it's almost like web design in that you have to decide whether to put things in the client, the mid-tier, or the backend server and the division sort of changes as your performance characteristics change. Are there sort of established, I don't want to say formal ways to talk about that kind of architectural evolution or is it just a negotiation between parties? I'm just kind of>> Yvonne Dittrich: I haven't encountered any formal way of this kind of negotiation on an architectural level. But in the cases it was a negotiation and it is still a negotiation. So with Nav they had to say like okay, that's the database, that’s the SQL database. Does it do what we want it to do, or do we have to do some add-ons, or are they doing add-ons for us, or do we keep our proprietary database? So in a way somehow there's a problem and there’s many solutions. That's why you call it design also. >>: The negotiation route leaves a big problem where the customers don't have, there's much more organizational friction between customers negotiating with Navision and Navision negotiating with the rest of Microsoft, at least Navision was owned by Microsoft so they could at least call them up on the phone and actually find out their e-mail addresses whereas the customers can't. And so like their power to move the boundary isn’t as, they don't have as much power. >> Yvonne Dittrich: Kind of yes and no. But they negotiate about something else here. This is not all friendly relation because in a way these people are earning money by doing special features. So if now Microsoft gets interested in implementing the special feature in their own software then they are losing business here. So in other words, if you have a negotiation of a different kind of boundary on that side. >>: Or is this the corporate purchase? >> Yvonne Dittrich: Yeah. So sometimes, actually I think Navision, I don't know whether they did that after they were acquired by Microsoft; but I know from before they actually bought, sometimes they bought the software from the partners to make it part of the main application. And that was also more interesting when we did interviews with these people they kind of also tried to make, that was in the time when they changed the proprietary database to the SQL and with the SQL database you couldn't do certain things as a partner. So they had a proprietary database had a very smart indexing system so you could do very quick searches and reports. So they were kind of trying to lobby through us to get back to the proprietary database. So that was, so I want to say with that is that these are negotiation points of who is doing what in this context. And at the same year somehow what can an internal IT department do or smart super-user and when do you ask a cosidence[phonetic]. Cosidencies[phonetic], they are taking, I don't know what a cosidence[phonetic] in the US is taking, but I think it's in about 1000 Danish crowns which is 150, 160, 200 dollars. So it's quite an amount of money or so. So, there is also competition between these guys. On the one hand they have the same kind of interest with Microsoft; on the other hand, they are competing for the users, for the customers here. And they are somehow taking each other's customers because its introduction of ERP system is normally related to a high friction in the organization. So after their first implementation many companies tend to switch their considents[phonetic]. So there's also kind of, it's not that you incorporate around the design doesn't always mean that you’re nice to each other. With other words, when we were discussing this kind of multilayer development I think there's also another point that we don't really, in the proclaiming technology, we don't have concepts for this multilevel development. Well, we have concepts but they are often not working for these real world application contexts. The last one is the process. And that was actually a surprise. It was pretty, I knew that there was kind of this continuous development, but when I started to do the interviews all of them said well yes, we have, one of them called it the heartbeat of the product. That is where the new features are released. So that was kind of like a studied pace and it was kind of characteristic for each of the products. So they had a heartbeat of half a year, so every half year they had a new release with new features, things like that. There were also three developers working on it so was not a big thing, big company. The ERP systems, they had at that point in time a three year release cycle and they were about to bring it down. I think they are down now with one year. However, whatever the characteristic heartbeat of the product was there was one cycle that was quicker and that was back fixing or small features, patches. That was about one tenth of the time. So if you had a half year release cycle then the patches were every week, every two. When you have three years release cycle the patches, the back fixes were every two or three months. So you had kind of, it was kind of like the work kind of relationship but we didn't put numerics on it. But then there was another cycle which we actually which I discovered in interviews and that was because you had these new features and the features were not anticipated in the beginning, so often, the technical design, the architecture did not actually support these features; so over time the technical design got worse. So in the regular base they had to renew the technical design and that was normally across several of the heartbeat releases. So when Navision was replacing the technology stack with Microsoft technologies they couldn't put just a three year release just on changing the technology because then they wouldn't have been able to sell anything anymore. So what they did is actually they sliced in the transfer to the Microsoft stack over several of the releases. Here the smallest, the open source, that was every two years or every three, four years they had to redo, for example, their data structure because the new operating systems, the new features, new operating systems all that was, kind of got into the way. Okay. So in other words, there's also different drivers for different development cycles. They roughly, we had this research and maintenance and categorization of maintenance. They roughly correspond to the three maintenance categories, back fixing, new features. Corrective, complementary, and proactive maintenance. How to organize such a process is contested. So there were a lot of discussion. Microsoft had different organizations depending on the kind of release. When it was a feature heavy release they had feature teams; if it was like a backend heavy release or an application heavy release they put the framework changes in the beginning and then kind of as you get them out of the way, get them done and then focus on the application level. UIQ was experimenting with feature teams and module oriented teams. They were experimenting with splitting maintenance from development. And as I said, UIQ did simulation software. This company was reorganizing in order to be able to focus more on the software and not so much on the application. So one of the points was that you had to keep track in what happened in the other, these end constituencies because what happened here in the partner space will tell you something about what is new features here. On the other hand, what happens here at Microsoft will kind of tell you whether you get into problems in the future. So you had to actually keep track with these things. So what our project’s done in this context, you could say it releases a project, but the release is not a project because it's not from scratch. And also it's not as closed. In these companies what they did organize as projects sometimes was these changes in the technological base. So they had a project going on in parallel to the evolution restructuring the main data structure or reworking the main data structure. In the simulation software when they actually moved one of the computational kernels from a [inaudible] program to, I think they used C sharp in the end, that was kind of the whole restructuring, the rework of the kernel that was a project. So what you have is that the project is kind of a temporary closure that you do to do certain kind of technological, to have peace and quiet to do a piece of design in a good way. So that is by far not the only, not the main way of organizing here. So, that's kind of coming back as summing up the results. There's no single project but an interlace of development activities. Requirements are moving. So even during the release requirements are moving all the time. They cannot be regarded as fixed but are subject to multilevel feedback cycles that you do not control as an organization. There's no one process but a continuous development of several rhythms overlaying each other. So it's more than HL development in that respect. Software is not necessarily developed before it is used, so sometimes it's used before it's developed. That means. [inaudible] have to take social and technical heritage into account. Architectural knowledge and knowledge management needs to support continuous evolution. And that means also if we know what we want to have architects in this context do architectural diagrams we have to actually support them with keeping up to date with problems in the code base so they can actually continue developing their architecture. And there's no blank slate; never. And that is confirming something that Lucy Sedgman said in another context, that we cannot design as if we come from nowhere. We also always have to, in this context specifically, we are always basing our technical design on something that is already there and we have to take that heritage into account. And what does that now mean for software engineering? Many software engineering methods and tools are based on the notion of a project and we might have to reconsider that. We need to cope with interlace of the heterogeneous development and use activities and how we actually make use of the possibility of getting feedback about needs and wishes and how things are used in the continuous development cycle. And that means also we should actually start to support design collaboration along the chain of design, not only within a project, but along this chain of design constituencies. From a use side we have to think about coming from ease of use to ease to ease of design. Most of these applications can be configured by the end user and end users are willing and able to do that. They need good user interfaces for that or good designer interfaces for that. That requires that we actually think about, when we design software product we should not to think about designing the functionality but we should think about designing environments for somebody else to design. And for that we have academic tools and languages that are solving some of these problems or providing us with tools for that. However, they need to develop to fit the reality of software product ecosystems. And that means we cannot ask, for example, people at the partners to use formal methods as formal methods. lf we want to have formal methods on that level we need to make it more usable. And we need also to allow, as we need to get a better understanding of requirements for such tools and languages and especially what does it mean to open, to use them to provide end user development interfaces for nonprofessional developers. Yes, that is the last slide. And the question anyway, Andy and I were doing the last two weeks we were talking to people here in Microsoft and understanding the reorganization, and one of the reiterating things that came about is kind of, when we are deploying things on the cloud things get different. But what gets different? It's not different that we have users and it’s not different that we have software products that are configured and that we are depending on other products, however it seems one of the things that I would say as a hypothesis that the processes, development processes and the deployment processes, they are the notion of the release starts to disappear. It's going to us continuous deployment. What does that then mean for the corporation with the other actors in the ecosystem, especially the users? And how can we support this continuous evolution on multiple levels? Because just I'm kind of changing the operating system does not mean that I change the services based on it or that have stopped changing the services based on it. So we have even more challenging dynamics in these ecosystems. So, thank you. >>: Comments or questions? >>: So what’s been surprising with this set of interviews that you’re doing [inaudible]? >> Yvonne Dittrich: One of the things is that if you have these even more challenging dynamics that operating systems don't take three years but one year releases, one-year rhythms, it becomes much more important I think to have an understanding about what are the features somebody else have to deliver so I can deliver my feature here? So anyway, I think the tendencies that I described here and you could say is based on all technology, they get more extreme in that respect. So you have to be much more knowledgeable about what the operating system is doing in order to build the cloud based on it, what the Windows servers are doing in order to base the cloud on it in order to be able to deploy software based on it. So a lot of things I would say are the same or I kind of see it again with this kind of challenge of, the challenge of you have a requirement, you want to do certain things, but that means that you are depending on somebody else to do certain things and how to then negotiate this, but in a way somehow in a more fast-moving environment, in a way even more important. >>: Yeah. It seems like dependencies, so what you're talking about [inaudible] where everybody's intimately interdependent and what the product program [inaudible] is paid with dependencies. >> Yvonne Dittrich: Yeah. That is one of the things because that is what we have been taught in the university that you have your requirements and you fix them and then you develop your software and everything else is a problem or is a defect. You haven't done your requirements right if they change. So that is what we have been fed up with, what we have been fed, kind of like that's what our professor said to us. So you have to much more accept that you're in a moving environment and that you cannot have this closure for the six months that your development takes. So you have to actually, instead of having all these techniques and notations to actually box your project you have to think about how do I communicate? How do I keep track of the users? And for that we need to develop techniques and tools and concepts because we don't, we have a lot of software product developers who are obviously successful and they all do stuff that we don't teach at the universities. They do user communities; they run user communities; they have conferences for their users and for their partners; they have, so they have pilot users and work with them. So all these kind of things we don't teach. So we should actually started teaching it, and we should started developing and abstracting concepts and methods for that. >>: So if software development keeps getting faster or deployment, your cadence for deployment you would like to be able to deploy daily. That works for things like Snapshot, which at this point I'm sure the first person that Snapshot took them all of a week to build and then they get 4 billion dollars for doing that. [inaudible] I forget which one they were, but what happens to the pieces of technology that are complex, that are hard to build that you can’t build in a week like getting a Windows kernel right? That's taken obviously years, and even just to try to build like let's say some new feature into it even in the open-source world where they go faster is really kind of a challenge. I mean it's hard to do that. So if you have such a fast cadence does that mean that you can only have a fast cadence for the simple stuff? And what happens to the complex stuff if your market changes every month? Then you're not done yet. >> Yvonne Dittrich: I don't have an answer. So that's a good question. I think that is one of, course in a way when you add people to fasten in the project you also add overhead, so at a certain point in time I think people doesn't help you. Actually open-source ending gives an indication about how software engineering could scale because they manage to scale and they manage to have a lot of developers doing some kind of coordinated things to one piece of software, even if they have a parliament, so they have government structures both organizational-wise and tool-wise. So there is some kind of possibility, but it means also if you start from scratch with the developing something there will be somehow an initial investment. And maybe we are lucky that we don't have to develop all operating systems from scratch, and somehow for the devices that, the new devices we actually know how to develop operating systems. So we kind of experience; we can take that experience and continue based on it. So kind of I don't have an answer, but you might look into the open-source communities to see how this can be done. The other thing is that you will still, for some more complex software we will still have, really fundamental changes will take time. As a new concept for operating systems that might take time. >>: All right. Thanks very much. >> Yvonne Dittrich: Thank you.