Advertisement

Research and Advances

Optimistic Parallelism Requires Abstractions

Writing software for multicore processors is greatly simplified if we could automatically parallelize sequential programs. Although auto-parallelization has been studied for many decades, it has succeeded only in a few application areas such as dense matrix computations. 
Opinion

Future Tense: Confusions of the Hive Mind

Be cautious about the artificial intelligence approach to computer science. It is impossible to differentiate the actual achievement of AI from the degree to which people change when confronted with what is purported to be intelligent technology.
Research and Advances

Examining User Involvement in Continuous Software Development

Ms. Perez was giving a PowerPoint presentation to her potential clients in the hope of landing a big contract. She was presenting a new advertising campaign for a mutual fund company and had spent three months with her team on perfecting the proposal. Everything seemed to be going well when suddenly a small window screen popped up informing her that an error had occurred and asked if she would wish to send an error report. She clicked the send button and the application on her laptop shut down, disrupting the flow of her presentation and making her look unprofessional. This story entails an example of a user's experience and response to a new method for collecting information on software application errors. To maintain a certain level of quality and ensure customer satisfaction, software firms spend approximately 50% to 75% of the total software development cost on debugging, testing, and verification activities. Despite such efforts, it is not uncommon for a software application to contain errors after the final version is released. To better manage the software development process in the long run firms are involving the users in software improvement initiatives by soliciting error information, while they are using the software application. The information collected through an error reporting system (ERS) plays an important role in uncovering bugs and prioritizing future development work. Considering that about 20% of bugs cause 80% of the errors, gathering information on application errors can substantially improve software firms' productivity and improve the quality of their products. High quality software applications can benefit the software users individually and also help improve the image of the software community as a whole. Thus, understanding the emerging error reporting systems (ERS) and why users adopt them are important issues that require examination. Such an analysis can help the software companies in learning how to design better ERS and educate the users about ERS and its utilities.
Research and Advances

Ballot Box Communication in Online Communities

The participation of individual users in online communities is one of the most noted features in the recent explosive growth of popular online communities ranging from picture and video sharing (Flickr.com and YouTube.com) and collective music recommendation (Last.fm) to news voting (Digg. com) and social bookmarking (del.icio.us). Unlike traditional online communities, these sites feature little message exchange among users. Nevertheless, users' involvement and their contribution through non-message-based interactions have become a major force behind successful online communities. Recognition of this new type of user participation is crucial to understanding the dynamics of online social communities and community monetization. The new communication features in online communities can be best summarized as Ballot Box Communication (BBC), which is an aggregation mechanism that reflects the common experience and opinions among individuals. By offering a limited number of choices such as voting, rating and tagging, BBC creates a new medium to effectively reveal the interests of mass population (see Table 1). Compared with traditional Computer Mediated Communication (CMC) such as email, Web publishing, and online forums, BBC influences user preferences by simplifying the mass sharing of individual preferences. These technologies offer new ways for information consumers to be involved in community activities. In traditional online communities, users only have two levels of participation: "watching from the sidelines" or "playing in the game," for example, they are either passive readers or active participants in conversations. However, BBC presents a new choice -- "shouting from the stands" -- in which each user can express his opinion through BBC and their collective preferences can be heard as a dominant voice. For instance, Digg readers can vote on news and promote it to the front page for millions of visitors to see. In spite of the increasing significance of non-message-based online communication, very little is known about BBC-enabled communities. As entrepreneurs build and manage new online communities, they have no choice but to look for the "right" technologies by trial-and-error. Not surprisingly, the result is hit-or-miss: some of the grandest failures of the dot com bust featured online communities. Only after costly failures, it has been recognized that not all technologies can benefit the growth and sustainability of a community. Extant theories on online communities and communication networks may offer some guidance on understanding of the emergence of new online communities (such as YouTube). Whitaker et al. identify online communities as "intense interactions, strong emotional ties and shared activities." In addition, Monge and Contractor define communication networks as "the patterns of contact that are created by the flow of messages among communicators through time and space." Both study the social interaction aspect of communities such as user commenting and discussing. However, the nonsocial interaction aspect, which is the focus of BBC and often dominant in contemporary online communities, has not received much attention.
Research and Advances

Modified Agile Practices For Outsourced Software Projects

Frustration with the bureaucratic nature of the disciplined approach has led to the call for agile development. The new approach is defined by the Agile Manifesto (http://agilemanifesto.org/), which values individuals and interactions over processes and tools, working software over comprehensive documentation, customer collaboration over contract negotiation, and agility in responding to change over following a prescribed plan. Agile development does not focus on process improvement; instead it focuses on customer satisfaction and employee empowerment. This is evident from reading the stated values and principles of the Agile Manifesto, which include fairly extreme positions such as "welcome changing requirements, even late in development" and "the best architectures, requirements, and designs emerge from self-organizing teams." An interesting issue arising from the call for agile development is its role in distributed development, which usually translates to offshore development. A recent study indicates that agile practices can reduce temporal, geographical, and socio-cultural distances in distributed development projects. The study researched agile development between teams located in the U.S. and Ireland, and while it reported that overall communication was improved, it also noted problems related to geographical, temporal, and even language distances. Although there are other reported successes of distributed agile development, the projects are generally small, the team members are likely familiar with each other, and the participants are largely experts or high caliber developers. This raises a research, as well as a practical, question: can we extend the use of agile practices from small projects to medium and large projects that involve a significant outsourcing component? To address this question, we must drop constraints such as small size projects, and expert developers belonging to the same company, and examine problems arising from geographical, temporal, and cultural distances. Accordingly, agile practices may need to be modified. In this article, the key issues of software projects with an outsourced component are first identified. These issues are then used as a background to evaluate how standard agile practices stand up when applied to larger projects. This evaluation is followed by recommendations for modified agile practices for outsourced software projects.
BLOG@CACM

Is C All There Is?

Increasingly, CS departments are moving to a programming language monoculture--it's C or C-derived languages throughout the curriculum.  What are we losing out on?
Opinion

The New Searchers

Behind Google's simple search box are a complex set of algorithms. Search experts say they are updated constantly, but the same old search page and the listed results don't hint at the work being done to improve search.
News

Just For You

Recommender systems that provide consumers with customized options have redefined e-commerce, and are spreading to other fields.
Research and Advances

Does Distributed Development Affect Software Quality?: An Empirical Case Study of Windows Vista

Existing literature on distributed development in software engineering and other fields discusses various challenges, including cultural barriers, expertise transfer difficulties, and communication and coordination overhead.

Shape the Future of Computing

ACM encourages its members to take a direct hand in shaping the future of the association. There are more ways than ever to get involved.

Get Involved

Communications of the ACM (CACM) is now a fully Open Access publication.

By opening CACM to the world, we hope to increase engagement among the broader computer science community and encourage non-members to discover the rich resources ACM has to offer.

Learn More