Overview: ESOF 423
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
- Agile, Scrum text
- https://ecat.montana.edu/d2l/home (Assignments, intergroup discussion)
- https://trello.com/
- https://reactjs.org/
- https://git-scm.com/book/en/v2/Getting-Started-Installing-Git
- https://github.com/
- https://www.cs.montana.edu/defrance/classes/423/groups.mhtml
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.
