there is a bytecode modifying mutation testing tool by the name of jumble out there.
they don't have many mutations that we don't have. the most interesting one is probably the binary operator mutator.
they also have an eclipse plugin, but by the looks of it it's quite limited, but provides an easy way to spike the product.
the site mentions that they have an automated continuous integration type of mutation tester. cool. and that they have a lot more experience than us with mutation testing. and since they've been doing this since 2003, it seems that the whole idea is a reasonable one.
as an aside, it is apparently possible to set the java-agent settings in the manifest of the jar, so it wouldn't be necessary to manually set it when running test-police. an obvious advantage.
Monday, July 23, 2007
Saturday, July 21, 2007
the big picture
I've had the pleasure to deal with two crappy cars and two car mechanics this summer.
the first car and mechanic got together for about two weeks. after two weeks the guy got back to me and told me the car was crap, he hadn't fixed anything, and if I don't like it, I can take my car elsewhere.
it turned out the car had about a hundred small glitches, like none of the gauges working, lights being out, mirrors being for the wrong model, etc.
our mechanic was more interested in doing big picture moves, changing the engine, replacing shafts and fiddling with the gearbox.
we were stuck in some resourcebundle and css fiddling stage at work at the time so I knew what he meant.
the other car, and the other mechanic was pretty much the same story, except there I also needed some big picture items done so he happily did those and didn't mention all those details that he omitted.
there are two sayings:
agile software development aims to deliver value incrementally, but each iteration/feature/product backlog item should be polished separately.
questionable tools such as portal products severely constrain the polishing process. good tools, such as rapid/instant deployment allows for fast iterations of individual details.
design decision which involve the client occur very frequently in the polishing phase, and when developers do not have the authority to make those decisions, a product owner in the same room allows the developers to get on the right path and present alternatives immediately.
as transaction costs diminish, developers will be able to work on the right things the whole time, and adjust their bearing as they go along.
if the process of getting a decision is heavy, it will be cheaper to work on something the developers know in their heart to be wrong for 4 hours and getting a change request two weeks later to the alternative they knew to be right in the first place. but this is very frustrating, so frustrating that developers will wish they had hatched a better exit plan.
the first car and mechanic got together for about two weeks. after two weeks the guy got back to me and told me the car was crap, he hadn't fixed anything, and if I don't like it, I can take my car elsewhere.
it turned out the car had about a hundred small glitches, like none of the gauges working, lights being out, mirrors being for the wrong model, etc.
our mechanic was more interested in doing big picture moves, changing the engine, replacing shafts and fiddling with the gearbox.
we were stuck in some resourcebundle and css fiddling stage at work at the time so I knew what he meant.
the other car, and the other mechanic was pretty much the same story, except there I also needed some big picture items done so he happily did those and didn't mention all those details that he omitted.
there are two sayings:
[god|the devil] is in the details.the same applies in software development as much as in everything else. often the final polish is so important that without it the work has no discernible form for the casual observer.
agile software development aims to deliver value incrementally, but each iteration/feature/product backlog item should be polished separately.
questionable tools such as portal products severely constrain the polishing process. good tools, such as rapid/instant deployment allows for fast iterations of individual details.
design decision which involve the client occur very frequently in the polishing phase, and when developers do not have the authority to make those decisions, a product owner in the same room allows the developers to get on the right path and present alternatives immediately.
as transaction costs diminish, developers will be able to work on the right things the whole time, and adjust their bearing as they go along.
if the process of getting a decision is heavy, it will be cheaper to work on something the developers know in their heart to be wrong for 4 hours and getting a change request two weeks later to the alternative they knew to be right in the first place. but this is very frustrating, so frustrating that developers will wish they had hatched a better exit plan.
Tunnisteet:
software development
Thursday, July 12, 2007
gorilla updates
apparently there was a new update for my n73 which now includes FOTA. the major version also went from 3 to 4. still this version does not allow google maps mobile to save my choice of always allowing online access, and to always use my single configured internet connection, so everytime I start the application I have two do two redundant selections.
and I'm still waiting for the jaiku "closed beta" to become publicly available in july.
my employer has put a lot of effort into creating a positive buzz around itself. it's working great, and what makes it easier is that they seem to be the only company doing it. we have mudcake, a limousine and we offer the locals gourmet coffee at customer sites. my previous employer had cake everytime someone left. offered either by the employer, the guy who left, or colleagues.
this custom was pure genius! and people were leaving all the time, and everybody was always happy when someone left!
one time we had a summer party. we all stopped working an hour earlier than usual and we walked out towards a restaurant nearby where we didn't have a reservation. "they don't take reservations", our head of marketing explained. but they did, and we couldn't get in. so walked over to the next restaurant but they were too full aswell. we ended up at the sleeziest bar in the neighborhood, the boss got us one round of beer, made a 5 minute speech, and then we were on our own. or rather on our way home.
the only thing better than this is a large company which everyone knows. it's so large that everyone knows someone who works there. and everytime the company comes out with a new product, the people who work there say: "don't buy this product, it's even worse than our entire line of products X". reverse viral marketing. everytime you consider buying a product, your circle of friends has someone working there telling you that they've heard that this product is complete crap.
I used to work at a company which had all the product of that company, plus all the product from their competitors, yet our beloved terminal maker still had the best products on the market.
when the people who had to deal with the outer edge of product development, and who were familiar with all the terminals out there had to choose one for theirpersonal work use, they couldn't choose because they hated everything.
they seem to be caught in a cycle where they must bring out new features all time, and with an extremely complex, fragile, and difficult to develop platform under the hood, there's no way to fix the situation.
and I'm still waiting for the jaiku "closed beta" to become publicly available in july.
my employer has put a lot of effort into creating a positive buzz around itself. it's working great, and what makes it easier is that they seem to be the only company doing it. we have mudcake, a limousine and we offer the locals gourmet coffee at customer sites. my previous employer had cake everytime someone left. offered either by the employer, the guy who left, or colleagues.
this custom was pure genius! and people were leaving all the time, and everybody was always happy when someone left!
one time we had a summer party. we all stopped working an hour earlier than usual and we walked out towards a restaurant nearby where we didn't have a reservation. "they don't take reservations", our head of marketing explained. but they did, and we couldn't get in. so walked over to the next restaurant but they were too full aswell. we ended up at the sleeziest bar in the neighborhood, the boss got us one round of beer, made a 5 minute speech, and then we were on our own. or rather on our way home.
the only thing better than this is a large company which everyone knows. it's so large that everyone knows someone who works there. and everytime the company comes out with a new product, the people who work there say: "don't buy this product, it's even worse than our entire line of products X". reverse viral marketing. everytime you consider buying a product, your circle of friends has someone working there telling you that they've heard that this product is complete crap.
I used to work at a company which had all the product of that company, plus all the product from their competitors, yet our beloved terminal maker still had the best products on the market.
when the people who had to deal with the outer edge of product development, and who were familiar with all the terminals out there had to choose one for their
they seem to be caught in a cycle where they must bring out new features all time, and with an extremely complex, fragile, and difficult to develop platform under the hood, there's no way to fix the situation.
Wednesday, July 4, 2007
europa
its often hard to tell what is the most important new feature of a new piece of software. for example I can't tell what's new in java 6 even after reading a book about it. maybe the ability to run javascript.
anyway, I'm not interested in the SWT stuff or Vista support that eclipse 3.3 brings, but.. woah.. I just ran into DLTK, the dynamic language toolkit. anyway. alt-shift-r is now non-modal, as is some other stuff, such as string comparison for junit tests (I havent tried that actually). this is pretty confusing at first but I guess I will get used to it, and maybe even find it beneficial and not just djuizy.
the jdave runner doesnt allow test methods to be clicked in 3.2 because the names of classes contained in another class file are appended with a dollar-sign, I made a workaround for it, where it replaces the $ with a period for the test name, but with 3.3 that isn't needed because clicking works. this works in idea too I hear.
but the greatest new feature I have found in 3.3 so far is that open resource now works like open type. meaning that camelcase works, and that the latest relevant files are displayed above a line. this feature is gigantic win and something I had been wishing for.
also, when a file with the same name is found in several directories, these matches are listed individually in the same list, rather than forming a second hierarchy as in the previous release.
I have been told to mention that this has been supported forever in IDEA. but I hear IDEA doesnt have incremental compile.
anyway, I'm not interested in the SWT stuff or Vista support that eclipse 3.3 brings, but.. woah.. I just ran into DLTK, the dynamic language toolkit. anyway. alt-shift-r is now non-modal, as is some other stuff, such as string comparison for junit tests (I havent tried that actually). this is pretty confusing at first but I guess I will get used to it, and maybe even find it beneficial and not just djuizy.
the jdave runner doesnt allow test methods to be clicked in 3.2 because the names of classes contained in another class file are appended with a dollar-sign, I made a workaround for it, where it replaces the $ with a period for the test name, but with 3.3 that isn't needed because clicking works. this works in idea too I hear.
but the greatest new feature I have found in 3.3 so far is that open resource now works like open type. meaning that camelcase works, and that the latest relevant files are displayed above a line. this feature is gigantic win and something I had been wishing for.
also, when a file with the same name is found in several directories, these matches are listed individually in the same list, rather than forming a second hierarchy as in the previous release.
I have been told to mention that this has been supported forever in IDEA. but I hear IDEA doesnt have incremental compile.
Subscribe to:
Posts (Atom)