Related: Syllabus

Course Description

ESOF 423. Software Engineering Applications. 3 Credits. (1 Lec. 2 Lab) S

PREREQUISITES: ESOF 322 Application of software engineering techniques and methodologies acquired in previous courses to solve an open-ended software engineering problem provided by stakeholders. Students will use a team based approach to requirements gathering, designing, implementation, testing, integration and delivery of the software solution. CSCI 440 is recommended.

To Use Course Server

Use a terminal/command/shell window to log into the server from a command line:

ssh netID@esof423.cs.montana.edu

Change the access permissions of the home directory to 711 (you can read/write/execute; others can only execute)

chmod 711 ~

Create a new directory called public_html (from where the web server will published your content)

mkdir public_html

Add an index.html file and other content to the public_html folder to get started.

Reach your web site at esof423.cs.montana.edu/~netID/index.html

Class

Monday, Wednesday, Friday 10:00 am - 10:50 am

Roberts Hall Room 210

Resources

Clients

HRDC: https://thehrdc.org/ 

Krista Dicomitis, Stratigic Planning Officer; <kdicomitis@thehrdc.org>

Jenna Huey, Shelter Manager

Syllbus Topic Details

Lecture Topics

  • Software development process: introduction, traditional vs iterative vs agile, scrum, extreme programming, test driven development, rugby
  • Version control: introduction and types of version control systems, distributed version control systems, Git/GitHub
  • Software testing: introduction, automated unit testing and xUnit/jUnit, test coverage
  • Continuous integration and delivery
  • Code Refactoring: code smells, refactoring techniques to remove code smells and to incorporate design patterns
  • Test driven development and pair programming: introduction and practical TDD/PP Code reviews: Introduction, code review planning and checklists, logistics, code reviews in the industry
  • Static Code analysis: introduction, advantages of static analysis, static analysis methods, static analysis tools

Projects

  • The projects are specified by outside clients, and each team can take on a project of their choice.
  • Teams are required to develop the product specified by the client through the completion of the provided user stories.
  • The teams are required to closely follow agile development methods followed in the industry (http://agilemanifesto.org/).The teams are self organizing and will decide what portions of the project requirements they will implement during each sprint.
  • During each planning meeting the team decides the portion of the requirements they are going to implement during that sprint and discuss how the work is distributed among team members.
  • Teams are required to produce a working piece software at the end of each sprint and will be iteratively and incrementally developed toward the final product.
  • The teams are required to maintain a proper distributed version control workflow which includes maintaining proper branch structures and frequent meaningful commits by all the developers in the group.
  • The teams are required to apply quality assurance techniques through unit/integration/system testing and using proper tools to evaluate the test quality (e.g. coverage tool).

Course Outcomes

At the end of the course, students should be able to

  • Design and implement a solution to an open-ended problem in software engineering defined by a stakeholder.

  • Evaluate alternative solutions to a problem in software engineering.

  • Effectively and methodically test code, and review code written by others.
  • Use written/oral/visual means to document and present the solution to the stakeholder.