Sunday, January 16, 2011

Development tools

I think you should select the tool that supports the way you are working, not the other way around. This is one of the reasons I think tool discussions usually focus on the wrong thing. They tend to get very long-winded and troublesome since the underlying process is not clear or decided.
However if you are a small team, I think the following tools are of use to you regardless of what process you are using (the version control software are useful for any project size). Many of my students seem to use them when they are doing project work.
  • Version One Team edition - A free tool that supports managing agile software development.
  • Trac - An enhanced wiki and issue tracking system for software development projects.
  • GIT - A free & open source, distributed version control system. I think it is a major upgrade compared to SVN, even if the initial learning curve is steep.
    If you run Windows I suggest you use TortoiseGIT as GIT client.
  • Mercurial - A modern, open source, distributed version control system (sounds very similar to GIT?). I think the learning curve is not as steep as for GIT, and a transition from SVN is probably easier. TortoieseHG is a good client for Windows users and what I use myself.
    In this user-friendly, six-part tutorial, Joel Spolsky teaches you the key concepts.
If someone can comment with suggestions of free simple tools that supports testing/verification or integration I would be very grateful.

Tuesday, January 11, 2011

Confused by Simulink

The most common modelling tool in the automotive domain is Simulink. It started as a Matlab-based tool to graphically model and simulate differential equations needed in control design. Now it has expanded way beyond that to enable generation of production code for embedded controllers.

For someone like me, with a background in software and systems engineering and only the mandatory control engineering course, Simulink is confusing. Not the model elements as such, since it basically is an executable time-discrete data flow model. But the terminology used in the Simulink community is really confusing since they are using terms very common in software development, but with different meanings. I am not even sure the explanations below are valid...

Some examples:

Tuesday, January 4, 2011

The importance of the team

I am reviewing and grading documentation in a student project. Or rather 12 student projects, all trying to develop similar software. The context is this: The students work in teams of 6. Each student has a separate role; project manager, architect, designer, quality/testing responsible, GUI designer and communications expert (it is an peer-to-peer application based on TCP). Alla students have to write code, and in addition to this they are supposed to turn in documentation related to their role.

What strikes me is that in the teams with good documentation all documents are good, regardless of author. How come? There could be several explanations:
  • Good students want to work with each other (they could choose their teammates, they weren't assigned by us teachers).
  • In good teams they cooperate on everything, inlcuding reviewing each others documents. In not-so-good teams they instead might try to split the tasks and work as independently as possible.
  • In the good teams there is an exceptional student that functions as a mentor to the others.
  • Excellent documementation from one role supports the others in their roles, e.g. an excellent architeture description supports testing etc.
  • The good teams had not only a notion about what to deliver when they started, they also had a good notion on how to do it early on, e.g. they discussed so they had a common understanding of coding responsibility (everybody had to write code) and they choose an interative process or SCRUM already the first week.
  • The good teams started with coding as quickly as possible. This is counterintuitive, but I think they felt more comfortable spending time on documentation if they already had some prototype running.
  • It seems that analysis paralysis actually produces worse documentation. I think this is due to an inability to focus on the vital concerns and stop when they are sufficiently covered.
  • It is hard to excel if your teammates drag you down. This could explain why there are no groups where just one role shines above the rest.
I'm sure there could be other explanations that I didn't think of...

Monday, December 27, 2010

Familiarize Gasoline Engine

Automotive Gasoline Engine
The gas engine is one of the wonders of the 19th century. Now, within three years of the 20th century, it is a novel machine, eagerly sought by many people. It is thought by people who have not studied its morality that it is a steam-engine, using gas or gasoline as petroleum for the function of making steam. This is invalid. Gas and gasoline in specific proportion with air are likely to explode substance.
The outgoing force consequential from explosion of these materials in the cylinder is the force that is substituted for the expansive force of steam. Hence, due to the economy of this method as a means of deriving power, the steam engine and boiler are fast disappearing, and the Gas Engine is captivating their place for small power.

It is not commonly known that the commencement of the gas engine for the production of motive power antedates that of the steam engine. Yet such is the case. It was not until the year 1744 that James Watt ran his first successful steam engine at the Soho Works, Birmingham, England, while Huyghens, Papin and other scientists had produced power in the seventeenth century by the explosion of chemicals and the expansive force of heated vapors. But the mechanical difficulties proved too great, and so little was known in that age of economical methods of producing gas as fuel for the production of heat, that when the apparently more simple method of using the expansive force of steam produced by the desertion of water by heat produced by the combustion of coal or wood was discovered, and Watt constructed his engine for utilizing steam, all further efforts in the direction of producing power by other heated vapors were suspended. For a century and a half the intelligence and genius of the world have been expended in improving the steam engine, until it is now conceded that it is as perfect as human effort can make it. No further economy in producing power by this method can be proficient.
After careful and clever tests by experts with the best instruments made at the present day, it is generally admitted that what is now deemed the perfect steam engine does not convert more than 10 per cent of the heat efficiency into indicated work, and that usual engines and boilers do not apprehend over 4 per cent.