Skip to content

soft-eng-practicum/softdev2-resources

Repository files navigation

Intermediate Agile Software Development Textbook Resources

This textbook is intended for an intermediate-level software development course at the undergraduate level that teaches software engineering principles and practice following the Agile philosophy.

The textbook provides resources for both the instructor and their students. Course preparation materials are provided for the instructor and class presentation slides, assignments, and take-home exams are provided for students.

However, instructor could email the authors (cgunay or adolocm at gmail.com) to get access to hidden materials such as quizzes.

Publishing technology

The content is rendered and published using a static site generator (or Jamstack) system called Hugo. It is primarily built by combining two Hugo themes, Techdoc and reveal-hugo. Techdoc provides the documentation-style browsing of book chapters and reveal-hugo provides the capability of online accessible chapter presentations using the reveal.js technology.

The generated site can then be hosted on any static host (such as Github Pages or Netlify). The original repository is rendered and hosted on Github Pages and it is automatically generated at each push by using Github's Actions feature. You can see it in action in this example.

How to adopt this book and customize for your class

You can fork this repository on Github and customize the chapters and slides. See the links above to learn more about the different technologies used.

Once you fork this repository, Github will carry over the Github Actions instructions needed for automatic deployment, but you would need to click on the "Actions" tab and enable them again in the fork. After this, you should see the "Hugo" action listed, which will be executed after each of your commits. The action will run Hugo and write its output to the root of the gh-pages branch.

To enable Github Pages render this output, you need to go to the Settings tab, scroll down and select to produce the pages from the root folder of the gh-pages branch.

Don't forget to edit the config.toml file for changing variables such as baseURL, github_repository, github_doc_repository, author, course, and google_analytics_id.

Installation

Hugo's installation instructions can be found here. Hugo is available in most Linux package managers and homebrew, although the version found in package managers for Debian and Ubuntu is often outdated. The instructions also include a video for installing on Windows.

The Techdoc and reveal-hugo themes are included in the repository as git submodules under the /themes/ directory. After cloning the repo, you will need to run the following to download the submodules:

$ git submodule update --init --recursive

Then run the following to start the Hugo server:

$ hugo server

You should be prompted with a link to access the site in your browser. Hugo will automatically detect modified files, rebuild the site, and refresh your browser.

Reveal-Hugo customizations

In the class presentations, the author and course front-matter variables will take precendence over the values in the config.toml file. They are used in the following custom Hugo shortcodes that we defined:

  • reveal-titlepage: Puts the chapter title, course name (course parameter in page or in config.toml file), authors (author parameter), with an option to display a cover image, followed by the reveal-prevnext-links shortcode. The default format for the title page and its contents, such as authors can be changed in layouts/shortcodes/reveal-titlepage.html. It accepts the following optional parameters with the regular HTML syntax param="value":

    • figure: Displays the cover image specified at given URL. If you create an image /static/images/image.jpg, you can refer to it with the base URL like this: figure="/softdev2-resources/images/image.jpg".
    • height: Change the default height of "300px".
    • class: Change CSS class of the figure tag.
    • link: Make the figure a link to this URL.
    • alt: Provide an alternate text to image.
    • title: Create a <figcaption> tag under the image.
    • caption: Set alt and also write it under the figcaption.
    • attr: Attribution text, shows up after caption.
    • attrlink: Link for the attribution.
  • reveal-prevnext-links: Inserts links to previous and next Reveal chapters, which are automatically determined by following the pages in the folders. It has no additional options.