views:

193

answers:

5

We are a group of students doing our Master degree in field of computer science.

This semester we should do a Software engineering project according to the following bottom explanation.

we should exactly act and report as a real Software engineering Team.

I have been chosen as a project manager of this group, I am good in writing java codes but I don't have the experience of doing the project manager task, any way I have to do my best to do this project with my group members as good as possible.

The problem is this that I need to deal with different levels of knowledge but all the members should participate in implementation part.

I will be pleased if some one guide me how to do this project and how to manage this group, and where to start? how to encourage the members, and how to do my plans in practice?

please have a look to the explanation and help me what technology do I need to chose for this project?

Project Explanation

projects should be implemented as so called web applications. Because of the MVC requirements this is more than a server-client architecture – we call this (at least) a three-tier architecture.

The view should be created dynamic on clients' request. Therefor the content has to be computed by the server (server side). Inside of the view there should not exist any type of source code (like “scriplets”, Java Code, etc.) besides the markup language.

This should ensure that the view can be created by web designers where the content is in the responsibility of programmers.

Vice versa the source code should not contain any markup languages (like HTML).

To store information (make persistent) the system should use a database. But there should not exist database specific queries inside of the source code – because then the sources are very dependent of the usage of exactly this database. System should work with an object relational mapper to map the stored information from database on special type of objects (beans).

All configuration like database, entities, configuration, initialization should be realized using XML files (or similar ways like e.g, annotations), so that changes don't require recompilation of the system's sources.

Technologies available (suggestions):

  J2EE:
          JSP, Servlets, JSP EL,
          JSTL, JSF, Facelets,
          Custom JSF Components, Custom Facelets TagLibs,
          JUnit (unit testing)

  Persistence:
          Hibernate, JDO
  IDE:
          Eclipse, NetBeans
  Servlet Container:
          Apache Tomcat
+2  A: 

Your description is somewhat different from your initial question so it's a little confusing. I'll try my best to answer and give you a few tips ...

As a project manager or leader, you should be trying to get the best out of everyone in your team. Each one of them will be good at something so try to find out what that is, and put them to work at that.

When you do assign work, you should also assign some freedom and accountability / responsibility. They're the expert in that area so let them deal with it as best as they know how. Offer support, encouragement and guidance wherever you can, but listen to what they have to say.

If you have some team members that are less skilled but willing to learn (or contribute), pair them up with someone else. Have them work together on a component allowing the more experienced person to 'mentor' the less experienced one. If there's a way you can make this part of the 'success criteria' for your project, then that's even better as it gives them some incentive to work well together.

Then there's all the technical project management tasks. These are things like specs, gannt charts, schedules, reviews, etc. These are important but in my opinion are less important than the people management aspects. Have your team provide you with the data for these documents. For example, ask the developer of component A how long it will take to develop and test rather than trying to figure it out yourself.

Hope this is some help and gives you some food for thought. Sorry I can't help with the more technical/architectural aspects of your assignment.

Carl
+1  A: 

Perhaps pair programming (two people sitting at the same terminal programming something together) would be helpful?

A second person makes a great "sanity check" - bugs will be greatly reduced. The two programmers will complement each other, and if one is significantly less experienced than the other, he will learn quickly.

Artelius
A: 

"I will be pleased if some one guide me how to do this project and how to manage this group, and where to start? how to encourage the members, and how to do my plans in practice?"

That's the core problem in all group endeavors. The question is so vague that there is no specific answer. Here's a list of books on IT Project Management. Pick any one and read it.

S.Lott
A: 

"please have a look to the explanation and help me what technology do I need to chose for this project?"

Since there's no explanation of what the project will build, any technology list is fine. The are no "requirements", no "concept" no "goal" or "purpose". It's impossible to evaluate the technology without any purpose.

Your "project explanation" isn't an explanation of your project. It's mostly a bunch of architectural principles. A project must be more than just a pile of technology. There has to be some goal or purpose.

Your "technologies available" list has way too much stuff in it.

Struts and Hibernate are about all you need. Other things (JSP, servlets, etc.) are part of Struts. I recommend iBatis instead of Hibernate.

JUnit is required, and isn't really a choices. Think of JUnit as a mandatory part of Java.

Pick either NetBeans or Eclipse -- don't waste time waffling back and forth, they're both free and approximately identical. Just pick one.

The rest of the stuff on your list of technologies is just distraction. Unless, of course, your project has some functional requirements for which these technologies are a handy solution.

S.Lott
A: 

Explanation of the Project: ( Full explanation here )


General Description (customer): UcooP is meant as a system for exchange of knowledge and experiences in the context of universities. This contains multiple levels of exchange.

  (A) Administrative Staff Exchange
  (B) Scientific Employee Exchange
  (C) Student Exchange
  (D) Public Exchange

  Universities can get registered to participate in that platform by sending a corresponding request
  to administration of that platform (e.g. MoHE). After an university has become member of that
  platform, students, employees and administration staff can register themselves as member of
  that university with the related role (student, employee or administrative staff).
  The content that is accessible for members than depends on their role. So, students can't access
  content that is tagged as employee content – and so on. Content that is tagged as public is accessible for members of all roles.
  Content inside of that platform can mean two different things.

  (A) Forum (Discussions on topics)
  (B) Wiki (Best practices)

  So besides the topic, Wiki pages and Forum topics have to be categorized to administration,
  employee, student or public content.

For motivating the universities to participate and to publish their experiences and knowledge – the system should contain a ranking system. Universities can get certificates (e.g. Level One Node, Level Two Node, etc. the higher the better) depending on the number of topics, answers in discussion and/or published wiki pages – created by the university members. Defining the details of the system – means creating the concept and prototype of that system – is up to you.