- Software Engineering Techniques and Practices
- Software Engineering Research
- Software Reliability and Analysis Research
- Open Source Software Innovations
- Software Testing and Debugging Techniques
- Software System Performance and Reliability
- Capital Investment and Risk Analysis
- Advanced Software Engineering Methodologies
- Scientific Computing and Data Management
- Financial Reporting and Valuation Research
- Experimental Learning in Engineering
- Model-Driven Software Engineering Techniques
- Innovative Teaching Methods
- Formal Methods in Verification
- Service-Oriented Architecture and Web Services
- Logic, programming, and type systems
- Algorithms and Data Compression
- Online Learning and Analytics
- Spreadsheets and End-User Computing
- Petri Nets in System Modeling
- Forecasting Techniques and Applications
- Data Management and Algorithms
- Context-Aware Activity Recognition Systems
- Computational Geometry and Mesh Generation
- Distributed and Parallel Computing Systems
Carnegie Mellon University
2014-2023
Silicon Valley Community Foundation
2019
Ames Research Center
2016-2018
NASA Research Park
2016-2018
Exemplar Genetics (United States)
2018
Google (United States)
2017
Microsoft (United States)
2017
Association for Computing Machinery
2017
University of California, Santa Barbara
2017
Los Alamitos Medical Center
2013-2014
The field of software economics seeks to develop technical theories, guidelines, and practices development based on sound, established, emerging models value value-creation---adapted the domain as necessary. premise is that an ongoing investment activity---in which developers managers continually make decisions requiring expenditure valuable resources, such time, talent, money. overriding aim this activity maximize added subject equitable distribution among participating stakeholders. goal...
The field of software economics seeks to develop technical theories, guidelines, and practices development based on sound, established, emerging models value value-creation---adapted the domain as necessary. premise is that an ongoing investment activity---in which developers managers continually make decisions requiring expenditure valuable resources, such time, talent, money. overriding aim this activity maximize added subject equitable distribution among participating stakeholders. goal...
Test-driven development (TDD) is based on formalizing a piece of functionality as test, implementing the such that test passes, and iterating process. This paper describes controlled experiment for evaluating an important aspect TDD: in TDD, programmers write functional tests before corresponding implementation code. The was conducted with undergraduate students. While group applied test-first strategy, control more conventional technique, writing after implementation. Both groups followed...
At the core of cloud computing is a simple concept: software as service, or SaaS. Whether underlying an application, application component, platform, framework, environment, some other soft infrastructure for composing applications to be delivered service on Web, it's all in end. But simplicity ends there. Just step away from that core, complex concoction paradigms, concepts, and technologies envelop computing.
Background: Test-driven development (TDD) is a technique that repeats short coding cycles interleaved with testing. The developer first writes unit test for the desired functionality, followed by necessary production code, and refactors code. Many empirical studies neglect unique process characteristics related to TDD iterative nature. Aim: We formulate four characteristic: sequencing, granularity, uniformity, refactoring effort. investigate how these impact quality productivity in...
TDD proponents assert that frequent, incremental testing not only improves the delivered code's quality but also generates a cleaner design. The authors present results from systematic literature review as well commentary on expert's experience field projects.
Using agile methods to develop large systems presents a thorny set of issues. If teams are produce lots software functionality quickly, the involved must scale meet task. After all, small team could create if be delivered was and, conversely, given we had time. Scaling thus becomes an issue only option for meeting system delivery deadline is have many developers working concurrently.
TikiWiki is a large open source project that embraces Eric Raymond's Bazaar model. highly successful, yet it adopts process lacks many of the characteristics are thought to be necessary for projects comparable size and complexity. The article discusses TikiWiki's development in context these characteristics.
Software development based on commercial off-the-shelf or COTS, components is currently drawing considerable attention. This paper presents the results of two complementary quantitative valuation methods applied to assessment COTS-centric software projects. We use a standard corporate finance tool, Net Present Value, as basis for both methods. The first method, comparative valuation, investigates economic incentive choose COTS centric strategy in project vis alternative, custom strategy,...
Creating a graduate-level software engineering breadth course is challenging. The scope wide. Students prefer hands-on work over theory. Industry increasingly values soft skills. Changing technology requires the syllabus to be technology-agnostic, yet abstracting away compromises realism. Instructors must balance with depth of learning. At Carnegie Mellon University, we designed flipped-classroom that tackles these tradeoffs. has been offered since Fall 2014 in Silicon Valley campus. In this...
This paper shares our experience with initial negotiation and topic elicitation process for conducting industry experiments in six software development organizations Finland. The involved interaction company representatives the form of both multiple group discussions separate face-to-face meetings. Fitness criteria developed by researchers were applied to list generated topics decide on a common topic. challenges we faced include diversity proposed topics, communication gaps, skepticism...
The concept of architecture has a major role to play in expanding the traditional scope agile software development.
It has been 50 years since the term "software engineering" was coined in 1968 at a NATO conference. The field should be relatively mature by now, with most established universities covering core software engineering topics their Computer Science programs and others offering specialized degrees. However, still many practitioners lament lack of skills new hires. With growing demand for engineers from industry, this apparent gap becomes more pronounced. One corporate strategy to address is...
ABSTRACT Commercial software development is an inherently uncertain activity. Private risk high, schedule and cost overruns are common, market success elusive. Such circumstances call for a disciplined project evaluation approach. This paper addresses the use of earned value management data in assessing economic commercial projects that simultaneously subject to schedule, cost, risk. The assessment based on real options analysis, financial valuation technique can tackle dynamic investment...
This theme issue on software engineering's 50th anniversary presents a range of contributions—from pioneers and well-established engineers, to younger contributors whose imprint the field is perhaps yet come. These contributions come in variety formats that provide balanced look at our field's past, present, likely future. The topics include both timeless ideas appeared fade for while, only pop up again new incarnation, entirely paradigms have disrupted field.
This paper presents an evaluation of the code representation model Code2vec when trained on task detecting security vulnerabilities in C source code. We leverage open-source library astminer to extract path-contexts from abstract syntax trees a corpus labeled functions. is resulting with classifying function as vulnerable or non-vulnerable. Using CodeXGLUE benchmark, we show that accuracy for this comparable simple transformer-based methods such pre-trained RoBERTa, and outperforms more...
Abstract Evidence suggests that pair programmers–two programmers working collaboratively on the same design, algorithm, code, or test–perform substantially better than two would alone. Improved quality, teamwork, communication, knowledge management, and morale have been among reported benefits of programming. This paper presents a comparative economic evaluation strengthens case for The builds quantitative results an empirical study conducted at University Utah. is performed by interpreting...
The perception that software projects have unusually high failure rates has fueled the debate on process. In 1990s, Standish Group estimated total economic toll of cancelled or overrun could reach several tens billions dollars in terms wasted effort and opportunity costs. Worse yet, even when delivered time budget, rarely any significant salvage value it fails to meet user needs. This article argues for an basis rationalizing process selection decisions. It demonstrates how, under conditions...