Results 1 to 4 of 4

Thread: [2005] How to engineer a large project

  1. #1

    Thread Starter
    Fanatic Member
    Join Date
    Jun 1999
    Location
    California, USA
    Posts
    662

    [2005] How to engineer a large project

    I'm writing an very complex application that will have a dual release as a freeware (lite version) and commercial (pro version) product.

    The application is a photoshop killer with some new concepts that (afaik) can't be implemented, even as filters, in photoshop. Much of the functionality is being handled by plugins, many of which will be included with the product. File handlers, effects, and even tools will all be implemented as plugins.

    Here's the problem:
    Though this is slated to be a commercial product, there is currently no commercial backing. I am the sole developer. Kinda ambitious, I know.

    The complexity of this project completely diminishes the complexity of any other project I've ever attempted by comparison. As such, I get about 10 - 20% through putting together the backing architecture before I realize that class A and class B lack any sort of consistency and now require that I write class C to make it work.

    To use an analogy: all of the code I've written in the past is akin to doing a small renovation on a house; installing a window or door, or moving the sink in the bathroom. None have been complex enough to require a blueprint.

    This project is akin to building a state-of-the-art shopping mall with stores that are rented out, a food-court, and ... an automated mechanical parking garage, just to set it apart from other shopping malls. Blueprint required.

    Don't take this to mean that I'm not familiar with the language. I've been writing in the various Microsoft incarnations of B.A.S.I.C. (QBasic, QuickBasic, VB3, 4, 5, .Net 2000, .Net 2003, and .Net 2005) for close to 15 years.

    I have a fairly thorough understanding of how I want the app to work; not just how to use it, but the actual movement of data through the app.

    Does anybody have any ideas of where I can go for (preferably free) help to either design my app or learning how to design my app? Since I plan to have 3rd party developers for the plugins, I want a fairly self-consistent API. I'm also looking to make the thing fairly easy to maintain for future releases.

    I know that these expectations are beyond the reach of most hobbyist programmers. I'm not most hobbyist programmers.

    ---
    Some background
    ---
    I stole the marketing model that Visual Studio uses: the express version is free and does not run any addins. The commercial versions do and come with more templates.

    My app will use a similar model. The free version will only run plugins that are signed. In other words, only commercial plugins that a) the user pays the developer to use, and b) the developer pays to have signed can be used in the freeware version. Of course, if the developer wanted to release the signed plugin for free, despite the fact that they had to pay to get it signed, they can.

    The commercial version will run any plugin, even ones that have not been signed. I foresee a large collection of free, unsigned plugins (even open-source plugins) available from many sources, similar to the winamp plugin model.

    I may also release a plugin development kit which includes several tools for testing each kind of plugin (one tool for 'tool' plugins, another for 'file handler' plugins).
    Last edited by agent; Sep 15th, 2007 at 01:23 AM.

  2. #2
    Interweb adm/o/distrator Paul M's Avatar
    Join Date
    Nov 2006
    Location
    Australia, Melbourne
    Posts
    2,306

    Re: [2005] How to engineer a large project

    I am not to sure on some sites but a project of a medium to large scale should always follow a software development life cycle.

    Beggining with Analysis, Design, Development, Testing, Documentation, Implementation and Evaluation. Well that is how i have been taught.

    As for plugin development i am sure if you gather interest in your project with a little advertisement there will be willing developers who would love to make some plugins

  3. #3
    Fanatic Member bgmacaw's Avatar
    Join Date
    Mar 2007
    Location
    Atlanta, GA USA
    Posts
    524

    Re: [2005] How to engineer a large project

    The way I've seen this done successfully is for the developer to hook up with a sales/marketing/business type person. For example, two companies I worked for in the 1980's had a technical guru who invented and enhanced the mainstay product and a one or more business people who got the product sold.

    The other way I've seen it done successfully is when a business person hires programming talent that help him achieve the goal he/she has envisioned. The last three companies I've worked for were based on that model.

    The way I've seen it done unsuccessfully is when a technical person tries to do everything.

  4. #4
    Hyperactive Member
    Join Date
    Apr 2005
    Location
    Indiana
    Posts
    451

    Re: [2005] How to engineer a large project

    For the design of the project, I recommend looking into OOPD, which is object oriented programming design. Also, what you are doing sounds a lot like Paint.NET. It is free, and you can find it at www.getpaint.net. It allows you to download the source. I am not saying copy the source. However, they allow plugins, so viewing their source should help you get an idea of how to architect your design. Here is a site about OOP.

    http://www.oopweb.com/OOD/Files/OOD.html

    You can use StarUML, which is free, to design your project before you start programming using UML. If you don't know UML, you can use FreeMind (free also) to put your thoughts down so you can see them.

    You didn't steal MS marketing strategy. That strategy has been around long before MS was around. Drug dealers use it, but that is a different story.

    In my experience, it is very beneficial to layout a design before you start programming. I partnered with a person that had created personnel evaluation software in DOS in the 80's. I rewrote the program in VB6. It was a pretty complex program compared to everything I had done before. Over 20k lines of code in the first version, which I didn't take the time to design before I wrote. The first version had 4 types of reports. After that, I studied OOP design, and even though VB6 wasn't truly an OOP language, I implemented as many design principals as I could. Version 2 had 13 types of reports, and was at around 20k lines of code. Implementing proper design principals saved my a lot of time and effort because it allowed me to abstract the design and create objects that could be reused. I didn't use any software to design the program, but I did use a pen and paper to draw out my objects, flow charts, methods, and properties. At the time, I was very anxious to get writing, but looking back I know that my program would not have been so easy to write, and so efficient, if I hadn't taken that time. This information is even more important now in .NET.

    I hope this helps.
    Ben


    Using Visual Basic 2005/2008

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  



Click Here to Expand Forum to Full Width