scispace - formally typeset
Search or ask a question

Showing papers on "Software development published in 2001"


Posted Content
TL;DR: This article reviews the "Grid problem," and presents an extensible and open Grid architecture, in which protocols, services, application programming interfaces, and software development kits are categorized according to their roles in enabling resource sharing.
Abstract: "Grid" computing has emerged as an important new field, distinguished from conventional distributed computing by its focus on large-scale resource sharing, innovative applications, and, in some cases, high-performance orientation. In this article, we define this new field. First, we review the "Grid problem," which we define as flexible, secure, coordinated resource sharing among dynamic collections of individuals, institutions, and resources-what we refer to as virtual organizations. In such settings, we encounter unique authentication, authorization, resource access, resource discovery, and other challenges. It is this class of problem that is addressed by Grid technologies. Next, we present an extensible and open Grid architecture, in which protocols, services, application programming interfaces, and software development kits are categorized according to their roles in enabling resource sharing. We describe requirements that we believe any such mechanisms must satisfy, and we discuss the central role played by the intergrid protocols that enable interoperability among different Grid systems. Finally, we discuss how Grid technologies relate to other contemporary technologies, including enterprise integration, application service provider, storage service provider, and peer-to-peer computing. We maintain that Grid concepts and technologies complement and have much to contribute to these other approaches.

3,595 citations



Book
11 Oct 2001
TL;DR: This book describes building systems using the deceptively simple process, Scrum, a new approach to systems development projects that cuts through the ocmplexity and ambiguity of complex, emergent requiremetns and unstable technology to iteratively and quickly produce quality software.
Abstract: From the Publisher: “Agile development methods are key to the future of flexible software systems. Scrum is one of the vangards of the new way to buy and manage software development when business conditions are changing. This book distills both the theory and practive and is essential reading for anyone who needs to cope with software in a volatile world.” —Martin Fowler, industry consultant and CTO, ThoughtWorks “Most executives today are not happy with their organization's ability to deliver systems at reasonable cost and timeframes. Yet, if pressed, they will admit that they don't think their software developers are not competent. If it's not the engineers, then what is it that prevents fast development at reasonable cost? Scrum gives the answer to the question and the solution to the problem.” —Alan Buffington, industry consultant, former Present, Fidelity Systems Company Arguably the most important book about managing technology and systems development efforts, this book describes building systems using the deceptively simple process, Scrum. Readers will come to understand a new approach to systems development projects that cuts through the ocmplexity and ambiguity of complex, emergent requiremetns and unstable technology to iteratively and quickly produce quality software. BENEFITS Learn how to immediately start producing software incrementally regardless of existing engineering practices or methodologies Learn how to simplify the implementation of Agile processes Learn how to simplify XP implementation through a Scrum wrapper Learn why Agile processes work and how to manage them Understand the theoretical underpinnings of Agile processes

2,224 citations


Journal ArticleDOI
TL;DR: This article will argue that analyzing, designing, and implementing complex software systems as a collection of interacting, autonomous agents (that is, as a multiagent system) affords software engineers a number of significant advantages over contemporary methods.
Abstract: uilding high-quality, industrialstrength software is difficult. Indeed, it has been argued that developing such software in domains like telecommunications, industrial control, and business process management represents one of the most complex construction tasks humans undertake. Against this background, a wide range of software engineering paradigms have been devised. Each successive development either claims to make the engineering process easier or promises to extend the complexity of applications that can feasibly be built. Although evidence is emerging to support these claims, researchers continue to strive for more effective techniques. To this end, this article will argue that analyzing, designing, and implementing complex software systems as a collection of interacting, autonomous agents (that is, as a multiagent system [4]) affords software engineers a number of significant advantages over contemporary methods. This is not to say that agent-oriented software engineering represents a silver bullet [2]—there is no evidence to suggest it will represent an order of magnitude improvement in productivity. However, the increasing number of deployed applications [4, 8] bears testament to the potential advantages that accrue from such an approach. In seeking to demonstrate the efficacy of agent-oriented techniques, the most compelling argument would be to quantitatively show how their adoption improved the development process in a range of projects. However, such data is simply not available (as it is not for approaches like patterns, application frameworks, and componentware). Given this situation, the best that can be achieved is a qualitative justification of why agent-oriented approaches are well suited to engineering complex, distributed software systems.

1,295 citations


Journal ArticleDOI
TL;DR: The effects of working in an agile style is described and the problem it addresses and the way in which it addresses the problem are introduced.
Abstract: In a previous article (2001), we introduced agile software development through the problem it addresses and the way in which it addresses the problem. Here, we describe the effects of working in an agile style.

1,085 citations



