
Yunwen Ye- University of Colorado Boulder
Yunwen Ye
- University of Colorado Boulder
About
59
Publications
12,536
Reads
How we measure 'reads'
A 'read' is counted each time someone views a publication summary (such as the title, abstract, and list of authors), clicks on a figure, or views or downloads the full-text. Learn more
3,375
Citations
Current institution
Publications
Publications (59)
SUITE} is a workshop that focuses on exploring the notion of search as a fundamental activity during software development. The first two editions of {SUITE} were held at {ICSE} 2009/2010 [1, 2], and they have focused on the building of a research community that brings researchers and practioners who are interested in the research areas that {SUITE}...
Immaterial labor, which is a philosophical concept established by Maurizio Lazzarato and others for understanding the post-Fordism industry, refers to the process of producing the informational and cultural contents of a commodity. Through examining software development and software-intensive society with the lens of immaterial labor, this paper ai...
SUITE} is a workshop that focuses on exploring the notion of search as a fundamental activity during software development. The first edition of {SUITE} ({SUITE} 2009 [4]) was held at {ICSE} 2009. {SUITE} 2010, like its predecessor, devotes its attention to various research topics pertaining to the information needs of software developers. In {SUITE...
Looking at software development as a collective knowledge activity has changed the view of the role of communication in software development from something to be eliminated to something to be nurtured. Developer-centered
collaborative software development environments (CSDEs) should facilitate software development in such a way, as individual softw...
A large number of high quality open source software (OSS) reuse libraries has been developed, and has been becoming increasingly adopted by many software development organizations. Programmers who reuse such OSS libraries often rely on the online peer support platforms such as dedicated mailing lists to seek help from other programmers. However, th...
Our collaborative research activities in software development (at the University of Colorado's Center for Lifelong Learning and Design, the University of Tokyo, and Software Research Associates) have focused on understanding the implications of the quickly disappearing distinction between users and developers. We've also concentrated on establishin...
The creation of modern software systems requires knowledge from a wide range of domains: application domains, computer hardware
and operating systems, algorithms, programming languages, vast amount of component libraries, development environments, the
history of the software system, and users. Because few software developers have all the required k...
SUITE is a new workshop series that specifically
focuses on exploring the notion of search as a
fundamental activity during software development.
The goal of the workshop is to bring researchers and
practitioners with special interest on search
technology for software developers together.
Participants will have broad range of expertise in
topics ra...
During the development of a large software system, the dependencies between the tasks of developers beget the needs of communication
and coordination among developers. As an analytical instrument to manage and control the cost of communication and coordination
in software development, this paper introduces the concept of developer coupling to measu...
The importance and benefits of expertise sharing for organizations in knowledge economy are well recognized. However, the
potential cost of expertise sharing is less well understood. This paper proposes a conceptual framework called collective
attention economy to identify the costs associated with expertise sharing and provide the basis for analyz...
Because the knowledge required for the construction of a complex software system is often widely distributed among its members, programmers routinely engage in collaboration with each other to acquire knowledge resided in the heads of their peers to accomplish their own programming tasks. We call this kind of collaboration situated knowledge collab...
The traditional notions of developer and user are unable to reflect the fact that many software systems nowadays are developed with the participation of many people of different interests and capabilities. The sharp distinction between users and developers gets blurred. Many researchers have used different concepts such as end-user developer, prosu...
Because software development is a knowledge-intensive process, the support of software developers presents two equally important challenges: the establishment of a rigorous and quantifiable foundation for software systems, and a better understanding of knowledge creation processes that take place in software development. Software engineering resear...
Because a Free and Open Source Software (F/OSS) project is unlikely to sustain a long-term success unless there is an associated community that provides the platform for developers, users, and user-turned-developers to collaborate with each other, understanding the well-observed phenomenon that F/OSS systems experience “natural product evolution” c...
Studies have shown that programmers frequently seek external information during programming, from source code and documents, as well as from other programmers because much of the information remains in the heads of programmers. Programmers therefore often ask other programmers questions to seek information in a timely fashion to carry out their wor...
Participative software systems are a new class of software systems whose development does not end at the deployment but requires continued user participation and contribution. They need to provide both solutions to users and a participation framework that entails technical and social challenges. Meta- design is a promising approach to guide the dev...
The goals of this workshop are: (1) to bring together the community of researchers who are exploring innovative design theories and different design methodologies; (2) to evaluate the appropriateness of design methodologies for specific contexts and explore their respective difference and synergies; and (3) to strengthen the community of researcher...
Decades of software engineering research have tried to reduce the interdependency of source code to make parallel development
possible. However, code remains helplessly interlinked and software development requires frequent formal and informal communication
and coordination among software developers. Communication and coordination cost still domin...
The existence of large API libraries contributes significantly to the programming productivity and quality of Java programmers. The vast number of available library APIs, however, presents a learning challenge for Java programmers. Most Java programmers do not know all the APIs. Whenever their programming task requires API methods they do not yet k...
Our research explores meta-design as an innovative framework in the design of an emerging type of software-intensive systems called participative software systems. The fundamental challenge facing this approach is achieving the best fit between the software system and its ever-changing context of use, problems, domains, users, and communities of us...
The creation of modern software systems requires knowledge from a wide range of domains: application domains, computer hardware and operating systems, algorithms, programming languages, vast amount of component libraries, development environments, the history of the software system, and users. Because few software developers have all the required k...
Starting from the belief that software development is a human activity, this paper tries to conceptualize software development as a knowledge-intensive design and distributed cognitive activity. This conceptualization leads to the argument that providing support for software developers to engage in knowledge collaboration with external knowledge re...
We view software project as a knowledge ecology consisting of three interrelated elements: (1) artifacts, (2) individual developers, and (3) a community of developers. How developers relate with each other in the community affects how they share knowledge during the development and therefore impacts the overall quality of the software system that h...
Because a Free and Open Source Software (F/OSS) project is unlikely to sustain a long-term success unless there is an associated community that provides the platform for developers, users, and user-turned-developers to collaborate with each other, understanding the well-observed phenomenon that F/OSS systems experience “natural product evolution” c...
The power of the unaided individual mind is highly overrated. Although society often thinks of creative individuals as working in isolation, intelligence and creativity result in large part from interaction and collaboration with other individuals. Much human creativity is social, arising from activities that take place in a context in which intera...
Despite its well-recognized benefits, software reuse has not met its expected success due to technical, cognitive, and social difficulties. We have systematically analyzed the reuse problem (especially the cognitive and social difficulties faced by software developers who reuse) from a multidimensional perspective, drawing on our long-term research...
This paper describes a system called STeP_IN (standing for socio-technical platform for in situ networking) that assists software developer to find and learn Java API libraries. It provides individualized search interface for Java developers, examples that illustrate the usage, and more distinctively a facilitating mechanism that connects Java deve...
Nowadays few software systems can be produced by a single software developer. Most software systems require collaborative development due to the required brawn power brought by multiple hands. At the same time, because software systems are knowledge artifacts that involve knowledge from multiple domains that a single software developer often does n...
Software development is inherently a knowledge-intensive and dis-tributed cognitive activity. From this perspective, one of the major issues in user-centered software development tools is to provide support for knowledge collaboration between the developer and the external knowledge resources, which include both information in repositories and know...
Because a Free and Open Source Software (F/OSS) project is unlikely to sustain a long-term success unless there is an associated community that provides the platform for developers, users, and user-turned-developers to collaborate with each other, understanding the well-observed phenomenon that F/OSS systems experience “natural product evolution” c...
End-user development (EUD) activities range from customization to component configuration and programming. Office software, such as the ubiquitous spreadsheet, provides customization facilities, while the growth of the Web has added impetus to end-user scripting for interactive functions in Web sites. In scientific and engineering domains, end user...
A multidisciplinary examination of the interplay between social capital—the value derived from social ties—and information technology.
The concept of social capital, or the value that can be derived from social ties created by goodwill, mutual support, shared language, common beliefs, and a sense of mutual obligation, has been applied to a number o...
Software development is a knowledge intensive activity and software developers are knowledge workers. Knowledge needed for software development is often distributed among different developers. Supporting efficient knowledge collaboration and transfer is thus essential for software development organizations to remain competitive. This paper proposes...
Programming is a complex ill-defined problem-solving task. It requires not only knowledge in the head of a programmer, but also existing information in the world and relevant knowledge of his/her peers in the community. Traditional software reuse techniques do not serve for programmers to a full extent because they are not built from this perspecti...
Complex design problems require more knowledge than any single person can possess, and the knowledge relevant to a problem is often distributed among all stakeholders who have different perspectives and background knowledge, thus providing the foundation for social creativity. Bringing together different points of view and trying to create a shared...
An Open Source Software (OSS) project is unlikely to be successful unless there is an accompanied community that provides the platform for developers and users to collaborate. Members of such communities are volunteers whose motivation to participate and contribute is of essential importance to the success of OSS projects. In this paper, we aim to...
CodeBroker, which is an intelligent software agent that autonomously delivers previously unknown library components relevant to the programming task at hand, is discussed. It infers the programming task by monitoring the programmer's activity, and finds an example program that uses the programmer's chosen component. CodeBroker helps programmers lea...
An Open Source Software (OSS) project is unlikely to be successful unless there is an accompanied community that provides the platform for developers and users to collaborate. Members of such communities are volunteers whose motivation to participate and contribute is of essential importance to the success of OSS projects. In this paper, we aim to...
Open-Source Software (OSS) development is regarded as a successful model of encouraging "natural product evolution". To understand how this "natural product evolution" happens, we have conducted a case study of four typical OSS projects. Unlike most previous studies on software evolution that focus on the evolution of the system per se, our study t...
This paper reports an empirical user study of an active reuse repository system. Instead of waiting passively for software developers to initiate the component location process with a well-defined reuse query, active reuse repository systems infer reuse queries from syntactic and semantic cues present in partially constructed programs in developmen...
Technical, cognitive, and social factors inhibit the widespread success of systematic software reuse. Our research is primarily concerned with the cognitive and social challenges faced by software developers: how to motivate them to reuse and how to reduce the difficulty of locating components from a large reuse repository. Our research has explore...
Technical, cognitive and social factors inhibit the widespread success of systematic software reuse. Our research is primarily concerned with the cognitive and social challenges faced by software developers: how to motivate them to reuse software, and how to reduce the difficulty of locating components from a large reuse repository. Our research ha...
This paper proposes a new approach to locating software components from a large component repository: context-aware browsing. Without any explicit input from software developers, this approach automatically locates and presents a list of software components that couM possibly be used in the current development situation. This automation of the comp...
An inherent dilemma exists in the design of highfunctionality applications (such as repositories of reusable software components). In order to be useful, highfunctionality applications have to provide a large number of features, creating huge learning problems for users. We address this dilemma by developing intelligent interfaces that support lear...
Technical, cognitive, and social factors inhibit the widespread success of systematic software reuse. Our research is primarily concerned with the cognitive and social challenges faced by software developers: how to motivate them to reuse and how to reduce the difficulty of locating components from a large reuse repository. Our research has explore...
The paper proposes a novel approach to locating software components from a large component repository: context-aware browsing. Without any explicit input from software developers, this approach automatically locates and presents a list of software components that could possibly be used in the current development situation. This automation of the co...
Browsing- and querying-oriented schemes have long served as the principal techniques for software developers to locate software components from a component repository for reuse. Unfortunately, the problem remains that software developers simply will not actively search for components when they are unaware that they need components or that relevant...
Building truly "context-aware" environments presents a greater challenge than using data transmitted by ubiquitous computing devices: it requires shared understanding between humans and their computational environments. This essay articulates some specific problems that can be addressed by representing context. It explores the unique possibilities...
Although software reuse can improve both the quality and productivity of software development, it will not do so until software developers stop believing that it is not worth their effort to find a component matching their current problem. In addition, if the developers do not anticipate the existence of a given component, they will not even make a...
Easy access to external information is essential to the performance of many information-intensive activities conducted in computer application systems. However, information repository systems that support the retrieval of external information are researched as a self-contained problem with no consideration of the context where the information is ap...
Although software reuse repository systems have been an active research area for more than a decade, one important aspect has not been given enough attention: If software developers make no attempt to reuse, repository systems offer no help and reuse will not happen. Active information delivery, which presents information without being given explic...
Acquiring knowledge about library routines is necessary for a programmer to effectively use most programming languages. Support for this learning activity is rare while the learning effort required is huge. This paper proposes a conceptual framework of a new documentation system that supports programmers to incrementally learn the use of library ro...
Although software reuse can improve both the quality and productivity of software development, it will not do so until software developers stop believing that it is not worth their effort to find a component matching their current problem. In addition, if the developers do not anticipate the existence of a given component, they will not even make a...
Even though component-based software reuse has been shown to increase both the quality and efficiency of software development, there are still major barriers to its wide spread acceptance. Passive and conversational interface-based reuse repository systems support the developer only when he already knows a relevant component exists. In contrast, th...
Software component-based reuse is difficult for software developers to adopt because first they must know what components exist in a reuse repository and then they must know how to retrieve them easily. This paper describes the concept and implementation of active reuse repository systems that address the above two issues. Active reuse repository s...
The research question we pursue is how to go beyond existing communication media to nurture communication in software development.
Nurturing communication in software development is not about increasing the amount of communication but about increasing the
quality of the communication experience in the context of software development. Existing studi...
Software development is a process of gathering and creating information; it requires programmers to uncover the various parts that are related to their current task. We propose to conceptualize a software system being developed as a socio-technical information space that has multiple layers of links that relate different units of information resour...