May 252017

I am preparing for a new (for me) course for the Fall 2017 semester: CS 343 Software Construction, Design, and Architecture. My intention is for this to be a course primarily about software design and I want to approach it through design patterns, software architectures, and modern software frameworks. These are all topics that I have read a little about, but not enough to really teach. So, I am spending my summer reading a lot about them.

For other courses, I’ve learned little bits of UML (mostly class diagrams, with a very small amount of use-case diagrams, sequence diagrams, activity diagrams, and state diagrams) and all very informal. So, I decided that, if I’m going to teach design, I need a representation for those design patterns and architectures and it’s time that I finally learned UML more formally.

Standardized Structural and Behavioral Modeling for System DesignI am currently working my way through the video series UML Fundamentals, Standardized Structural and Behavioral Modeling for System Design by Simon Bennett from O’Reilly Media (6 hours, 12 minutes). So far, it’s pretty good, although it seems almost more about how to create the diagrams in Enterprise Architect (a commercial product) than about UML itself. I’m going to have to read some books about UML also to supplement the videos, but it’s a good introduction.

The commercial tool he uses looks nice, but I would like to find a FOSS alternative to use, both for myself, and for the students to use in class. I’ve played around a little bit with some of the Eclipse tools for modeling, but I’ve not found them very easy to use. So, I’m still looking. If you have any suggestions, please let me know.

Oct 092014

I wanted to post an update to my post Sabbatical Reading List.

To better keep track of my progress with my reading, I’ve started tagging the books on my LibraryThing account in different categories:

Sep 082014

Summer is over, and it’s time to really get to work on my Sabbatical project.

I did do some work this summer – I’ve read 3 of the books on my Sabbatical Reading List (and added a few more to the list) and I’ve finally de-lurked on the OpenMRS developer mailing list and in some of the online meetings, and I’ve made a decision to convert all of my course materials to Markdown (the better to track changes on GitHub – see a future post). But, it’s all been pretty passive.

So, the Friday before the Labor Day Weekend, I decided it was time to get back to the “develop code in OpenMRS” part of the project.

Since it had been a couple of months since I had set up  my development environment and tried to build the OpenMRS code, I decided that starting over from scratch (mostly) would not be a bad idea. Here is what I did:

  1. Read OpenMRS’s Getting Started as a Developer wiki page. I had already set up my OpenMRS ID, and signed up for the developer mailing list. I already had a GitHub account, as well.
  2. Read Development ProcessfromOpenMRS Developers’ Guide, and got the code:
    1. Fork openmrs-core repository.
    2. Clone my fork onto my computer.
    3. Set the OpenMRS repository as my upstream remote so that I can pull changes from the main project into my local working copy.
  3. Set up development environment based on Get Set Up from the OpenMRS Developers’ Guide. I chose the section on Manual Installation because Iwantto be able to develop code fortheOpenMRS core application. I followed the general outline of this section, but went about some of the software installations differently.
    1. Install MySQL. Because I am setting up my development environment on a Mac, I installed MySQL using Homebrew
    2. Install Maven using Homebrew
    3. Install Git using Homebrew (actually, I already had Git installed, but I made sure it was up-to-date)
    4. BuildtheOpenMRS code:
      cd openmrs-core
      maven clean install
    5. RuntheOpenMRS web app through the jetty server:
      cd webapp
      mvn jetty:run
    6. The first time you run the web app, it will take you through the Setup wizard
  4. Set up Eclipse. I already had Eclipse installed, but I made sure that my version was up-to-date. Eclipse had been updated to a new major version (Luna) since the last version I installed (Kepler). 1
  5. Git IDE Integration: Since EGit is already installed in current versions of Eclipse, and I’ve already forked and cloned the repository, I really only needed to do the To import as a Maven project section, to get the the projected into Eclipse.
  6. Build the OpenMRS code under Eclipse. I followed the steps in the following section:
    1. How to run the build
    2. How to run Junit
    3. How to Run Web Application

Now that I have a working environment that builds and runs, the next step is to choose a ticket to work on.

  1. In the past, I had just downloaded the newest version, and replaced what I already had installed. I figured that there must be a way to do the update without having to reinstall and reconfigure all of my plugins. It turns out that you can add the release’s repository to the Available Software Sites:
Jun 062014

I have begun my reading list for my sabbatical. It includes general software development/software engineering books, as well as books specifically aimed at the next two courses I will be teaching in our Software Development Concentration:

  • CS-348 Software Process Management (Spring 2015)
  • CS-443 Software Quality Assurance and Testing (Fall 2015)

Here is my sabbatical reading list on my LibraryThing account. I will update it as I find other books, or have other books suggested to me.