Journal ArticleDOI
TL;DR: Four kinds of traceability link types are identified and critical issues that must be resolved for implementing each type and potential solutions are discussed, and implications for the design of next-generation traceability methods and tools are discussed and illustrated.
Abstract: Requirements traceability is intended to ensure continued alignment between stakeholder requirements and various outputs of the system development process. To be useful, traces must be organized according to some modeling framework. Indeed, several such frameworks have been proposed, mostly based on theoretical considerations or analysis of other literature. This paper, in contrast, follows an empirical approach. Focus groups and interviews conducted in 26 major software development organizations demonstrate a wide range of traceability practices with distinct low-end and high-end users of traceability. From these observations, reference models comprising the most important kinds of traceability links for various development tasks have been synthesized. The resulting models have been validated in case studies and are incorporated in a number of traceability tools. A detailed case study on the use of the models is presented. Four kinds of traceability link types are identified and critical issues that must be resolved for implementing each type and potential solutions are discussed. Implications for the design of next-generation traceability methods and tools are discussed and illustrated.

954 citations


Journal ArticleDOI
TL;DR: The article presents 10 techniques that can help reduce the flaws in your code and improve the ability of software developers to predict and control efficient software projects.
Abstract: Software's complexity and accelerated development schedules make avoiding defects difficult. We have found, however, that researchers have established objective and quantitative data, relationships, and predictive models that help software developers avoid predictable pitfalls and improve their ability to predict and control efficient software projects. The article presents 10 techniques that can help reduce the flaws in your code.

766 citations


Journal ArticleDOI
TL;DR: Tactics that go beyond communication technologies, tactics aimed at reducing intensive collaboration, national and organizational cultural differences, and temporal distance are examined.
Abstract: To overcome the problem of distance in global software development, various managers are experimenting and quickly adjusting their tactical approaches. We discuss some emerging approaches and explain their motivations from conceptual and practical perspectives. The most intuitive approach for alleviating distance is to apply communication technologies, but this is not our focus. Rather, we examine tactics that go beyond communication technologies, tactics aimed at reducing intensive collaboration, national and organizational cultural differences, and temporal distance.

747 citations


Proceedings ArticleDOI
03 Jan 2001
TL;DR: Two broad types of motivations that account for open source developers' participation in open source projects are identified, which includes internal factors such as intrinsic motivation and altruism and external rewards such as expected future returns and personal needs.
Abstract: The success of the Linux operating system has demonstrated the viability of an alternative form of software development: open source software, which challenges traditional assumptions about software markets. Understanding what drives open source developers to participate in open source projects is crucial for assessing the impact of open source software. The article identifies two broad types of motivations that account for their participation in open source projects. The first category includes internal factors such as intrinsic motivation and altruism, and the second category focuses on external rewards such as expected future returns and personal needs. The article also reports the results of a survey administered to open source programmers.

724 citations


Proceedings ArticleDOI
02 May 2001
TL;DR: A process for validating temporal safety properties of software that uses a well-defined interface is presented, and it is found that the process converges on a set of predicates powerful enough to validate properties in just a few iterations.
Abstract: We present a process for validating temporal safety properties of software that uses a well-defined interface. The process requires only that the user state the property of interest. It then automatically creates abstractions of C code using iterative refinement, based on the given property. The process is realized in the SLAM toolkit, which consists of a model checker, predicate abstraction tool and predicate discovery tool. We have applied the SLAM toolkit to a number of Windows NT device drivers to validate critical safety properties such as correct locking behavior. We have found that the process converges on a set of predicates powerful enough to validate properties in just a few iterations.

Book
16 May 2001
TL;DR: In this paper, a formal, domain-independent definition of design patterns allows for computer support without sacrificing readability, and pattern use is integrated into the usability engineering life cycle, which is then used to inform follow-up projects and support HCI education.
Abstract: To create successful interactive systems, user interface designers need to cooperate with developers and application domain experts in an interdisciplinary team. These groups, however, usually miss a common terminology to exchange ideas, opinions, and values.This paper presents an approach that uses pattern languages to capture this knowledge in software development, HCI, and the application domain. A formal, domain-independent definition of design patterns allows for computer support without sacrificing readability, and pattern use is integrated into the usability engineering life cycle.As an example, experience from building an award-winning interactive music exhibit was turned into a pattern language, which was then used to inform follow-up projects and support HCI education.

