<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://weblogs.asp.net/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Gunnar Kudrjavets</title><link>http://weblogs.asp.net/gunnarku/default.aspx</link><description>Paranoia is a virtue</description><dc:language>en</dc:language><generator>CommunityServer 2007 SP1 (Debug Build: 20510.895)</generator><item><title>Ternary search trees</title><link>http://weblogs.asp.net/gunnarku/archive/2004/09/30/236472.aspx</link><pubDate>Fri, 01 Oct 2004 03:57:00 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:236472</guid><dc:creator>gunnarku</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/gunnarku/rsscomments.aspx?PostID=236472</wfw:commentRss><comments>http://weblogs.asp.net/gunnarku/archive/2004/09/30/236472.aspx#comments</comments><description>&lt;p&gt;About a year ago I was in pretty embarrassing situation because I had no clue what ternary search trees are and I had to write some code to implement efficient way of searching and storing strings. Jon Bentley’s and Robert Sedgewick’s article "Ternary Search Trees" was published in &lt;a href="http://www.ddj.com/articles/1998/9804/"&gt;DDJ&lt;/a&gt; and is a very good paper to start with. Unfortunately to access the article you need to be DDJ subscriber but if the source code is enough for you then the demonstration program by authors is located &lt;a href="http://www.cs.princeton.edu/~rs/strings/tstdemo.c"&gt;here&lt;/a&gt;. Ternary search trees are extremely helpful in solving an entire class of searching related problems which may come up in real life.&lt;/p&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=236472" width="1" height="1"&gt;</description><category domain="http://weblogs.asp.net/gunnarku/archive/tags/Development/default.aspx">Development</category></item><item><title>"The Apprentice" for software developers</title><link>http://weblogs.asp.net/gunnarku/archive/2004/09/30/236376.aspx</link><pubDate>Thu, 30 Sep 2004 22:40:00 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:236376</guid><dc:creator>gunnarku</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/gunnarku/rsscomments.aspx?PostID=236376</wfw:commentRss><comments>http://weblogs.asp.net/gunnarku/archive/2004/09/30/236376.aspx#comments</comments><description>&lt;p&gt;Lately it seems that to be part of any social discussion you need to be watching "&lt;a href="http://www.nbc.com/nbc/The_Apprentice_2/"&gt;The Apprentice&lt;/a&gt;". I’ve been noticing the similar phenomena during last couple of years when it comes to "&lt;a href="http://www.hbo.com/sopranos/"&gt;The Sopranos&lt;/a&gt;" and it made me feel like a total outcast because I haven’t seen a single episode of "The Sopranos" and I don’t intend to ;-) However, to blend in I’ve been following "The Apprentice 2" and my colorful imagination tells me that what will be really cool ;-)&amp;nbsp;is the similar show about software developers. You can already imagine the following dialogs in the boardroom:&lt;/p&gt; &lt;blockquote&gt;...&lt;br /&gt;Participant 1: We lost because Participant 2 never wrote any unit tests and therefore our application crashed.&lt;br /&gt;Participant 2: No, you’re wrong. We lost because you told me not to bother adding any assertions to our code. If I would’ve added the assertions we would have won.&lt;br /&gt;The Guy Who Runs The Show: Participant 3, what do you think? Whose fault it is?&lt;br /&gt;Participant 3: I think it is leader’s fault. He told us not to install&amp;nbsp;low-level debuggers because GUI tools will be enough and I told him that Real Programmers don’t use GUI tools.&lt;br /&gt;The Guy Who Runs The Show: Participant 1, you’re fired because you used variable names like &lt;code&gt;lpszfoobarCount&lt;/code&gt;.&lt;br /&gt;...&lt;/blockquote&gt; &lt;p&gt;The extra bonus will be seeing before any given task all these people with CS degrees utilizing the game theory trying to figure how to behave properly to maximize their chance of winning. That’ll be the show geeks will watch ;-)&lt;/p&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=236376" width="1" height="1"&gt;</description><category domain="http://weblogs.asp.net/gunnarku/archive/tags/Other/default.aspx">Other</category></item><item><title>Tips for survival in agile software development world ;-)</title><link>http://weblogs.asp.net/gunnarku/archive/2004/09/28/235395.aspx</link><pubDate>Tue, 28 Sep 2004 19:58:00 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:235395</guid><dc:creator>gunnarku</dc:creator><slash:comments>3</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/gunnarku/rsscomments.aspx?PostID=235395</wfw:commentRss><comments>http://weblogs.asp.net/gunnarku/archive/2004/09/28/235395.aspx#comments</comments><description>&lt;p&gt;Even if you don’t have any clue about agile software development, SCRUM, TDD, XP etc., here are some things which will help you to look smarter:&lt;/p&gt; &lt;ol&gt; &lt;li&gt;Use a word "refactoring" whenever words "changing", "modifying", "updating" etc. are used. Some examples: "I refactored the project’s schedule to include this new task.", "Should we refactor our meeting for this afternoon?", "Triage team will refactor all the bugs with the new triage date." It won’t always make sense but you’ll at least look cool and knowledgeable and maybe even agile.&amp;nbsp;&lt;/li&gt; &lt;li&gt;Use a word "agile" to prefix some nouns and replace it with adjectives you would normally use. Some examples: "This is pretty agile meeting.", "You’re looking agile today.", "This is an agile bug.", "There have been some agile developments going on recently."&lt;/li&gt; &lt;li&gt;Use a word "extreme" like a word "agile" in previous bullet-point. You would need to be more careful though not to scare people off.&lt;/li&gt; &lt;li&gt;Whenever you’re talking about testing then use "unit testing". Some examples: "She is currently unit testing this new interface.", "When your performance unit testing will be done?", "What’s a career path for unit tester?"&lt;/li&gt; &lt;li&gt;You can also try to prefix "development" with "test driven". Some examples: "How’s life in test driven development team?", "Are you a test driven developer for this new feature?"&lt;/li&gt; &lt;li&gt;Use "pair" to prefix "programming". Some examples: "I had to go to meetings all day and therefore I didn’t get any pair programming done.", "My friend is a C# pair programmer.", "Pair programming this task will take at least three days."&lt;/li&gt; &lt;li&gt;Replace "scenario" with "user story". Some examples: "Does the specification contain all the user stories for this product?", "What are the most important user stories we should be testing?"&lt;/li&gt;&lt;/ol&gt; &lt;p&gt;If anyone has additional extreme tips then let me know and I’ll refactor this blog entry to include them ;-) Link of the day: &lt;a href="http://c2.com/cgi/wiki?ExtremeProgrammingForDummies"&gt;http://c2.com/cgi/wiki?ExtremeProgrammingForDummies&lt;/a&gt;&lt;/p&gt; &lt;p&gt;&lt;em&gt;&lt;font color="#0000ff"&gt;Now playing: Melotron, "Manchmal".&lt;/font&gt;&lt;/em&gt;&lt;/p&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=235395" width="1" height="1"&gt;</description><category domain="http://weblogs.asp.net/gunnarku/archive/tags/Other/default.aspx">Other</category></item><item><title>Having majority of the tests implemented before feature is added to the code base</title><link>http://weblogs.asp.net/gunnarku/archive/2004/09/26/234465.aspx</link><pubDate>Sun, 26 Sep 2004 23:34:00 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:234465</guid><dc:creator>gunnarku</dc:creator><slash:comments>2</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/gunnarku/rsscomments.aspx?PostID=234465</wfw:commentRss><comments>http://weblogs.asp.net/gunnarku/archive/2004/09/26/234465.aspx#comments</comments><description>&lt;p&gt;One of the things we’re currently trying to do is to align development and test processes and schedules more closely. The fuzzy description of initial problem statement is the following: “Whenever the implementation of some feature is added to the code base then at the same time majority of tests for this feature must be also implemented and some specific criteria about the quality of the feature must be met.”&lt;/p&gt; &lt;p&gt;However unclear this requirement may be it immediately raises a number of questions and implications&amp;nbsp;for the entire software development process. Let’s look at some of them:&lt;/p&gt; &lt;ol&gt; &lt;li&gt;&lt;strong&gt;Testability&lt;/strong&gt;. For now let’s use&amp;nbsp;the simplistic model where we define a software product as just a set of features. To meet this requirement above we need to focus more than ever on testability of every individual feature. The features need to be designed&amp;nbsp;so that there’ll be way of testing them in isolation. It definitely won’t be possible in every single case, but the alternative with lots of interdependencies is very frightening. No more you can check in the interface &lt;code&gt;IFoo&lt;/code&gt; and say that you can use it, but it won’t possible to properly test it before &lt;code&gt;IBar&lt;/code&gt; is implemented two weeks from now. Of course mock objects will help us tremendously.&lt;/li&gt; &lt;li&gt;&lt;strong&gt;Psychological impact&lt;/strong&gt;. The well-known software development models like the &lt;a href="http://en.wikipedia.org/wiki/Waterfall_model"&gt;waterfall model&lt;/a&gt; and &lt;a href="http://en.wikipedia.org/wiki/Spiral_model"&gt;spiral model&lt;/a&gt; have very clear distinction between development and testing. Now the development and testing will become a gray area where it’s very hard to formally determine when some feature is actually &lt;em&gt;done&lt;/em&gt;. As everything unknown and new is usually frightening for people then there’ll be probably lots of problems with skepticism targeting this approach.&lt;/li&gt; &lt;li&gt;&lt;strong&gt;Collective responsibility&lt;/strong&gt;. No more it’s “Feature &lt;em&gt;F&lt;/em&gt; is coded, so&amp;nbsp;development is done and ball is now in&amp;nbsp;test&amp;nbsp;organization's&amp;nbsp;court, go and test it.” The completeness of feature set becomes a responsibility of the entire team and developments &lt;em&gt;vs.&lt;/em&gt; test attitude should be fading.&lt;/li&gt; &lt;li&gt;&lt;strong&gt;Exact metrics&lt;/strong&gt;. How do we explicitly specify that desired amount of testing is done? Is it number of test cases (extremely bad measurement)? Is it specific percentage of code coverage (I don’t like this one also)? Is it some percentage of use cases automated? Is it all&amp;nbsp;priority 1 and&amp;nbsp;priority 2 test cases automated (how much priorities should we have?)? Is it some collective gut feeling which tells that feature is tested and it is&amp;nbsp;"good enough"?&lt;/li&gt; &lt;li&gt;&lt;strong&gt;Impact on morale&lt;/strong&gt;. If getting both product and test code implemented is a collective responsibility then Alice and Bob as developers may think that automating these API test cases isn’t what they signed up for and collective mutiny against this approach&amp;nbsp;may take place ;-)&lt;/li&gt; &lt;li&gt;&lt;strong&gt;Office moves&lt;/strong&gt;. Very frequent interaction between development and test team will be required to accomplish the end goal&amp;nbsp;properly. Should we start planning for office moves and try to make sure that people working on the same feature set have their offices located nearby. Please, no communal workspace ;-)&lt;/li&gt; &lt;li&gt;&lt;strong&gt;Impact on the entire testing process&lt;/strong&gt;. Are the test plans even necessary anymore or should the test code be the only documentation? What about manual test cases? Should we try to automate everything which is possible no matter what the cost is?&lt;/li&gt;&lt;/ol&gt; &lt;p&gt;This list can go on with number of additional questions but it’s wise to stop here because I don’t have currently answers, just questions. Now I need to go and talk with some smart people and figure out how to solve these problems or get the confirmation to the fact that I'm just overreacting ;-)&lt;/p&gt; &lt;p&gt;&lt;em&gt;&lt;font color="#0000ff"&gt;Now playing: Depeche Mode, "Behind the Wheel [Remix]".&lt;/font&gt;&lt;/em&gt;&lt;/p&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=234465" width="1" height="1"&gt;</description><category domain="http://weblogs.asp.net/gunnarku/archive/tags/Development/default.aspx">Development</category><category domain="http://weblogs.asp.net/gunnarku/archive/tags/Testing/default.aspx">Testing</category></item><item><title>Diaries of a former caffeine addict ;-)</title><link>http://weblogs.asp.net/gunnarku/archive/2004/09/25/234314.aspx</link><pubDate>Sun, 26 Sep 2004 01:17:00 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:234314</guid><dc:creator>gunnarku</dc:creator><slash:comments>12</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/gunnarku/rsscomments.aspx?PostID=234314</wfw:commentRss><comments>http://weblogs.asp.net/gunnarku/archive/2004/09/25/234314.aspx#comments</comments><description>&lt;p&gt;More than three months ago I decided to stop drinking coffee and switch to the green tea. I stopped drinking soda already years ago and currently my average intake is a can of Coke once in two-three months. Welcome to almost caffeine-free lifestyle ;-)&lt;/p&gt; &lt;p&gt;Coffee has been one of my best friends since teenage years and became an irreplaceable beverage during the university years when during daytime I attended lectures and during nighttime I wrote code. About five years ago I experienced something which could be called caffeine overdose – 7-8 cups of coffee every day. Needless to say that consuming so much coffee had some side-effects ;-) and I cut it back to 4-5 cups per day. This year my consumption of coffee has reached again somewhere near 6-7 cups per day and finally in the interest of preserving good health and&amp;nbsp;sanity&amp;nbsp;I decided to do the radical change and stop drinking coffee at all. For the purposes of entertaining other people I took some notes during last three months. Here they are:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;&lt;strong&gt;Week 1&lt;/strong&gt;: First day without coffee feels pretty bad. In the mornings I experience some doziness. Smell of fresh cup of Starbucks coffee causes cravings. I don’t understand how people can drink green tea. No difference in depth of sleep. No headaches. No nausea.&lt;/li&gt; &lt;li&gt;&lt;strong&gt;Weeks 2-3&lt;/strong&gt;: Practically the same, no negative symptoms except drowsiness. Sometime there are cravings for coffee. Green tea tastes much better. I start drinking about 4-5 cups of green tea per day. Guess I’m hooked on a new substance ;-) Sleeping slightly better.&lt;/li&gt; &lt;li&gt;&lt;strong&gt;Week 4&lt;/strong&gt;: First violation of the rules – I drink one cup of vanilla latte because of the social reasons. It tastes like the best cup of coffee I ever drank. Green tea doesn’t bother me anymore. Sleeping much better.&lt;/li&gt; &lt;li&gt;&lt;strong&gt;Weeks 5-6&lt;/strong&gt;: Don’t have&amp;nbsp;many cravings for coffee anymore. Drink four lattes during these two weeks because of social reasons. Green tea actually tastes pretty good. Start convincing my girlfriend to stop drinking coffee. She laughs at me but drinks green tea with me a couple of times.&lt;/li&gt; &lt;li&gt;&lt;strong&gt;Weeks 7-10&lt;/strong&gt;: Sometimes when I smell fresh cup of coffee I still have cravings. Feel much better and relaxed. No problems falling asleep at all. I start enjoying green tea and&amp;nbsp;finally have five different types of green tea at home. I discover that there is actually a difference between various teas.&lt;/li&gt; &lt;li&gt;&lt;strong&gt;Weeks 11-now&lt;/strong&gt;: Bye-bye coffee. No more cravings.&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;If you’re more interested about coffee, caffeine, and health related information then Google will help you as usual. A couple of interesting links:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;&lt;a href="http://www.coffeescience.org/"&gt;Coffee Science Source&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a href="http://www.caffeinedependence.org/caffeine_dependence.html"&gt;Information about Caffeine Dependence&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;However, I still decided to keep the coffee machine in my office. You never know ;-)&lt;/p&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=234314" width="1" height="1"&gt;</description><category domain="http://weblogs.asp.net/gunnarku/archive/tags/Personal/default.aspx">Personal</category></item><item><title>Popular agile software development sites</title><link>http://weblogs.asp.net/gunnarku/archive/2004/09/22/233231.aspx</link><pubDate>Thu, 23 Sep 2004 06:56:00 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:233231</guid><dc:creator>gunnarku</dc:creator><slash:comments>2</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/gunnarku/rsscomments.aspx?PostID=233231</wfw:commentRss><comments>http://weblogs.asp.net/gunnarku/archive/2004/09/22/233231.aspx#comments</comments><description>&lt;p&gt;Today evening I had finally time to read through the September issue of ACM SIGSOFT Software Engineering Notes. In addition to the usual goodies they have a nice overview ("Surfing the Net for Software Engineering Notes" by Mark Doernhoefer, page 20)&amp;nbsp;of most influential/known/popular sites about different agile software development methodologies. As I'm tired of trying to keep my bookmarks synchronized across the number of different computers I use, I'll publish this list and some additional sites here:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;&lt;a href="http://www.martinfowler.com/articles/newMethodology.html"&gt;The New Methodology&lt;/a&gt;. RSS feed for the site is &lt;a href="http://www.martinfowler.com/updates.rss"&gt;here&lt;/a&gt; and RSS feed for Martin Fowler's blog is &lt;a href="http://www.martinfowler.com/bliki/bliki.rss"&gt;here&lt;/a&gt;. &lt;li&gt;&lt;a href="http://en.wikipedia.org/wiki/Agile_Methods"&gt;Agile Methods Wikipedia&lt;/a&gt;. &lt;li&gt;&lt;a href="http://agilemanifesto.org/"&gt;The Agile Manifesto&lt;/a&gt;. &lt;li&gt;&lt;a href="http://www.agilealliance.com/home"&gt;The Agile Alliance&lt;/a&gt;. &lt;li&gt;&lt;a href="http://www.extremeprogramming.org/"&gt;Extreme Programming&lt;/a&gt;. &lt;li&gt;&lt;a href="http://www.mountaingoatsoftware.com/scrum/"&gt;Scrum&lt;/a&gt;. &lt;li&gt;&lt;a href="http://alistair.cockburn.us/crystal/index.html"&gt;Crystal&lt;/a&gt;. &lt;li&gt;&lt;a href="http://www.dsdm.org/"&gt;Dynamic Systems Development Method (DSDM)&lt;/a&gt;. &lt;li&gt;&lt;a href="http://www.refactoring.com/"&gt;Refactoring&lt;/a&gt;. RSS feed for the site is &lt;a href="http://www.refactoring.com/updates.rss"&gt;here&lt;/a&gt;. &lt;li&gt;&lt;a href=" http://fc-md.umd.edu/projects/Agile/"&gt;The Fraunhofer Center eWorkshops&lt;/a&gt;. &lt;li&gt;&lt;a href="http://www.agilemodeling.com/"&gt;The Official Agile Modeling Site&lt;/a&gt;. &lt;li&gt;&lt;a href="http://www.rspa.com/reflib/AgileDevelopment.html"&gt;The Pressman Downloadable Reference Library&lt;/a&gt;. &lt;li&gt;&lt;a href="http://www.testing.com/agile/"&gt;Agile Testing&lt;/a&gt;. &lt;li&gt;&lt;a href="http://www.agilemanagement.net/"&gt;Agile Management&lt;/a&gt;.&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;Why I suddenly care about all these agile software development links? Because&amp;nbsp;at the&amp;nbsp;current moment I'm&amp;nbsp;in the same&amp;nbsp;side with&amp;nbsp;agile software development and testing people. With very high probability I'll be talking quite a lot about my personal experiences with XP and related things during upcoming weeks and months.&lt;/p&gt; &lt;p&gt;The new era has come and the hot buzzwords are: agile, extreme, pair programming, refactoring, test driven, unit tests, and user stories. Use these words often and in every context and you'll certainly get some attention ;-)&lt;/p&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=233231" width="1" height="1"&gt;</description><category domain="http://weblogs.asp.net/gunnarku/archive/tags/Development/default.aspx">Development</category></item><item><title>Best practice - daily investigation of the test case failures</title><link>http://weblogs.asp.net/gunnarku/archive/2004/09/20/232226.aspx</link><pubDate>Tue, 21 Sep 2004 04:54:00 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:232226</guid><dc:creator>gunnarku</dc:creator><slash:comments>8</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/gunnarku/rsscomments.aspx?PostID=232226</wfw:commentRss><comments>http://weblogs.asp.net/gunnarku/archive/2004/09/20/232226.aspx#comments</comments><description>&lt;p&gt;When it comes to the best development practices then daily build and Microsoft are practically synonyms. Not a big surprise. Jim McCarthy says it’s the heartbeat of the project. Steve McConnell covers it thoroughly in his books. Even Edward Yourdon thinks it’s worth mentioning. Etc. etc. To summarize: daily build is A Good Thing.&lt;/p&gt; &lt;p&gt;In software testing things are more complicated. What is the must use practice which everyone should follow, the process which is efficient and which gives everyone an honest overview of the project’s current state of quality? If you ask me then one best practice I would nominate is &lt;strong&gt;daily investigating all the test results&lt;/strong&gt;. Sounds kind of trivial, doesn’t it? There’s nothing to this, you just look at all the test case failures every day and if there are bugs then you enter bug reports. Well, using the same logic the daily build is simple also - you just compile and link everything every single day ;-)&lt;/p&gt; &lt;p&gt;In real life investigating all the test case failures requires huge amount of discipline and noticeable amount of intellectual effort. Imagine thousands of test cases running on &lt;em&gt;n&lt;/em&gt; different editions of your product. Every failure needs to be properly investigated and if applicable then bugs opened. Every single one of them. Every day. In our team we established a simple rule: you investigate all the test case failures before you start working on anything else. Sometimes investigation process takes ten minutes, but sometimes it takes the entire day. Sometimes ten test cases fail. Sometimes hundreds of test cases fail. Sometimes people aren’t happy about this and sometimes it even causes internal schedules to slip. But it’s worth every penny invested into this effort.&lt;/p&gt; &lt;p&gt;The end goal we’re trying to achieve is that every day we have a mapping table between failing test cases and relevant bugs. Every day we know which features and scenarios work and which don’t. We also know why, who owns fixing the bugs, and when they’re going to be approximately fixed. Simple but extremely useful practice to have.&lt;/p&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=232226" width="1" height="1"&gt;</description><category domain="http://weblogs.asp.net/gunnarku/archive/tags/Testing/default.aspx">Testing</category></item><item><title>Is anyone (still) using CASE tools?</title><link>http://weblogs.asp.net/gunnarku/archive/2004/09/19/231606.aspx</link><pubDate>Mon, 20 Sep 2004 03:52:00 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:231606</guid><dc:creator>gunnarku</dc:creator><slash:comments>6</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/gunnarku/rsscomments.aspx?PostID=231606</wfw:commentRss><comments>http://weblogs.asp.net/gunnarku/archive/2004/09/19/231606.aspx#comments</comments><description>&lt;p&gt;Last weekend I was reading "&lt;a href="http://c2.com/cgi/wiki?NoSilverBullet"&gt;No Silver Bullet&lt;/a&gt;" again and as a direct result of this I accumulated number of pessimistic thoughts and therefore I'll rant about one specific thing for a while. In my mind I classify different software engineering methodologies, tools, and approaches into number of categories. One of them is called "esoteric stuff." For example, formal methods in software engineering belong IMHO under this category. Lately I’ve been thinking about moving CASE (Computer-Aided Software Engineering or use your favorite meaning for this acronym) tools under this class also. Why? I believe that generally the world of software development is mostly self-regulating. If something is good and causes better productivity then people use it and over the course of time more companies/people start incorporating&amp;nbsp;"this something" into their processes. If something is good on paper, but doesn’t work IRL then eventually less and less people will use the technology and finally it’ll disappear from the radar screen. For myself I’ve found a couple of reasons to distance myself from CASE tools:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;&lt;strong&gt;Use what you preach.&lt;/strong&gt; With for example TDD being hyped and tools&amp;nbsp;like &lt;a href="http://www.nunit.org/"&gt;NUnit&lt;/a&gt; it’s kind of cool to see that the NUnit developers use the same methodology they preach. If you look at NUnit &lt;a href="http://www.nunit.org/community.html"&gt;community page&lt;/a&gt; you’ll see that they explicitly say "As such we will accept no code changes without associated tests." Die-hard Borland Delphi fans also remember the time about nine-ten years ago when&amp;nbsp;Borland was hyping Delphi with "Delphi is written in Delphi" slogan (probably they still do). With CASE I haven’t found many references to the CASE tools where for example version &lt;em&gt;n + 1&lt;/em&gt; has been built using version &lt;em&gt;n&lt;/em&gt; or the tool itself has been used during its own development. Possibly I’ve been just sloppy Google user, so if anyone has links to some articles or studies then please let me know.&lt;/li&gt; &lt;li&gt;&lt;strong&gt;Is anyone doing this? &lt;/strong&gt;If I look around at work then I've never&amp;nbsp;seen anybody composing models, generating code from diagrams, maintaining huge data repositories etc. During the entire first version of Speech Server I saw maybe less than ten different UML diagrams describing either architecture or detailed design of the system. Possibly this is something to be ashamed of or on the opposite, maybe we should be proud about this? I bet that Mel, A Real Programmer would definitely be proud of us ;-) Generally, if you look around, how much big software companies do you know who claim that they use CASE tools in their daily software development process? Again, before somebody slaps my wrist, possibly I’m just demonstrating my own ignorance. On a separate note, my copy of "&lt;a href="http://www.amazon.com/exec/obidos/tg/detail/-/013121831X/qid=1095628233/sr=1-1/ref=sr_1_1/103-8946883-5376601?v=glance&amp;amp;s=books"&gt;Rise &amp;amp; Resurrection of the American Programmer&lt;/a&gt;" by Edward Yourdon includes a nice chapter called "The Microsoft Paradigm" where the some of the related things are discussed.&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;At the same time I could also make a couple of contra arguments:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;There are still software companies producing CASE tools and selling successfully their products. Therefore somebody must be using these tools. I haven't bothered to search for huge amount of success stories, but I would assume that every vendor has a couple of them where for example thorough drawing of collaboration diagrams saved some software project ;-)&lt;/li&gt; &lt;li&gt;Classical "toolbox argument". Maybe CASE tools are just not applicable for the type of software my team is producing. Maybe if I would be working on something else I would spend my entire day on generating code from models?&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;Anyhow, as always there's no absolute truth and this is just one opinion amongst many. Today is apparently just anti-CASE day ;-)&lt;/p&gt; &lt;p&gt;P. S. Before somebody asks - I spent&amp;nbsp;about&amp;nbsp;three&amp;nbsp;years working on daily basis with Oracle Designer, Rational Rose, Select Enterprise, and number of other modeling tools being my best friends and was once big believer in modeling. Thinking about this I even used to run UML seminar for graduate students. I guess the childhood is finally gone.&lt;/p&gt; &lt;p&gt;P. P. S. Martin Fowler has written a very&amp;nbsp;interesting article called "&lt;a href="http://martinfowler.com/articles/designDead.html"&gt;Is Design Dead?&lt;/a&gt;" which poses some more fundamental questions and slightly touches modeling.&lt;/p&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=231606" width="1" height="1"&gt;</description><category domain="http://weblogs.asp.net/gunnarku/archive/tags/Development/default.aspx">Development</category></item><item><title>Professional Development Handbook/Ladder and SWEBOK</title><link>http://weblogs.asp.net/gunnarku/archive/2004/09/19/231463.aspx</link><pubDate>Sun, 19 Sep 2004 19:39:00 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:231463</guid><dc:creator>gunnarku</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/gunnarku/rsscomments.aspx?PostID=231463</wfw:commentRss><comments>http://weblogs.asp.net/gunnarku/archive/2004/09/19/231463.aspx#comments</comments><description>&lt;p&gt;Probably most of the people who have ever read "&lt;a href="http://www.amazon.com/exec/obidos/tg/detail/-/1556154844/qid=1095621358/sr=1-2/ref=sr_1_2/103-8946883-5376601?v=glance&amp;amp;s=books"&gt;Code Complete&lt;/a&gt;" or its &lt;a href="http://www.amazon.com/exec/obidos/ASIN/0735619670/qid=1095621330/sr=ka-1/ref=pd_ka_1/103-8946883-5376601"&gt;second edition&lt;/a&gt; or &lt;a href="http://www.stevemcconnell.com/books.htm"&gt;any other book&lt;/a&gt; by Steve McConnell have browsed systematically through Construx’s &lt;a href="http://www.construx.com/"&gt;web site&lt;/a&gt;. One of the most interesting pieces of information for me is their "&lt;a href="http://www.construx.com/professionaldev/organization/pdh.php"&gt;Professional Development Handbook&lt;/a&gt;" and "&lt;a href="http://www.construx.com/professionaldev/organization/pdl/"&gt;Professional Development Ladder&lt;/a&gt;". Sure, Microsoft has its internal equivalent documents, but nevertheless it’s very educational for more complete world-view to understand what’s happening in other software companies or towards what industry is moving in general. I usually try to reread these documents every three months or so to understand how my personal thinking has changed ;-)&lt;/p&gt; &lt;p&gt;One other thing which has been in my TODO-list for long time now is to read through the &lt;a href="http://www.swebok.org/ironman/pdf/Swebok_Ironman_June_23_%202004.pdf"&gt;latest version&lt;/a&gt; of SWEBOK. SWEBOK stands for "Software Engineering Body of Knowledge". Based on my personal experience when talking with different people about SWEBOK it seems to be one of these things with what professionals either agree with or violently disagree. Your mileage may vary of course.&lt;/p&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=231463" width="1" height="1"&gt;</description><category domain="http://weblogs.asp.net/gunnarku/archive/tags/Development/default.aspx">Development</category></item><item><title>Development:test ratio causing software quality to self-stabilize</title><link>http://weblogs.asp.net/gunnarku/archive/2004/08/31/223788.aspx</link><pubDate>Wed, 01 Sep 2004 03:52:00 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:223788</guid><dc:creator>gunnarku</dc:creator><slash:comments>11</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/gunnarku/rsscomments.aspx?PostID=223788</wfw:commentRss><comments>http://weblogs.asp.net/gunnarku/archive/2004/08/31/223788.aspx#comments</comments><description>&lt;p&gt;Today I attended one excellent talk covering software engineering culture in general, things which currently need improvement, some internal case studies etc. Test to development ratio was also pointed out in this talk and one interesting thought was mentioned during this presentation. Microsoft is different from most of the software companies by development and test organizations having very similar sizes. Hypothetical little feature team may consist of 6 SDE-s, 4 SDE/T-s and 1 STE for example. What would happen if ratio of testers and developers will be 1:10 for example and at the same time you would have a top notch development team who’ll be &lt;strong&gt;obsessive&lt;/strong&gt; about code reviews, unit testing, proper engineering practices etc? Natural reaction is that the product quality will be doomed ;-) However, one of the projected outcomes was that the product quality will be self-correcting and will stabilize itself automatically to the level that would be acceptable for shipping? You know, all these factors like people developing the software understanding that they’re the ones responsible for product quality and there’s nobody else ;-) Major assumption is of course that peer pressure and strong personal accountability for the quality will be applied.&lt;/p&gt; &lt;p&gt;P. S. Everyone who has shipped any products where testing was done only by developers can claim that they’ve participated in this experiment already and if their product made enough money then they’ve succeeded ;-)&lt;/p&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=223788" width="1" height="1"&gt;</description><category domain="http://weblogs.asp.net/gunnarku/archive/tags/Development/default.aspx">Development</category></item></channel></rss>