Teaching Kids to Code
At the Rational conference last week, IBM Research got a bit of well-deserved attention via the Grady Booch keynote, the meetings with the press and analysts, and the alphaWorks exhibits. IBM Research does some cool stuff, and it also has a big impact that reaches beyond IBM.
I described some of the IBM Research activities in my blog last week, (in which I also referenced the related alphaWorks Emerging technology demos and aW's new Research topics area). The press also gave IBM Research some coverage. (See for example the eWeek article "IBM Research Is Software Group's Secret Weapon" and the InfoWorld article "IBM exec: Impending death of Moore's Law calls for software development changes.") More recently, however, I obtained a document (thanks, Cas!) that has both a bit of background on IBM Research and highlights of key research projects that are shaping the future of software development. See below; I think it's worth a look:
Computer Science at IBM Research
In 1965, when computer science was still a new academic discipline, the first department of computer science was formed in the IBM Research Division at the Thomas J. Watson Research Center (Yorktown Heights, NY). The department's stated mission was "to create and test new concepts and techniques in computer systems design, and to identify and provide a first inroad into new areas of computer applications."
Since then, computer science has established itself across all the IBM Research labs worldwide: Almaden, Austin, China, Haifa, India, Tokyo, Watson, and Zurich. In the ensuing years, IBM Research has helped create important new areas of computer science research and to bring those research results to the marketplace. These include compiler optimization (FORTRAN), relational database (SQL and DB2), speech recognition (ViaVoice), Reduced Instruction Set Computer (RISC) architecture (RS/6000 and PowerPC), data encryption (DES), fractals, and scalable parallel systems (RS/6000 SP).
IBM Research's goal is to help create the future of computing. This includes inventing, developing, and applying technologies that will be vital to IBM's future success and obtaining fundamental results that influence the direction of computer science research.
The Future of Software Development: Key Projects
Leakbot is an automated, adaptive and scalable tool for diagnosing memory leaks. A memory leak occurs when a Java program inadvertently maintains references to objects that are no longer needed, preventing the garbage collector from reclaiming space. Eventually, a memory leak leads to an out-of-memory exception. Java memory leaks are among the most common problems facing customers, and among the hardest to find.
Leakbot discovers patterns by finding objects of the same data type that share similar context. The validation can either be performed by periodically matching the discovered patterns against snapshots of the running program, or by inserting lightweight probes that monitor changes to patterns as the program runs.
Quality Software Checking (QSC)
As the complexity of programming environments increases, it becomes increasingly difficult for developers to write highly robust bug-free code. This is especially true as programmers now more than ever rely on large program libraries and object frameworks for sophisticated functions, such as presentation, data, transactional, and collaborative services.
To overcome these problems, QSC searches for code errors based on the context of the entire software program, rather than small segments of code like today's tools. It searches for known patterns, and carefully indicates to the programmer the nature of the problem, and will even suggest fixes for the problem when possible. It verifies the quality of Java applications based on best practices so on demand systems are achieving top quality and performance. It can be used interactively during the development process, or help to find bugs in code after the system has been deployed. With this new technology, developers can significantly reduce software bugs automatically so they can speed up the time it takes to create high-quality and high-performance applications
The Metronome project is developing real-time garbage collection and other associated technologies for Java. This allows Java's high-level programming model to be extended to real-time systems, which are an increasingly important segment of the computing landscape. The Metronome system is currently capable of providing worst-case latency of one millisecond for programs written in standard Java, roughly a factor of 100 faster than the nearest competitor.
Current research focuses on extending real-time capability to large-scale multiprocessors, providing "write once run anywhere" characteristics for timing behavior, supporting applications with microsecond-level response time requirements, and developing a stochastic theory of real-time behavior.
Model-Based Analysis and Testing (MBAT)
One of the biggest challenges is to really know if an application conforms to the requirements of the various stakeholders for the application. IBM researchers are working on a tool that uses use cases and application domain information to automatically generate test cases. These test cases have complete coverage of all use case scenarios, and also target specific defect types that involve sequences of multiple use cases. It uses novel AI planning techniques to find the "best" sequences - those most likely to find coding errors if they exist. This tool will be a significant help in ensuring that software systems have high quality and conform to their functional requirements. It also provides flexibility for iterative development approaches, as test cases can be regenerated "on-demand" whenever required.
The Architect's Workbench (AWB)
AWB is a tool that automates the process of linking requirements to architecture and architecture to development. This tool helps developers define the requirements, starting with English text, and moving all the way to more formal models (such as UML-based architectural diagrams). A novel aspect of AWB is that it preserves traceability across the development process, thereby ensuring that key requirements don't get lost. With the ultimate goal of reinventing the notion of process for software development, the AWB enables developers to keep track of what they have done, and what they need to do. It also points out flawed or problematic structures, and keeps track in a non-obtrusive way, of those aspects of the architecture that need to be addressed. By identifying problems at this very early stage in the software development process, it becomes less likely that there will be major development and deployment problems later in the lifecycle.
The Jazz research project grew out of the recognition that although software development is an inherently collaborative process in which teams of developers work together to design solutions and produce code, this collaboration is usually ad hoc and rarely supported by tools within the programmer's integrated development environment (IDE). As software development teams face greater time and resource constraints, there is a need for software development tools to support structured and unstructured communication and coordination of work.
The Jazz research project seeks to extend the Eclipse (http://www.eclipse.org) software development environment with collaborative capabilities to support coordination, communication, and awareness among a small close-knit team of developers. This involves creating connections to server infrastructure for messaging, awareness, and source control, and integrating user interfaces for communication and awareness within the Eclipse environment to provide unobtrusive access to in-context team information.[Read More]
Robert LeBlanc, General Manager of IBM's WebSphere division, is giving a keynote at JavaOne today (starting just about now) focused on the importance on open source and open standards development with Java. I regret I'm missing it myself (stuck on the East Coast this week); fortunately, thanks to Rawn Shah and Andy Dean, I got the scoop on what he's presenting today: A demonstration of how aspect-oriented programming can be applied to existing code to add open source software components.
The demo, created by Matthew Webster in IBM's Hursley Lab in the UK, highlights the concept of remixing existing projects with new features and add-ons to introduce creative variations on a project that's close to our hearts here at dW: Robocode.
Robocode originated on our alphaWorks site, and has since become a popular open source project on SourceForge.net. It's a battle-bots type of game where you can program your robots to compete in an arena against those of created by your peers.
The trick here is the use of the Eclipse Foundation's AspectJ project applied to RoboCode to add new features to robots without needing to change each robot's source code. The demo took a basic IBM robot and created three different versions using new features that are each encapsulated as an aspect. The audience got to see the source code and watch Matthew navigate between aspects and affected classes using the views provided by the AJDT plug-in, which provides full AspectJ support within Eclipse.
The project has been enhanced, with sound effects for a kids' version and more aggressive battling tactics to build a version for teens. Finally, the project added enterprise JMX management capabilities to allow budding executives to monitor and direct their robots using a Web interface: they like to be in control!
The idea of using AspectJ to add new enterprise capabilities to an open source component to allow better integration is very interesting. As more solutions are built from open source components, the ability to apply a smart integration glue across different components will become increasingly important. This is Lawrence Lessig's Remix Culture come alive in a new way within software.
Aside from all the important details, RoboCode is just plain fun. It has been aptly described as "a fun and challenging way to learn object-oriented programming," and as "particularly effective for grabbing the attention of teenage boys." I encourage boys -- and girls -- of all ages to check it out.[Read More]
At the big alphaWorks 10th Anniversary party today, quite a bit is happening. Including a big announcement and demos from people like Marc Goubert, manager of alphaWorks, and Rod Smith, vice president of emerging internet technology and IBM Fellow. Details will be made available here soon after the announcement happens. Stay tuned.
Meantime, check out the related podcast interviews, including:
At the alphaWorks 10-year anniversary celebration today, IBM unveiled aW's next big thing: alphaWorks Services.
Details are now available on the aW site.
alphaWorks Services extends alphaWorks beyond a place to download emerging technologies. Now you can also leverage the software-as-a-service delivery model at alphaWorks. Now developers, businesses and universities can easily
We at IBM see alphaWorks Services as benefiting both the community and IBM. For IBM, alphaWorks services serves as a tool that will help IBM respond quickly to changing business needs and requirements, and in turn, deliver higher quality software to the marketplace. For early adopters and innovators, alphaWorks Services will let organizations adopting these cutting-edge technologies more quickly, and make it easier to collaboratively innovate.
As part of today's announcement, aW offers its first technologies to be offered as a service:
It's great to see the continued innovation from alphaWorks ... to see aW itself adopting of new concepts and technologies. Services are a big deal not just for alphaWorks, but across all of IBM -- and across many of today's businesses, too. In the coming weeks and months, look for more info and resources related to services -- as well as SOA (service-oriented architecture) -- from alphaWorks and developerWorks.
The launch of alphaWorks Services has drawn quite a bit of attention, as evidenced by this sample of news and blog coverage:
The alphaWorks Services launch event this week drew a diverse group of attendees including ISVs, professors, developers, press and analysts. The participants also represented a wide range of disciplines and experience, and included John Patrick, industry luminary and founding father of alphaWorks; David Temkin, co-founder and CTO of Laszlo Systems; Tony Wasserman, professor of software engineering at Carnegie Mellon University; Christopher Balz, independent software developer; Marc Goubert, manager of alphaWorks; Buell Duncan, general manager, ISV & Developer Relations (IBM); and Rod Smith, vice president, Emerging Internet Technology and IBM Fellow.
The event featured a retrospective video and podcast, showcasing Irving Wladawsky-Berger, Rod Smith, and Gina Poole, all key players in the history of alphaWorks, sharing their thoughts on the impetus for the program, as well as successes and lessons along the way.[Read More]