Weeks: 1 2 3 4 5 6 7 8 9 10


The First Week: June 4 - June 8

Summary:

After getting a key to the lab, a badge for building access, a Buzz card (GATech ID card), and a parking permit, I started focusing on my project. I've been reading papers, talking to my mentors, and trying both to get background knowledge and to understand my project. I'm sort of starting to make progress. I think the fact that I have somewhat limited experience with Java is going to be a bit of a challenge this summer, but I'm glad, because that means I'll get to know it a lot better.

My mentors are really nice. Mary Lou is Mary Jean's advisor, and she won't be down here for the whole summer, but she'll be traveling back and forth quite a bit (from Pittsburgh). We had lunch on Tuesday with all the DMP participants (mentors and students) at Georgia Tech this summer. I also live with two of the DMP participants (Kathy and Rachel) and it has been nice to be able to talk about grad school stuff with people who are going through the same process.

Resources:

Representation and Analysis of Software. M.J. Harrold and G. Rothermel. (December 1997).

Regression Test Selection for Java Software. M.J. Harrold, J. Jones, T. Li, D. Liang, A. Orso, M. Pennings, S. Sinha, S. Spoon, and A. Gujarathi, Proceedings of the ACM Conference on Object-Oriented Programming, Systems, Languages, and Applications (OOPSLA 2001).

Using Component Metadata to Support the Regression Testing of Component-Based Software. Mary Jean Harrold, Alessandro Orso, David Rosenblum, Gregg Rothermel, Mary Lou Soffa, Hyunsook Do, Proceedings of the IEEE International Conference on Software Maintenance (ICSM 2001).

Terms:

Basic Block - a sequence of consecutive statements in which flow of control enters at the beginning and leaves at the end without halt or possibility of branching except at the end.
Control Flow Graph (CFG)- a directed graph in which each node represents a basic block and each edge represents the flow of control between basic blocks.
Regression Testing - the process of validating modified software to provide confidence that the changed parts of the software behave as intended and that the unchanged parts of the software have not been adversely affected by the modifications.
Regression Test Selection - the process of selecting an appropriate subset of the original test suite for a given program to use in regression testing. A safe regression-test-selection technique is one that, under certain assumptions, will never exclude a test case if that test case can reveal faults in the modified software.
Coverage - the percentage of a particular type of structural entities covered by a test run with respect to the total number of that type of structural entity. Examples of kinds of structural entities/types of coverage: statements, branches, decisions, paths, methods, classes, etc.)
Metadata - data about components and metamethods for calculating or retrieving those data.



The Second Week: June 11 - June 15
Summary:

This week, I basically just continued doing background research for the design work that I'll need to do. I have been learning about XML and DTDs, about RTS in general and for component-based software, about JABA, about DejaVOO, about software analysis...

This summer is very different from last summer. I don't know exactly what the difference is - a different field, being in more of a group rather than just a one-on-one type situation, less background in this area.... I feel like I haven't done anything yet, and that I'm asking the same questions over and over. It's kind of frustrating. I still think it will get better though - that at some point it will just 'click' and take off from there.

Resources:

Project Description. (Proposal for Funding.)

XML reference: www.w3schools.com

Terms:

Metacontents - describe static and dynamic aspects of a component, can be accessed by the component user, and can be used for various engineering tasks. Metacontents consist of information (metadata) about components, such as dependences, execution traces, abstract representations of source code, or assertions about security properties, and utilities (metamethods) for calculating and retrieving such information.
Dominance - a dominates b if every path from start to b goes through a (in a CFG). Nodes dominate themselves.
Postdominance - a postdominates b if every path from b to stop goes through a (in a CFG). Nodes do not postdominate themselves.
Control Dependence - a is control dependent on b if a postdominates one exit/edge (in a CFG) from b but not the others.



The Third Week: June 18 - June 22
Summary

At my meeting on Monday, I got a lot of questions about the project cleared up. I had been thinking about a few things wrong, and I was able to get a better understanding of some issues and move forward.

I looked at design options for DTDs for changes metadata. I came up with a few examples, and some choices/tradeoffs that would need to be made. In this process I found that I needed more information about how XML is parsed, and so I was back and forth to the online reference I'd been using too.

