TM421 The M301 Project
(2006 presentation)
Project title: Software Development in
Java: the specification, design and implementation of a real world software
application
Two sample project descriptions are given
below.
Sample project description 1
Specific title
The development of a portable TFTP client
Description
[594
words]
Portable/mobile devices are beginning to play an
increasing role in modern use of Internet technology. Some of these devices
will need to download information when they connect to a network. I am planning
to develop a portable package that can be used to download files over the
Internet to a remote device.
The package
will be developed in such a way that it will contain subsystems of reusable
components. The package will be implemented in Java and these subsystems will
be Java classes that can be easily integrated into larger systems in order to
supply a file transfer service.
There will
be both a server and a client supplied as part of the package.
·
The client will only request files for transfer.
·
The server will only accept requests for transfer.
The classes
will not concern themselves with the authentication of either the server or the
client. To allow for wide usage the package will implement the Trivial File
Transfer Protocol (TFTP) as described in RFC1350. The TFTP is a simple protocol
that uses datagrams for communication.
Project scope
Classes
implementing both a server and a client will be built.
The client
will be used only to request files. A request to the client to either read or
write to a file will be regarded as an error.
The server
will be used only to supply files. A request to write to the server will be
regarded as an error.
The package
will use the networking classes supplied as part of the standard Java API in
the package java.net for the network transport. The Java API supplies support
for the use of datagrams. A datagram is a packet sent using the user datagram
protocol (UDP). The UDP protocol is connectionless and does not guarantee
delivery. Ensuring delivery and sequencing of packets is the responsibility of
the application. Correctly implementing this will be an important part of the
project.
The first
part of the project will be a domain analysis of the problem using UML to build
a model of the TFTP client/server interaction. Once a reasonable model has been
built, work will start on the design of the classes needed to build the client.
An incremental approach to the design and development will be adopted. Initial
design and development will focus on functionality to open a connection.
Part of the
project will be:
1 A simple
graphical test harness for the client package. The harness will allow a user to
open a connection to a server and view and save a down loaded file. It will
allow the user to enter the name of the TFTP client and the file to be
downloaded to it. The user will also be able to specify the directory in which
the file is to be stored.
2 A simple test
harness for the server that will start the server and display the activity of
the server. The activity will be displayed in a window and show for each
connection: the IP address of the client; the name of the file requested; the
time transfer starts; the time transfer is completed.
The use of
Java as the implementation language has two main advantages:
1 The resulting
compiled code will be portable between many different types of hardware and
operating systems.
2 Java already
provides classes to handle the underlying network protocol.
The first
deliverable is a simple model of the clientserver interaction, built with
UML. The final deliverable will include the Java package containing both the
server and the client classes together with appropriate test harnesses.
Project schedule
Start date:
February 200x End
date: December 200x
Total time
allocation: 260 hours
Fixed
intermediate and final deadlines and approximate time allocation
|
TMA 01 |
[the cut-off date] |
48 hours |
|
TMA 02 |
[the cut-off date] |
48 hours |
|
TMA 03 |
[the cut-off date] |
60 hours |
|
Report submission |
[the cut-off date] |
84 hours |
|
TMA 04 |
[the cut-off date] |
20 hours |
|
Month |
Planned activity |
|
February |
Read project briefing
notes.
Identify requirements for
project lifecycle, deadlines, deliverables etc.
Determine project topic and
initiate requirements gathering. |
|
March |
Review M301 material.
Identify appropriate background
reading.
Produce TMA 01. |
|
April |
Rework proposal following
comments from tutor.
Identify skills weaknesses.
Plan detailed project
schedule.
Finalize analysis of
requirements. |
|
May |
Detailed flowchart
modelling.
Ensure weak skills areas are
supported.
Finalize project plan.
Summarize background reading
(probably focused on TFTP and Java API).
Produce TMA 02. |
|
June |
Further flowchart modelling
paper walkthrough to ensure specified requirements can be met.
Start to specify test
scenarios
Ensure familiarity with
features/facilities of Java API. |
|
July |
Finalize model and program
package (expected slippage).
Initial implementation work
(expected slippage).
Produce TMA 03.
Examine first draft. |
|
August |
Review system specification and
Java package following tutor review.
Update and extend first draft
implementation. |
|
September |
Implementation and review of
product, including collection of test results, should be ongoing (expected
slippage point).
Start work on project report
plan content and structure and document background reading. |
|
October |
Decide on what is implementable
in remaining time.
Consolidate existing work
design freeze, implementation should focus on essential incomplete
features and prioritize remaining activities.
Assemble and organize material
for appendixes deigns, code, test results etc.
Evaluation of product, process
and project.
Ongoing project report work
should be almost complete for last week of October.
Proofreading. |
|
November |
Complete remaining
implementation and documentation.
Revise project report
entirely.
Submit project report.
|
|
December |
Produce TMA 04.
End. |
Bibliography
Comer, D.E. (2000)
Internetworking with TCP/IP Vol.1: Principles,
Protocols, and Architecture, 4th edn, Prentice Hall, ISBN
0130183806.
British Computer Society (1998)
Data Protection Everybodys
Business: A Practical Guide for Professionals
and Business Managers, ISBN 1902505042.
Hughes, M., Shoffner, M. and Hamner, D.
(1999) Java Network Programming, 2nd edn,
Manning, ISBN 188477749X.
http://www.omg.org (Accessed October
2003. Website of the Object Management Group contains links to UML
pages.)
http://www.faqs.org/rfcs (Accessed
October 2003. A source of RFCs and other Internet-related documents.)
I am using the text
Internetworking with TCP/IP Vol.1: Principles,
Protocols, and Architecture as a primary source of information relating
to the Internet and the various standard protocols that are used. This text
provides coverage not only of the protocols themselves but also examples of how
these protocols can be implemented. The advantage of this text is that it
covers not only the standard Internet protocols but also the use of the Java
networking and I/O APIs.
This text has given me a good
understanding of the IP transport protocols TCP and UDP. I will need this
understanding of how the UDP protocol is used for my project. I will get
insights into the techniques that can be used by studying the protocols such as
Finger DNS and HTTP that are discussed in this book. When I come to the
implementation stage of the project I expect the practical approach adopted
here will be very useful in helping me develop a robust application.
Equipment or software
No additional software or hardware will
be used beyond the standard course hardware and software packages. The project
involves the development of a standard Java package which can be implemented
using the features and facilities found in the M301 course software.
Sample project description 2
Specific title
SHUDBUR - Simulated Home Use to Deter BURglars
Description
[693 words]
I want to investigate whether I could develop a product to
help deter burglars. This project would develop the ideas to the point where I
could approach a company who would then take the product further, or a venture
capitalist who would invest in my taking the idea further.
The idea is to use my home computer to control my home
lights to give the appearance I am at home while in fact I am away and the
house is empty. Some people put simple timers on wall sockets to switch lights
on and off to give this appearance, but something more sophisticated is needed
to give the real appearance of somebody watching TV, then switching it off,
moving around the house, going to bed, and so on.
I need to investigate the requirements for such a system, and the
potential market, and will do this by
interviewing friends and colleagues at work. To be able to do this effectively
I will need to study requirements analysis methods, and select some appropriate
method. I am attracted by focus groups, ever since I was involved in such a
focus group to determine the potential for a proposed new database product from
Oracle. I will also talk to one or two suppliers of home security systems.
Should the sequence of lights be variable from day to day, should they be
subject to random variations, should they still be able to run even though
somebody is in the house and overriding the simulator?
I will also investigate the technical feasibility of such a system. How could my
home computer actually switch on and off mains electricity circuits? I will
need to investigate special-purpose devices and how these might be controlled
through a local area network. How could my home computer communicate with local
devices in the home? I have searched the Internet for standards for connecting
devices in the home, and have found some solutions. I will investigate this
further so that my proposal can conform to a suitable standard. Could I buy a
board to add to my PC that conformed, and could I control my lights and similar
devices?
I will then model the proposed
system using UML. I will develop a Use Case Model to capture the various
user actions necessary to set up and control the system. I will produce a
preliminary class model that will in effect be a meta-model for a house and the
devices that will be controlled within it. To test this I will develop an
instance model for my own house and the actual devices I would want to control
if I did build this. I will then carry through my design into a full set of
sequence diagrams, but do not expect to produce any state diagrams. I will plan
an initial set of tests.
If this idea were to be carried through into a product, I
expect a special-purpose control panel would
need to be built. I wont have time or the facilities to build one, but I
would like to do some experimental designs on paper that would be simple enough
for even the most technically unsophisticated to use. I want to do a good job
here, and will follow up some of the literature on humancomputer
interface design that my course referred to. I will evaluate my ideas using a
few of the people who earlier helped me with my requirements analysis.
Finally, if time permits, I would like to build an actual
prototype of the software using Java. This
should be viewed as an optional item in a time-boxed development.
Having read about time-boxing, I have been really impressed; it seems
such a great idea. I have set up my project schedule using time-boxing of each
stage, with some mandatory results I must produce, and some optional results I
will only achieve if the mandatory activities proceed more-or-less to plan.
What I am proposing here is to use time-boxing recursively, so the whole
project becomes time-boxed by the time allowed for the project, with the
activities described earlier being mandatory, and the final building of the
prototype being the optional activity.
Project schedule
Start date: February
200x End date:
December 200x
Total time allocation: 260 hours
Fixed intermediate and final
deadlines and approximate time allocation
|
TMA 01 |
[the cut-off date] |
48 hours |
|
TMA 02 |
[the cut-off date] |
48 hours |
|
TMA 03 |
[the cut-off date] |
60 hours |
|
Report submission |
[the cut-off date] |
84 hours |
|
TMA 04 |
[the cut-off date] |
20 hours |
|
Timebox (TB) |
Core
activities |
Optional activities |
|
TB1
Technical feasibility
4050 hours
April/May |
Revise communication systems
from M301.
Investigate networking system
for home use, focusing on systems that use the electricity mains circuits.
Identify suitable devices for
switching mains.
Procure sample devices and
install and prove their capabilities.
Write short report on technical
feasibility.
Produce TMA 02. |
Produce simple demonstration of
home switching system. |
|
TB2
Requirements elicitation
4050 hours
June/July |
Revise M301 material and study
textbooks on requirements elicitation.
Prepare for focus group
interviews.
Conduct focus group with five
friends.
Conduct focus group with five
colleagues.
Carry out structured interview
with two suppliers of home security products.
Prepare statement of
requirements.
Produce TMA 03. |
Conduct further focus group
interviews with other groups of friends.
Conduct further focus group
interviews with other groups of colleagues. |
|
TB3
Requirements specification
6070 hours
August/September |
Revise UML modelling in M301,
and study dSouza and Wills.
Produce Class model for
system.
Produce instance model for my
home.
Produce Use Case model.
Review with one focus
group.
Prepare report on UML
models. |
Review with other focus
groups.
Produce sequence
diagrams. |
|
TB4
User control panel design
2025 hours
September/October/November |
Study HCI design in Nielsen and
other texts.
Develop two alternative
layouts.
Evaluate layouts with one focus
group.
Prepare report on Panel
Design. |
Develop further alternative
layouts.
Evaluate with further focus
groups. |
|
TB5
Implementation if time
available
October/November |
Produce sequence diagrams.
Code critical parts of system
in Java.
Write report on
implementation. |
Code whole system in Java.
Fully test system. |
|
TB6 |
Integrate material from earlier
stages to produce project report. |
|
|
December |
Produce TMA 04.
End. |
|
|
|
|
|
Bibliography
DSouza, D.F. and Wills, A.C. (1999)
Objects, Components and Frameworks with UML: The
Catalysis Approach, Addison-Wesley, ISBN 0201310120.
Nielsen, J. (1993) Usability
Engineering, Academic Press Professional, ISBN 0125184069.
Stapleton, J. (1997) DSDM: Dynamic
Systems Development Method, Addison Wesley, ISBN 0201178893.
Vaughn, S., Schumm, J.S. and Sinagub, J. (1996) Focus Group Interviews in Education and Psychology,
Thousand Oaks, CA, SAGE Publications, ISBN 0803958927.
Focus groups are covered in just under three pages
(214217) in Nielsens book Usability
Engineering, seen as a means of usability assessment. The description of
focus groups is very rudimentary, and there is really not enough information
there on which to base my own use of focus groups. The text by Vaughn
et al was therefore very welcome. This is an
excellent book and having now read it I feel confident about running a number
of focus groups to elicit my requirements, and then later evaluate these. The
book tells me how to prepare for a focus group interview, establishing the
purpose, objectives and criteria of the study, developing a sampling plan and
moderators guide and other activities. It then tells me how to run the
interview, keeping appropriate records. Finally it tells me how to analyse the
data collected, and combine it with other data, notably from quantitative
methods. Altogether this is going to be very useful during my
requirements-gathering phase.
Equipment or software
I will use the M301 software package Rational Rose to
develop my UML models. I will develop Java code using the M301 IDE. So far,
everything is standard.
I expect to procure specialist hardware as part of my
evaluation of the technical feasibility of the idea this is likely to
mean adding a board to my PC, installing appropriate drivers, and developing a
little software to control one or more of the lights in my house. I do not
expect my tutor to be able to help me here, and will instead turn to colleagues
at my work.