Software Design and Development – Major Project
WAMPUM which unfortunately installs a range of web server components but the good thing was that it had a Myself server. There were a few things that I don’t like about this setup; the mall concern being that It has a bunch of UN-required components and features for the library system that take up a whole lot of space (the total install size of WAMPUM on a system is about MOB, depending on the system).
The reason I went with the WAMPUM server setup was that it was the easiest used compared to other portable Myself standalone servers. An external server for Myself: For portability issues I was considering having the program connect to my own external server but there are some big issues with this and for these reasons I went with the WAMPUM server: * The DIET proxy will block the server so the system would not function within a DIET campus. * All data going to the server could potentially be intercepted (very unlikely but could happen). The data is not locally stored. * If the server goes down the system would not be functional. * For every client, a database would be generated. If each client has many entries of items in their database, for example purposes let’s say a standard client has a EBB database of entries and there are 200 clients who have used the system, there would be BIBB space taken up on the server, decreasing server performance. * If there are many clients sending queries to the server the server will respond slowly (this is if the server can handle unlimited databases). The speed of the connection from the client system to the server would depend on the clients Internet speed. Findings on a more portable Myself server (standalone): I found another server in the last week of practical work that could Just be a Myself river on Its own without installing anything else, I did not choose this as it was harder to work with and not as easy as the WAMPUM setup. Logbook * Sketched some designs for the main LU (attached in this document). * Worked on the design of the system and how it would operate. 4th June * Designed the system.
Worked out how the system will function (l original plans were to write one helper file that had all the functions in it that I could call from the main code). 5th June * Created the main user interface. I changed the LU mostly around here Oust simple things such as field alignment and the sizes of the text etc. . * Wrote the basics functions (exiting). 6th – 7th June * Looked at a range of portable Myself servers. Looked at CAMP as a backup portable Myself server. * Found some standalone Myself servers but decided not to use them in this release as I could not get them to function properly with V.
NET. 7th – 9th June * Looked at a range of tutorials for SQL and how to work a Myself server with a V. NET program. * Looked at using the Uniform Myself standalone server instead of the WAMPUM setup but it didn’t use it as I was not sure how to connect it with V. NET. 10th – 11th June * Coded the add item feature. Located and remove simple errors (some of the variables I declared were spelled incorrectly to where I was using them). 12th – 15th June * Coded the remove item feature. * This was the feature that had the most errors.
This was due to the ID’s not matching the ID in the table because it was not auto incrementing correctly (If there were 2 items in the table the ID will go up to 2 but if they were deleted and a new item was added the ID for that item would be 3). * Found and fixed syntactic errors (the SQL syntax was not correct). 16th June * Coded the refresh list function. 17th June Modified the LU slightly, applied all changes to all windows and sub windows. 20th June * Tidied up the code and removed any variables/statements that should not have been there. 3rd June * Finished and published the program. Giant chart Refer to attached file (File name: “SAD Major -Jack Kirk – Giant chart. XSL”). Proposed interface design The User Interface: Throughout the design process the GUI for the system altered a bit. The main button setup was the thing that I altered graphically (the skins for the buttons). Here is a screens of the design I went with: Features I dropped/changed: The ‘Info/Help’ button was changed to ‘Info’ as I could not setup a full help guide on using the software or reporting problems due to time constraints. The remove button will not bring up a separate windows form. Instead the user will select one entry from the list to delete or not select anything to delete all entries (a message box asks for confirmation when the remove button is pressed to prevent the user accidentally wiping everything). * The search function was dropped. Due to issues with Myself and V. NET this functionality was dropped. I still have the search algorithm but I could not implement it properly in time. ‘Double click an entry to edit/view details’ function was not implemented but was planned to. The algorithms Adding an item (succeeded): Removing an item (succeeded): Refresh list (succeeded): PIP chart I Process I Output Input Search button I * Calls the search item window. * This window allows users to enter in text and once the search button is clicked a message tells the user that the function was not implemented. * If the user clicks Yes when it says “Function not implemented. Return to main? The window will close, if not the window will remain pen. I “Function not implemented. Return to main? ” I Add item button I *Calls the add item window. * Connects to the Myself server * Sets up the query string (adding the item) * Executes the query string as a Myself command * Closes the Myself connection * Refreshes the list. I successful “ITEM TITLE” will show in the list. ITEM_TYPE being the item type the user selected and “ITEM TITLE” being the title of that item. Error outcome:”Please enter all fields with valid input!
Remember no semicolons are allowed as input. ” I Remove item button I *Connects to the Myself server * Checks if an item is selected, if it is hen get the index of that item and add 1 to it (as V. NET’s indexes are O based) and set the query string to remove the current item. If nothing is selected set the query string to wipe the items in the database. * Execute the query string. * Close the Myself connection. * Refresh the list. I “The selected item will be removed. Elf no items are selected the list will be wiped.
Are you sure you want to delete the item/ s? ” I Info button I *Calls a window to display program information. I “Library system prototype developed by Jack Kirk for SAD prelims 2013. All program features have not been implemented in this prototype. This prototype program operates under a Creative Commons license (Attribution-Modernism 3. 0 Australia)” I Exit button I Prompts the user if they want to exit, if yes is selected the program will close, if no is Data flow diagram System flowchart The uses of a limited prototype What is a prototype?
A prototype program is a program that is not fully functional yet and is used for testing/development purposes. Advantages: * Used for testing purposes. * Plan out what the release version can look like. * All functions do not have to be fully operational, a dummy procedure can occur hen a button is pressed saying “This button was pressed. This button does…. ” User can report feedback about features they do and don’t like and the software developer can address and fix those in the next release. Since it is a prototype and not the full release being developed, less time is taken to develop it. Disadvantages: * Not fully functional * Some people could have the impression that it is the final product and stop using your software because there was a huge bug in the prototype you released to them. For example, what if you prototyped a program that required the user to input their intact details or PIN number and the program was released to some people, those people use it and a huge bug appears that somehow leaks all their information to everyone.
They won’t get their software from you anymore! Effectively communicating with users Why communicate with the users of your software? Feedback. The users of your software are the people that let you know what you are doing correctly and what you aren’t. Although every person is not going to have the same opinion (one person could want the LU to be pink and the text in Comic Sans and another user could want he I-Jell to remain the same). It is important to get the total of people who want a certain thing done (this can simply be done by using and online poll or survey).
Why should you care about people’s opinions? Having Just the software developer create software without having anyone’s opinions on the software would turn out a lot worse than having other people’s opinions as the software developer could like something that all the users hate and the users will either have to deal with that or in most cases not get their software from that developer anymore. How to communicate with our users: If you have your own website you can create polls and/or surveys for the users to complete.
If you do not have your own website you could implement the survey within your program or Just have a button which allows the user to tell the developer about bugs or what they like and don’t like via email. My selection of software language For my project I have chosen Visual Basic. NET as it is the most current language that we are learning in class to do our practical work and other students/staff can read goods and bad side of this language. Positive I Negative I Other students and staff can read and understand the code.
I Nowhere near as efficient as other languages such as C/C++ as it has to use so many resources to create the GUI and use the . NET framework. I It is much easier to create a GIG-Jell. I Not capable of cross platform as it requires the . NET framework. I Runs on Windows. I You are required to have the . NET framework version 4. 0 (or some other version) or higher to run V applications. I Easy to use and learn. I No cost to use the DID. I This table shows that there are more positive sides than negatives so I have decided that V. NET would be a good language to use for this project.