General => Feedback => Topic started by: Melssj5 on October 20, 2006, 05:43:30 pm

Title: Software development
Post by: Melssj5 on October 20, 2006, 05:43:30 pm
Hi, I asked something similar about 1 years ago, but just for curiosity, now that my project has died, I wonder why most of projects fails? In my case I found with some difficulties that couldnt solve on a easy way to integrate with the whole system. Any change would represent a major change on some places inside the code, I never definen a work plan nor made any ingeniering on it, just went to write code to do what I had on mind. But  sadly all my efforts on this project were useless and now, I just spent time on nothing. (Well I got experience).

I may want to ask, how to achive on a software project. Of course on the universitry I have received how to make RUP design, but I really cant find a real use of that. Actually I cant find a real way on which I cant really get help from the documentation for developing, maybe for making future changes but not by now.

I guess that everything have to be modular to can reuse the it on future version or future projects. But can I find a path to follow to avoid forgetting developing on a rigth way.

Egon told me once that he usese Xtreme Programming, but I guess I am using code and fix, and my project failed as supposed to be.

So, anyone can told advices about that? can Anyone here like Egon, Raft, Rolz, or anyother achieve on 3d projects? The succesfull projects have followed any kind of methodology?
Title: Software development
Post by: raft on October 20, 2006, 10:36:53 pm
havent we already somewhat discussed this  in a previous thread (http://www.jpct.net/forum/viewtopic.php?t=303)  :wink:
Code: [Select]
r a f t
Title: Software development
Post by: manumoi on October 23, 2006, 12:02:28 am
I think experience is one of the key to finish projects...
I mean when you already programmed (and maybe failed) the basic concepts behind the type of project you want to begin. You know where to go, what to avoid... which design will be helpful for modularity etc...

So i dont think you lost your time... Next time you want to do a big project... you will take profit from the design mistakes you made this time

Taking time to think about your project (what tech to use... how to do the main features.... networking, AI, 3D...) sure also help to avoid errors. I always try to see my projects in term of modularity and reusability.

I also sometimes take 1 week to update my code, during the programming process, retro working on my code in order to obtain a more homogeneous programming style... It has been very helpful for the next steps...

Hope this helps.
Title: Software development
Post by: Melssj5 on October 23, 2006, 08:39:03 pm
Ok, I know I got some experience but I guess that is not enough to achieve on a future development. You said that I can realize which were my design failures but I never made a preliminar design.

I guess that next project will be code and fix too.

I thought about the game and defined the most important classes, and methods inside of them to build them later. But I could integrate all of them easily.

Any suggestions about how to reestructure my code to make it more integrable?
Title: Software development
Post by: manumoi on October 24, 2006, 07:14:41 pm
By design errors, i meant you can see where you failed... what becomes too complicated to make evolve. So next time maybe you could spend time thinking about it and how to have a solution you could easely modify.

The basic thing to do (but I suspect you already do that) is to separate  codes dealing with interface, AI/logic, networking... in order to be able to modify one of these elements without having to touch the others.Hence for example, if one day you want to change from JPCT to another 3D engine (but i dont see any that rules like it) you should be able to do that without major changes excepted for the 3D part of your code... Use of java interfaces may be very suitable for this task.
In general i try to separate those parts also in term of package.
But i think you already do all of that.

I read somewhere that you should begin a PhD soon (ggod luck;P). That s what i m doing currently... (multi agents systems and stuff like that, jpct to represent visually the MAS). What is interesting in such a working environment is that you frequently have to write architectures of your system for presentation purpose. In term of architecture, i m talking about modules and interactions between them (i basically define a module as a part of the system that has a specific objective and given abilities. A module may consist in one or more classes). It makes me rethink some mistaken parts of the system and i have also the opportunity to confront my view with peers.

Another classical technic i use (which is not pure object oriented) is to have a specific "tool"package, mostly with static classes that will resolve very frequent problems.

And some basic advices... (probably you know it but i don t know what your programming style is)
Classes that are too big are by definition hard to maintain
A method must not exceed the size of one screen (else split it)
I hated commenting my code... but recently i had to modify some parts of my project I didn t touch for months... And there was  few classes that i already commented. Damn It was VERY easy to modify it compared to those that were hard done.

I am pretty sure some people will not agree with some of those points. But the idea is to find the style you are confident with. Many ways exist to reach a goal.

Title: Software development
Post by: Melssj5 on October 30, 2006, 09:56:30 pm
ok, Thanks, I guess I will try to get my code reorganized to continue. I have a class with almost 2000 lines of code.

After reorganizing the code I guess I may have new ideas about where to put what!

Any advices about the package structure?
Title: Software development
Post by: athanazio on November 20, 2006, 08:48:29 pm
I like to think about the classes as workers ... :D dont overload then, and dont let then stay without work.

I believe that seems to be too simplistic, but simple concepts helps to drive our mind in the design, of course some patterns helps a lot, not to follow as is , but to see how to adapt then in each case, evaluating your code scenarios against some others already evaluated problems.

hope my 2 cents help on something, Im really new to gaming projets, but in the IT arena, 15 yrs over my back hehehe :D thats why Im moving to games now, I'm tired of CRUDs !