Proceedings ArticleDOI
28 Aug 2001
TL;DR: The authors provide a framework of terminology and concepts regarding variability and present three recurring patterns of variability, which they suggest a method for managing variability in software product lines.
Abstract: The authors discuss the notion of variability. We have experienced that this concept has so far been underdefined, although we have observed that variability techniques become increasingly important. A clear indication of this trend is the recent emergence of software product lines. Software product lines are large, industrial software systems intended to specialize into specific software products. The authors provide a framework of terminology and concepts regarding variability. In addition, they present three recurring patterns of variability. Finally, they suggest a method for managing variability in software product lines.

Book ChapterDOI
08 Oct 2001
TL;DR: The time-triggered nature of Giotto achieves timing predictability, which makes Giotto particularly suitable for safety-critical applications.
Abstract: Giotto provides an abstract programmer's model for the implementation of embedded control systems with hard real-time constraints. A typical control application consists of periodic software tasks together with a mode switching logic for enabling and disabling tasks. Giotto specifies time-triggered sensor readings, task invocations, and mode switches independent of any implementation platform. Giotto can be annotated with platform constraints such as task-to-host mappings, and task and communication schedules. The annotations are directives for the Giotto compiler, but they do not alter the functionality and timing of a Giotto program. By separating the platform-independent from the platform-dependent concerns, Giotto enables a great deal of flexibility in choosing control platforms as well as a great deal of automation in the validation and synthesis of control software. The time-triggered nature of Giotto achieves timing predictability, which makes Giotto particularly suitable for safety-critical applications.

Journal ArticleDOI
TL;DR: It is shown that in this industry, constructs that support a more flexible development process are associated with better-performing projects and investments in architectural design play a dual role in a flexible process.
Abstract: Uncertain and dynamic environments present fundamental challenges to managers of the new product development process. Between successive product generations, significant evolutions can occur in both the customer needs a product must address and the technologies it employs to satisfy these needs. Even within a single development project, firms must respond to new information, or risk developing a product that is obsolete the day it is launched. This paper examines the characteristics of an effective development process in one such environment-the Internet software industry. Using data on 29 completed development projects we show that in this industry, constructs that support a more flexible development process are associated with better-performing projects. This flexible process is characterized by the ability to generate and respond to new information for a longer proportion of a development cycle. The constructs that support such a process are greater investments in architectural design, earlier feedback on product performance from the market, and the use of a development team with greater amounts of "generational" experience. Our results suggest that investments in architectural design play a dual role in a flexible process: First, through the need to select an architecture that maximizes product performance and, second, through the need to select an architecture that facilitates development process flexibility. We provide examples from our fieldwork to support this view.

Book
15 Nov 2001
TL;DR: The KobrA method is described, which supports a model-driven, UML-based representation of components, and a product line approach to their development and evolution, and allows the reusability of components to be significantly enhanced.
Abstract: Component-based development promises to revolutionize the way in which software is developed and maintained. However, contemporary component technologies, such as COM+/.NET, EJB/J2EE and CORBA, only support components in the final, implementation-oriented stages of development, leaving the earlier stages of analysis and design to be organized in largely traditional, non-component oriented ways. This book describes the KobrA method, which supports a model-driven, UML-based representation of components, and a product line approach to their development and evolution. This enables the benefits of component-based development to be realized throughout the software life-cycle, and allows the reusability of components to be significantly enhanced.

Journal ArticleDOI
Bashar Nuseibeh1
TL;DR: The spiral life-cycle model as mentioned in this paper addresses many drawbacks of a waterfall development process by providing an incremental development process, in which developers repeatedly evaluate changing project risks to manage unstable requirements and funding.
Abstract: Software development organizations often choose between alternative starting points-requirements or architectures. This invariably results in a waterfall development process that produces artificially frozen requirements documents for use in the next step in the development life cycle. Alternatively, this process creates systems with constrained architectures that restrict users and handicap developers by resisting inevitable and desirable changes in requirements. The spiral life-cycle model addresses many drawbacks of a waterfall model by providing an incremental development process, in which developers repeatedly evaluate changing project risks to manage unstable requirements and funding. An even finer-grain spiral life cycle reflects both the realities and necessities of modern software development. Such a life cycle acknowledges the need to develop software architectures that are stable, yet adaptable, in the presence of changing requirements. The cornerstone of this process is that developers craft a system's requirements and its architecture concurrently, and interleave their development.

Book ChapterDOI
TL;DR: This paper illustrates the approach by presenting a three-layer AUML representation for agent interaction protocols: templates and packages to represent the protocol as a whole; sequence and collaboration diagrams to capture inter-agent dynamics; and activity diagrams and state charts to capture both intra-agent and inter- agent dynamics.
Abstract: Gaining wide acceptance for the use of agents in industry requires both relating it to the nearest antecedent technology (objectoriented software development) and using artifacts to support the development environment throughout the full system lifecycle. We address both of these requirements using AUML, the Agent UML (Unified Modeling Language)--a set of UML idioms and extensions. This paper illustrates the approach by presenting a three-layer AUML representation for agent interaction protocols: templates and packages to represent the protocol as a whole; sequence and collaboration diagrams to capture inter-agent dynamics; and activity diagrams and state charts to capture both intra-agent and inter-agent dynamics.

