1 / 19

Team What the Hell?

Discover the reasons why you don't want to be like us, including challenges we faced in coding, meeting attendance, and health. Learn from our mistakes and improve your project management skills.

thiele
Download Presentation

Team What the Hell?

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Team What the Hell? Tips for not being like us.

  2. Overview of why you do not want to be us • Half our group was bad at coding • Half our group was bad at showing up to meetings • One member of our group had no idea how to stay healthy • Our TA pegged us for failure the entire semester • We didn't finish a single milestone on time • The night before our demo, we were in the CoC for 12 straight hours until 8AM Why you want to be like us • We finished the project itself with an A (those of us who did our ant file)

  3. M4 So as one of the people who didn't do the build file for M4, it's going to be difficult to explain to you how to do this part of the project. However, it's not too difficult and it's 2.5% of your overall grade so DO IT.  Let's start with SVN, the easy part of the assignment. I would recommend subclipse, which is  how we did our subversion, it's very simple to install if you have eclipse, and if you don't have eclipse... GET IT FOR THIS PROJECT-- subclipse link http://subclipse.tigris.org/ We linked our project with google code http://code.google.com/ and we hosted a new project, and got subclipse working... that part is self explanitory. Ant File- yea so I really can't help you with the xml build file. There are sites out there... I'd recommend talking to your TA if you can't figure it out. <<< THIS IS GOOD ADVICE FOR THE ENTIRE PROJECT

  4. M5 So the M4 description was pretty crappy... probably because we lost half our points on it. M5 was all about Domain Coding- here's an overview of what we basically had to do (CRUD = Create, Read , Update, Delete) Login Functionality / Lockout after 3 attempts................................ 10CRUD Users (Doctor, Nurse, Patient) .............................. 10 Lookup Patients by Name ................................ 05 CRUD Appointments .................................... 10 CRUD Treatment Record ..... 10 CRUD Doctor's Orders ................................... 10 Load/Save Functionality .............................. 10 Create Invoice ................................. 10 Logging ........................................... 05

  5. MORE M5 Sounds easy enough right? WRONG Sifting through our 17,000 lines of code here are a few things not to do. • Do NOT have people who suck at coding try to struggle through this, make them do the busywork, UI design, and the not coding stuff such as code evals, M1-3, M7, M9 and M10. • M5 is the bulk of your project, and assigning parts of it to someone who simply doesn't have the skills to do it, will waste EVERYONE'S TIME. • Do NOT believe you are going to get this done on your own. "I'll do it on my own time" DOES NOT WORK. We got 85% of our work done sitting together as a group, and spent 85% of our time not as a group. DO NOT WASTE TIME KIDDING YOURSELF. • Expect to not get it right the first time, but unlike us... actually have working classes when you demo the first time. • DO NOT wait to audit your code until the end. AUDIT YOUR CODE AS YOU GO. Use the audit tool thingy provided, we audited at the very end and we had over 5,000 audit errors which took 2 people 4 hours to fix. • If you are going to use a database like we did (I recommend it, it's extra credit) IMPLEMENT IT EARLY, not THREE DAYS BEFORE YOUR FINAL DEMO. It will force you to rewrite all your code to fit the database.

  6. EVEN MORE M5 What to do- • What we would recommend, is make A LOT of classes, use object oriented design, we started with around 9 classes, and it was a headache... we ended up with over 20 for just M5 and most of those after our first two M5 demoes. • Separate your project into packages, database, ui, presenters (links to your UI), users, and utilities. This made it very easy to keep track of everything. • When you look at this, we decided to split the work into specializations i.e. we had one person do user stuff, user pages. We had another do structure holders, such as appointments, treatments. This way they can make each type of structure consistent. • Use good java practice- example: Our first Medical History constructor looked like this:  public MedicalHistory(Patient patient, ArrayList<Treatment> treatments, Doctor doctor) { this.treatments = new ArrayList<Treatment>();                 this.patient = patient;                 this.doctor = doctor; } Continue>>>

  7. M5 Continued What's the problem with that? Well having too much information in one thing. Our final medical history looked like this: public MedicalHistory() { this.treatments = new ArrayList<Treatment>(); }  All it held were treatments, which linked to other places. USE OBJECT ORIENTED STYLES. IT WILL HELP YOU. Another last 2 hints about M5-  Write JUnit tests as you go. Build your UI as you do M5 (that doesn't mean make it work, but have a clue what it's going to look like so you aren't rewriting all your classes to fit the UI 4 days before your final demo)

  8. M6- UI STUFF Let me just start out by saying- Window builder pro allowed us to pass this class. http://code.google.com/javadevtools/wbpro/ USE IT. Assuming all of your M5 is good, Here's what not to do with M6- • DO NOT Start M6 after your M5 is completely done (because once you start M6, M5 will get turned upside down, so just do them both at the same time) • DO NOT- Have each person in your group design screens separately, because the person with the best design will end up redoing everyone else's screens for continuity Remember, Windowbuilder will allow you to do all sorts of stuff http://download.oracle.com/javase/tutorial/uiswing/components/index.html USE THIS SITE- IT IS HELPFUL

  9. MORE M6 STUFF You're probably wondering how our screens looked- You can see windowbuilder in the background- and all those classes, are just our UI panels

  10. MORE M6 Suggested User approach- Our Admin Screen basically can do everything an Admin can do. To save you some time, I would reuse that screen for all Admin type users, such as doctor and Nurse. This way, your presenters (I'll get to in a moment) are basically just removing from admin to get Nurse and Doctor working.

  11. More M6 The Doctor is just the admin without the Admin or Doctor tabs

  12. More M6 The Nurse is the Doctor without the Nurse Tabs, Cool right?

  13. More M6 PRESENTERS- Presenters are so much fun, they are basically the class that you use to link your UI to the classes you made in M5. For example, our DoctorPresenter links to our Doctor tab public DoctorPresenter(){ new Database(Database.productionDatabase); } That's our constructor, and it basically just links you to the database. Then in the DoctorPanel myDoctorPresenter=new DoctorPresenter(); myDoctorPresenter.updateData(); you create the Doctor presenter, and use it to link to your database. example to get the patient list: patientList.setListData(myDoctorPresenter.getPatientArr()); where getPatientArr() is a method in DoctorPresenter. That line of code creates a list of patients linked from our database.

  14. More M6 How did we communicate from frame to frame? So for example, when I want to edit a treatment how do I get the tab with all the information already filled in? http://coweb.cc.gatech.edu/cs2340/uploads/17/Frame%20Messenger.pdf We used a frame messenger, which is completely explained in this link, which Josh (one of our group members) Made. One last thing on M6- when you Audit your Windowbuilder stuff, ignore most of it, you'll have like 1,000 audit errors from windowbuilder that isn't your problem.

  15. M7 Basically M7 is using the JUnit Tests you already made to test your code to begin with. JUnit tests are very easy to make. Since we used a database, our tests might be a bit differently formatted than most, but here's JUnit stuff in a nutshell http://junit.sourceforge.net/doc/faq/faq.htm Well if you don't want to read that, you basically initialize some test variables, then use various methods in the class you are testing, and assertTrue(patient.name() == "Bob") for example. Or you can assertFalse(). M7 should take you no time at all, just make an excel sheet  Description                     Expected                             Actual                                P/F Test login() with                 A loginAttempt                        loginAttempt.                PASS valid id and password        enum: SUCCESS               SUCCESS With 3 methods for each group member, above is an example of one test from our group in our excel sheet.

  16. More M7 For the second part of M7, or apparently the third since it's labelled 3... Select a section of critical code and conduct a team code review. Just do it with your TA at the M7 Demo section.

  17. M8 We Killed this, so I have no problem giving you our advice on this. Basically this is a good place to start: http://www.useit.com/papers/heuristic/heuristic_list.html Write up a detailed description using each of those Bold categories. What we did was just elaborate under each category using specifics. I would recommend having a group member who did less coding for M5 and M6 this part of the assignment. It's very easy to do alone. The hard part is proof that you actually evaluated it. There are forms out these which go through a detailed checklist, just print that out, and fill it out by hand. M8 is very simple.

  18. M9 Our M9 was pretty Straightforward, as it was just adjusting our original UML diagrams (SAVE THEM). And talking about basic SOLID principles learned in the class. I would strongly recommend giving this part of the project to someone who did a minimal amount of the coding, so everyone contributes equally to the grade.

  19. Fini So that's basically our project help. Hopefully it's helpful to someone, somewhere down the road.

More Related