You Are Here:

Community: Blogs

Artem Marchenko's Forum Nokia Blog

Agile-aware Symbian C++ IDE

doctordwarf | 09 March, 2007 11:40

A colleague of mine lately asked me what would be the most important Symbian OS C++ IDE features for supporting the agile software development. While agile processes are more about people and interaction, than about the tools, a decent tool support certainly makes things easier. Here is a list of things I would value in the agile-aware C++ IDE in the order of decreasing priority.

1. Command-line repeatability
Agile methods see the high levels of automation of a ‘mechanical’ and repetitive tasks as a relief for the developers and help to reduce errors. While IDEs are important the ability build, test and deploy software in automated manner e.g. on a continuous integration server is of no smaller importance. Therefore, everything IDE has to do in order to produce the software that is DONE has to be identically repeatable from the command line. Or at least as much as possible

2. Unit testing support
Test driven development is virtually an indispensable part of the agile team toolbox. There has to be support for easy test case creation and execution. In particular, I'd like to see (in the order of decreasing importance):

a) Ability to switch unit testing frameworks. There are many frameworks out there and many teams build their own variations. It would be good to have the ability to plug various things in and maybe parse the report back into IDE. Naturally this ability would require from the framework developer to write an adaptation layer, but the IDE should have a place to plug this layer to

b) Ability to add/remove/rename tests in "one click". It has more to do with the framework used and how well it utilizes macros, but it would be good to have a tool support (wizard or browser based) for it. Disclaimer: I am working with Symbian OS. A number of limitations doesn't allow writing the test name in one place only. I constantly have to synchronize strings in at least three places for every test. Non-Symbian programmers might not value this item that high.

c) Ability to run all or some of the tests in "one click". And see the results, of course.

3. Refactoring support
The more the better. A good prioritisation principle could be to follow the Martin Fowler's Refactoring book table of contents (Amazon link). The earlier the refactoring is mentioned, the more useful it typically is. My personal top list (once again in the order of decreasing importance) would be:

a) Extract method

b) Rename method

c) Extract class

d) Duplicate observed data. Though I am not sure if this one can be automated

Other requirements
What would your desires for the agile-aware C++ IDE? Did I miss anything important or did I request anything useless?

Originally published on AgileSoftwareDevelopment.com

RSSComments

Re: Agile-aware Symbian C++ IDE

maahonen | 09/03/2007, 19:29

Artem, thanks for bringing this up.

As for command-line repeatability, Carbide.c++ will improve in this area a bit as the build system to be released with Carbide.c++ 1.2 will use a more direct approach to completing builds. However, I'm not quite sure what you're intending to see down the road... Care to elaborate?

Test-driven development in general is an area we're looking into -- and currently we have the fun task of figuring out how to support the various test frameworks currently in use (EUnit by SysOpen Digia, Nokia's STIF, Symbian's TEF, and others available in the wild).

Refactoring importance & impact is a real issue, however, since it's in many cases difficult or impossible to do for C++ code. Therefore a clear prioritization (such as yours) is really useful.

Re: Agile-aware Symbian C++ IDE

doctordwarf | 09/03/2007, 20:34

doctordwarf As for repeatability, I just mean that the binary (and sis, and rss and whatever else) created by Carbide IDE should be identical to the one that could be built from the command line. It might sound obvious, but in my work life I did have experiences, where it was not true. Sometimes the project could be built only after manual importing, sometimes def files were not identical, sometimes optimizations were available only from IDE. Etc, etc.

Re: Agile-aware Symbian C++ IDE

maahonen | 10/03/2007, 22:15

Ok. In that case, Carbide.c++ 1.2 build system should provide a better level of repeatability. Give it a try and let me know what you think.

//markus

Re: Agile-aware Symbian C++ IDE

JOM | 12/03/2007, 11:49

JOM Hmph,

What is this Symbian TEF?

--jouni

Re: Agile-aware Symbian C++ IDE

