Wednesday, December 4, 2013

The Power of Platforms

In Product and System Design, a platform is a structuring principle or foundation on top of which a set of independent elements and interfaces can be arranged, rearranged, and innovated upon (see [1] and [2]). Shared key components and assets define the core of the platform and “diversification can be achieved by building upon and extending capabilities to build new, but related foundations“ [3]. Baldwin et. al. [4] point out that most platform definitions identify the reuse or sharing of common elements as core characteristics, and that all platforms are “modularizations of complex systems in which certain components (the platform itself) remain stable, while others (the complements) are encouraged to vary in cross-section or over time“ [4]. Well-structured platforms allow numerous advantages, such as cost saving, increased production efficiency, ability to evolve and produce variety in large scale (see [5]).

In Computer Science, this term was initially used to define the computing hardware and later on the operating system (OS) upon which application programs would run.
Earlier computers had to be designed and built from the ground up always when new releases were planned. Not infrequently, because of incompatibility with newer systems, there was a costly process involved in moving data to different formats. In the early 1960s, IBM created the first modular computer, the System/360. This model was a landmark in the computer industry, because it “offered the possibility for other firms to enter and compete in the computer marketplace, on the basis of providing modules that would ‘slot in’ or ‘plug in’ IBM System/360 architecture.” [5]

As computer hardware was becoming modular and increasing its complexity, systems without OSs presented enormous challenges for programmers. Earlier computers required the full hardware specification to be attached to the application every time it was executed. Therefore, a program not only would be suitable for one machine, but also every time someone needed to run the program, it was necessary the whole process of loading commands specific for that computer was be necessary. As a way to optimize computer systems, the industry realized that some fundamental set of instructions that concerned hardware management could be loaded into the memory and managed separately. The distinction between applications and OS was then created.

The reuse of code and the modularization of computer systems brought many advantages to the field especially regarding cost, manageability, and evolution of complex systems. According to Baldwin et. al., “by promoting the reuse of core components, such partitioning can reduce the cost of variety and innovation at the system level. The whole system does not have to be invented or rebuilt from scratch to generate a new product, accommodate heterogeneous tastes, or respond to change in the external environment. In this fashion, the platform system as a whole becomes evolvable: it can adapt at low cost without losing its identity or continuity design.“ [4].

Developers were freed of rewriting Kernel instructions for every single application, and could use the OS as a platform upon which several programs that shared the same specifications could run. Not only that, the same OS, as was the case of e.g. MS-DOS, could be used across a large variety of hardware systems from different vendors, provided that those were “IBM compatible”. As Gawer [5] points out, “in the process of modularizing the system architecture, the modules are defined and the rules of interaction between modules are clarified. The interface specifications formalize, codify, and therefore reveal the rules of interaction between modules. Once this information is revealed and codified, it becomes easy to transfer, -- but also becomes hard to protect.” [5] It certainly was hard for IBM to protect its platform, especially because of the highly innovative ecosystem it had promoted.

The modularity of computer systems became even more robust with the advent of Object-Oriented Programming (OOP) and its concepts such as encapsulation, polymorphism, inheritance, and so on. OOP took the reusability of software components to a next level. Powerful software development platforms or frameworks reduced enormously the complexity and cost of writing code. According to Pree [6], frameworks “mean a real breakthrough in software reusability: not only single building blocks but whole software (sub-)systems including their design can be reused.”[6]

The inexpensive and powerful strategies allowed by frameworks create a rich ecosystem for application development that lead to an enormous variety and innovation, especially when it is popular and open to a great number of developers. Rich ecosystems can be observed especially in mobile platforms such as iOS, Android, Windows Phone, and so on. Both the Apple’s App Store and the Android Marketplace count already with more than 1 million different apps[1] [2]. These considerable numbers of mobile apps were only reached when the leading companies in the smartphone field decided to partially open their systems to outside developers who had “skills, capabilities, or an understanding of user needs that those inside of the firm do not“ [4]. By allowing new constructions and manipulations of building blocks inside the mobile platforms, not only the degree of innovation, scalability, and evolvability increased but also new device releases raised by a factor of five (see [4]).



[1]        D., Phillips, Nelson, Sewell, Graham, Woodward, Joan Griffiths, Technology and organization: essays in honour of Joan Woodward. Bingley [u.a.: Emerald, 2010.
[2]        O. L. de Weck, E. S. Suh, and D. Chang, “Product family strategy and platform design optimization,” MIT Working Paper, 2004.
[3]        M. H. Meyer and J. M. Utterback, “The product family and the dynamics of core capability,” 1992.
[4]        C. Y. Baldwin and C. J. Woodard, “The architecture of platforms: A unified view,” Platf. Mark. Innov., pp. 19–44, 2009.
[5]        A. Gawer, “Towards a General Theory of Technological Platforms,” in Druid Summer Conference, 2010.
[6]        W. Pree, “Meta Patterns - A Mean For Capturing the Essentials of Reusable Object-Oriented Design.”




[1] Accessed in November 25, 13. http://www.theverge.com/2013/10/22/4866302/apple-announces-1-million-apps-in-the-app-store
[2] Accessed in November 25, 13. http://mashable.com/2013/07/24/google-play-1-million/