OMG Reusable Asset Specification Summary and Bibliographical Notes

Ivan Marsic • Rutgers University 298 http:soapuser.com WSDL at: http:www.w3.orgTRwsdl20 [Armstrong et al., 2005] A. Dhesiaseelan, “What’s new in WSDL 2.0,” published on XML.com, May 20, 2004. Available at: http:webservices.xml.comlptaws20040519wsdl2.html Problems Section 8.3 7.1 WSDL, although flexible, is rather complex and verbose. Suppose you will develop a set of Web services for a particular domain, e.g., travel arrangements. Define your own service language and then use XSLT to generate the WSDL. 7.2 Tbd 299 Contents

9.1 Aspect-Oriented Programming

9.1.1 9.1.2 9.1.3 9.1.4 9.1.5 9.1.6 9.1.7 9.1.8

9.2 OMG MDA

9.2.1 9.2.2 9.2.3 9.2.4

9.3 Autonomic Computing

9.3.1 9.3.2 9.3.3 9.3.4 9.2.3

9.4 Software-as-a-Service SaaS

9.4.1 9.4.2 9.4.3 9.4.4

9.5 End User Software Development

9.5.1 9.5.2 9.5.3 9.5.4

9.6 The Business of Software

9.6.1 9.6.2 9.6.3

9.7 Summary and Bibliographical Notes

Cha pt e r 9 Som e Fut ure T re nds It is widely recognized that software engineering is not a mature discipline, unlike other branches of engineering. However, this does not imply that great feats cannot be accomplished with the current methods and techniques. For example, the art of building such elaborate structures as cathedrals was perfected during the so called “dark ages,” before the invention of calculus, which is a most basic tool of civil engineering. What the discipline of civil engineering enabled is the wide-scale, mass-market building of complex structures, with much smaller budgets and over much shorter time-spans. Hence, it is to be expected that successful software products can be developed with little or none application of software engineering principles and techniques. What one hopes is that the application of these principles will contribute to reduced costs and improved quality. Meta-programming is the term for the art of developing methods and programs to read, manipulate, andor write other programs. When what is developed are programs that can deal with themselves, we talk about reflective programming. http:cliki.tunes.orgMetaprogramming http:fare.tunes.orgarticlesll99index.en.html Ivan Marsic • Rutgers University 300

9.1 Aspect-Oriented Programming

[ See also Section 3.3. ] There has been recently recognition of limitations of the object-orientation idea. We are now seeing that many requirements do not decompose neatly into behavior centered on a single locus. Object technology has difficulty localizing concerns involving global constraints and pandemic behaviors, appropriately segregating concerns, and applying domain-specific knowledge. Post- object programming POP mechanisms, the space of programmatic mechanisms for expressing crosscutting concerns. Aspect-oriented programming AOP is a new evolution of the concept for the separation of concerns, or aspects, of a system. This approach is meant to provide more modular, cohesive, and well-defined interfaces or coupling in the design of a system. Central to AOP is the notion of concerns that cross cut, which means that the methods related to the concerns intersect. Dominant concerns for object activities, their primary function, but often we need to consider crosscutting concerns. For example, an employee is an accountant, or programmer, but also every employee needs to punch the timesheet daily, plus watch security of individual activities or overall building security, etc. It is believed that in OO programming these cross-cutting concerns are spread across the system. Aspect-oriented programming would modularize the implementation of these cross- cutting concerns into a cohesive single unit. The term for a means of meta-programming where a programming language is separated into a core language and various domain-specific languages which express ideally orthogonal aspects of program behavior. One of the main benefits of this means of expression is that the aspect programs for a given system are often applicable across a wide range of elements of the system, in a crosscutting manner. That is, the aspects pervasively effect the way that the system must be implemented while not addressing any of the core domain concerns of the application. One of the drawbacks to this approach, beyond those of basic meta-programming, is that the aspect domains are often only statically choosable per language. However, the benefits are that separate specification is possible, and that these systems combine to form valid programs in the original non-core programming language after weave-time, the part of compilation where the aspect programs are combined with the core language program. http:cliki.tunes.orgAspect-Oriented20Programming http:www.eclipse.orgaspectj Crosscutting concerns: ...a system that clocks employees in and out of work. ...and businesses everywhere use machines to identify employees as they check in and out of work. Chapter 9 • Some Future Trends 301

9.2 OMG MDA

9.3 Autonomic Computing

With the mass-market involvement of developers with a wide spectrum of skills and expertise in software development, one can expect that the quality of software products will widely vary. Most of the products will not be well engineered and reliable. Hence it becomes an imperative to develop techniques that can combine imperfect components to produce reliable products. Well- known techniques from fault-tolerance can teach us a great deal in this endeavor. Unfortunately, our ability to build dependable systems is lagging significantly compared to our ability to build feature-rich and high-performance systems. Examples of significant system failures abound, ranging from the frequent failures of Internet services [cite Patterson and Gray - Thu.] As we build ever more complex and interconnected computing systems, making them dependable will become a critical challenge that must be addressed. IBM: Computer heal thyself http:www.cnn.com2002TECHbiztech1021ibm.healing.reutindex.html GPS, see Marvin Minsky’s comments EDGE website You may also find useful the overview of GPS in AI and Natural Man by M. Boden, pp 354-356. http:www.j-paine.orgstudentstutorialsgpsgps.html The importance of abstract planning in real-world tasks. Since the real world does not stand still so that one can find to one’s surprise that the environment state is “unfamiliar”, it is not usually sensible to try to formulate a detailed plan beforehand. Rather, one should sketch the broad outlines of the plan at an abstract level and then wait and see what adjustments need to be made in execution. The execution-monitor program can pass real-world information to the planner at the time of carrying out the plan, and tactical details can be filled in accordingly. Some alternative possibilities can sensibly be allowed for in the high level plan a case of “contingency planning”, but the notion that one should specifically foresee all possible contingencies is absurd. Use of a hierarchy of abstraction spaces for planning can thus usefully mask the uncertainties inherent in real-world action. Ivan Marsic • Rutgers University 302 The problem may not be so much in bugs with individual components—those are relatively confined and can be uncovered by methodical testing of each individually. A greater problem is when they each work independently but not as a combination, i.e., combination of rights yields wrong [see Boden: AI].

9.4 Software-as-a-Service SaaS

Offline access is a concern with many SaaS Software as a Service models. SaaS highlights the idea of the-network-as-a-computer, an idea a long time coming. Software as a Service SaaS: http:en.wikipedia.orgwikiSoftware_as_a_Service Software as a Service: A Major Challenge for the Software Engineering: http:www.service-oriented.com A field guide to software as a service | InfoWorld | Analysis: http:www.infoworld.comarticle05041816FEsasdirect_1.html IBM Software as Services: http:www-304.ibm.comjct09002cisvmarketingsaas Myths and Realities of Software-as-a-Service SaaS: http:www.bitpipe.comtlistSoftware-as-a- Service.html

9.5 End User Software Development

The impetus for the current hype: Web 2.0, that second-generation wave of Net services that let people create content and exchange information online. For an eloquent discussion of the concept of end user computing see: James Martin, Application Development Without Programmers, Prentice Hall, Englewood Cliffs, NJ, 1982. [ QA76.6.M3613 ] Researchers seek simpler software debuggingprogramming http:www.cnn.com2004TECHptech0727debugging.apindex.html Whyline -- short for Workspace for Helping You Link Instructions to Numbers and Events Brad Myers, a Carnegie Mellon University computer science professor [Kelleher Pausch, 2005]