Posted Content
TL;DR: This model is efficient because of two related reasons: it avoids the inefficiencies of a strong intellectual property regime and it implements concurrently design and testing of software modules.
Abstract: Open-source software development is a production model that exploits the distributed intelligence of participants in Internet communities. This model is efficient because of two related reasons: it avoids the inefficiencies of a strong intellectual property regime and it implements concurrently design and testing of software modules. The hazard of open source is that projects can "fork" into competing versions. However, open-source communities consist of governance structures that constitutionally minimize this danger. Because open source works in a distributed environment, it presents an opportunity for developing countries to participate in frontier innovation.

Proceedings ArticleDOI
01 May 2001
TL;DR: This work presents a new approach for C-like languages that provides type-safe dynamic updating of native code in an extremely flexible manner and permits the use of automated tools to aid the programmer in the updating process.
Abstract: Many important applications must run continuously and without interruption, yet must be changed to fix bugs or upgrade functionality. No prior general-purpose methodology for dynamic updating achieves a practical balance between flexibility, robustness, low overhead, and ease of use.We present a new approach for C-like languages that provides type-safe dynamic updating of native code in an extremely flexible manner (code, data, and types may be updated, at programmer-determined times) and permits the use of automated tools to aid the programmer in the updating process. Our system is based on dynamic patches that both contain the updated code and the code needed to transition from the old version to the new. A novel aspect of our patches is that they consist of verifiable native code (e.g. Proof-Carrying Code [17] or Typed Assembly Language [16]), which is native code accompanied by annotations that allow on-line verification of the code's safety. We discuss how patches are generated mostly automatically, how they are applied using dynamic-linking technology, and how code is compiled to make it updateable.To concretely illustrate our system, we have implemented a dynamically-updateable web server, FlashEd. We discuss our experience building and maintaining FlashEd. Performance experiments show that for FlashEd, the overhead due to updating is typically less than 1%.

Proceedings ArticleDOI
13 Mar 2001
TL;DR: VR Juggler is described, a virtual platform for the creation and execution of immersive applications, that provides a virtual reality system-independent operating environment and the benefits derived from its approach are described.
Abstract: Today, scientists and engineers are exploring advanced applications and uses of immersive systems that can be cost-effectively applied in their fields. However, one of the impediments to the widespread use of these technologies is the extensive technical expertise required of application developers. A software environment that provides abstractions from specific details of hardware configurations and low-level software tools is needed to provide a common base for the prototyping, development, testing and debugging of applications. This paper describes VR Juggler, a virtual platform for the creation and execution of immersive applications, that provides a virtual reality system-independent operating environment. We focus on the approach taken to specify, design and implement VR Juggler and the benefits derived from our approach.

Journal ArticleDOI
TL;DR: Open-source software development is a production model that exploits the distributed intelligence of participants in Internet communities as mentioned in this paper, and it is efficient because of two related reasons: it avoids the inefficiencies of a strong intellectual property regime and it implements concurrently design and testing of software modules.
Abstract: Open-source software development is a production model that exploits the distributed intelligence of participants in Internet communities. This model is efficient because of two related reasons: it avoids the inefficiencies of a strong intellectual property regime and it implements concurrently design and testing of software modules. The hazard of open source is that projects can 'fork' into competing versions. However, open-source communities consist of governance structures that constitutionally minimize this danger. Because open source works in a distributed environment, it presents an opportunity for developing countries to participate in frontier innovation. Copyright 2001, Oxford University Press.

Journal ArticleDOI
TL;DR: The authors' vision for the future of embedded-system design involves two essential components: a rigorous methodology for embedded software development and platform-based design.
Abstract: Embedded products have become so complex and must be developed so quickly that current design methodologies are no longer adequate. The authors' vision for the future of embedded-system design involves two essential components: a rigorous methodology for embedded software development and platform-based design.