dsample | 12/03/2007, 12:20

One thing you didn't mention was version control system integration. I for one would not be able to cope if my IDE didn't support Subversion properly, especially in the refactoring process. With the Java IDE I use (InltelliJ Idea) it also links up with TeamCity, an automated build server that checks for new commits on Subversion and rebuilds the project, runs the unit tests and sends any failed results to the people that contributed to that build.

Re: Agile-aware Symbian C++ IDE

doctordwarf | 26/03/2007, 09:56

doctordwarf Have a look also at Michael Feathers'es refactoring-related requirements for the IDE - http://www.artima.com/weblogs/viewpost.jsp?thread=198698

Michael is the author of "Working Effectively with Legacy Code" and is a credible person in issues related to the agile methods, IDEs, refactoring and SW development in general
You must login to post comments. Login
 

Rate This

 
 
Bookmark this page: DeliciousDiggFacebookGoogleYahooStumbleUponRedditDiigoTechnocratiTwitter  Share this page Share this page Print this Page Print this page Invite a friend Invite a friend
京ICP备05048969号    Email Newsletters Press Terms & Conditions Privacy Policy Sitemap Contact Us © 2009 Nokia 
RDF Facets: qdcZdescriptionQSxAE20softwareE20engineerE20livingE20inE20VancouverE2cE20CanadaE20E2dE20httpE3aE2fE2fwwwE2eantonypranataE2ecomE2fE20antonyprE20E7cE2013E20E44ecemberE2cE202006E2007E3a57E20IE20writeE20thisE20blogE20becauseE20soE20manyE20E71uestionsE20atE20ForumE20NokiaE20E44iscussionE2cE20suchE20asE20E22HowE20doE20IE20startE20SymbianE20OSE20CE2bE2bE20developmentE3fE22E2cE20E22WhichE20SE44KE20shouldE20IE20useE3fE22E20etcE2eE20Ea0E20E44ownloadE20SE44KE20TheE20firstE20thingE20toE20doE20isE20downloadE20theE20SymbianE20OSE20CE2bE2bE20SE44KE2eE20WhichE20SE44KE20toE20downloadE3fE20ThereE20areE20severalE20SE44KsE20dependingE20onE20theE20UIE20platformsE20ofE20theE20phonesE2cE20iE2eeE2eE3aE20S60E2eE20ThisE20isE20theE20platformE20ofE20theE20mE2eE2eE2eX qdcZidentifierQSxhttpE3aE2fE2fblogsE2eforumE2enokiaE2ecomE2fblogE2fantonyE2dpranatasE2dforumE2dnokiaE2dblogE2f2006E2f12E2f13E2fhowE2dtoE2dstartE2dsymbianE2dosE2dcE2ddevelopmentX qdcZpublisherQUxhttpE3aE2fE2fswE2enokiaE2ecomE2fidE2fc764fd1cE2d8b06E2d499aE2d9a6aE2d17c3903d5a65E2fforumE5fnokiaE5fcrawlerE5fagentX qdcZtitleQSxAntonyE20PranataE27sE20ForumE20NokiaE20BlogE20E7cE20HowE20toE20StartE20SymbianE20OSE20CE2bE2bE20E44evelopmentE3fX qdcZtypeQUqfnZE45E78cludedFromGeneralE4cistingsQ qdcZtypeQUqfntypeZBlogContentQ qdcZtypeQUqfntypeZBlogE45ntryQ qdcZtypeQUqfntypeZCommunityContentQ qdcZtypeQUqfntypeZE52esourceQ qdcZtypeQUqfntypeZWebpageQ qdcZtypeQUqmarsZManagedE52esourceQ qdcZtypeQUqwebZInformationE52esourceQ qdcZtypeQUqwebZPageQ qdcZtypeQUqwebZE52esourceQ qdcZtypeQUqrdfsZE52esourceQ qrssZdescriptionQSxAE20softwareE20engineerE20livingE20inE20VancouverE2cE20CanadaE20E2dE20httpE3aE2fE2fwwwE2eantonypranataE2ecomE2fE20antonyprE20E7cE2013E20E44ecemberE2cE202006E2007E3a57E20IE20writeE20thisE20blogE20becauseE20soE20manyE20E71uestionsE20atE20ForumE20NokiaE20E44iscussionE2cE20suchE20asE20E22HowE20doE20IE20startE20SymbianE20OSE20CE2bE2bE20developmentE3fE22E2cE20E22WhichE20SE44KE20shouldE20IE20useE3fE22E20etcE2eE20Ea0E20E44ownloadE20SE44KE20TheE20firstE20thingE20toE20doE20isE20downloadE20theE20SymbianE20OSE20CE2bE2bE20SE44KE2eE20WhichE20SE44KE20toE20downloadE3fE20ThereE20areE20severalE20SE44KsE20dependingE20onE20theE20UIE20platformsE20ofE20theE20phonesE2cE20iE2eeE2eE3aE20S60E2eE20ThisE20isE20theE20platformE20ofE20theE20mE2eE2eE2eX qfnZdistributionQUxhttpE3aE2fE2fblogsE2eforumE2enokiaE2ecomE2fX qfnZtopicQUqfnTopicZcppQRqdcZtypeQUqrdfsZE52esourceQRqmarsZrelevanceQNx100X qfnZtypeQUqfntypeZBlogContentQ qfnZtypeQUqfntypeZBlogE45ntryQ qfnZtypeQUqfntypeZCommunityContentQ qfnZtypeQUqfntypeZE52esourceQ qfnZtypeQUqfntypeZWebpageQ qfnZupdatedQDx2008E2d06E2d07X qfnZuserE5ftagQSxsymbianE2dcE2bE2bX qmarsZdescriptionQSxAE20softwareE20engineerE20livingE20inE20VancouverE2cE20CanadaE20E2dE20httpE3aE2fE2fwwwE2eantonypranataE2ecomE2fE20antonyprE20E7cE2013E20E44ecemberE2cE202006E2007E3a57E20IE20writeE20thisE20blogE20becauseE20soE20manyE20E71uestionsE20atE20ForumE20NokiaE20E44iscussionE2cE20suchE20asE20E22HowE20doE20IE20startE20SymbianE20OSE20CE2bE2bE20developmentE3fE22E2cE20E22WhichE20SE44KE20shouldE20IE20useE3fE22E20etcE2eE20Ea0E20E44ownloadE20SE44KE20TheE20firstE20thingE20toE20doE20isE20downloadE20theE20SymbianE20OSE20CE2bE2bE20SE44KE2eE20WhichE20SE44KE20toE20downloadE3fE20ThereE20areE20severalE20SE44KsE20dependingE20onE20theE20UIE20platformsE20ofE20theE20phonesE2cE20iE2eeE2eE3aE20S60E2eE20ThisE20isE20theE20platformE20ofE20theE20mE2eE2eE2eX qmarsZlanguageQUxhttpE3aE2fE2fswE2enokiaE2ecomE2flanguageE2d1E2fenX qrdfZtypeQUqfnZE45E78cludedFromGeneralE4cistingsQ qrdfZtypeQUqfntypeZBlogContentQ qrdfZtypeQUqfntypeZBlogE45ntryQ qrdfZtypeQUqfntypeZCommunityContentQ qrdfZtypeQUqfntypeZE52esourceQ qrdfZtypeQUqfntypeZWebpageQ qrdfZtypeQUqmarsZManagedE52esourceQ qrdfZtypeQUqwebZInformationE52esourceQ qrdfZtypeQUqwebZPageQ qrdfZtypeQUqwebZE52esourceQ qrdfZtypeQUqrdfsZE52esourceQ
User Rating: qfnZuserE5FratingQNx2E2E5000X
RDF Facets: qfnZuserE5FtagQSxreX