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]