views:

395

answers:

7

I have being toying with the idea of creating software “Robots” to help on different areas of the development process, repetitive task, automatable task, etc. I have quite a few ideas where to begin. My problem is that I work mostly alone, as a freelancer, and work tends to pill up, and I don’t like to extend or “blow” deadline dates. I have investigated and use quite a few productivity tools. I have investigated CodeGeneration and I am projecting a tool to generate portions of code. I use codeReuse techniques. Etc. Any one as toughs about this ? as there any good articles.

A: 

There are even whole books about automated software production, but the biggest problem is, that the automation of the process lasts longer then the process itself.

Mostly programmers give up on this, since they try to achive everything on one step, from manual programming, to automation.

Common automation in software production is done through IDEs, CodeGenerators and such, until now nearly no logic is automated.

I would appreciate any advance in this topic. Try to automate little tasks from the process, and connect those tasks afterwards. Going step by step.

BeowulfOF
A: 

Scripting away the repetitive tasks - that's what you refer? I guess you're a Windows developer where scripting is not as nearly common as in *nix world. Hence your question.

You might want to have a look at the *nix side of software development arena where the workflow is more or less similar to what you describe (at least more than Windows). Plowing your way via bash, perl, python, etc.. will get you what you want.

ps. Also look at nsr81's post in comments for similar scripting tools on Windows.

utku_karatas
I don't think telling the poster to switch OS is going to help. Will all his tools work in *nix? What about the learning curve of a new OS?good scripting solutions are available for windows, e.g. VBScript, Powershell, WinBatch, Perl, Python. as well as automation programs, e.g. AutoHotkey, AutoIt.
nsr81
Right on with the tools you've listed. OTOH avarage Windows developer is less likely to use them whereas the default mindset of *nix users mandates gluing things together with such tools. So I guess a mindset shift should help the OP in some way or another.
utku_karatas
+2  A: 

Meta-programming is a great thing. If you easily get access to the data about the class structure then you can automate a few things. In the high level language I use, I define a class like 'Property' for example. Add an integer for street number, a string for street name and a reference to the owning debtor. I then auto generate a form that has a text box for street number and street name, a lookup box for the debtor reference and the code to save and load is all auto-generated. It knows that steet number is an interger so its text box can only accept intergers. If I declare a read only property it will also make sure the text box is read only.

Tim Matthews
+3  A: 

I wouldn't like to use code generation, but I have developed many tools to help me do many of the repetitive tasks.

Some of these could do nice things:

Email Robots

These receive emails and do a lot of stuff with them, they need to have some king of authentication to protect you from the bad stuff :

  • Automatically logs whatever was entered in a database or excel spreadsheet.
  • Updates something in a database.
  • Saves all the attachments in a specific shared folder.
  • Reboot a server.

Productivity

These will do repetitious tasks:

  • Print out all the invoices for the month.
  • Automatically merge data from several sources.
  • Send reminders of GTD items.
  • Send reminders of late TODO items.
  • Automated builds
  • Automated testing

Administration

These automate some repetitive server administration tasks:

  • Summarize server logs, remove regular items and send the rest by email
  • Rebuild indexes in a database
  • Take automatic backups
Osama ALASSIRY
+1  A: 

There are software robots, but often you really don't see them. For example consider a robot that is used to package stuff. There is a person who monitors the robot in case of a failure. When the robot fails, the person shuts the robot down and fixes things. That person is like a programmer who operates IDE to compile, refactor etc. When errors occur, the programmer fixes the code and runs the compiler again.

Well compiling is not very robot like, but then there are software that compile your project automatically. Now that is more like a kind of a robot. That software robot also checks things in the code like is there enough comments and so on.

Then we have software that generates code according to our input. For example we can create forms in MS Access easily with Wizards. The wizards are not automatically producing new forms form after form after form, because we need every form to be different. But the form generator is a kind of robot-like tool that is operated.

Of course you could input the details of every form first and then run generate, but people like to see soon every form. Also the input mechanism is the form pretty much already, so you get what you create on the fly. Though with data transformation tools you can create descriptions of forms from a list of field names, generate the forms, and call that as using robots.

Silvercode
A: 

I'm guessing that, just like just about every software developer on planet Earth, you want to write software that writes software by itself. Unfortunately, it's an idea that only works on paper. I mean, we have things like code generators, DSLs, transformation pipelines, Visual Studio add-ins that statically analyse code and generate derivative code, and so on. But it's nowhere near anything one would call a 'robot'.

Personally, I think more needs to be done in this area. For example, the IDE should be able to infer things and make suggestions based on what I'm actually doing. For example, if I'm adding a property, the IDE infers what attributes other properties in the file has, and how the property itself is structured, and adjusts the property accordingly.

Any sort of AI is hard work and, regrettably, does not have such a great ROI. But it sure if fun.

Dmitri Nesteruk
A: 

Code generation is certainly a viable tool for some tasks. If done poorly it can create maintenance problems, but it doesn't have to be done poorly. See Code Generation Network for a fairly active community, with conference, papers, etc.

Code Generation in Action is one book that comes to mind.

joel.neely