Journal ArticleDOI
TL;DR: The paper provides a classified list of maintenance activities and a condensed decision tree as a summary guide to the proposed evidence-based classification of the types of software evolution and software maintenance.
Abstract: The past two decades have seen increasing sophistication in software work. Now and in the future, the work of both practitioners and researchers would be helped by a more objective and finer granularity recognition of types of software evolution and software maintenance activities as actually done. To these ends, this paper proposes a clarifying redefinition of the types of software evolution and software maintenance. The paper bases the proposed classification not on people's intentions but upon objective evidence of maintainers' activities ascertainable from observation of activities and artifacts, and/or a before and after comparison of the software documentation. The classification includes taking into account in a semi-hierarchical manner evidence of the change or lack thereof in: (1) the software, (2) the documentation, (3) the properties of the software, and (4) the customer-experienced functionality. A comparison is made with other classifications and typologies. The paper provides a classified list of maintenance activities and a condensed decision tree as a summary guide to the proposed evidence-based classification of the types of software evolution and software maintenance. Copyright © 2001 John Wiley & Sons, Ltd.

Journal ArticleDOI
TL;DR: The Virtual Cell is a computational environment designed for cell biologists as well as for mathematical biologists and bioengineers that serves to aid the construction of cell biological models and the generation of simulations from them.

Journal ArticleDOI
TL;DR: It is claimed that by extending the de-facto standard representation for object-oriented modeling to agents, the learning curve forobject-oriented developers to adopt aspects of agent-based programming becomes much less steep and agent-oriented programming as a whole will become more amenable to mainstream software engineering.
Abstract: To gain wider acceptance for the use of agents in industry, it is a necessity to relate it to the nearest antecedent technology (object-oriented software development) and to introduce appropriate artifacts to support the development environment throughout the full system life cycle. We address both of these requirements by presenting AGENT UML, the Agent UML (Unified Modeling Language) — a set of UML idioms and extensions. This paper provides an AGENT UML representation of the internal behavior of an agent; it then relates this internal description to the external behavior of the agent by using and extending UML class diagrams and by describing agent interaction protocols in a new way. Our claim is that by extending the de-facto standard representation for object-oriented modeling to agents, the learning curve for object-oriented developers to adopt aspects of agent-based programming becomes much less steep. Thus, agent-oriented programming as a whole will become more amenable to mainstream software engineering.

Journal ArticleDOI
TL;DR: The study used data collected from one version of a commercial Java application for constructing a prediction model and found that an export coupling metric had the strongest association with fault-proneness, indicating a structural feature that may be symptomatic of a class with a high probability of latent faults.

Journal ArticleDOI
TL;DR: In this case study, a case study tries to summarize experiences and share best practices from projects of different types and sizes that involve several locations on different continents and in many cultures.
Abstract: Software development involves teamwork and a lot of communication. It seems rational to put all your engineers in one place, encourage them to share objectives, and let the project run. Why use distributed sites when it's easier to work in one location without the overhead of remote communication and planning? How is it possible to survive (and succeed with) globally dispersed projects? Working in a global context has its advantages, but it also has drawbacks. On the plus side, you gain time-zone effectiveness and reduced cost in various countries. However, working on a globally distributed project means operating costs for planning and managing people, along with language and cultural barriers. It also creates jealousy as the more expensive engineers (who are afraid of losing their jobs) are forced to train their much cheaper counterparts. In this case study, we try to summarize experiences and share best practices from projects of different types and sizes that involve several locations on different continents and in many cultures.

Book ChapterDOI
10 Sep 2001
TL;DR: This work represents a shift from process to product-oriented management of Requirements Evolution, and points out evolutionary product features and identifies an Empirical Framework to analysing Requirements Evolution.
Abstract: Requirements Evolution represents one of the major problems in developing computer-based systems. Current practice in Requirement Engineering relies on process-oriented methodologies, which lack of product features. The resulting scenario then is a collection of general methodologies, which do not take into account product features that may enhance our ability in monitoring and controlling Requirements Evolution. This paper shows empirical investigations of two industrial case studies. The results point out evolutionary product features and identify an Empirical Framework to analysing Requirements Evolution. This work represents a shift from process to product-oriented management of Requirements Evolution.

Proceedings ArticleDOI
01 Jul 2001
TL;DR: This work uses both survey data and data from the source code change management system to model the extent of delay in a multi-site software development organization, and investigates several possible mechanisms for this delay.
Abstract: Global software development is rapidly becoming the norm for technology companies. Previous qualitative research suggests that multi-site development may increase the development cycle time. We use both survey data and data from the source code change management system to model the extent of delay in a multi-site software development organization, and explore several possible mechanisms for this delay. We also measure differences in same-site and cross-site communication patterns, and analyze the relationship of these variables to delay. Our results show that, compared to same-site work, cross-site work takes much longer and requires more people for work of equal size and complexity. We also report a strong relationship between delay in cross-site work and the degree to which remote colleagues are perceived to help out when workloads are heavy. We discuss the implications of our findings for collaboration technology for distributed software development.