Other Issues
Software Maintenance
One possible extension in the future program development is the online service application.
In this case, the implementation code modification is clearly required. For instance, add new code to drive the online accesses. In addition, test plan needs also to be modified, e.g. new test cases to test online accesses. New set of required test results are also required for matching purposes. The old test cases are still needed to assure that the new implementation does not affect/harm the old functionalities in the previous implementation. In conjunction with that, requirement changes are definitely needed, and hence the associated model/design also needs to be reviewed.
Software Quality Assurance
Objectives:
Improve quality by appropriately monitoring the software and its development process.
Ensure full compliance with the established standards and procedures for the software and development process
Ensure that any inadequacies in the product, process, or standards are brought to management's attention so these inadequacies can be fixed.
One possible software metric that can be used to measure here is the Halstead's Software Science Metrics. Halstead's metrics is used to measure the characteristics of software. It proposed that the more complex of a piece of software, the more difficult it is to develop and maintain. Halstead made two major assumptions: complete and unambiguous statement of algorithm, and that programmers are fluent in implementation language and fully devoted to the task given.
A simple calculation example for a procedure in our implementation:
Private Sub cmdfind_Click()
prompt$ = "Enter the client's full name"
SearchStr$ =
InputBox(prompt$, "Client Search")
clientDB.Recordset.Index = "ClientName"
clientDB.Recordset.Seek "=", SearchStr$
If clientDB.Recordset.NoMatch Then
clientDB.Recordset.MoveFirst
End If
End Sub
The operators and operands of the routine code above can be captured in the following table:
| Operator | Occurrence | Operand | Occurrence |
| Private | 1 | prompt$ | 2 |
| Sub | 1 | "Enter the client's full name" | 1 |
| cmdFind_Click() | 1 | "Client Search" | 1 |
| = | 4 | "ClientName" | 1 |
| InputBox() | 1 | SearchStr$ | 2 |
| If ... Then | 1 | clientDB | 4 |
| Recordset | 4 | ||
| Index | 1 | ||
| Seek | 1 | ||
| Move First | 1 | ||
| NoMatch | 1 | ||
| . | 8 | ||
| , | 2 | ||
| End If | 1 | ||
| End Sub | 1 |
From the table above:
n1 = 15 where n1 = the number of unique (different) operators in the program
n2 = 6 where n2 = the number of unique (different) operands in the program
N1 = 29 where N1 = the total number of occurrences of operators
N2 = 11 where N2 = the total number of occurrences of operands
Hence we can calculate as follows:
Size of vocabulary: n = n1 + n2 = 21
Program length: N = N1 + N2 = 40
Program volume: V = N log2 n = 176
Assume the most compact representation is cmdfind_Click();
n1 = N1 = 2; n2 = N2 = 0
n = N = 2; V* = N log2 n = 2 log2 2 = 2
Program level: L = V* / V = 0.01136
Programming effort: E = V / L = 15488
Programming time: T = E / 18 = 860.4 seconds