Csc8710 Software Design and Modelling
Csc8710 Software Design and Modelling
The mobile app to provide secure message system is designed using microservices architecture.
Small-sized, stateless services (microservices) that have a single responsibility are interfaced to
create the application. These services include registration, authentication, send message, and
receive message. The characteristics of the mobile app microservices include they are
interfaces, and are built around business capabilities (O'Connor, Elger & Clarke 2017, p. 4). The
mobile app enables users to send and receive secured messages. The registration service will
facilitate user registration where the user will provide their personal identifiable information,
security information, contact number and email address. The authentication service will facilitate
identification of the user using username and password, two-factor authentication, reset of
Microservice architecture for a mobile app which provides a secure message system uses
asymmetric encryption to secure messages between sender and recipient. The send message
service uses the mobile phone number provided by the sender to determine the receiver of the
message. The message is then encrypted using the sender’s private key assigned to them by the
asymmetric encryption program. This makes the message only readable by the anticipated
recipient. The receive message service uses the public key of the sender to decrypt the received
The mobile app services will use asynchronous interaction to establish communication among
each other. Asynchronous interaction will involve a service issuing a request to another services,
which is then queued by the requested service. The requesting service will continue its processes
without having to wait for the requested service to finish its process. The mobile app services
will have indirect service communication where requests will be sent and received through the
API Gateway (REST API) (De Iasio & Zimeo 2021, p. 26).
The features of the iLearn system need to be tested to ensure the functionalities are implemented
As a teacher, I want to be able to share uploaded information with other group members.
As a teacher, I want to be able to send email to all group members using a single email
address.
As a teacher, I want to be able to create a group of students and teachers so that I can share
As a teacher, I want the system to make it easy for me to select the students and teachers to
be added to a group.
Test that the teacher is provided an option to share uploaded information when it is
selected. Test that the screen displays a list of group members the teacher intends to share
the information with, along with cancel and confirm buttons. Test that the sharing process is
Test that an error message and retry screen is displayed when the information to be shared
cannot be shared, has incorrect format, or its size exceeds the specified limit.
confirms creation of site. Test that the wikis, blogs, or web sites is cancelled when teacher
selects cancel.
Send email
Test that teacher is given an option to send email to all group members. Test that the list of
group members who have received the email is displayed when the email is send.
Create a group
Test that the teacher is offered an option to create a group consisting of students and
teachers. Test that a group name is prompted when teacher clicks create.
Test that a menu is provided to add new group member. Test that the teacher or student
Automated unit tests are written based on programmer’s perspective. Typically, the programmers
make sure that a particular unit performs specific tasks as required. Therefore, developing
automated unit tests is easier compared to automated feature test because the programmers apply
their set of skills and experience to accomplish the development process. Automated unit tests
are simple to develop because it only requires to check if a unit returns the expected result. On
the other hand, automated feature tests are development from the use’s perspective. The feature
tests have to ensure the feature functions as specified by the user. Automated feature tests require
access to the product’s graphical user interface (GUI), making it expensive to automate.
Developing the automated feature tests requires understanding of the feature by knowing the
actual user requirement. This involves review developers’ release notes, which may not be clear
Git transformed source code management by creating a distributed version control system that
manages Linux kernel code. This means that Git maintains a clone of repository on developer’s
computer rather than only keeping the copies of the code files the users are working on. Github,
on the other hand, is a cloud hosting service that enables developers to manage the Git
repositories (Davis 2015, p. 159). The use of Git and Github simplifies open-source development
connectivity. Notably, every developer working on a project has his or her own copy of the
repository, which can be used to restore the shared repository in case they are damaged. Also,
Git and Github makes commitment of changes to the shared repository is fast and local
committing changes. Git’s distributed version control system simplifies the local
experimentation process. Developers can try and experiment their different approaches without
compromising the rest of the tasks worked by other project developers (Yu et al. 2017, p. 1).
REFERENCES
Davis, RC 2015, 'Git and GitHub for Librarians', Behavioral & social sciences librarian, vol. 34, no. 3, pp.
158-64, 10.1080/01639269.2015.1062586.
<https://usq.primo.exlibrisgroup.com/permalink/61UOSQ_INST/1d4atb2/cdi_informaworld_taylorfranci
s_310_1080_01639269_2015_1062586>.
De Iasio, A & Zimeo, E 2021, 'A framework for microservices synchronization', Software, practice &
experience, vol. 51, no. 1, pp. 25-45, 10.1002/spe.2877.
<https://usq.primo.exlibrisgroup.com/permalink/61UOSQ_INST/1d4atb2/cdi_crossref_primary_10_100
2_spe_2877>.
Fujisaki, E & Okamoto, T 2013, 'Secure Integration of Asymmetric and Symmetric Encryption Schemes',
Journal of cryptology, vol. 26, no. 1, pp. 80-101, 10.1007/s00145-011-9114-1.
<https://usq.primo.exlibrisgroup.com/permalink/61UOSQ_INST/1d4atb2/cdi_gale_infotracacademicone
file_A321734393>.
Nass, M, Alégroth, E & Feldt, R 2021, 'Why many challenges with GUI test automation (will) remain',
Information and Software Technology, vol. 138, p. 106625, 10.1016/j.infsof.2021.106625.
<https://usq.primo.exlibrisgroup.com/permalink/61UOSQ_INST/1d4atb2/cdi_scopus_primary_2012045
118>.
O'Connor, RV, Elger, P & Clarke, PM 2017, 'Continuous software engineering—A microservices
architecture perspective', Journal of software : evolution and process, vol. 29, no. 11, pp. e1866-n/a,
10.1002/smr.1866.
<https://usq.primo.exlibrisgroup.com/permalink/61UOSQ_INST/1d4atb2/cdi_crossref_primary_10_100
2_smr_1866>.
Yu, W, Na, W, Jessica, K & John, MC 2017, 'The appropriation of GitHub for curation', PeerJ preprints,
10.7287/peerj.preprints.2952v1.