Opportunities are available resources that yield desired results. Their suitability depends on who seizes the opportunity and the context for its use. Opportunistic development relies on the availability of reusable software components to produce hybrid applications that opportunistically join such components to meet immediate functional or content needs.1 Availability and connectivity are key qualities of an opportunity.2 Situational assessment determines when the best available, most deployable opportunities exist within time and resource constraints.
This article examines opportunistic development from an enterprise perspective in which the reusable resources are called opportunistic assets. We define fitness criteria for classifying resources according to their potential as opportunistic assets. We consider the roles of the monolith and the mashup in opportunistic development. Monoliths are large, self-contained software applications that control significant data and processing components. Mashups are Web application hybrids that consume opportunistic assets. Developers of end-user mashups choose APIs from multiple providers to weave a new application, joining content and functionality. The more opportunistic assets there are, the faster the resulting application comes together. Often, providers expose services as part of the growing trend of modern monoliths, scalable software applications from Internet companies that offer a wide range of useful services. Unfortunately, the range of reuse opportunities doesn't extend to enterprise mashups, where hybrid-application development relies on legacy monoliths of industry IT for robust functions that ensure quality of service (QoS) in the resulting software. Monoliths produce opportunistic assets when they expose key functions that are easy to mash. Reusing legacy monoliths poses integration problems, however. More than a surface interoperability analysis is required, leading to longer development times and missed opportunities when enterprise mashups are evaluated against the quick deployment and innovative outcomes of end-user mashups. To reduce this integration barrier, we advocate elevating integration strategies to first-class opportunistic assets. These assets can present monolith applications as opportunities for mashups.