January 17, 2008 by Nat Ayewah
This book by Andrew Hargadon talks about why some companies are more innovative than others. The strategy focus should not just be “where we are going” but “how to get there”. General insights:
- Creative innovations often come from combining other ideas
- Creativity often occurs within the context of a community of people searching for solutions to a problem
- Tension/trade-off between exploitation and exploration – but this tension does not have to be. Companies can innovate during the process of exploiting existing knowledge and resources.
Chapter 1
- We need to recognize the “networks” that lead to innovation. Not traditional networks, but networks linking people, objects and ideas, all connected to or influencing in some way the final innovation.
- Technology is the arrangement of people, objects and ideas to accomplish a particular goal. In other words an innovation is not just an object — it requires the (possibly specialized) people that use this object.
- Breakthroughs cause these networks experience a shift. Objects, ideas and people can become obsolete. Good inventors are just well connected.
Posted in creativity | Leave a Comment »
December 3, 2007 by Nat Ayewah
From a discussion on the SAMATE mailing list: does static analysis add much value for web security or can many problems be found with good input validation. Checking for correct input validation is very program dependent and hence is hard for static analysis checkers. But there are some problems that surface even with good input validation and this is where static analysis can be helpful. Ultimately, the best solution is some combination of “dynamic fuzzing” (feed randomly generated faulty inputs during testing) for input validation and static analysis for everything else.
Posted in static analysis | Leave a Comment »
November 19, 2007 by Nat Ayewah
In preparing a recent survey for FindBugs, I thought about whether to ask questions about “static analysis” tools, or “automatic defect detection”. The two phrases are often used interchangeably, but really both are needed to do the sort of things that FindBugs does. This is illustrated well by GrammaTech’s products:
- Code Surfer is the static analysis part; it can be used for other applications, not just bug detection
- CodeSonar is the bug detection part; it uses Code Surfer and infers bugs from the results of this analysis.
This separation is useful because it means that Code Surfer can be used in other ways, others wanting to do bug detection don’t have to reinvent the analysis wheel, and its analysis is not too narrow (specific to code sonar).
Posted in static analysis | Leave a Comment »
October 8, 2007 by Nat Ayewah
One perspective is to see Static Analysis tools as “Spell Checkers” (SPSA, 21). Even good writers and spellers need spell checkers. But I’ve never gone out to buy/install a spell checker. I just expect it with my Word Processor, and I lazily expect a red squiggly line to point out my errors even before I run it. So perhaps developers shouldn’t be worrying about static analysis tools but should expect them to be there and to raise flags as they type.
Unfortunately Static Analysis warnings are not as black and white as spelling errors (most of the time).
Findbugs has a feature in which warnings are raised as they occur. We should survey to see how this feature is accepted/used by developers.
Posted in static analysis | Leave a Comment »
September 7, 2007 by Nat Ayewah
The goal of SAUS research is two-fold:
- Look for ways to improve static analysis tools so that they better support the users’ work and fit into software development processes, and
- Validate/Invalidate assumptions made by tool creators based on the experience of real users.
To this end, we are conducting studies to learn through observation, interview, and survey how static analysis tools are used in practice to improve software quality and security. Some of our activities include:
- Online surveys to solicit feedback from software developers and other users
- On site contextual interviews in which we observe users as they use the tools
- On site retrospective interviews in which we explore in more detail the user’s experiences using the tools
- Literature review to gather the assumptions of experts and tool creators, and the findings of other research projects
Some questions we use to focus our research include:
- What (interface) features help make static analysis tools easier to understand, and easier to fit into a software development process (and the converse of this)?
- What do users like/dislike the most about static analysis tools?
- What road blocks prevent users from integrating tools, or following their recommendations?
The big ideas in static analysis research can be described using a list of problems and solutions. Essentially the purpose of this research is to validate existing solutions and propose new solutions (and problems).
Posted in static analysis | Leave a Comment »
August 30, 2007 by Nat Ayewah
I recently had the pleasure (sarcasm implied) of upgrading the test environment on the Submit Server. We use the Submit Server at UMD to manage, compile and test student programming submissions. We wanted to support JUnit 4 style test cases, and I decided that rather than rewrite the entire framework we built to support this, I would run the tests in a JUnit 3 environment using the JUnit4TestAdapter.
The first complication was understanding how the environment deals with mixed tests. It turns out that if the test class extends junit.framework.TestCase, it is treated as a JUnit 3 test (@Test and other annotations are ignored). This is also the case in the provided JUnitCore runner, and in the Eclipse IDE. I don’t think this is too well documented (and an early article at IBM suggests this was not the intention), but I decided to keep this behavior and inform our users.
Another issue is that our process requires us to run one test at a time. I eventually figured out the JUnit 4 uses filters to decide what tests to run, and I created a custom filter that does this. The funny thing is that the “filter” method to call this filter on a JUnit4Adapter was not visible (it was private in the code). It took a little while to figure out that this is a bug in JUnit 4.3 and I needed to download JUnit 4.4 (released just a month ago).
Ah the joys of manipulating JUnit. Until my next experience…
Posted in frameworks, programming languages | Leave a Comment »
August 29, 2007 by Nat Ayewah
My current research is based around a few studies of the way Static Analysis tools are used by software development teams. (Here, static analysis tools includes tools for finding programming bugs or security holes.)
We plan to conduct these studies using contextual inquiry — a method in which the researcher (me) visits the site where developers work, and watches them as they program or run tests. This approach should yield details that even developers do not notice as they work.
We hope to identify features that make these tools easier to understand, and easier to fit into a software development process.
Right now, we are trying to identify local companies that actually use static analysis tools. Its proving to be hard to find regular users, but security consultants, and software developers serving high risk markets may be good targets.
Posted in static analysis | Leave a Comment »
ASE Review
November 11, 2007 by Nat Ayewah
I thought ASE was productive, and it seems this community would be interested in the research we do on static analysis tools.
I talked to Tim Menzies who presented a paper on “The Business Case for Automated Software Engineering” (http://menzies.us/pdf/07casease.pdf). The paper uses AI methods to model predictors for software effort and defect levels in different projects, and shows that tools are helpful even though the models depended on “local tuning” that were different from project to project.
I made it to the talk on “Modeling Bug Report Quality”. The paper is similar to the Nebraska/Google research on the Google bug database, except they evaluate the FireFox database. It might be interesting to compare the two papers.
I also talked to Rustan Leino from Microsoft Research. He gave a good demo of Spec# (a superset of C#) in his keynote talk (http://research.microsoft.com/specsharp/). I think they’ve done a good job of taking (sometimes esoteric) concepts in software verification and putting them in a format that will be accessible to the average programmer, and he pushed the idea of using Spec# for students learning how to program.
Posted in commentary, programming languages, static analysis | Leave a Comment »