In a Nutshell
In the Ptidej team, we strive to offer a great environment with several services to work with. However, integrating this environment requires to take certain steps to enjoy these services. Here is an outline of this document that you must read through.
- Gain Access to the SVN Repository
- Read the General Rules to Use the SVN Repository
- Use the SVN Repository to Get, Backup, and Share the Source Code
- Use the SVN Repository to Get, Backup, and Share Your LaTeX Documents
- Prepare Your Development Environment... and Yourself for Development
- Get Ready to LaTeX
- Get Ready to BibTeX (and to share your databases!)
- Prepare Your Writing Environment...
- Do Your Studies
- Do Your Research Work
- Know the Rules of the Lab. and Expect some Bonuses!
- Get Your Research Work Known
- Update Your Member Profile on the Web Site
- Contact the Right Person
Gain Access to the SVN Repository
A dedicated SVN repository is available. Its address is https://web.soccerlab.polymtl.ca/rptidej/ptidejlab (in particular, https://web.soccerlab.polymtl.ca/rptidej/ptidejlab/Software/Ptidej 4
Workspace/ for the code source). It is very easy and
convenient to use Eclipse or TortoiseSVN to access the SVN and
Eclipse is the preferred and supported way of browsing,
committing, and checking out resources in and of the SVN.
You must generate a password for the SVN by using the command
htpasswd -c ~/pwd.txt <username> and by sending the
~/pwd.txt to yann-gael.gueheneuc@polymtl.ca. The e-mail
must include your full first and last name and project
(IFT3051, master, Ph.D., and so on).
Read the General Rules to Use the SVN Repository
Two main operations are available when using the SVN: commit and check out. Check out means downloading resources from the repository and obtaining a local copy. This is actually what happened when you will import the Team Project Set in the following section. Commit means uploading local resources into the repository. Only resources that have changed will be uploaded with the repository storing the differences between the two resources (if possible). Thus, at any time, it is possible to retrieve previous versions!
Also, when committing resources into the repository, please remember to comment your commit with your (first) name and a short description of the differences between the new and the old versions of the resources. Don't be afraid to commit but please commit only resources that are somewhat consistent, in particular Java code that at least compiles. Consider the SVN repository as a backup of your local disk.
If you need to commit a new project into the SVN repository,
simply select the project, right-mouse click, select Team ->
Share Project, select the repository, and select Finish.
There is no need to follow particular naming conventions
anymore because the repository keeps track of the committers
and allows sub-folders. (In case of doubt, just ask Yann-Gaël.)
Use the SVN Repository to Get, Backup, and Share the Source Code
You will use Eclipse (see next section) intensively, so browse through this document that explains the use of Eclipse and CVS together seamlessly (CVS is a poor man's SVN repository :-)). Here are the steps to connect Eclipse to the SVN repository. (Eclipse means Eclipse v3.1 at the least.) Currently, most of the source code of the Ptidej tool suite compiles against the J2SDK 1.4.2, do not forget to download this version prior to downloading the source code.
- Launch Eclipse (as of Summer 2008, only Eclipse 3 is supported!);
- Make sure that Eclipse uses the appropriate J2SDK by
selecting
Window -> Preferences -> Installed JREsand selecting (or adding and then selecting) the J2SDK 1.4.2.
- In the Package view, right-mouse click
-> Import... -> Team Project Setand choose the Ptidej.psf file, then let Eclipse work... Use this team project set. - Choose the CPL project and right-mouse click
PDE Tools -> Update classpath.... Select and update the classpaths of all existing plug-ins.
- Go to
Window -> Preferences -> Java -> Classpath Variables, select the TOOLS_JAR classpath variables, clickEdit...andFile..., and select the tool.jar file, located in C:/Program Files/J2SDK 1.4.2/lib/ typically. - In the tool bar, choose
Build All. - Finally, select class
TestPADLv2and run it as JUnit to test your installation. (You should see a green bar... or just a few errors :-) ).
Use the SVN Repository to Get, Backup, and Share Your LaTeX Documents
You must also use Eclipse and the SVN repository to backup and share your papers. The point of the following steps is to have an Eclipse workspace separate from your development workspace to manage papers that should be stored in your home directory, in the Documents sub-directory.
- Create a shortcut with target
"<some folder>\eclipse.exe" -data "R:\Documents\Workspace" -vmargs -Xmx256MandR:\Documents\as startup folder; - Double-click on the shortcut;
- Create a new project to store the paper files locally. When
creating the new project, you may want to un-select the
Use defaultcheck-box and tell Eclipse where is the folder (and its content) that you want to manage using Eclipse. This option is very useful if you want to store all your documents in your home directory (typicallyR:\Documentsunder Windows). - Select the project, right-mouse click 'Team -> Share Project...';
- In the newly opened window, select
Create a new repository location, then click Next; - Enter the connection information:
Host: https://web.soccerlab.polymtl.ca/rptidej/ptidejlab
User: <your login>
Password: <your CVS password>
then, click Next; - Select
Use specified module nameand enter the name of an existing module or of a new module (see above for the naming conventions), then select 'Finish'; - It's done! The local project is linked with the module in the SVN repository.
Prepare Your Development Environment... and Yourself for Development
The Ptidej project contains more than 70 projects, 500 classes, and 100,000 lines of code and documentation. So, it is important to respect certain conventions to avoid getting lost and messing things up too much! First, you must read this paper, which gives a good overview of the Ptidej tool suite, of its layered architecture, and of its component projects. Beware, though, that the projects change with time!
Then, you must use Eclipse, preferably Eclipse v2.1.3 as it is more stable and simple than v3.1+, and follow these instructions to configure your environment:
- Launch Eclipse;
- Import preferences.
- Go to
File -> Import...., choose Preferences and import the Eclipse Preferences file in directory Eclipse 3.
- Set the templates.
- Go to
Window -> Preferences -> Java -> Code Style -> Code Templatesand import the Eclipse Code Generation Preferences file.
- Go to
Window -> Preferences -> Java -> Editor -> Templatesand import the Eclipse Editor Templates Preferences file. - Close and relaunch Eclipse.
Writing cool and good programs is not easy at first and requires a bit of discipline. The only two ways to improve your skills in coding is to read other people's code and to code yourself! Most Code should be written in Java using Eclipse and following our code conventions: You must follow and format your code according to our code conventions. Eclipse somewhat helps by providing a configurable code formatter (called using CTRL + SHIFT + F), for which rules are available. For C/C++ code, Eclipse includes the CDT perspective and uses GNU indent to format the code.
Get Ready to LaTeX
LaTeX is a versatile typesetting system available on several platforms. It is the preferred way to write large pieces of text such as articles and reports. The main advantage of LaTeX is to separate the content from the form and to allow programming your document rather than decorating them with Word. LaTeX works a little bit like a compiler: You provide the LaTeX compiler with a text file (.tex) and it gives you a typeset DVI, PS, or PDF document. You can also easily build professional-looking bibliographies using BibTeX, which integrates nicely with LaTeX . In addition, you can include LaTeX excerpt in PowerPoint presentations seamlessly.
The best way to LaTeXify your documents on Windows is using MiKTeX (that should be already installed, even if badly), the Windows implementation of the LaTeX compiler, and WinEdt (that may be absent of the computer), a MikTeX-enabled text editor. Please contact the co-admin. to correct the installation of MiKTeX and install and register WinEdt. You must use WinBibDB to prepare your bibliography. Also, please use our models for PowerPoint when preparing a presentation.
WinEdt needs a bit of configuration to provide you with the
best environment to LaTeXify your documents. After starting
WinEdt, first Options -> Execution Modes... and select Run
Normal and check Pause if Errors and Pause if OK and then
Apply to All. Quit and restart WinEdt. Then, go to 'Option ->
Settings...", in the Translations tab, for all TeX_Read,
TeX_Write, BibTeX_Read, BibTeX_Write and following, check
the Enabled for checkbox.
When using WinEdt, open your LaTeX file, click the Set Main
File icon to tell WinEdt that this file is the main of your
document, then click TeXify (the little bear face) or CTRL +
SHIFT + X to compile your document and produce a DVI version.
When TeXifying your document, a DOS console opens to show the
output of the compilation process. Before going any further,
make sure to correct any compilation errors (badness and
missing references are okay, not compilation errors!). Once
your document compiles, LaTeX produces a DVI file that you can
visualise by clicking on the DVI Preview icon (the little
magnifier) or CTRL + SHIFT + V. To generate a PDF version of
your document, just click on the dvi2pdf icon. Do not use
PDF TeXify, PDF LaTeX, or PDF TeX because these commands
require that your converted your images into PDF documents
first. To insert images in your document, you will need to
generate or convert these images into the Encapsulated
Postscript Format (EPS). A great open-source tool called ImageMagik
exists, ask the co-admin to install it if needed.
When visualising a LaTeX document with DVI Preview, you may
notice typos, mistakes, and so on. and may want to correct
them. Select View -> Options... and the Inverse Search tab
and in the Program combo-box, select WinEdt. From this
point on, you will be able to double click on the DVI preview
of your document and jump right into the LaTeX source code.
LaTeX is great for many reasons but can be very painful when dealing with tables. Simple tables are okay, because WinEdt actually can automatically generate code based on a template, however complex tables maybe give you headache. To save you time and headache, you can use LaTable, a simple but powerful tool to create table and generate LaTeX code.
Please don't forget to visit the pages on LaTeX, BibTeX, and PowerPoint to obtain more detailled information. Documentation is available here and on the Internet.
Get Ready to BibTeX (and to share your databases!)
BibTeX is a file format to describe bibliographic references. BibTeX is nicely integrated with LaTeX and allows you to encode and cite in a consistent manner your references while separating the bibliographic information from the presentation of this information.
You must follow the following conventions to make sure that your own references (i.e., your own publications) can be put easily on the Web site and that your other references (i.e., any document that you may have read during your studies) can be used by all.
The conventions are:
- You must create a subdirectory with you login name in the Common directory (and the corresponding CVS module).
- You must have at least two BibTeX databases in this
directory, names:
<login name>.bib, which includes all and only your own references, and<login name>.read.bib, which includes the references of any document that you have read. - You must use WinBibDB to create and manage your BibTeX databases to ensure the consistency, completeness, and a correctness of your databases.
Following these conventions will ensure that the few scripts used to merge, remove duplicates, and clean all the existing BibTeX databases will work and, thus, that your publications will appear in a timely fashion on the Web site.
The scripts are actually executing Java code written to merge BibTeX databases, to remove duplicates from the merged database, and to remove LaTeX commands from the merged database for exporting the database as HTML code using BibTeX2HTML.
The conventions and the scripts allow warding off one of the main evil of software engineering that also applies in the context of BibTeX dababases: duplications!
Prepare Your Writing Environment...
Whether in M.Sc. or Ph.D. you will have to write several kinds of documents: papers, theses, reports... Some of these documents you will write alone but most of them will with your supervisor and possibly other fellow students. Thus, it is important that we all have a similar environment where to store and compile LaTeX files. Below is the typical structure that your writing environment should follow, with the corresponding CVS modules if appropriate. We assume that the root of your writing environment is the directory named ROOT and that ASE, CASCON, ICSE, ICSM, and TSE are names of conferences and journals.
| <ROOT>/ | |||||
| ... | |||||
| Common/ | associated to Common in SVN | ||||
| ... | |||||
| guehene/ | |||||
| <your login name>/ | |||||
| <other login names>/ | |||||
| ... | |||||
| ... | |||||
| Papers/ | |||||
| ... | |||||
| 2007/ | |||||
| ASE/ | associated to ASE'07 in the SVN | ||||
| CASCON/ | CASCON'07 | ||||
| ICSE/ | ICSE'07 | ||||
| ICSM/ | ICSM'07 | ||||
| TSE/ | TSE'07 | ||||
| ... | |||||
| 2008/ | |||||
| Thesis/ | Thesis (<your login>) | ||||
| ... | |||||
| ... | |||||
| ... |
As you prepare yourself to develop code and write paper, you should expect to receive and answer hundreds or thousands of e-mails per years. Consequently, you must also using the appropriate tool support for e-mail. Thunderbird is the best, being open-source, available on most platforms, and able to connect to calendars and such. You should organise your e-mail so that you keep all your e-mail locally for ease of backup. Typically, your local folder should follow the organisation of your folders on disks for ease of access and understanding; typically:

