______________________________________________________________________________
Copyright © 2010 Arthur (Wesley) Kenzie. All Rights Reserved. Page 1 of 22
BCIT Computer Systems Technology
COMP 7081 Technical Issues in Software Development
Assignment 2
Author: Arthur (Wesley) Kenzie A00242330
______________________________________________________________________________
__________________________________
| Client module |
|________________________________ |
| (1) sendConnectionStatus(); |
| (2) sendFileTransferStatus(); |
| (3) sendFileListingStatus(); |
| (4) startSongPlay(); |
| (5) pauseSongPlay(); |
| (6) restartSongPlay(); |
| (7) stopSongPlay(); |
| (8) startImageDisplay(); |
| (9) pauseImageDisplay(); |
| (10) restartImageDisplay(); |
| (11) stopImageDisplay(); |
|________________________________ |
______________________________________________________________________________
Copyright © 2010 Arthur (Wesley) Kenzie. All Rights Reserved. Page 2 of 22
BCIT Computer Systems Technology
COMP 7081 Technical Issues in Software Development
Assignment 2
Author: Arthur (Wesley) Kenzie A00242330
______________________________________________________________________________
______________________________________________________________________________
Copyright © 2010 Arthur (Wesley) Kenzie. All Rights Reserved. Page 3 of 22
BCIT Computer Systems Technology
COMP 7081 Technical Issues in Software Development
Assignment 2
Author: Arthur (Wesley) Kenzie A00242330
______________________________________________________________________________
__________________________________
| Client module |
|________________________________ |
| (1) getConnection(); |
| (2) closeConnection(); |
| (3) pollConnection(); |
| (4) sendData(); |
| (5) getData(); |
| (6) ackRequestCloseConnection(); |
| (7) ackCloseConnection(); |
| (8) ackPollConnection(); |
|________________________________ |
______________________________________________________________________________
Copyright © 2010 Arthur (Wesley) Kenzie. All Rights Reserved. Page 4 of 22
BCIT Computer Systems Technology
COMP 7081 Technical Issues in Software Development
Assignment 2
Author: Arthur (Wesley) Kenzie A00242330
______________________________________________________________________________
__________________________________
| m-TCP module (Blueberry) |
|___________________________ _____ |
| (1) sendConnectionStatus(); |
| (2) sendDataTransmitStatus(); |
| (3) forwardData(); |
| (4) ackRequestOpenConnection(); |
| (5) ackOpenConnection(); |
| (6) ackRequestCloseConnection(); |
| (7) ackCloseConnection(); |
| (8) requestData(); |
|________________________________ |
______________________________________________________________________________
Copyright © 2010 Arthur (Wesley) Kenzie. All Rights Reserved. Page 5 of 22
BCIT Computer Systems Technology
COMP 7081 Technical Issues in Software Development
Assignment 2
Author: Arthur (Wesley) Kenzie A00242330
______________________________________________________________________________
______________________________________________________________________________
Copyright © 2010 Arthur (Wesley) Kenzie. All Rights Reserved. Page 6 of 22
BCIT Computer Systems Technology
COMP 7081 Technical Issues in Software Development
Assignment 2
Author: Arthur (Wesley) Kenzie A00242330
______________________________________________________________________________
__________________________________
| m-TCP module (PC) |
|________________________________ |
| (1) sendConnectionStatus(); |
| (2) sendDataTransmitStatus(); |
| (3) forwardData(); |
| (4) requestOpenConnection(); |
| (5) openConnection(); |
| (6) requestCloseConnection(); |
| (7) closeConnection(); |
| (8) requestData(); |
|________________________________ |
______________________________________________________________________________
Copyright © 2010 Arthur (Wesley) Kenzie. All Rights Reserved. Page 7 of 22
BCIT Computer Systems Technology
COMP 7081 Technical Issues in Software Development
Assignment 2
Author: Arthur (Wesley) Kenzie A00242330
______________________________________________________________________________
__________________________________
| Server module |
|________________________________ |
| (1) ackRequestOpenConnection(); |
| (2) ackOpenConnection(); |
| (3) ackRequestCloseConnection(); |
| (4) ackCloseConnection(); |
| (5) ackPollConnection(); |
| (6) requestCloseConnection(); |
| (7) closeConnection(); |
| (8) sendData(); |
| (9) getData(); |
| (10) pollConnection(); |
|________________________________ |
______________________________________________________________________________
Copyright © 2010 Arthur (Wesley) Kenzie. All Rights Reserved. Page 8 of 22
BCIT Computer Systems Technology
COMP 7081 Technical Issues in Software Development
Assignment 2
Author: Arthur (Wesley) Kenzie A00242330
______________________________________________________________________________
______________________________________________________________________________
Copyright © 2010 Arthur (Wesley) Kenzie. All Rights Reserved. Page 9 of 22
BCIT Computer Systems Technology
COMP 7081 Technical Issues in Software Development
Assignment 2
Author: Arthur (Wesley) Kenzie A00242330
______________________________________________________________________________
______________________________________________________________________________
Copyright © 2010 Arthur (Wesley) Kenzie. All Rights Reserved. Page 10 of 22
BCIT Computer Systems Technology
COMP 7081 Technical Issues in Software Development
Assignment 2
Author: Arthur (Wesley) Kenzie A00242330
______________________________________________________________________________
Step 1: Client module sends repeated getConnection packets to Blueberry m-TCP module as long
as Blueberry device is powered on and no connection is currently established with Server module;
Server module does not, and cannot request a getConnection from the PC side; getConnection
packets contain identification and authentication information to be relayed to the Server module
for processing, as well as IP address of the Blueberry device and the port number to be used on
the Blueberry;
Step 2: Blueberry m-TCP module opens the port specified by the Client module, and sends a
requestOpenConnection packet from this port, to port 909 on any nearby device/IP address every
time it receives a getConnection packet from the Client module;
Step 3: when and if the PC m-TCP module receives a requestOpenConnection packet on port 909
it forwards it to the Server module for processing;
Step 4: when and if the Server module receives the requestOpenConnection packet from the PC
m-TCP module, it determines whether a connection can be made with the requesting Blueberry
device, and sends an ackRequestOpenConnection packet back to the PC m-TCP module in reply,
including availability of connection, IP address of PC, and identification and authentication
information pertaining to the PC;
Step 5: the PC m-TCP module forwards the Server module ackRequestOpenConnection packet to
the originating port on the Blueberry from port 909 on the PC;
Step 6: if Blueberry m-TCP module does not receive reply to its requestOpenConnection then it
sends sendConnectionStatus message to Client module indicating Server not found;
Step 8: when and if the Client module receives the ackRequestOpenConnection packet from the
Blueberry m-TCP module, it determines whether it wants to make this connection to the PC, and if
so sends an openConnection packet to the Blueberry m-TCP module;
Step 9: the Blueberry m-TCP module forwards the Client module openConnection packet to port
909 on the PC;
Step 10: when and if the PC m-TCP module receives an openConnection packet on port 909 it
checks first that it is related to a previous set of requestOpenConnection and
ackRequestOpenConnection packets, and if so, forwards the openConnection packet to the Server
module for further processing;
Step 11: when and if the Server module receives the openConnection packet from the PC m-TCP
______________________________________________________________________________
Copyright © 2010 Arthur (Wesley) Kenzie. All Rights Reserved. Page 11 of 22
BCIT Computer Systems Technology
COMP 7081 Technical Issues in Software Development
Assignment 2
Author: Arthur (Wesley) Kenzie A00242330
______________________________________________________________________________
module, it determines whether a connection can be made with the requesting Blueberry device,
and sends an ackOpenConnection packet back to the PC m-TCP module in reply, including
availability of connection, and port number to be used on the PC side;
Step 12: the PC m-TCP module opens the port number specified by the Server module, and
forwards the ackOpenConnection packet from this port to the port number on the Blueberry;
Step 13: when and if the Blueberry m-TCP module receives the ackOpenConnection packet, it
checks first that it is related to a previous set of requestOpenConnection,
ackRequestOpenConnection, and openConnection packets, and if so, advises Client module of
either successful or failed connection with sendConnectionStatus packet;
Step 14(a): if Client module needs data from Server module, then it sends getData message to
Blueberry m-TCP module for forwarding to the Server module;
Step 14(b): if Server module needs data from Client module, then it sends getData message to PC
m-TCP module for forwarding to the Client module;
Step 15: if and when either m-TCP module receives a getData message, it forwards it over the
open connection to the corresponding m-TCP module on the other end of the connection;
Step 16: if and when either m-TCP module receives a getData packet over the open connection, it
forwards it to the corresponding Client or Server module for processing;
Step 17(a): if Client module has data to send to Server module, then it sends sendData message
to Blueberry m-TCP module with data to be sent to server over open connection;
Step 17(b): if Server module has data to send to Client module, then it sends sendData message
to PC m-TCP module with data to be sent to client over open connection;
Step 18(a): Blueberry m-TCP module issues pollConnection to PC m-TCP module at regular
intervals to determine state of open connection;
Step 18(b): PC m-TCP module issues pollConnection to Blueberry m-TCP module at regular
intervals to determine state of open connection;
Step 19: both PC m-TCP and Blueberry m-TCP modules reply, if possible, to all pollConnection
packets they receive, with ackPollConnection packets indicating the current state of the
connection;
Step 20: if either PC m-TCP or Blueberry m-TCP module do not receive a response from the
pollConnection packets they send out, of if they receive ackPollConnection replies indicating any
problems with the connection, they send a sendConnectionStatus message back to their
corresponding Server or Client module indicating data cannot be transmitted from that moment
forward until the connection is re-established successfully;
Step 21(a): Blueberry m-TCP module begins loop of sending one or more sendDataPacket packets
to PC corresponding to Client sendData message;
______________________________________________________________________________
Copyright © 2010 Arthur (Wesley) Kenzie. All Rights Reserved. Page 12 of 22
BCIT Computer Systems Technology
COMP 7081 Technical Issues in Software Development
Assignment 2
Author: Arthur (Wesley) Kenzie A00242330
______________________________________________________________________________
Step 21(b): PC m-TCP module begins loop of sending one or more sendDataPacket packets to
Blueberry corresponding to Server sendData message;
Step 22: both Blueberry and PC m-TCP modules reply with ackDataPacket packets to each
sendDataPacket packet received;
Step 23: as long as ackDataPacket indicates success, loop back to Step 21 until all requested data
has been sent;
Step 24(a): Blueberry m-TCP module sends sendDataTransmitStatus to Client module to indicate
either successful or failed transmission of data to PC;
Step 24(b): PC m-TCP module sends sendDataTransmitStatus to Server module to indicate either
successful or failed transmission of data to Blueberry;
Step 25: if more data is to be transmitted, then loop back to Step 17;
Step 26(a): if Client module is finished with connection to Server, then it sends closeConnection
message to Blueberry m-TCP module;
Step 26(b): if Server module is finished with connection to Client, it leaves it unchanged;
Step 28: when and if the PC m-TCP module receives a requestCloseConnection packet it forwards
it to the Server module for processing;
Step 29: when and if the Server module receives the requestCloseConnection packet from the PC
m-TCP module, it determines whether the connection with the requesting Blueberry device can be
closed, and sends an ackRequestCloseConnection packet back to the PC m-TCP module in reply;
Step 30: the PC m-TCP module forwards the Server module ackRequestCloseConnection packet to
the originating port on the Blueberry;
Step 31: if Blueberry m-TCP module does not receive reply to its requestCloseConnection then it
sends sendConnectionStatus message to Client module indicating connection cannot be closed;
Step 32: if Blueberry m-TCP module receives ackRequestCloseConnection reply from PC m-TCP
module, then it forwards this packet to the Client module for processing;
Step 33: when and if the Client module receives the ackRequestCloseConnection packet from the
Blueberry m-TCP module, it determines whether it still wants to close this connection to the PC,
and if so sends a closeConnection packet to the Blueberry m-TCP module;
Step 34: the Blueberry m-TCP module forwards the Client module closeConnection packet to the
PC m-TCP module;
______________________________________________________________________________
Copyright © 2010 Arthur (Wesley) Kenzie. All Rights Reserved. Page 13 of 22
BCIT Computer Systems Technology
COMP 7081 Technical Issues in Software Development
Assignment 2
Author: Arthur (Wesley) Kenzie A00242330
______________________________________________________________________________
Step 35: when and if the PC m-TCP module receives a closeConnection packet it checks first that
it is related to a previous set of requestCloseConnection and ackRequestCloseConnection packets,
and if so, forwards the closeConnection packet to the Server module for further processing;
Step 36: when and if the Server module receives the closeConnection packet from the PC m-TCP
module, it determines whether the connection with the requesting Blueberry device can still be
closed, and sends an ackCloseConnection packet back to the PC m-TCP module in reply;
Step 37: the PC m-TCP module forwards the ackCloseConnection packet from this port to the
Blueberry, and then closes the port number on the PC for this connection;
Step 38: when and if the Blueberry m-TCP module receives the ackCloseConnection packet from
the PC, it checks first that it is related to a previous set of requestCloseConnection,
ackRequestCloseConnection, and closeConnection packets, and if so, closes the port number on
the Blueberry, and then sends sendConnectionStatus message to Client module advising it of
either successful or failed closing of connection;
______________________________________________________________________________
Copyright © 2010 Arthur (Wesley) Kenzie. All Rights Reserved. Page 14 of 22
BCIT Computer Systems Technology
COMP 7081 Technical Issues in Software Development
Assignment 2
Author: Arthur (Wesley) Kenzie A00242330
______________________________________________________________________________
The QMTest framework allows for new test cases to be added as new instances of existing test
classes through use of the “create” command. In addition, the framework allows new test classes
to be created as derived classes of the pre-defined set of test classes if needed.
Creating new instances of existing test classes is done by using the create command as follows:
--id=x where x is the qualified name of the new test to be added to the test database; x is a
qualified name means that a hierarchical naming scheme can be used to organize tests into
implicit “suites” of tests that can easily be run together if needed; each level of the hierarchy is
indicated by use of a “.” (dot) character to separate one level from the next, as in bb.m-tcp where
“bb” is a hierarchical level that contains the “m-tcp” test;
--attribute a=b where a is the name of an attribute that is part of the test class, and b is the value
to be used for this attribute in this test;
test specifies the name of a “kind” of “extension” being created (there are other kinds of
(ii)
extensions besides “test” such as “resource”, “target”, “database”, “host”, “suite”, and others);
descriptor is the qualified name of an existing or new test class along with zero or more
(iii)
attributes associated with it, in the form module.class( attr1=”val”, attr2=”val2” ... ); if the
descriptor specifies an existing test class name, then the –attributes and –id options will need to
specify new values to identify this new test, such as the following, where a new test named m-tcp
is created in the “bb” test hierarchy, as an instance of the command.ExecTest test class, to test
execution of the program m-tcp.exe:
The above example descriptor is command.ExecTest, which references the “ExecTest” test class in
the “command” module. It is shown with no parameters, since the –attribute option is used in this
case to specify the “program=m-tcp.exe” parameter. This command could have been run in the
following way with the same effect:
The qmtest create command returns the value 0 if successful, or 2 if unsuccessful. After being
created, the “run” command is used to execute/run the test, as follows:
______________________________________________________________________________
Copyright © 2010 Arthur (Wesley) Kenzie. All Rights Reserved. Page 15 of 22
BCIT Computer Systems Technology
COMP 7081 Technical Issues in Software Development
Assignment 2
Author: Arthur (Wesley) Kenzie A00242330
______________________________________________________________________________
Running all tests in the “bb” test hierarchy would be done as follows:
If a specific “suite” of tests was to be run that included tests from multiple test hierarchies, then
that test suite would need to be created using the following “create” command format:
where:
(i) --id=nightly is the name assigned to this test suite;
explicit_suite.ExplicitSuite( ... ) specifies the built-in class used to identify all the test id's and
(iii)
suite id's that are to be pulled together into this suite;
The suite_ids parameter specifies a list of zero or more suite id's to be included in this suite, as for
example: suite_ids=“['bb.mmi']”;
Note: The QMTest framework also includes an optional graphical user interface, that can be used
instead of the command line interface shown above.
______________________________________________________________________________
Copyright © 2010 Arthur (Wesley) Kenzie. All Rights Reserved. Page 16 of 22
BCIT Computer Systems Technology
COMP 7081 Technical Issues in Software Development
Assignment 2
Author: Arthur (Wesley) Kenzie A00242330
______________________________________________________________________________
PART 2 – Testing
(a) Testing Functional Requirement: “The software shall be able to download a MP3 file from the
PC and play it back for preview.”
Expected Results:
The MP3 file will start to play, as evidenced by the audio signal coming from the Blueberry into the
ear buds plugged into the “audio out” jack.
Also, the MP3 file will play until completion of “preview” session.
(b) Testing Functional Requirement: “The software shall complete saving a picture to memory in
under 1 second.”
Expected Results:
Timer will show less than 1 second to complete saving of file.
______________________________________________________________________________
Copyright © 2010 Arthur (Wesley) Kenzie. All Rights Reserved. Page 17 of 22
BCIT Computer Systems Technology
COMP 7081 Technical Issues in Software Development
Assignment 2
Author: Arthur (Wesley) Kenzie A00242330
______________________________________________________________________________
Expected Results:
The selected MP3 file will be played, from start to completion, as evidenced by the audio signal
coming from the Blueberry into the ear buds plugged into the “audio out” jack.
Also, the “in-progress” display will be shown on the Blueberry screen while the MP3 file is playing,
but not after the song has finished playing.
______________________________________________________________________________
Copyright © 2010 Arthur (Wesley) Kenzie. All Rights Reserved. Page 18 of 22
BCIT Computer Systems Technology
COMP 7081 Technical Issues in Software Development
Assignment 2
Author: Arthur (Wesley) Kenzie A00242330
______________________________________________________________________________
1. Subversion command to add a new configuration item into the archive, the command to check
out the item, and the command to check in the item:
(a) “svn import” is the Subversion command used to add a new configuration item into the
archive. It is typically used with just 2 parameters as follows:
(b) “svn checkout” is the Subversion command used to check out the item. It is typically used in
order to checkout the latest revision of the entire archive, to a local working copy, as follows:
(c) “svn commit” is the Subversion command used to check in the item. It is typically used as
follows:
This updates the archive with any changes that have been made to the local working copy.
Conflicts that may exist at the time of the commit are highlighted to ensure integrity of the
archive.
______________________________________________________________________________
Copyright © 2010 Arthur (Wesley) Kenzie. All Rights Reserved. Page 19 of 22
BCIT Computer Systems Technology
COMP 7081 Technical Issues in Software Development
Assignment 2
Author: Arthur (Wesley) Kenzie A00242330
______________________________________________________________________________
2. Subversion main commands used by developers to work in parallel on the same project and
files:
(a) “svn checkout” is the Subversion command used by each developer to create a local working
copy of the project files. It is typically used in order to checkout the latest revision of the entire
archive as follows:
(b) “svn status” is the Subversion command used by each developer to list the status of any
changes they have made to their local working copies:
The -u parameter ensures that the status information also includes information about the archive,
and not just about the local working copy. In this case, if a file in the archive has been changed by
someone else, this will also be shown. The -v parameter provides more verbose output.
(c) “svn diff” is the Subversion command used by each developer to produce a “unified diff”
format listing of any and all changes they have made to their local working copies:
(d) “svn add” is the Subversion command used by each developer to add a new file or directory
to their local working copy:
(e) “svn move” is the Subversion command used by each developer to move a file or directory in
their local working directory to a new location:
______________________________________________________________________________
Copyright © 2010 Arthur (Wesley) Kenzie. All Rights Reserved. Page 20 of 22
BCIT Computer Systems Technology
COMP 7081 Technical Issues in Software Development
Assignment 2
Author: Arthur (Wesley) Kenzie A00242330
______________________________________________________________________________
(i) abc specifies the name of the source file or directory to be moved;
(f) “svn copy” is the Subversion command used by each developer to copy a file or directory in
their local working directory to a new location:
(g) “svn delete” is the Subversion command used by each developer to delete a file or directory
from their local working copy:
(h) “svn update” is the Subversion command used by each developer to update their local
working copies with the latest revision from the archive. This ensures that each developer is
working with the latest revisions of files that have been committed to the archive by other
developers. It also ensures that changes committed by other developers to the same files as those
in the local working directory are automatically merged into the local working copies as much as
possible. Any conflicts between local working copy changes and other developers' changes are
automatically flagged for resolution when they cannot be resolved automatically:
(i) “svn resolve” is the Subversion command used by each developer to resolve conflicts between
the archive and their local working copy. Commits will not be allowed as long as their are
conflicts:
______________________________________________________________________________
Copyright © 2010 Arthur (Wesley) Kenzie. All Rights Reserved. Page 21 of 22
BCIT Computer Systems Technology
COMP 7081 Technical Issues in Software Development
Assignment 2
Author: Arthur (Wesley) Kenzie A00242330
______________________________________________________________________________
(j) “svn revert” is the Subversion command used by each developer to abandon any changes
they have made to their local working copy of a file. Once “reverted” there would be no need to
“resolve” the file:
(k) “svn commit” is the Subversion command used by each developer to merge changes they
have made to their local working copies back into the archive:
______________________________________________________________________________
Copyright © 2010 Arthur (Wesley) Kenzie. All Rights Reserved. Page 22 of 22