chris128
May 21st, 2009, 06:12 PM
This is going to seem ridiculous to most of you but bear in mind that I am a "one man band" and all of the programs I make are free... basically whenever I have made programs in the past I have not done much (if any) planning or specification. I have just sat there and essentially made it up as I go along, which has often led to very messy code later down the line. The justification for this in my mind was that because most of my programs are just small little 'utilities' that do not have a very long lifetime and so there was no point spending more time planning than actually making the things - for example one of them just downloads specific updates from windows update so that people can still get this important update without having automatic updates enabled on their servers (its an update for exchange server spam filters which MS release every 2 weeks). So yeah, the program itself would only be open for less than a minute so it seemed pointless planning it all out when it only took a couple of hours to make. Another example is one that adds or removes users to/from Active Directory groups. So none of them have really required a lot of planning... although they certainly would have benefited from SOME planning.
However, now I am creating a job logging system for IT people (mainly because the one I use everyday at work just annoys me and makes me think for gods sake I'm sure I could write something better than this if I had enough time!) and this is going to be by far the biggest program I have ever written. Well, it will consist of more than one program... there will be a WPF client desktop program, an ASP.NET front end (sometime in the future), a WCF service hosted in a windows service, and an SQL database to store all the data.
So, I suppose I should get to the point.
Although I already made a start on the WPF user interface quite some time ago, I have now stopped work on this and decided that I need to spend some serious time planning and designing this solution.
I've made a few flow diagrams for some core processes, such as logging a new job, and have made a list of what will be in each section of the program. For example, in the Job Logging section there will be the ability to: create a new job, update a job, close a job, filter jobs based on who they are assigned to etc etc. This is all fairly high level stuff though and it only takes up a couple of pages in a Word document... so im just wondering what/how you guys plan and design before you even begin writing any code? Any tips on where I should start or even what sort of things I should document and how much detail I should go into?
Thanks
Chris
PS if anyone has a lot of experience with N-Tier or SOA applications, maybe you could help me with the general architecture, have a look here: http://www.vbforums.com/showthread.php?t=570048 :)
However, now I am creating a job logging system for IT people (mainly because the one I use everyday at work just annoys me and makes me think for gods sake I'm sure I could write something better than this if I had enough time!) and this is going to be by far the biggest program I have ever written. Well, it will consist of more than one program... there will be a WPF client desktop program, an ASP.NET front end (sometime in the future), a WCF service hosted in a windows service, and an SQL database to store all the data.
So, I suppose I should get to the point.
Although I already made a start on the WPF user interface quite some time ago, I have now stopped work on this and decided that I need to spend some serious time planning and designing this solution.
I've made a few flow diagrams for some core processes, such as logging a new job, and have made a list of what will be in each section of the program. For example, in the Job Logging section there will be the ability to: create a new job, update a job, close a job, filter jobs based on who they are assigned to etc etc. This is all fairly high level stuff though and it only takes up a couple of pages in a Word document... so im just wondering what/how you guys plan and design before you even begin writing any code? Any tips on where I should start or even what sort of things I should document and how much detail I should go into?
Thanks
Chris
PS if anyone has a lot of experience with N-Tier or SOA applications, maybe you could help me with the general architecture, have a look here: http://www.vbforums.com/showthread.php?t=570048 :)