I enjoy working on practial issues and problems with industrial colleagues.
I have quite bit of industrial experience, primarily in software engineering,
and more specifically in software maintenance and evolution, program understanding,
and software quality (testing and analysis). I spent nearly 20
years in industry, beginning at Perkin-Elmer, and then at AT&T Bell Labs
and its various offshoots. I have experience in system tools, databases, software
development tools, telephony, web services, and quality control methods.
Most recently I have been doing a lot of work in mining software repositories
examining histories of projects to understand the factors that influence quality and productivity.
For about
5 years I was in product development, and then I moved into an applied research
lab. While at research, I enjoyed frequent interactions with development
teams, helping them develop better tools and processes to improve software
quality, cost, and schedules. I had particular success with GENOA, a tool
that was used to aid program understanding and maintenance; this tool was
widely used by development teams within AT&T and Lucent. AT&T has
also sought (and obtained) patent protection on several of the ideas I developed
while I was there.
Since coming to UC Davis, I have been involved in both short and long-term
consulting projects with various industrial colleagues. I've listed some of
the longer ones below:
- Microsoft, Redmond, WA (1998-2008). Consulting on new approaches to improving
the quality of kernel-mode device drivers. Developed programming models and
analysis techniques in collaboration with Microsoft researchers (Ted Biggerstaff
and others) and developers. Also consulted on approaches to improve quality
and evaluate issues that affect software quality
- Hewlett-Packard, Palo Alto, CA. (Summer 1999,
2 weeks total) Consulting on security for a new systems management and administration
infra-structure for distributed e-commerce applications. (Worked with Martin
Griss and Pankaj Garg at HP Labs).
- Financial Services Company, USA (Winter 2000,
Spring 2001, 2 weeks total). Consulting on software evolution, maintenance
and quality control of a large distributed financial application, specificallly
to identify and patch security vulnerabilities. This well-known organization
has multi-billion dollar annual revenues, but must remain unnamed due
to an NDA.
-
Expert Witness Work I've done projects for attorneys
in legal disputes relating to
software quality,
and intellectual property issues (working out infringement scenarios,
and evaluating patent claims & novelty).
I have also provided training in several areas. This training overlaps with
and cross-pollinates my own academic (undergraduate and graduate teaching),
and provides opportunities for interaction with industry colleagues. I
have given intensive training classes (between 2 days and a week) in several
areas, including design patterns, client-server and container-based computing
(EJB, CORBA, .NET), and software engineering for security. As an academic,
with a longer-term view, I can offer a more nuanced historical
rationale for the design of modern infra-structures such as EJB; I believe
this helps learning and retention. I have conducted training in various countries:
in the US, Italy, China, India, Thailand, and Mexico. A good way to travel and meet
people. In fact, in some cases, I am happy to do it for a low or nominal fee,
since I enjoy interacting with colleagues from other backgrounds and cultures.
Specially so for spanish-speaking countries, since I have two young kids who
are fluent in the language.
I find that industrial partnerships enrich my own research, and teaching.
The issues confronted by industrial colleagues are often the ideal source
of new research problems and directions.