|
|
|
![]() |
|
|||||||
|
||||||||
![]() |
|
|
Thread Tools | Rate Thread | Display Modes |
|
|
|
#1
|
|||
|
|||
|
After a year off of FIRST, I'm back, now as a mentor at Purdue University (assigned to team 1747) and I'm pretty enthusiastic. Given how disorganized software team tends to get, I wrote up the following thoughts on how to keep the software team organized and in good communication with the rest of the team:
Quote:
Thanks, -William |
|
#2
|
|||
|
|||
|
Re: Software Team Organization
EDIT: I concluded that this was off-topic. Now where's that delete button...?
EDIT OF EDIT: Whoops...someone replied! Last edited by Orborde : 20-09-2006 at 12:26. |
|
#3
|
||||
|
||||
|
Re: Software Team Organization
this is very well written. i have been trying for 5 years to create this nearly identical organization with our team. last year we came close. the returning students this year are actively working to implement this organization.
we did not have warning banners. this year we must warn the electrical team to avoid the constant changes! thanks for the clearly written statements. jerry w |
|
#4
|
|||
|
|||
|
Re: Software Team Organization
Quote:
|
|
#5
|
|||||
|
|||||
|
Re: Software Team Organization
Im not sure if you mentioned this already but it deserves repeating(I only scimmed after reading half). MODULAR. Use alot of small Functions written by members that do very specific tasks. Don't be affraid to have call trees that are very long. It will save time and recoding later.
Heres an example: User Routines(); >void Map_Joystick_to_PEM(); >>unsigned char Lookup_Map_Curve(unsigned char Joystick_Value); And all that stuff because if anyone needs that calculation one call can save each person the time to write the code that does that same thing three different ways. This again saves on debug time, since we all don't have enough time anyway. |
|
#6
|
||||
|
||||
|
Re: Software Team Organization
Quote:
Most experienced software people will tell you that there is a 'sweet spot' for complexity of functions. If you don't simplify enough, you have huge functions full of spaghetti code. If you simplify too much, the code can also be difficult to read because there's no easy way to see what's going on overall. I'd suggest that functions which contain the primary logic of your program should be somewhere in the vicinity of 25-75 lines or so, with various 'worker' functions which are frequently used which might only be 5 or 10 lines. And as always, remember that comments are free Use them often so when you return to the code next season you have some idea of what you were thinking at the time. |
|
#7
|
|||
|
|||
|
Re: Software Team Organization
Quote:
![]() I see your point about the call trees - on the other hand, we shouldn't be writing any recursive functions here; have you ever actually hit this wall in practice? I thought the MCC18 compiler supported an "inline" keyword; does it, or am I just hallucinating? Thanks for the additions. Any ideas on the "improving communications" aspect? |
|
#8
|
||||
|
||||
|
Re: Software Team Organization
This is a good idea that's been tossed around on our team before, but unfortunately none of us have the time or experience to really implement it.
If you're looking for simple alternative methods (or anyone in this thread is), here's what worked quite well last year for us (note this is on a team where all of the coding was done on 3 laptops, since we couldn't install programs on the school computers): 1. Make a new project everytime you have a major code change (in case it ends up not working and you have to revert). Try to keep a simple naming system that makes sense; we had "Base 01", "Base 02", etc. for our beta builds, and "Release 101", "Release 102", etc. for our official tested and working builds. 2. Try to divy out the different tasks to a few different groups, so that each of you can produce different files and then merge all of them together in one super project. This eliminates alot of the over-writing each others code problem since you work in entirely different files for most of it. 3. Make sure the code is updated on all systems at the end of every day. In our case, we uploaded the most recent version of each file onto a flash disk in one updated project, then uploaded this project back onto all the computers. As an alternative, have each group work in different builds (group programming autonomous in base 01, group programming drive in base 02, etc.), and upload the most recent version of each project onto each computer. 4. Have one person focus on making sure everyone elses' code will fit together and that everyone is in a group doing something, a "project manager". They might also want to keep a running Read Me file as to what has been added to a project since the previous version. 5. Set a meeting with the electrical team heads, and make sure all wiring decisions are settled and documented in something both groups have a copy of. Create an alias file that is very easily changable in case someone doesn't adhere to this code, and you end up having to change a wire or 2. If you have the programs to, try to have a visual wiring diagram that shows what everything is going to (if desperate, powerpoint works nicely). That's a general gist of what we did last year, and we should be using about the same method this year. Not being able to use school computers can be very restrictive upon your team, but it also forces you to really know where everything is since you can't have a network sitting there to store everything. |
|
#9
|
||||
|
||||
|
Re: Software Team Organization
Quote:
The other thing we do is keep what we call the "motor spreadsheet" in Subversion. This is an Excel sheet that contains information on all the motors, sensors, etc. in the system and indicates what inputs or outputs they are hooked to. The electrical team maintains this sheet and notifies software if they change anything. Also we tend to stick with the same assignments year-to-year as much as possible (for example, drive motors are PWMs 1-4, etc). Once a motor or sensor is assigned to an input or output, it usually stays there for the season unless there's a really good reason to change it. |
|
#10
|
|||
|
|||
|
Re: Software Team Organization
Quote:
|
|
#11
|
||||
|
||||
|
Re: Software Team Organization
Quote:
The Microchip Compiler for 18F series parts (MCC18), works very close to the hardware and isnt like the average compiler you run in to for targeting JRE/windows/linux/unix operating systems. There is no flag to 'always convert to int' BUT you could write a compiler macro to always typecast all your calculations into the 2byte (integer) format. Just be advised that this will waste memory, and unless the variables are unsigned will make bit shift division difficult. PM me if you have any questions. -Q EDIT: The post i replied to is no longer in this thread. I realize this post is now off topic. |
|
#12
|
|||||
|
|||||
|
Re: Software Team Organization
Even with our small team (myself), I have been doing a lot of that for some time. Especiall #1, 4, 5.
It's notable that you almost have to make an exception for #4 for interrupts. (Still use the alias for value access, but you don't have to alias all the configuration bits.) The lines of communication between the software group (me) and head of electrical (Biff) have been open. We have always worked closely. One thing we have gotten to doing is to define what each of the IO pins are, and how the sensors are wired to those pins. eg, have pwm01 and pwm02 go to the driveline and digIn1 and digIn2 go to the encoders. Define which way pots go. (I recomend the same direction for the pot, the motor that drives it, and any control board for it.) BTW, Subversion can fail commits with helpful messages. (See the mime types commit hook floating about.) You don't have to email a team member to notify them of bad practices. All-in-all, very good. |
![]() |
| Thread Tools | |
| Display Modes | Rate This Thread |
|
|
Similar Threads
|
||||
| Thread | Thread Starter | Forum | Replies | Last Post |
| Team organization | tchescow | Team Organization | 12 | 17-01-2005 20:09 |
| Team 342 Training and Organization | cbolin | Team Organization | 1 | 15-01-2005 10:37 |
| Team Organization and Recruiting | The First Lady | Team Organization | 13 | 29-04-2004 06:23 |
| MUST READ: Team Organization | JonathanE | General Forum | 6 | 21-02-2003 21:20 |