Do Your Studies
If your are a M.Sc. student, your thesis should take about 15 months. You must take four courses before starting your research. Typically, you take 2 courses in the Fall and 2 other courses in the Winter. A list of courses is available here. Courses numbered IFT68XX are out of scope. Foreign students (especially from France) may get courses credited, please consult this Web site and the professor in charge of graduate studies.
If you are a Ph.D. student, your thesis should take about 48 months. You must take two courses, typically, one in the Fall and one in the Winter. A list of courses is available here. Courses numbered IFT68XX are out of scope. Foreign students (especially from France) may get courses credited, please consult this Web site and the professor in charge of graduate studies. In parallel, you must prepare your compulsory exams, please consult this Web page for detailed information.
Do Your Research Work
Actually, all the previous sections describe support to this one activity that you all came here for: research! Research consists of many things and there exist very good book on research methodologies depending on your domain of interest. However, there are things that must be done in any domain:
- You must define your research problem thoroughly and identify the limits of your problem. Obviously, your supervisor will help you but defining your research problem also includes reading articles that relate to your problem... This roadmap may also be of help.
- You must study the related work. We include in the related work conference papers, journal articles, books that relate to your problem, that have maybe brought a solution to the problem, that may have introduced the problem and so on. Studying the related work includes reading many papers, most of the time in English, that's part of the job! The easiest way to identify the related work is using your favorite Internet search engine, since computing science is quite young, most resources are available on the Internet. Some great Web sites are:
- Once you have studied the related work, you must be able to state clearly why your problem is a problem and why previous work did not solve the problem satisfactorily. If not, go back to the two previous steps ;-)
- Now that you know what your problem is and what are the previous solutions, you can propose your own solution. This is the contribution of your research work. Your contribution must compare favorably to the related work.
- In software engineering, it is important to demonstrate your solution by implementing a prototype. This prototype may be quite coarse but must allow you nonetheless to convince yourself, your supervisor, and the jury members that your solution actually works. In the context of the Ptidej project, you should develop your prototype in such a way that it can be seamlessly included with the other projects. Yann-Gaël and more senior members will help you in developing your prototype.
- Then, you must evaluate your solution (its implementation prototype really), if possible using case studies from the the related work to show that your solution indeed works and is an improvement over previous work. This is a critical part of your research work and must not be neglected. In particular, if you do have experimentation studies, you must assess the four possible threats to validity!
- Finally, it is very, very likely that your research work will open new perspectives and you should be able to state clearly as future work.
In addition to do research, you will also need to seek fundings... mostly because your supervisor would not have enough fundings for all of you! Another page describes existing funding organisations.
Know the Rules of the Team and of the Bonuses
There are rules about your presence in the lab. and meetings to make sure that studies and research run smoothly:
- All of the students should be in the lab. between 9am to 5pm so that you can be reached at any time during this period;
- Mornings are reserved for informal discussions, between 9am and noon: you can drop by at any time to discuss (first arrived, first served);
- Afternoons are reserved for studies and research, unless you asked for (and were granted) an appointment at least one day in advance.
This schedule should give everyone opportunities to meet on a regular basis while preventing unwanted and continuous interruption.
Also, a system of "bonuses" exists: each time a paper is accepted in a top journal or conference sponsored by ACM or IEEE (or a book chapter), the student authors will receive a bonus based on the level of the venue and to be discussed. Obviously, paper in the two top journals: TSE, TOSEM will bring the biggest bonuses!
(See also a graph of conferences and journals.) Collaborations are highly encouraged to increase a "rotation" in the first author and to lead to more publications and more bonuses.
Get Your Research Work Known
An important part of your research work is to tell people about your work. There are several ways to tell people, which include giving seminars and publishing papers. You should publish your work in different places. We suggest that M.Sc. students publish at least one paper in a workshop or conference while Ph.D. students are usually expected by the community to publish three conference papers and one (good) journal paper.
Below is a (non-exhaustive) list of journals:
- General Topics
- IEEE Transactions on Software Engineering (TSE). Main journal on software engineering research.
- ACM Transactions on Software Engineering and Methodology (TOSEM). ACM version of the above (?).
- IEEE Software. Recent research work, emphasising readability and discussions.
- Special Topics
- Software Testing, Verification and Reliability. Aimed at practitioners, emphasis on new techniques, methodologies, and standards
- Automated Software Engineering - An International Journal
- Journal of Systems and Software
- Practitioner-oriented journal
- Software Quality Journal
- Academic research and industrial case studies and experience
- Empirical Software Engineering - An International Journal
- Journal of Software Maintenance and Evolution: Research and Practice. For researchers and practitioners, with a joint US/UK editorial board
- Software: Practice and Experience. Not only software engineering, good reputation for practice.
- International Journal on Software Tools for Technology Transfer
- Transactions on Aspect-Oriented Software Development Journal
- Others
- International Journal on Software Engineering and Knowledge Engineering
- Annals of Software Engineering
- Information and Software Technology (IST). Broad spectrum: software engineering, process, but also computer science in general.
- Software and Systems Modeling
For conferences and workshops (which are as important as journals in some cases!), please consult this non-exhaustive list, where flowers are for conferences, pencils are for workshops, and stars highlight high-quality or preferred conferences and workshops. Also, this link proposes a useful list of up-coming conferences. Several Web sites record the acceptation rates of conferences and journals. Acceptation rates give an idea of the toughness to publish in a given venue. However, be careful, conferences and journals are like living creatures, they are auto-regulated through a feedback loop: A venue may have a high acceptation rate one year because the year before it was very low and discouraged submissions...
Update Your Member Profile on the Web Site
When integrating the Ptidej project, a user will be created within the Ptidej Web Site with a username and a password. (If you did not receive this information, please contact Yann-Gaël.) Please, login at least once to update your profile, following examples from other members, for instance Naouel has a cool page and Yann-Gaël lazily redirects his page to another place.
Contact the Right Person
The Ptidej team main lab. is located in room M-4225. To gain access, just ask Yann-Gaël.
When you have problems with your PC or the network or any other technical problems, please ask first the co-admin. of the lab. The co-admin. will tell you if you must contact the support team of the department.
Yann-Gaël overlooked the Web site of the Ptidej team (this Web site ;-)) as well as other Web resources (Wiki, Bugzilla...), please contact him if you were to find errors or missing pieces of information.