|
 |
Software Service Technologies
|

|
Businesses in today's flatter world are becoming collaboration-oriented, both internally and externally. Deriving business benefits by operational agility and efficiency, superior supply chain management, faster time to market are now imperatives for addressing new market opportunities and competitive threats. There is also a significant momentum behind standardization across industries, enabling enterprises to "componentize" their business functions, underlying business processes and IT elements. We are investigating methodologies and tools to synthesize service-oriented enterprise solutions, with given business functions and associated transformation objectives. We are conducting research in formal models to explicitly define the structure and behavior of a business system, and leverage these models "as a recipe for construction" of business's IT systems. In this endeavor of closing business to IT gap, we are addressing several practical challenges associated with Model Driven Architecture (MDA). Key ones are model-driven composite application building and deployment, meta-models for incorporating business rules and policies, meta-models for human-interactions, change management issues, and acceleration of early lifecycle (for example, blueprinting) via collaboration and reuse of documents, diagrams, and models.
|
|
|
For delivery of service-oriented solutions, leading service providers have adopted the multi-site development paradigm. Multi-site projects, however, bring with it several challenges like inadequate communication between teams, lack of information about remote sites, differences in processes etc., which disrupt the intrinsically collaborative nature of software development. We have explored both methodological and tool-based approaches to address the challenges of multi-site requirements management. We believe that compared to collocated development, multi-site projects require more investment upfront in precisely communicating requirements to remote teams. We prototyped a tool called EGRET (Eclipse Based Global Requirements Engineering Tool) which extends conventional requirements management tools with rich support for formal and informal collaboration, along with knowledge management capabilities. We also proposed an ontology based approach for seamlessly integrating various SDLC (software development lifecycle) tools that may be deployed in different multi-site teams. We are now working to help streamline global delivery by leveraging proven IBM processes and best practices in a standardized automation environment. This is achieved through the notion of a work packet, using which every work order is authored, transported, acted upon and managed, as per the adopted delivery process, with rich traceability to issues, risks, defects etc. providing for effective governance. We have designed algorithms for work-packet scheduling, created tool adopters to seamlessly share work packets in a heterogeneous tool environment, and is exploring work assignment and capacity management solutions for remote delivery centers to efficiently execute the work packets. We are also investigating analysis of SDLC artifacts for providing 'business intelligence' to software development and delivery (current focus on time and resource management).
|
|
|
As service-oriented solution construction, evolution, and delivery gains momentum, we anticipate that new challenges in maintaining overall software quality will become commonplace. We are investigating techniques for making static analysis based bug finding techniques consumable to developers. Static analysis tools are yet to enjoy wide adoption in development processes, mainly because of the large number of false positives that the tools generate, and a low rate of true positives. Moreover, for the true positives, developers are often not interested in learning about some of the bugs. Therefore, in addition to improving the accuracy of the analysis, assisting developers in identifying and understanding the bugs that they consider worthy of investigation is important too, we have developed new inter-procedural analyses to reduce false positives, while also increasing the true-positive detection rate. We are also developing automated techniques for identifying patterns of bugs (including 'logical' ones) and bug-fix code changes, which can help developers in quickly understanding whether a bug is important.
|
|
|
Evolution (a.k.a. maintenance) of software constitutes a significant fraction of IT spending in IT-enabled enterprises. To enable software evolution for business transformation, we have developed analysis techniques and tools for recovering high-level logical models from legacy COBOL applications. The recovered logical models contain high-level abstractions of the data and functionality in the application. We have developed capabilities to reverse-engineer two kinds of logical models: process models and data models. A logical process model shows the ordering on a given set of interesting events occurring in an application. A logical data model is a value-added model of the data declarations in an application (resembling a UML class diagram) obtained by a semantic analysis of the code that uses the declared data. We are applying these in the financial domain where there is an increased focus on legacy evolution for multi-channel integration, customer relationship management, compliance, and also for estimating transformation effort etc.
|
|
|
Current object-oriented languages have revealed several drawbacks with respect to parallel/concurrent programming at the level of unstructured threads with lock-based synchronization. IBM Research is developing X10, a modern object-oriented programming language designed for high performance with explicit programmer defined parallelism for realizing high productivity programming of parallel computer systems. The key features of X10 include explicit reification of locality in the form of places, support for a partitioned global address space (PGAS) across places, and lightweight activities embodied in async, future, foreach, and ateach constructs which subsume communication and multithreading operations in other languages. Our current focus is on static program analysis (for example, May-Happen-in-Parallel analysis, Bad Place Analysis), compilation for C/C++, debugging for X10, and assessment and semi-automated migration of domain-specific serial code to emerging multi-core architectures, leveraging productive programming models and their variants (such as OpenMP, OpenCL).
|
|
|
 |
|
|