Permalink
Cannot retrieve contributors at this time
Name already in use
A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
TEACHING-MATERIALS-1/README.md
Go to fileThis commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
114 lines (69 sloc)
4 KB
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# Software Quality and Process Management | |
On completion of this module, a student should be able to: | |
1. Select, evaluate and apply standards, tools and techniques for assuring software quality | |
2. Critically review a software development process and identify its ranking in an accepted capability maturity model. | |
3. Critically evaluate an architectural design against accepted quality criteria. | |
4. Select, evaluate and use tools and techniques to successfully manage a large scale software project, including configuration management and version control. | |
5. Estimate the cost and duration of a software project. | |
## Module Content | |
The module content is split into the following topics. Each topic lasts for one or two weeks. The lab activities for each are provided in numbered markdown files in the home directory of this repository with the supporting materials in the `exercises/` directory. You should start by cloning this repository into your development workstation. This might be: | |
1. Using the Windows 10 lab computers (download Visual Studio Code from the AppsAnywhere server) | |
2. Using your own laptop computer | |
3. or you might use your Chromebook and clone into an instance of an online IDE such as [Goorm](https://www.goorm.io/). For help with this option you will find a lab called **Setup**. | |
### 1 ECMA6 | |
[Lecture Slides](https://drive.google.com/open?id=1RcI1HSyJpAV64TPEjqzp0Udad9IGZvo4uF7sapCFrkE) | |
You will need to understand the syntax of the ECMA programming language which you will be using to develop your software during this module. | |
There are two labs to complete and you should aim to get both completed in the first two weeks: | |
1. Templates and Forms | |
2. Dynamic Websites | |
### 2 Test-Driven Development | |
[Lecture Slides](https://drive.google.com/open?id=14lBIsoru7s4qwpVGa6hhd1Iq1ezXSvZYk38RSNAZT50) | |
In this week we will be extending your understanding of ECMA6 by learning how to apply the principles of Test-Driven Development (TDD) when writing code in the ECMA6 programming language. You will be required to complete two labs this week: | |
1. TDD Express | |
2. TDD API | |
### 3 Domain-Driven Design | |
[Lecture Slides](https://drive.google.com/open?id=15roChBN5xnttLZYg7Wdk7b26W5Q23nCYNycLj8GNy5w) | |
At this stage you will have been assigned to an assignment topic and will apply the Domain-Driven Design (DDD) techniques to build a domain model. This will form part of your assignment submission. If you have time you will be able to continue your ECMA6 learning. | |
### 4 Software Architecture | |
[Lecture Slides](https://drive.google.com/open?id=1Ux83hzw-DdcBWn6PUXz_xF3b-ytE4PsWLpSKS_dqBfw) | |
Now you will be expected to use your understanding to produce three different architectural designs based on your domain model and evaluate these to identify the best. | |
## 5 Architectural Coupling | |
- BEA chapter 4: Architectural Coupling | |
- Domain-Driven Design | |
- Copy of 09 Acceptance Testing | |
## 6 Software Quality | |
- Week 6 - Software Quality Metrics | |
- Week 7 - Software quality measurement and indicators | |
- Week 8 - Software quality metrics and ISO_IEC standard | |
## 7 Fitness Functions | |
- BEA chapter 2: Fitness Functions | |
- Week 6 - Cyclomatic Complexity | |
- Copy of 08 Non-Functional Testing | |
## 8 Software Development | |
- Week 9 - Capability Maturity Models | |
## 9 Advanced Version Control | |
1. GitFlow? | |
2. Rebasing | |
3. Copy of 07 Advanced Version Control | |
## 10 Continuous Integration and Delivery | |
- BEA chapter 3: Engineering Incremental Change | |
- Copy of 10 Continuous Integration and Delivery | |
- Copy of 11 Deploying Code | |
---- | |
# Stuff to Remove | |
Removing any content related to agile processes | |
## 5 Project Management | |
1. Week 5 - Agile Software Estimation Techniques | |
2. Week 5 - Software Project Cost Estimate Models | |
---- | |
# Assessment Rubric | |
1. Design model | |
2. Annotated source code | |
3. Test suite | |
4. Branching model | |
5. Process maturity | |
6. Evaluation of agile technique | |
# Notes | |
Start project with a hub and spoke architecture. Each student (team?) contributes a module to this. Perhaps use pubsub MQTT broker? Also can tap into building data? | |
# Sample Tasks | |
1. System log |