Course Subjects
- Objectives in Software Project Management
- Software Development Methodologies
- Choosing the Right Technology
- Tool Selection
- Technology Dependency
- IDE or Text Editor?
- Team Training
- Open Standards
- Documentation
- Why documentation is important?
- Documentation methods
- Tools
- Wiki
- Blog
- DITA / DocBook / LaTeX, etc.
- JavaDoc / PyDoc / Doxygen, etc.
- Issue / Bug Tracking Systems
- What is issue tracking?
- What is bug tracking?
- Tools: Bugzilla, RedMine, etc.
- RedMine
- Version Control Systems
- What is version tracking?
- Team usage
- Tools: CVS, SVN, Git, Mercurial, etc.
- Git
- General usage rules
- Best practices
- Common mistakes
- Build Systems
- What is a build system?
- Tools: Make, AutoTools, CMake, SCons, Ant, Maven, Gradle, Rake
- Build Distributors: distcc, icecream
- Ant, Maven, Rake
- Continuous Build Systems
- What is continuous build?
- Tools: CruiseControl, Hudson, Jenkins, etc.
- Jenkins
- Code Quality Measurement Systems
- What is code quality measurement?
- What are quality metrics?
- Tools: Sonar
- Testing Systems
- What is testing?
- Types of tests (Unit Test, Functional Test, Load Test, User Acceptance Test)
- Testing Tools: JUnit, DbUnit, JSFUnit, Cucumber, Arquillian, JMeter, Selenium, rSpec
- Release Cycle
- General rules for release cycles
- Version numbering
- Daily, Weekly builds
- Package Systems
- What is a package system?
- What is a package repository?
- Tools: RPM, DEB, Maven (jar), Gem, Egg, Pear