From there I started looking at the DejaVOO documentation, trying to get a sense of the specifics of the algorithm and the implementation. At the same time, I started looking into Java/XML packages to figure out what I would need to modify the DejaVOO algorithm.



The Fourth Week: June 25 - June 29
Summary:

This week I continued looking at DejaVOO documentation and thinking about the design of the metadata. I found some information on the web that suggested that it might be better to use schema rather than DTDs for the XML specification. I learned some about schema, and how they compare to DTDs.

I also had a really good meeting with Mary Jean on Wednesday. We made some good progress on my project, and we talked a lot about graduate school. She answered some questions for me about a variety of grad-school-related topics like GREs, the application process, choosing a school, etc.

Resources:

A Safe, Efficient Regression Test Selection Technique. Gregg Rothermel and Mary Jean Harrold. ACM Transactions on Software Engineering and Methodology, vol. 6, no. 2, pp. 173-210, April 1997.

Schema reference: www.w3.org/TR/xmlschema-0



The Fifth Week: July 2 - July 6
Summary:

After careful consideration, we decided to go with DTDs instead of schema, for a couple reasons. For one thing, we couldn't find a specific task that we needed to do that could be accomplished with schemas but not with DTDs. Another issue was the fact that schemas are much newer and though they have become a standard, they might still not have all the bugs worked out.

Based on this decision, I wrote DTDs for changes and coverage information, as well as sample XML documents for each.

From here we turned our attention to manipulating XML documents in Java, and the task of packaging the metacontents with the component piece of the software.

Resources:

Manipulating XML with Java:
java.sun.com/xml


The Sixth Week: July 9 - July 13
Summary:

For the first part of this week, I concentrated on the job of how to package metacontents with components. We came up with a few different design options, picked one, and used it to develop a simple model of a tool with which to access the metacontents through the component.

Once I had finished that basic framework, the next thing was to incorporate the XML documents into it. We decided to use DOMs (Document Object Models) to represent and manipulate the XML documents in the Java code, so I started in on the (long!) tutorials for the SAX parser and DOMs.

Resources:

Manipulating XML with Java:
java.sun.com/xml


The Seventh Week: July 16 - July 20
Summary:

I dedicated this entire week to working on the tutorials (except Friday when I went out of town). Not much exciting to report about them, except that they include a nice section on displaying the DOM trees (which the XML hierarchies are translated into) graphically, which will may be useful in the future.

I also met with a professor that Mary Jean set me up with this week, Janet Kolodner. I had wanted to find out more about the AI research being done at GA Tech, and Janet had all kinds of interesting things to tell me about at our lunch. I'm going to be meeting with one of Janet's grad students later this summer too.

Resources:

Manipulating XML with Java:
java.sun.com/xml


The Eighth Week: July 23 - July 27
Summary:

This week I finished all the Java/XML tutorials and worked on applying them to the primitive version of the tool that I had been working on. The changes that I made allowed the tool to read XML documents, view the information graphically, and output the data in various ways. At the end of the week Mary Jean and I discussed some issues involved with the process of getting DejaVOO to generate the metacontents.

This week I also met Ashok Goel, another professor at Georgia Tech. Ashok also works in AI, and was my first computer science professor's advisor in grad school. We had a really great conversation - he does really interesting work. It really got me thinking about grad school in some new ways, and rejuvenated my enthusiasm about CS and grad school. I also met with one of Janet Kolodner's grad students, Jakita, to get her perspectives on Georgia Tech and CS grad schools. That was also really helpful - she had some good advice for me.



The Ninth Week: July 30 - August 3
Summary:

I spent this week working on modifying the tool in various ways, many of them having to do with ensuring that information/objects weren't loaded/created unless they were going to be used. For instance, I changed it so the XML documents were loaded on demand (when the information was asked for). Basically, this week was about playing with a lot of different design issues.



The Tenth Week: August 6 - August 10
Summary:

This week I focused on coverage information. There were a variety of issues to deal with when working with dynamic information like coverage, like how to instrument the code and finding a persistent place to store the information. For now, I manually instrumented the code, and wrote the information to a file.

Also this week, we started looking ahead to next year. In order to graduate from Bucknell with honors, you have to do a year-long thesis - that's what it means to be in the honors program. I will be extending this work for my thesis, so we made some plans for that. I put a list of goals for the project into my final report (also on my webpage).