Zaval Creative Engineering Group Zaval Logo
 Home
 Resources
 - Training
   -  Web Services: An Integral Course
 
 Web Services: An Integral Course :: Essentials of Software Development
 (Lecture 2)

Lecture outline

  • Introduction to software development
    • Software development methodologies: historical retrospective
  • Project organization: best practices
    • Tasks automation
    • Versioning: CVS, Subversion, VSS
    • Incremental updates: nightly builds, milestone builds, production system
    • Environment separation
    • Software accompanying documentation
  • Project organization: the technology
    • Organization of files
    • Build tools: Apache Ant vs. Make
    • Builds cycle: Cron vs. CruiseControl
  • Tasks

Introduction to software development

Software development methodologies: historical retrospective
  • Formal methodics (Jackson's method, etc)
  • Bottom-up/Top-down programming
  • Waterfall
  • OOP
  • RUP
  • Methodology shift: Agile methodologies
  • CMMI

Project organization: best practices

Versioning: CVS, , Subversion, VSS

Incremental updates: nightly builds, milestone builds, production system

eXtreme Programming: small releases practice

Software accompanying documentation
  • Project initialization documentation
    project goals
  • System design document
  • Software accompaning documentation
    user guides, ...
  • Test plan/Test protocol
    What and how was tested
  • Deployment guide

Project organization: the technology

This section will cover the most widespread patterns (technical aspects) of project organization in software development in industry.

Organization of files
Generally speaking in all project there are several rules:
  • source and final compiled files should be separated;
  • documentation should be up-to-date with sources;
Typical project tree organization:
    api        <-- Automatically generated documentation
    dist       <-- Build ready for distribution
    doc        <-- Supplied documentation
    lib        <-- Libraries
    out        <-- Compilation results (temporal folder)
    projects   <-- All subprojects of the project
    src        <-- All sources before compilation step (optional)
    
Build tools: Apache Ant vs. Make
  • all tasks that should be repeated more than once should be automated;
Two approaches: shell-scripting and XML-based configuration.
Project template: template.zip

Builds cycle: cron vs. CruiseControl
To make project's results more traceable there shaped out an idea of automated project re-build. It allows seing the actual state of the project as it is on one hand and eliminates unnecessary manual project build from the other hand. Another plus is that the project team will always have a "fresh" build.
This is a religious issue, but actually the whole idea of CruiseControl can be summarized with the following command:
    javac ... 2>&1 > | mail -s "Build results" me@mydomain.com
    
Adding this command to cron adds possibility to achieve periodical execution of the specified task.

Tasks

Utilizing given templates organize all tasks from Lecture 1 into sub-projects that can be build using Ant. Adjust template to fit your needs if necessary.
Notes:
  • in order to run Ant-based samples you have to set up the following environment variables:
        ANT_HOME=c:\ant
        PATH=%PATH%\bin;%ANT_HOME%\bin;
        
Recommended readings
  • Project organization: Methodology
    • Frederick P. Brooks, Jr., The Mythical Man-Month: Essays on Software Engineering, Anniversary Edition, Addison-Wesley Professional, 1995
    • Grady Booch, Object Solutions: Managing the Object-Oriented Project, Pearson Education, 1995
We appriciate any comments on the course structure and content.

Thank you,
The Zaval CE Group.