Deprecated: Assigning the return value of new by reference is deprecated in /var/www/hvidtfeldts.net/wiki/inc/parserutils.php on line 159

Deprecated: Function split() is deprecated in /var/www/hvidtfeldts.net/wiki/inc/auth.php on line 103

Warning: Cannot modify header information - headers already sent by (output started at /var/www/hvidtfeldts.net/wiki/inc/parserutils.php:159) in /var/www/hvidtfeldts.net/wiki/inc/auth.php on line 191

Deprecated: Function split() is deprecated in /var/www/hvidtfeldts.net/wiki/inc/common.php on line 737

Warning: Cannot modify header information - headers already sent by (output started at /var/www/hvidtfeldts.net/wiki/inc/parserutils.php:159) in /var/www/hvidtfeldts.net/wiki/inc/actions.php on line 91
hvidtfeldts.net // softwaredevelopment

Deprecated: Assigning the return value of new by reference is deprecated in /var/www/hvidtfeldts.net/wiki/inc/parser/xhtml.php on line 943

Deprecated: preg_replace() [function.preg-replace]: The /e modifier is deprecated, use preg_replace_callback instead in /var/www/hvidtfeldts.net/wiki/inc/html.php on line 154

Notice: This page is still being incubated.

Software Development

The office setup

In order to setup a productive development environment consider the following:

  • Versioning. You will need a central repository for all code, documents, and data that is created. You will need a backup strategy.
  • Intranet. A intranet can be very convenient even for small businesses. Make sure that updating and supporting the intranet is extremely easy - otherwise it will not be used, and will gradually decay. A Wiki is probably the best way to setup an intranet. Perhaps you will need a FTP server as well. (Though a versioning server like Subversion in most cases will do).
  • Access from home. It should be important to access the environment from home. People should
  • Security. Make sure no one else can access your local network. Complety firewall you local network. Ideally only one port should be accessible from the outside - a port to the VPN server. If you setup WiFi make sure you use suitable encryption (Hiding SSID and MAC filtering is no good, WEP is easily cracked, and even WPA can be cracked given enough time). If you use laptops, consider encrypting valuable code and documents. TrueCrypt is excellent for this.
  • Collaboration tools. Exchange versus GMail, GCalendar, ...

Overview Document.

Software planning

  • Quick UML.
  • Gantt

The notepad approach?

The Development Environment

  • Software versioning.
    • Subversion
    • TortoiseSVN
    • AnkhSVN.
  • Documentation.
    • Doxygen and Wiki.

The Development Process

  • Agile Development
  • Unit Testing
  • Pair Coding

The Coding Process

Modularity Object Oriented

The Coding ?

Logs / Exceptions

Coding styles. A lot can be said about different coding styles. Don’t waste to much time writing large formal documents describing coding styles and best practices. Stick to one of modern coding styles (like the one used in the Java or C# API’s). If you are relying on one of those all-encompassing API’s (like the .NET framework, Trolltech’s Qt, or the JAVA class libraries) use a similar notation. Do not use hungarian notation (not even Microsoft uses it anymore).

Embedding / Scripting

Frameworks

  • Qt
  • .NET
  • Java
  • Boost

Building a 'complete' application

  • Choosing License
  • Online Help
  • Finishing touches (Balloon tips, Keyboard Accelerators, I18N, UI Standards)
  • EULA
  • Automatic software updates
  • Copy Protection.
  • Installers (Inno Setup)

Distributing an application

Adwords Website - screensite, demo license, ...

Links to sites, papers

Random Thoughts

Java - when I starting doing serious programming (1996 or so), Java was really hot. It was the cool alternative to tedious cplusplus programming, or the ... delphi or VB languages.

This has changed.

By now a large group of programmers has drifted towards Microsofts .net platform (and C# which off course seems syntactically ‘inspired’ by java) which seems to posses a much larger momentum.

Of course the quite large segment of open source minded programmers (e.g. people who read slashdot) would never adopt a Microsoft controlled technology - these people, however, seems to moving along to more rapid development languages like Python and Ruby (see also Ruby on Rails).

 
softwaredevelopment.txt · Last modified: 2006/11/26 23:39 by mikael