Individual Report. Student Name: Conor Flanagan SID:

Size: px
Start display at page:

Download "Individual Report. Student Name: Conor Flanagan SID:"

Transcription

1 Individual Report Student Name: Conor Flanagan SID: Task 1: To complete design specification, implementation, testing and integration evidence with a report supported by research with references in the CU Harvard referencing style in a maximum of 1,000 words Design Report The key functionality I have chosen to design and implement is that of check-in customers to booked sessions. The Class Diagram above details my design for the check-in functionality for the Sphere Booking & Check-In System case study. The design adheres to the layered architectural style, utilizing the User Interface Layer to present the GUI boundary class named CheckInGUI which presents the menu UI, handling inputs and outputs of the functionality. This class will simply contain the UI objects, as well as code generated by our chosen library to generate the main GUI. The Application Logic Layer contains a facade controller class named CheckInController which represents the whole functionality and controls all the other classes, takes input from and outputs to the User Interface Layer via a one-to-one multiplicity with the CheckInGUI class, and requests and sends data to the database via the data classes. Customer and Session data are stored via their respective data classes in the Domain Data Layer, and their equivalent Data Access Layer classes (customerdb and sessiondb) handle the data reading and writing, and permeate the data to the SQL server database (YL Hedley 2016). This design attempts to apply the principles of the General Responsibility Assignment Software Patterns (henceforth referred to as GRASP). GRASP implies that responsibilities of a system can be provided by applying specific principles and idioms as a pattern, a structured format describing the problem and solution (C Larman 1998). Each pattern has a name, definition, and requires forethought to program into the system. The CheckInController class uses a Facade Controller pattern, which means that the responsibility for receiving and handling system events is assigned to the class. This ensures that all system events are managed by the same class in the same use case scenario. The Information Expert pattern requires that responsibilities for handling data are assigned to the class that has the information necessary to fulfill it. For my functionality, the information required to check-in a customer would be the session data and the customer data from the database. As each of these are stored in a database and accessed individually, the information can be fed to the controller class as the expert for the information. SQL database access via SQL queries is per request from the controller class, but the responsibility of performing these queries is given to the database classes themselves, as they have the information necessary and are the only classes able to Coventry University Conor Flanagan 1

2 interact directly with the SQL database. Low Coupling means that elements are less strongly connected to other elements within the same system. Ideally, elements should only have a strong connection with two or other element or class (with the exception of a controller). A class with high coupling relies too much on other classes. My design bears this in mind and only has each class from layers other than the application logic layer coupled with only 1 other class excluding the controller (C Larman 1998). The two data classes, customer and session, do not actually store a large amount of data, they simply store individual records of the data retrieved from the database. This aligns with the Indirection pattern, where an intermediate object mediates between other components, in this case the data classes mediate information between their database classes and the controller. The current design of my functionality supports the use of the facade Gang of Four (GoF). The Facade pattern is a structural pattern that defines the relationships between classes or entities. It requires that one class act as a simplified interface with a more complex subsystem. The facade class contains members which access the subsystem on behalf of the user, hiding the methods of implementation (R Carr 2008). In the case of my design, the controller class acts as a facade, all of it s attributes being generated by other classes and it s operations only running or modifying other classes or modules. The GUI interface allows the user to control the controller class, and in-turn SQL commands will be run in the database classes (customerdb and sessiondb) using information from the data classes (customer and session). More operations can be performed using the subsystems of these classes, however for the specified functionality, only those which can be performed via the controller are required and so the required system segment is fully available for use by the user (SourceMaking 2016). Functionality Source Code: checkincontroller.py import checkingui as gui import customer import session import db import sys import re class checkincontroller : def init ( self ): """Initializes the GUI using the PyQt4 library""" app = gui. QtGui. QApplication ( sys. argv ) mainwindow = gui. QtGui. QMainWindow () self. ui = gui. Ui_CheckInWindow () self. ui. setupui ( mainwindow ) self. ui. checkinbutton. clicked. connect ( self. checkin ) self. ui. uncheckbutton. clicked. connect ( self. uncheck ) mainwindow. show () #Generating mediator classes self. customer = customer. customer () self. ssn = session. session () sys. exit ( app. exec ()) def checkin ( self ): """Function to check-in the customer by changing the SQL database""" sdb = db. sessiondb () #Generates database class that opens the database #Setting mediator variables via the GUI input self. ssn. setid ( self. ui. sessionidedit. toplaintext ()) Coventry University Conor Flanagan 2

3 self. ssn. setcustomerid ( self. ui. customeridedit. toplaintext ()) self. ssn. setcheckin ( 1 ) self. sessionid = self. ssn. getid () self. customerid = self. ssn. getcustomerid () self. checkedin = self. ssn. getcheckedin () #Calls query function, runs SQL query to modify database query = sdb. checkincustomer ( self. sessionid, self. customerid ) #Error handling if query == 2 : self. ui. typeerrorwindow ( 'TypeError', 'Incorrect type used', 'Error' ) elif query == False : self. ui. errorwindow ( 'StandardError', 'Session booking does not exist', 'Error' ) #Success message elif query == True : self. ui. successwindow () def uncheck ( self ): sdb = db. sessiondb () #Generates database class that opens the database #Setting mediator variables via the GUI input self. ssn. setid ( self. ui. sessionidedit. toplaintext ()) self. ssn. setcustomerid ( self. ui. customeridedit. toplaintext ()) self. ssn. setcheckin ( 0 ) self. sessionid = self. ssn. getid () self. customerid = self. ssn. getcustomerid () self. checkedin = self. ssn. getcheckedin () #Calls query function, runs SQL query to modify database query = sdb. uncheckcustomer ( self. sessionid, self. customerid ) if query == 2 : self. ui. typeerrorwindow ( 'TypeError', 'Incorrect type used', 'Error' ) elif query == False : self. ui. errorwindow ( 'StandardError', 'Session booking does not exist', 'Error' ) elif query == True : self. ui. successwindow () c = checkincontroller () sys. exit ( app. exec ()) checkingui.py - Automatically generated by PyQt using PyQt Designer # -*- coding: utf-8 -*- # Form implementation generated from reading ui file 'checkingui.ui' # # Created by: PyQt4 UI code generator # # WARNING! All changes made in this file will be lost! from PyQt4 import QtCore, QtGui from PyQt4. QtGui import QMessageBox try: _fromutf8 = QtCore. QString. fromutf8 except AttributeError: def _fromutf8 ( s ): return s Coventry University Conor Flanagan 3

4 try: _encoding = QtGui. QApplication. UnicodeUTF8 def _translate ( context, text, disambig ): return QtGui. QApplication. translate ( context, text, disambig, _encoding) except AttributeError: def _translate ( context, text, disambig ): return QtGui. QApplication. translate ( context, text, disambig) class Ui_CheckInWindow ( object ): def setupui ( self, CheckInWindow ): CheckInWindow. setobjectname ( _fromutf8 ( "CheckInWindow" )) CheckInWindow. resize ( 419, 246) CheckInWindow. setminimumsize ( QtCore. QSize ( 419, 246 )) CheckInWindow. setmaximumsize ( QtCore. QSize ( 419, 246 )) self. centralwidget = QtGui. QWidget ( CheckInWindow) self. centralwidget. setobjectname ( _fromutf8 ( "centralwidget" )) self. title = QtGui. QLabel ( self. centralwidget) self. title. setgeometry ( QtCore. QRect ( 10, 10, 496, 39 )) font = QtGui. QFont () font. setpointsize ( 24) self. title. setfont ( font) self. title. setobjectname ( _fromutf8 ( "title" )) self. description = QtGui. QLabel ( self. centralwidget) self. description. setgeometry ( QtCore. QRect ( 60, 40, 291, 21 )) self. description. setobjectname ( _fromutf8 ( "description" )) self. widget = QtGui. QWidget ( self. centralwidget) self. widget. setgeometry ( QtCore. QRect ( 80, 70, 261, 71 )) self. widget. setobjectname ( _fromutf8 ( "widget" )) self. gridlayout = QtGui. QGridLayout ( self. widget) self. gridlayout. setobjectname ( _fromutf8 ( "gridlayout" )) self. sessionidlabel = QtGui. QLabel ( self. widget) self. sessionidlabel. setobjectname ( _fromutf8 ( "sessionidlabel" )) self. gridlayout. addwidget ( self. sessionidlabel, 0, 0, 1, 1) self. sessionidedit = QtGui. QTextEdit ( self. widget) self. sessionidedit. setobjectname ( _fromutf8 ( "sessionidedit" )) self. gridlayout. addwidget ( self. sessionidedit, 0, 1, 1, 1) self. customeridlabel = QtGui. QLabel ( self. widget) self. customeridlabel. setobjectname ( _fromutf8 ( "customeridlabel" )) self. gridlayout. addwidget ( self. customeridlabel, 1, 0, 1, 1) self. customeridedit = QtGui. QTextEdit ( self. widget) self. customeridedit. setobjectname ( _fromutf8 ( "customeridedit" )) self. gridlayout. addwidget ( self. customeridedit, 1, 1, 1, 1) self. widget1 = QtGui. QWidget ( self. centralwidget) self. widget1. setgeometry ( QtCore. QRect ( 180, 150, 161, 61 )) self. widget1. setobjectname ( _fromutf8 ( "widget1" )) self. verticallayout = QtGui. QVBoxLayout ( self. widget1) self. verticallayout. setobjectname ( _fromutf8 ( "verticallayout" )) self. checkinbutton = QtGui. QPushButton ( self. widget1) self. checkinbutton. setobjectname ( _fromutf8 ( "checkinbutton" )) self. verticallayout. addwidget ( self. checkinbutton) self. uncheckbutton = QtGui. QPushButton ( self. widget1) self. uncheckbutton. setobjectname ( _fromutf8 ( "uncheckbutton" )) self. verticallayout. addwidget ( self. uncheckbutton) CheckInWindow. setcentralwidget ( self. centralwidget) self. statusbar = QtGui. QStatusBar ( CheckInWindow) self. statusbar. setobjectname ( _fromutf8 ( "statusbar" )) CheckInWindow. setstatusbar ( self. statusbar) self. retranslateui ( CheckInWindow) QtCore. QMetaObject. connectslotsbyname ( CheckInWindow) def typeerrorwindow ( self, etype, text, title ): window = QMessageBox () window. seticon ( QMessageBox. Critical) window. settext ( etype) window. setinformativetext ( text) Coventry University Conor Flanagan 4

5 window. setwindowtitle ( title) window. setstandardbuttons ( QMessageBox. Ok) window. exec_ () def errorwindow ( self, etype, text, title ): window = QMessageBox () window. seticon ( QMessageBox. Critical) window. settext ( etype) window. setinformativetext ( text) window. setwindowtitle ( title) window. setstandardbuttons ( QMessageBox. Ok) window. exec_ () def successwindow ( self ): window = QMessageBox () window. seticon ( QMessageBox. Information) window. settext ( 'Operation Succesful') window. setinformativetext ( 'Customer check-in status has been changed') window. setwindowtitle ( 'Success') window. setstandardbuttons ( QMessageBox. Ok) window. exec_ () def retranslateui ( self, CheckInWindow ): CheckInWindow. setwindowtitle ( _translate ( "CheckInWindow", "CheckInWindow", None )) self. title. settext ( _translate ( "CheckInWindow", "SPHERE Customer Check In", None )) self. description. settext ( _translate ( "CheckInWindow", "Enter a session ID and a customer ID to check a customer in", None )) self. sessionidlabel. settext ( _translate ( "CheckInWindow", "Enter Session ID:", None )) self. customeridlabel. settext ( _translate ( "CheckInWindow", "Enter Customer ID:", None )) self. checkinbutton. settext ( _translate ( "CheckInWindow", "Check-In", None )) self. uncheckbutton. settext ( _translate ( "CheckInWindow", "Uncheck", None )) if name == " main ": import sys app = QtGui. QApplication ( sys. argv) CheckInWindow = QtGui. QMainWindow () ui = Ui_CheckInWindow () ui. setupui ( CheckInWindow) CheckInWindow. show () sys. exit ( app. exec_ ()) customer.py class customer: """Mediator class for storing customer data""" def init ( self ): self. ID = None self. firstname = None self. lastname = None #Functions for getting attributes def getid ( self ): return self. ID def getfirstname ( self ): return self. firstname def getlastname ( self ): return self. lastname #Functions for setting attributes def setid ( self, id ): self. ID = id return self. ID Coventry University Conor Flanagan 5

6 def setfirstname ( self, firstname ): self. firstname = firstname return self. firstname def getlastname ( self, lastname ): self. lastname = lastname return self. lastname session.py class session: """Mediator class for storing session data""" def init ( self ): self. ID = None self. customerid = None self. checkedin = None #Functions for getting attributes def getid ( self ): return self. ID def getcustomerid ( self ): return self. customerid def getcheckedin ( self ): return self. checkedin #Functions for setting attributes def setid ( self, id ): self. ID = id return self. ID def setcustomerid ( self, customerid ): self. customerid = customerid return self. customerid def setcheckin ( self, checkedin ): self. checkedin = checkedin return self. checkedin db.py import pymysql import re class customerdb: """Class to access customer table in the database""" def init ( self ): self. conn = pymysql. connect ( host = 'localhost', port = 3306, user = 'rppt', passwd = '', db = 'sphere') self. c = self. conn. cursor () def hasletters ( self, inputstring ): #Checks if the input is empty return bool ( re. search ( r '^[a-za-z]+$', inputstring )) def query ( self, sql ): #Executes the specified sql command self. c. execute ( sql) self. conn. commit () self. closedb () def querydata ( self, sql ): Coventry University Conor Flanagan 6

7 #Checks if sql command returns data but does not commit it self. c. execute ( sql) return self. c. fetchall () def closedb ( self ): self. conn. close () class sessiondb: """Class to access session table in the database""" def init ( self ): self. conn = pymysql. connect ( host = 'localhost', port = 3306, user = 'root', passwd = '', db = 'sphere') self. c = self. conn. cursor () def hasletters ( self, inputstring ): #Checks if the input is empty return bool ( re. search ( r '^[a-za-z]+$', inputstring )) def query ( self, sql ): #Executes the specified sql command self. c. execute ( sql) self. conn. commit () self. closedb () def querydata ( self, sql ): #Checks if the sql command returns data but does not commit it self. c. execute ( sql) return self. c. fetchall () def checkincustomer ( self, sid, cid ): #Checks in customer to specified session, if the session table contains the combination if self. hasletters ( sid ) == True or self. hasletters ( cid ) == True: return 2 elif self. querydata ( "SELECT * FROM session WHERE (sessionid = " + str ( sid ) + " AND customerid = " + str ( cid ) + ")" )!= (): self. query ( "UPDATE session SET checked_in = 1 WHERE (sessionid = " + str ( sid ) + " AND customerid = " + str ( cid ) + ")") return True else: return False def uncheckcustomer ( self, sid, cid ): #Unchecks the customer to specified session, if the session table contains the combination if self. hasletters ( sid ) == True or self. hasletters ( cid ) == True: return 2 elif self. querydata ( "SELECT * FROM session WHERE (sessionid = " + str ( sid ) + " AND customerid = " + str ( cid ) + ")" )!= (): self. query ( "UPDATE session SET checked_in = 0 WHERE (sessionid = " + str ( sid ) + " AND customerid = " + str ( cid ) + ")") return True else: return False def closedb ( self ): self. conn. close () Coventry University Conor Flanagan 7

8 Functionality Demo Screenshots Initial GUI window Outcome of check-in pressed with correct input data Coventry University Conor Flanagan 8

9 Evidence of correct data being changed on the MySQL server Outcome of check-in pressed with invalid input data Coventry University Conor Flanagan 9

10 Outcome of check-in pressed with incorrect data type Uncheck button returns the same feedback for success, error and TypeError, simply changes the database field to a different value. Coventry University Conor Flanagan 10

11 Automated Unit Testing Automated testing was completed using the python unittest library. Completed automated testing on the methods checkincustomer and uncheckcustomer using the following test source code. import unittest import db import session import pymysql class TestFunctions ( unittest. TestCase ): def test_checkin ( self ): self. conn = pymysql. connect ( host = 'localhost', port = 3306, user = 'root', passwd = '', db = 'sphere' ) self. c = self. conn. cursor () testdb = db. sessiondb () checkedinsession = self. c. execute ( "SELECT sessionid FROM session WHERE sessionid = 1" ) self. assertequal ( testdb. checkincustomer ( 1, 1 ), True ) #Valid data self. assertequal ( testdb. checkincustomer ( 1, 2 ), False ) #Invalid data self. assertequal ( testdb. checkincustomer ( 10, 10 ), False ) #Invalid data self. assertequal ( testdb. checkincustomer ( 'text', 'text' ), 2 ) #Incorrect data type self. assertequal ( testdb. uncheckcustomer ( 1, 1 ), True ) #Valid data self. assertequal ( testdb. uncheckcustomer ( 1, 2 ), False ) #Invalid data self. assertequal ( testdb. uncheckcustomer ( 10, 10 ), False ) #Invalid data self. assertequal ( testdb. uncheckcustomer ( 'text', 'text' ), 2 ) #Incorrect data type self. conn. commit () self. c. close () def test_getters ( self ): ses = session. session () self. assertequal ( ses. getid (), ses. ID ) self. assertequal ( ses. getcustomerid (), ses. customerid ) self. assertequal ( ses. getcheckedin (), ses. checkedin ) def test_setters ( self ): ses = session. session () self. assertequal ( ses. setid ( 1 ), ses. ID ) self. assertequal ( ses. setcustomerid ( 1 ), ses. customerid ) self. assertequal ( ses. setcheckin ( 0 ), ses. checkedin ) if name == " main " : t = TestFunctions () unittest. main ( exit = False) Coventry University Conor Flanagan 11

12 Outcome of running specified test file: (If not readable due to compress, states Ran 3 tests in 0.037s OK ) Group Integrated Program Demo - Functionality Integrated with Mir Gabare s Functionality Integrated our two functionalities together using a main menu GUI. Both functionalities use and access the same database. MainMenu.py # -*- coding: utf-8 -*- # Form implementation generated from reading ui file 'C:\Users\Conor\Desktop\260CTSphere\Mir+Conor\MainMenu.ui' # # Created by: PyQt4 UI code generator # # WARNING! All changes made in this file will be lost! from PyQt4 import QtCore, QtGui import os import sys from os import system as sh try: _fromutf8 = QtCore. QString. fromutf8 except AttributeError: def _fromutf8 ( s ): return s try: _encoding = QtGui. QApplication. UnicodeUTF8 def _translate ( context, text, disambig ): return QtGui. QApplication. translate ( context, text, disambig, _encoding) except AttributeError: def _translate ( context, text, disambig ): return QtGui. QApplication. translate ( context, text, disambig) class Ui_MainWindow ( object ): def setupui ( self, MainWindow ): MainWindow. setobjectname ( _fromutf8 ( "MainWindow" )) MainWindow. resize ( 800, 600) MainWindow. setminimumsize ( QtCore. QSize ( 800, 600 )) Coventry University Conor Flanagan 12

13 MainWindow. setmaximumsize ( QtCore. QSize ( 800, 600 )) self. centralwidget = QtGui. QWidget ( MainWindow) self. centralwidget. setobjectname ( _fromutf8 ( "centralwidget" )) self. pushbutton = QtGui. QPushButton ( self. centralwidget) self. pushbutton. setgeometry ( QtCore. QRect ( 280, 160, 161, 61 )) self. pushbutton. setobjectname ( _fromutf8 ( "pushbutton" )) self. pushbutton_2 = QtGui. QPushButton ( self. centralwidget) self. pushbutton_2. setgeometry ( QtCore. QRect ( 280, 230, 161, 61 )) self. pushbutton_2. setobjectname ( _fromutf8 ( "pushbutton_2" )) self. pushbutton_3 = QtGui. QPushButton ( self. centralwidget) self. pushbutton_3. setgeometry ( QtCore. QRect ( 280, 300, 161, 61 )) self. pushbutton_3. setobjectname ( _fromutf8 ( "pushbutton_3" )) self. label = QtGui. QLabel ( self. centralwidget) self. label. setgeometry ( QtCore. QRect ( 200, 60, 321, 71 )) self. label. setminimumsize ( QtCore. QSize ( 321, 71 )) font = QtGui. QFont () font. setpointsize ( 22) self. label. setfont ( font) self. label. setobjectname ( _fromutf8 ( "label" )) MainWindow. setcentralwidget ( self. centralwidget) self. statusbar = QtGui. QStatusBar ( MainWindow) self. statusbar. setobjectname ( _fromutf8 ( "statusbar" )) self. pushbutton_2. clicked. connect ( self. removeinstructor) self. pushbutton_3. clicked. connect ( self. checkincustomers) MainWindow. setstatusbar ( self. statusbar) self. retranslateui ( MainWindow) QtCore. QMetaObject. connectslotsbyname ( MainWindow) def retranslateui ( self, MainWindow ): MainWindow. setwindowtitle ( _translate ( "MainWindow", "MainWindow", None )) self. pushbutton. settext ( _translate ( "MainWindow", "Add Instructor", None )) self. pushbutton_2. settext ( _translate ( "MainWindow", "Remove Instructor", None )) self. pushbutton_3. settext ( _translate ( "MainWindow", "Check-In Customers", None )) self. label. settext ( _translate ( "MainWindow", "SPHERE Main Menu", None )) def removeinstructor ( self ): #Integrates remove instructor functionality #import gui #import controller sh ( "python controller.py") def checkincustomers ( self ): #Integrates check-in customers functionality #import checkingui #import checkincontroller sh ( "python checkincontroller.py") if name == " main ": app = QtGui. QApplication ( sys. argv) MainWindow = QtGui. QMainWindow () ui = Ui_MainWindow () ui. setupui ( MainWindow) MainWindow. show () sys. exit ( app. exec_ ()) Coventry University Conor Flanagan 13

14 Main Menu GUI Remove Instructor button opens the RemoveInstructor GUI Coventry University Conor Flanagan 14

15 Check-In Customers button opens the CheckInCustomers GUI Check-In GUI is fully functional and still operates the program as it did prior to implementation. Here the GUI was modified to display all the text on the monitor, as the demo shown to the client (tutor) had an issue with font scaling. Also the operation of checking-in, changing a customer s checked_in field, can be reversed with the uncheck button. Coventry University Conor Flanagan 15

16 Task 2: To evaluate the management of the project evidence with a report supported by research with references in the CU Harvard referencing style in a maximum of 1,000 words Group Meeting Records Group Meetings Sphere Development Team (Conor Flanagan, Dawid Lominski, Mir Gabare, Myles ) Date Time (24 Hour System) Group Location Group Members who Attended 6 th Feb 12:00 Library DML Conor Flanagan, Dawid 10 th Feb 13:00 EC 2 nd Floor Conor Flanagan, Dawid 13 th Feb 11:30 Library DML Conor Flanagan, Dawid 17 th Feb 13:30 EC 2 nd Floor Conor Flanagan, Dawid 20 th Feb 10:00 EC 2 nd Floor Conor Flanagan, Dawid 24 th Feb 13:00 EC 2 nd Floor Conor Flanagan, Dawid 27 th Feb 10:30 Library DML Conor Flanagan, Dawid 6 th Mar 16:30 EC 2 nd Floor Conor Flanagan, Dawid 10 th Mar 09:30 Library DML Conor Flanagan, Dawid Contact Number Coventry University Conor Flanagan 16

17 13 th Mar 16:00 EC 2 nd Floor Conor Flanagan, Dawid 17 th Mar 12:30 Library DML Conor Flanagan, Dawid 20 th Mar 13:30 EC 2 nd Floor Conor Flanagan, Dawid 24 th Mar 16:00 Library DML Conor Flanagan, Dawid 27 th Mar 13:30 EC 2 nd Floor Conor Flanagan, Dawid 31 st Mar 16:30 Library DML Conor Flanagan, Dawid Coventry University Conor Flanagan 17

18 Group Planning Gantt Chart Client Feedback (from Tutor) Client (tutor) requested a way to view bookings from the check-in page. View bookings would potentially be a separate functionality and so would be implemented elsewhere, however a button linking the two would increase usability. Another request was a window saying Are you sure? when selecting Check-In to reduce the possibility of accidental data manipulation, however the addition of an Uncheck button allows the staff member to reverse the data change if they were to accidentally or unintentionally check-in a customer. A comment was also made about the GUI scaling, however the tutor was viewing the system on a smaller monitor than the standard 1920x1080 monitor which the system was developed on. It is my belief that this issue is due to how PyQt does not modify font scaling to match window GUI scale. Coventry University Conor Flanagan 18

19 Evidence of work via GitHub A sample of regular commits to github: Coventry University Conor Flanagan 19

20 Prototyping Evaluation Report The main prototyping model we decided to use was the Incremental model. This model entails that the software model is designed, implemented and tested incrementally until the system is complete. It involves several stages of development and testing before the product can be defined as finished when it meets all requirements. In the incremental model the product system can be broken down into components, termed as builds, which are each completed separately and validated upon their completion. For the Sphere system each functionality we have chosen could be delivered as a single component build, validated by the client, and then integrated into the main system (A Ghahrai 2008). Incremental prototyping greatly reduces the time between when the software is developed and when it is usable by the user. Because segments of the system are being developed in parallel, more parts of the system as a whole are available to use and review earlier in development. What's more, each build can be tested and debugged on completion, with both processes being easier without the system interference from other modules or components. Components which are considered faulty or a risk to the system can be handled or redeveloped at the development stage, preventing damage to the system as a whole. Once parts of the development team have completed development, testing, debugging and implementation of their initial component build they can help with a component currently in development, or begin a new component (ISTQB 2016). This model of prototyping isn t without it s limitations however. Components that require heavy communication or cooperation between them have to either be merged into one complex component, or require an extra stage where they are implemented together, then tested, debugged, and finally can be implemented into the main system. This can slow down completion time significantly. For systems where this is clear from the design stage, it would be better to select another prototyping method. We encountered some of these problems during our project. My functionality required that bookings for customers and sessions were already made, however no-one from the group had selected that functionality. This required me to hard code some examples into the MySQL database. However, were the system fully functional, this would not be the case, with both booking creation and a view bookings functionalities being implemented. One popular development model is Scrum, a type of agile software development in which the product is built over numerous fixed-length iterations (called sprints). The end of a sprint, called a milestone, provides a framework for implementing and shipping usable software iterations on a regular basis. The scrum model works like a cycle containing all the usual stages of development, implementation, testing, debugging (Radigan 2015). Unlike the incremental method, the scrum method is slow, and during a sprint any new developments will not be available until the next milestone. Depending on the length of each sprint and the complexity of the system, the development may be prolonged due to the constant need to halt development for the next milestone. Software components are required to be developed at similar rates which limits time until the system is usable to the time taken to make the most complex component so. More importantly, scrum is limited by how easily team members can meet and communicate, requiring development to take place with developers in ongoing interaction. Incremental prototyping allows for minimal interaction between team members, however it is still recommended to ensure consistency. Unlike incremental, scrum makes it easier for bugs and issues to be identified or predicted, and can be dealt with on the fly due to group interaction. Scrum encourages and ensures progress is made consistently throughout the length of the project (PM Expert 2009). Using the scrum method would have increased the efficiency and consistency of our development of the system, however for the way that this task was given to us, incremental seemed like a logical decision for us to develop with. Coventry University Conor Flanagan 20

21 References: Yih-Ling Hedley (2016) Architectural Design Patterns [online] Available at: 0v2%20-%20Presentation.pdf [Accessed on: 1 Apr. 2017] Craig Larman (1998) Applying UML and Patterns [online] Available at: [Accessed on: 1 Apr. 2017] Richard Carr (2008) Facade Design Pattern [online] Available at: [Accessed on: 1 Apr. 2017] SourceMaking (2016) Design Patterns: Facade [online] Available at: [Accessed on: 1 Apr. 2017] Amir Ghahrai (2008) Incremental Model [online] Available at: [Accessed on: 2 Apr ISTQB Exam Certification (2016) What is Incremental model - advantages, disadvantages and when to use it? [online] Available at: [Accessed on: 2 Apr. 2017] Dan Radigan (2015) Scrum [online] Available at: [Accessed on: 2 Apr. 2017] MyPMExpert (2009) The Advantages and Disadvantages of Agile SCRUM Software Development [online] Available at: html [Accessed on: 3 Apr. 2017] Coventry University Conor Flanagan 21

Graphical User Interfaces

Graphical User Interfaces Chapter 14 Graphical User Interfaces So far, we have developed programs that interact with the user through the command line, where the user has to call a Python program by typing its name and adding the

More information

LECTURE 18 GUI Programming Part 2

LECTURE 18 GUI Programming Part 2 LECTURE 18 GUI Programming Part 2 BASIC PYQT Last lecture, we created a basic PyQt4 application which had a few buttons and a menu bar. import sys from PyQt4 import QtGui, QtCore class Example(QtGui.QMainWindow):

More information

About 1. Chapter 1: Getting started with pyqt5 2. Remarks 2. Examples 2. Installation or Setup 2. Hello World Example 6. Adding an application icon 8

About 1. Chapter 1: Getting started with pyqt5 2. Remarks 2. Examples 2. Installation or Setup 2. Hello World Example 6. Adding an application icon 8 pyqt5 #pyqt5 Table of Contents About 1 Chapter 1: Getting started with pyqt5 2 Remarks 2 Examples 2 Installation or Setup 2 Hello World Example 6 Adding an application icon 8 Showing a tooltip 10 Package

More information

Python GUIs. $ conda install pyqt

Python GUIs. $ conda install pyqt PyQT GUIs 1 / 18 Python GUIs Python wasn t originally desined for GUI programming In the interest of "including batteries" the tkinter was included in the Python standard library tkinter is a Python wrapper

More information

2. The quiz screen showing the question, text field (QLineEdit in QT) for the answer and the Next Question button

2. The quiz screen showing the question, text field (QLineEdit in QT) for the answer and the Next Question button SFDV4001 OOP with C++ and UI Part 2 of the Quiz System project implementing the user interface In this part of the project use will use QT to build the GUI for the project you have done in part 1. Instead

More information

LECTURE 17. GUI Programming

LECTURE 17. GUI Programming LECTURE 17 GUI Programming GUI PROGRAMMING IN PYTHON There are a number of platform-independent GUI toolkits available including: Tkinter wrapper around Tcl/Tk. PyQt Python bindings for the Qt C++ framework.

More information

Lotus IT Hub. Module-1: Python Foundation (Mandatory)

Lotus IT Hub. Module-1: Python Foundation (Mandatory) Module-1: Python Foundation (Mandatory) What is Python and history of Python? Why Python and where to use it? Discussion about Python 2 and Python 3 Set up Python environment for development Demonstration

More information

Review Software Engineering October, 7, Adrian Iftene

Review Software Engineering October, 7, Adrian Iftene Review Software Engineering October, 7, 2013 Adrian Iftene adiftene@info.uaic.ro Software engineering Basics Definition Development models Development activities Requirement analysis Modeling (UML Diagrams)

More information

Intermediate Python 3.x

Intermediate Python 3.x Intermediate Python 3.x This 4 day course picks up where Introduction to Python 3 leaves off, covering some topics in more detail, and adding many new ones, with a focus on enterprise development. This

More information

CSCI 320 Group Project

CSCI 320 Group Project CSCI 320 Group Project Project Description This is a semester long group project. Project Goals Group project of 3-4 students. Groups will not change after assigned. Select a project domain from the list

More information

CTAL. ISTQB Advanced Level.

CTAL. ISTQB Advanced Level. ASTQB CTAL ISTQB Advanced Level TYPE: DEMO http://www.examskey.com/ctal.html Examskey ASTQB CTAL exam demo product is here for you to test the quality of the product. This ASTQB CTAL demo also ensures

More information

Object-Oriented Programming

Object-Oriented Programming iuliana@cs.ubbcluj.ro Babes-Bolyai University 2018 1 / 33 Overview 1 2 3 4 5 6 2 / 33 I Qt is a cross-platform application and UI framework in C++. Using Qt, one can write GUI applications once and deploy

More information

PTN-202: Advanced Python Programming Course Description. Course Outline

PTN-202: Advanced Python Programming Course Description. Course Outline PTN-202: Advanced Python Programming Course Description This 4-day course picks up where Python I leaves off, covering some topics in more detail, and adding many new ones, with a focus on enterprise development.

More information

Lab 1 The Basics of Qt

Lab 1 The Basics of Qt Qt in Education Lab 1 The Basics of Qt Aim: Duration: This lab will take you through all the steps required to build a fully fledged Qt application. The focus is to understand how a Qt application is structured

More information

Avancier Methods. Very basic design patterns. It is illegal to copy, share or show this document

Avancier Methods. Very basic design patterns. It is illegal to copy, share or show this document Methods Very basic design patterns It is illegal to copy, share or show this document (or other document published at http://avancier.co.uk) without the written permission of the copyright holder Copyright

More information

CIS 3730 FALL 2008 Database Management System Project

CIS 3730 FALL 2008 Database Management System Project CIS 3730 FALL 2008 Database Management System Project Project Grade (40 points) The project will be graded at the end of the course with the following breakdown: Initial Project Proposal - 4 points Weekly

More information

Managing Your Database Using Oracle SQL Developer

Managing Your Database Using Oracle SQL Developer Page 1 of 54 Managing Your Database Using Oracle SQL Developer Purpose This tutorial introduces Oracle SQL Developer and shows you how to manage your database objects. Time to Complete Approximately 50

More information

Qt Essentials - Widgets Module

Qt Essentials - Widgets Module Qt Essentials - Module Training Course Visit us at http://qt.digia.com Produced by Digia Plc. Material based on Qt 5.0, created on September 27, 2012 Digia Plc. Module: Common Layout Management Guidelines

More information

Introduction to Python

Introduction to Python Introduction to Python Part 3: Advanced Topics Michael Kraus (michael.kraus@ipp.mpg.de) Max-Planck-Institut für Plasmaphysik, Garching 7. March 2012 Some Advanced Topics calling and embedding C and Fortran

More information

Lab 12: GUI programming with Qt

Lab 12: GUI programming with Qt Lab 12: GUI programming with Comp Sci 1585 Data Structures Lab: Tools for Computer Scientists Outline 1 Outline 1 (Pronounced cute ) https://www.qt.io/what-is-qt/ https://showroom.qt.io/ https://en.wikipedia.org/wiki/_(software)

More information

CSE 5236 Project Description

CSE 5236 Project Description Instructor: Adam C. Champion, Ph.D. Spring 2018 Semester Total: 60 points The team project (2 3 students per team) for this class involves conceptualizing, designing, and developing a mobile application

More information

17. GRASP: Designing Objects with Responsibilities

17. GRASP: Designing Objects with Responsibilities 17. GRASP: Designing Objects with Responsibilities Objectives Learn to apply five of the GRASP principles or patterns for OOD. Dr. Ziad Kobti School of Computer Science University of Windsor Understanding

More information

Exam Questions

Exam Questions Exam Questions 70-498 Delivering Continuous Value with Visual Studio 2012 Application Lifecycle Management https://www.2passeasy.com/dumps/70-498/ 1. You are the application architect on your team. You

More information

PACE Suite. Release Notes. Version Document version

PACE Suite. Release Notes. Version Document version PACE Suite Release Notes Version 3.4. Document version 05034 Table of Contents PACE SUITE 3.4.... Summary... What s new: MSI Editor 3.4. (PACE Suite v. 3.4.)... Bug fixes... What s new: MSI Generator 3.3.

More information

CS487 Midterm Exam Summer 2005

CS487 Midterm Exam Summer 2005 1. (4 Points) How does software differ from the artifacts produced by other engineering disciplines? 2. (10 Points) The waterfall model is appropriate for projects with what Characteristics? Page 1 of

More information

Daniel Lynn Lukas Klose. Technical Practices Refresher

Daniel Lynn Lukas Klose. Technical Practices Refresher Daniel Lynn Lukas Klose Technical Practices Refresher agile principle #3 Deliver working software frequently, from a couple of weeks to a couple of months, with a preference to the shorter timescale. agile

More information

Qt Essentials - Fundamentals of Qt Module

Qt Essentials - Fundamentals of Qt Module Qt Essentials - Fundamentals of Qt Module Qt Essentials - Training Course Produced by Nokia, Qt Development Frameworks Material based on Qt 4.7, created on December 15, 2010 http://qt.nokia.com 1/28 Module:

More information

Chapter 9. Software Testing

Chapter 9. Software Testing Chapter 9. Software Testing Table of Contents Objectives... 1 Introduction to software testing... 1 The testers... 2 The developers... 2 An independent testing team... 2 The customer... 2 Principles of

More information

Design and implement a program to solve a real-world problem using the language idioms, data structures,, and standard library.

Design and implement a program to solve a real-world problem using the language idioms, data structures,, and standard library. Course Outcome Second Year of B.Sc. IT Program Semester I Course Number: USIT301 Course Name: Python Programming Understanding basic fundamentals of programming using Python. Recognize and construct common

More information

(Complete Package) We are ready to serve Latest Testing Trends, Are you ready to learn? New Batches Info

(Complete Package) We are ready to serve Latest Testing Trends, Are you ready to learn? New Batches Info (Complete Package) WEB APP TESTING DB TESTING We are ready to serve Latest Testing Trends, Are you ready to learn? New Batches Info START DATE : TIMINGS : DURATION : TYPE OF BATCH : FEE : FACULTY NAME

More information

HOW TO FLASK. And a very short intro to web development and databases

HOW TO FLASK. And a very short intro to web development and databases HOW TO FLASK And a very short intro to web development and databases FLASK Flask is a web application framework written in Python. Created by an international Python community called Pocco. Based on 2

More information

Code Check TM Software Requirements Specification

Code Check TM Software Requirements Specification Code Check TM Software Requirements Specification Author: Richard McKenna Debugging Enterprises TM Based on IEEE Std 830 TM -1998 (R2009) document format Copyright 2017 Debugging Enterprises No part of

More information

INSTRUCTIONS: GOOD LUCK! [TURN OVER]

INSTRUCTIONS: GOOD LUCK! [TURN OVER] INSTRUCTIONS: 1. This examination paper consists of 6 pages. 2. This is a closed book examination. 3. The mark for each question is given in brackets next to the question. 4. Answer all five questions

More information

Topic 01. Software Engineering, Web Engineering, agile methodologies.

Topic 01. Software Engineering, Web Engineering, agile methodologies. Topic 01 Software Engineering, Web Engineering, agile methodologies. 1 What is Software Engineering? 2 1 Classic Software Engineering The IEEE definition: Software Engineering is the application of a disciplined,

More information

Responsibilities. Using several specific design principles to guide OO design decisions.

Responsibilities. Using several specific design principles to guide OO design decisions. Designing Objects with Responsibilities Using several specific design principles to guide OO design decisions. Challenge Old-school advice on OOD After identifying i your requirements and creating a domain

More information

Design Patterns #3. Reid Holmes. Material and some slide content from: - GoF Design Patterns Book - Head First Design Patterns

Design Patterns #3. Reid Holmes. Material and some slide content from: - GoF Design Patterns Book - Head First Design Patterns Material and some slide content from: - GoF Design Patterns Book - Head First Design Patterns Design Patterns #3 Reid Holmes Lecture 16 - Thursday November 15 2011. GoF design patterns $ %!!!! $ "! # &

More information

Requirements and Design Overview

Requirements and Design Overview Requirements and Design Overview Robert B. France Colorado State University Robert B. France O-1 Why do we model? Enhance understanding and communication Provide structure for problem solving Furnish abstractions

More information

Topics. Software Process. Agile. Requirements. Basic Design. Modular Design. Design Patterns. Testing. Quality. Refactoring.

Topics. Software Process. Agile. Requirements. Basic Design. Modular Design. Design Patterns. Testing. Quality. Refactoring. CS310 - REVIEW Topics Process Agile Requirements Basic Design Modular Design Design Patterns Testing Quality Refactoring UI Design How these things relate Process describe benefits of using a software

More information

edev Technologies SmartWord4TFS Release Notes

edev Technologies SmartWord4TFS Release Notes edev Technologies SmartWord4TFS Release Notes edev Technologies 3/14/2017 Table of Contents 1. SYSTEM REQUIREMENTS... 2 2. APPLICATION SETUP... 4 3. NEW FEATURES... 5 4. ENHANCED FEATURES... 5 5. KNOWN

More information

Object-Oriented Design

Object-Oriented Design Object-Oriented Design Lecturer: Raman Ramsin Lecture 15: Object-Oriented Principles 1 Open Closed Principle (OCP) Classes should be open for extension but closed for modification. OCP states that we should

More information

FACETs. Technical Report 05/19/2010

FACETs. Technical Report 05/19/2010 F3 FACETs Technical Report 05/19/2010 PROJECT OVERVIEW... 4 BASIC REQUIREMENTS... 4 CONSTRAINTS... 5 DEVELOPMENT PROCESS... 5 PLANNED/ACTUAL SCHEDULE... 6 SYSTEM DESIGN... 6 PRODUCT AND PROCESS METRICS...

More information

Python Essential Reference, Second Edition - Chapter 5: Control Flow Page 1 of 8

Python Essential Reference, Second Edition - Chapter 5: Control Flow Page 1 of 8 Python Essential Reference, Second Edition - Chapter 5: Control Flow Page 1 of 8 Chapter 5: Control Flow This chapter describes related to the control flow of a program. Topics include conditionals, loops,

More information

Qt Essentials - Fundamentals of Qt Module

Qt Essentials - Fundamentals of Qt Module Qt Essentials - Module Training Course Visit us at http://qt.digia.com Produced by Digia Plc. Material based on Qt 5.0, created on September 27, 2012 Digia Plc. The Story of Qt Developing a Hello World

More information

Introduction... ix. Chapter 1: Exploring Fundamental Programming Concepts... 1

Introduction... ix. Chapter 1: Exploring Fundamental Programming Concepts... 1 Table of Contents Introduction... ix Chapter 1: Exploring Fundamental Programming Concepts... 1 1.1 Exploring the Editors... 2 History of Editors... 2 Exploring the Types of Text Editors... 3 Describing

More information

Patterns and Testing

Patterns and Testing and Lecture # 7 Department of Computer Science and Technology University of Bedfordshire Written by David Goodwin, based on the lectures of Marc Conrad and Dayou Li and on the book Applying UML and (3

More information

DATABASE SYSTEMS. Database programming in a web environment. Database System Course, 2016

DATABASE SYSTEMS. Database programming in a web environment. Database System Course, 2016 DATABASE SYSTEMS Database programming in a web environment Database System Course, 2016 AGENDA FOR TODAY Advanced Mysql More than just SELECT Creating tables MySQL optimizations: Storage engines, indexing.

More information

WEB APPLICATION MANAGEMENT: IMPLEMENTING A DYNAMIC DATABASE UPGRADE MODEL

WEB APPLICATION MANAGEMENT: IMPLEMENTING A DYNAMIC DATABASE UPGRADE MODEL WEB APPLICATION MANAGEMENT: IMPLEMENTING A DYNAMIC DATABASE UPGRADE MODEL Richard Wilson 1 & Daniel Lowes 2 1 Dept. of Computer Science and Software Engineering, University of Melbourne (Australia) 2 Dept.

More information

CS 2316 Exam 4 Fall 2012

CS 2316 Exam 4 Fall 2012 CS 2316 Exam 4 Fall 2012 Name : Section TA: Integrity: By taking this exam, you pledge that this is your work and you have neither given nor received inappropriate help during the taking of this exam in

More information

Kingdom of Saudi Arabia Ministry of Higher Education College of Computer & Information Sciences Majmaah University. Course Profile

Kingdom of Saudi Arabia Ministry of Higher Education College of Computer & Information Sciences Majmaah University. Course Profile Kingdom of Saudi Arabia Ministry of Higher Education College of Computer & Information Sciences Majmaah University Course Profile Course Name:- Elective Profession Course 1 Course Code:- IT 250 Academic

More information

Tuesday, 9 March Introduction to Qt

Tuesday, 9 March Introduction to Qt Introduction to Qt Qt Qt supports the development of multi-platform GUI applications It has a write once, compile anywhere approach Using a single source tree and a simple recompilation applications can

More information

Detailed Design. Java Problem Repository & Education Platform JPREP

Detailed Design. Java Problem Repository & Education Platform JPREP Team Members: Luke Greiner Denis Kalic Abigail McCarthy Robert Tateo Nguyen Truong Patrick White Detailed Design Java Problem Repository & Education Platform JPREP Revision: 1.1 Date: 3/07/14 1 D e l t

More information

SSQA Seminar Series. Server Side Testing Frameworks. Sachin Bansal Sr. Quality Engineering Manager Adobe Systems Inc. February 13 th, 2007

SSQA Seminar Series. Server Side Testing Frameworks. Sachin Bansal Sr. Quality Engineering Manager Adobe Systems Inc. February 13 th, 2007 SSQA Seminar Series Server Side Testing Frameworks Sachin Bansal Sr. Quality Engineering Manager Adobe Systems Inc. February 13 th, 2007 1 Agenda Introduction Drivers for Server Side Testing Challenges

More information

SE310 Analysis and Design of Software Systems

SE310 Analysis and Design of Software Systems SE310 Analysis and Design of Software Systems Lecture 6 Transitioning from Use Cases and Class Diagrams at Architecture Level to Design February 10, 2015 Sam Siewert Assignment #1 Comments OOA -> OOP (C++,

More information

Ownership in Design Patterns. Master's Thesis Final Presentation Stefan Nägeli

Ownership in Design Patterns. Master's Thesis Final Presentation Stefan Nägeli Ownership in Design Patterns Master's Thesis Final Presentation Stefan Nägeli 07.02.06 Overview Status Quo Pattern Overview Encountered Problems applying UTS Pros and Cons compared to other systems UTS

More information

Shift Left Testing: are you ready? Live Webinar, Sept 19

Shift Left Testing: are you ready? Live Webinar, Sept 19 Shift Left Testing: are you ready? Live Webinar, Sept 19 Guy Arieli CTO, Experitest 01 What exactly is Shift Left? Agenda 02 03 How Shift Left affects application development & testing organizational structures

More information

Object Oriented Programming

Object Oriented Programming Binnur Kurt kurt@ce.itu.edu.tr Istanbul Technical University Computer Engineering Department 1 Version 0.1.2 About the Lecturer BSc İTÜ, Computer Engineering Department, 1995 MSc İTÜ, Computer Engineering

More information

Marking Guidelines for MVK Projects. MVK12. Version 6.2 (PPD, URD, RURD, ADD and software demo)

Marking Guidelines for MVK Projects. MVK12. Version 6.2 (PPD, URD, RURD, ADD and software demo) Marking Guidelines for MVK Projects. MVK12 Version 6.2 (PPD, URD, RURD, ADD and software demo) 2013-02- 13 Final Grade formulas: MVK DD1365 Grade = 33% PPD + 66% URD. Bachelor s Thesis DD143X Grade = ADD

More information

Midterm Exam, October 24th, 2000 Tuesday, October 24th, Human-Computer Interaction IT 113, 2 credits First trimester, both modules 2000/2001

Midterm Exam, October 24th, 2000 Tuesday, October 24th, Human-Computer Interaction IT 113, 2 credits First trimester, both modules 2000/2001 257 Midterm Exam, October 24th, 2000 258 257 Midterm Exam, October 24th, 2000 Tuesday, October 24th, 2000 Course Web page: http://www.cs.uni sb.de/users/jameson/hci Human-Computer Interaction IT 113, 2

More information

Introduction - SENG 330. Object-Oriented Analysis and Design

Introduction - SENG 330. Object-Oriented Analysis and Design Introduction - SENG 330 Object-Oriented Analysis and Design SENG 330 Fall 2006 Instructor: Alex Thomo Email: thomo@cs.uvic.ca Office hours: Office Hours: TWF 12:30-1:30 p.m. Location: ECS 556 Objective:

More information

Setup of PostgreSQL, pgadmin and importing data. CS3200 Database design (sp18 s2) Version 2/9/2018

Setup of PostgreSQL, pgadmin and importing data. CS3200 Database design (sp18 s2)   Version 2/9/2018 Setup of PostgreSQL, pgadmin and importing data CS3200 Database design (sp18 s2) https://course.ccs.neu.edu/cs3200sp18s2/ Version 2/9/2018 1 Overview This document covers 2 issues: 1) How to install PostgreSQL:

More information

Arrays are lists of elements of the same data type. They are analogous to arrays in traditional languages.

Arrays are lists of elements of the same data type. They are analogous to arrays in traditional languages. 0 1 Arrays are lists of elements of the same data type. They are analogous to arrays in traditional languages. Arrays can have one or more dimensions. Arrays can have up to (2^31)-1 elements per dimension.

More information

User-Centered Development

User-Centered Development Software Lifecycle CS470 User-Centered Development User-centered development refers to a design process for creating a system that meets the needs of the user Users should be included in the design process

More information

Ecocion Facility Management System Alex Anderson Niles Hacking Ryan Shipp June 16, 2015

Ecocion Facility Management System Alex Anderson Niles Hacking Ryan Shipp June 16, 2015 Ecocion Facility Management System Alex Anderson Niles Hacking Ryan Shipp June 16, 2015 1 Table of Contents 1. Introduction 2 1.1. Client Description 1.2. Product Vision 2. Requirements. 2 2.1. Functional

More information

Part III Appendices 165

Part III Appendices 165 Part III Appendices 165 Appendix A Technical Instructions Learning Outcomes This material will help you learn how to use the software you need to do your work in this course. You won t be tested on it.

More information

Oracle 1Z0-071 Exam Questions and Answers (PDF) Oracle 1Z0-071 Exam Questions 1Z0-071 BrainDumps

Oracle 1Z0-071 Exam Questions and Answers (PDF) Oracle 1Z0-071 Exam Questions 1Z0-071 BrainDumps Oracle 1Z0-071 Dumps with Valid 1Z0-071 Exam Questions PDF [2018] The Oracle 1Z0-071 Oracle Database 12c SQL Exam exam is an ultimate source for professionals to retain their credentials dynamic. And to

More information

Python Development with PyDev and Eclipse -

Python Development with PyDev and Eclipse - 1 of 11 4/4/2013 9:41 PM 130 Free tutorial, donate to support Python Development with PyDev and Eclipse - Tutorial Lars Vogel Version 1.8 Copyright 2009, 2010, 2011, 2012 Lars Vogel 01.07.2012 Revision

More information

Whitepaper. 3 reasons to invest in database source control

Whitepaper. 3 reasons to invest in database source control Whitepaper 3 reasons to invest in database source control 3 reasons to invest in database source control Introduction This whitepaper discusses the three reasons why your business should be investing in

More information

MySQL for Developers Ed 3

MySQL for Developers Ed 3 Oracle University Contact Us: 0845 777 7711 MySQL for Developers Ed 3 Duration: 5 Days What you will learn This MySQL for Developers training teaches developers how to plan, design and implement applications

More information

Write perfect C code to solve the three problems below.

Write perfect C code to solve the three problems below. Fall 2017 CSCI 4963/6963 Week 12 David Goldschmidt goldschmidt@gmail.com Office: Amos Eaton 115 Office hours: Mon/Thu 1:00-1:50PM; Wed 1:00-2:50PM Write perfect C code to solve the three problems below.

More information

Motivation. Both human- and computer-generated programs sometimes contain data-flow anomalies.

Motivation. Both human- and computer-generated programs sometimes contain data-flow anomalies. Motivation Both human- and computer-generated programs sometimes contain data-flow anomalies. These anomalies result in the program being worse, in some sense, than it was intended to be. Data-flow analysis

More information

pysharedutils Documentation

pysharedutils Documentation pysharedutils Documentation Release 0.5.0 Joel James August 07, 2017 Contents 1 pysharedutils 1 2 Indices and tables 13 i ii CHAPTER 1 pysharedutils pysharedutils is a convenient utility module which

More information

Test Plan. Version Created

Test Plan. Version Created Test Plan Version 1.0 2008.10.24 Created 2008.10.14 Yahoo! Property View Rob Shaw Team Leader Jacob McDorman Project Leader Robert Read Technologist Brad Van Dyk Editor Table of Contents [1] Introduction...

More information

Since its earliest days about 14 years ago Access has been a relational

Since its earliest days about 14 years ago Access has been a relational Storing and Displaying Data in Access Since its earliest days about 14 years ago Access has been a relational database program, storing data in tables and using its own queries, forms, and reports to sort,

More information

Database Programming - Section 18. Instructor Guide

Database Programming - Section 18. Instructor Guide Database Programming - Section 18 Instructor Guide Table of Contents...1 Lesson 1 - Certification Exam Preparation...1 What Will I Learn?...2 Why Learn It?...3 Tell Me / Show Me...4 Try It / Solve It...5

More information

INST Database Design and Modeling - Section 0101 Spring Tentative Syllabus

INST Database Design and Modeling - Section 0101 Spring Tentative Syllabus INST 327 - Database Design and Modeling - Section 0101 Spring 2017 - Tentative Syllabus Instructors: Office: Phone: E-mail: Office Hours: Vedat G. Diker (Dr. Diker) Hornbake 4111F (301) 405-9814 vdiker@umd.edu

More information

MySQL for Developers Ed 3

MySQL for Developers Ed 3 Oracle University Contact Us: 1.800.529.0165 MySQL for Developers Ed 3 Duration: 5 Days What you will learn This MySQL for Developers training teaches developers how to plan, design and implement applications

More information

Gradintelligence student support FAQs

Gradintelligence student support FAQs Gradintelligence student support FAQs Account activation issues... 2 I have not received my activation link / I cannot find it / it has expired. Please can you send me a new one?... 2 My account is showing

More information

Why you should be excited about Qt 5

Why you should be excited about Qt 5 Why you should be excited about Qt 5 Thiago Macieira, Qt Core Maintainer Software Architect, Intel OTC Berlin, Nov 13-14, 2012 Santa Clara, Dec 6-7, 2012 Who am I? Open Source developer for 15 years Software

More information

Introduction to Python

Introduction to Python Introduction to Python Part 3: Advanced Topics Michael Kraus (michael.kraus@ipp.mpg.de) Max-Planck-Institut für Plasmaphysik, Garching 1. December 2011 Advanced Topics calling and embedding C and Fortran

More information

Structure and Interpretation of Computer Programs

Structure and Interpretation of Computer Programs CS 61A Fall 2012 Structure and Interpretation of Computer Programs Final Examination Solutions INSTRUCTIONS You have 3 hours to complete the exam. The exam is closed book, closed notes, closed computer,

More information

Accelerating Information Technology Innovation

Accelerating Information Technology Innovation Accelerating Information Technology Innovation http://aiti.mit.edu/program/philippines-summer-2012/ Philippines Summer 2012 Lecture 1 Introduction to Python June 19, 2012 Agenda About the Course What is

More information

PHP and MySQL Programming

PHP and MySQL Programming PHP and MySQL Programming Course PHP - 5 Days - Instructor-led - Hands on Introduction PHP and MySQL are two of today s most popular, open-source tools for server-side web programming. In this five day,

More information

Software Design and Analysis CSCI 2040

Software Design and Analysis CSCI 2040 Software Design and Analysis CSCI 2040 Summarize UML Deployment and Component notation. Design a framework with the Template Method, State, and Command patterns. Introduce issues in object-relational (O-R)

More information

Certified LabVIEW Architect Recertification Exam Test Booklet

Certified LabVIEW Architect Recertification Exam Test Booklet Certified LabVIEW Architect Recertification Exam Test Booklet Note: The use of the computer or any reference materials is NOT allowed during the exam. Instructions: If you did not receive this exam in

More information

The Metro Map Maker TM0 Software Requirements Specification

The Metro Map Maker TM0 Software Requirements Specification The Metro Map Maker TM0 Software Requirements Specification Author: Richard McKenna Debugging Enterprises TM Based on IEEE Std 830 TM -1998 (R2009) document format Copyright 2017 Debugging Enterprises

More information

Biocomputing II Coursework guidance

Biocomputing II Coursework guidance Biocomputing II Coursework guidance I refer to the database layer as DB, the middle (business logic) layer as BL and the front end graphical interface with CGI scripts as (FE). Standardized file headers

More information

Human-Computer Interaction IS4300

Human-Computer Interaction IS4300 Human-Computer Interaction IS4300 1 Quiz 3 1 I5 due next class Your mission in this exercise is to implement a very simple Java painting applet. The applet must support the following functions: Draw curves,

More information

CONFERENCE PROCEEDINGS QUALITY CONFERENCE. Conference Paper Excerpt from the 28TH ANNUAL SOFTWARE. October 18th 19th, 2010

CONFERENCE PROCEEDINGS QUALITY CONFERENCE. Conference Paper Excerpt from the 28TH ANNUAL SOFTWARE. October 18th 19th, 2010 PACIFIC NW 28TH ANNUAL SOFTWARE QUALITY CONFERENCE October 18th 19th, 2010 Conference Paper Excerpt from the CONFERENCE PROCEEDINGS Permission to copy, without fee, all or part of this material, except

More information

COMP390 (Design &) Implementation

COMP390 (Design &) Implementation COMP390 (Design &) Implementation Phil (& Dave s) rough guide Consisting of some ideas to assist the development of large and small projects in Computer Science (and a chance for me to try out some features

More information

Designer TM for Microsoft Access

Designer TM for Microsoft Access Designer TM for Microsoft Access Application Guide 1.7.2018 This document is copyright 2009-2018 OpenGate Software. The information contained in this document is subject to change without notice. If you

More information

CS 241 Data Organization. August 21, 2018

CS 241 Data Organization. August 21, 2018 CS 241 Data Organization August 21, 2018 Contact Info Instructor: Dr. Marie Vasek Contact: Private message me on the course Piazza page. Office: Room 2120 of Farris Web site: www.cs.unm.edu/~vasek/cs241/

More information

Bringing your Data to Life in the ArcGIS API for JavaScript: Vector Tiles. Craig Williams &

Bringing your Data to Life in the ArcGIS API for JavaScript: Vector Tiles. Craig Williams & Bringing your Data to Life in the ArcGIS API for JavaScript: Vector Tiles Craig Williams & Rene Rubalcava @williamscraigm @odoenet Overview Why vector tiles? Vector tiles in ArcGIS ArcGIS vector tile basemaps

More information

Frenzy TRR ARB Presentation

Frenzy TRR ARB Presentation Frenzy TRR ARB Presentation CS577A Fall 2016 Team 01 -Arpan Badeka Ankur Palav Jheel Somaiya Sailee Rane Ashwin Hariharan Rishabh Sharma Alan Kwan James Chang Outline Operational Concept Overview TRR Outline

More information

Object-Oriented Design

Object-Oriented Design Object-Oriented Design Department of Computer Engineering Lecture 12: Object-Oriented Principles Sharif University of Technology 1 Open Closed Principle (OCP) Classes should be open for extension but closed

More information

INTRODUCTION. 2. User-centred interface design.

INTRODUCTION. 2. User-centred interface design. INTRODUCTION 2. User-centred interface design User-Centred Design ISO 9241-210 : Human-centred design for interactive systems Meets requirements Plan the user centred process 4. Evaluation against requirements

More information

CS 2316 Homework 9a GT Room Reservation Login

CS 2316 Homework 9a GT Room Reservation Login CS 2316 Homework 9a GT Room Reservation Login Due: Wednesday November 5th Out of 100 points Files to submit: 1. HW9.py This is an INDIVIDUAL assignment! Collaboration at a reasonable level will not result

More information

Fundamentals of Programming (Python) Getting Started with Programming

Fundamentals of Programming (Python) Getting Started with Programming Fundamentals of Programming (Python) Getting Started with Programming Ali Taheri Sharif University of Technology Some slides have been adapted from Python Programming: An Introduction to Computer Science

More information

Manual Testing. Software Development Life Cycle. Verification. Mobile Testing

Manual Testing.  Software Development Life Cycle. Verification. Mobile Testing 10 Weeks (Weekday Batches) or 12 Weekends (Weekend batches) To become a Professional Software Tester To enable the students to become Employable Manual Testing Fundamental of Testing What is software testing?

More information

IA L16 - Hands-On Lab Hands on with Instant Backup and Recovery Features of NetBackup 7.6 for VMware

IA L16 - Hands-On Lab Hands on with Instant Backup and Recovery Features of NetBackup 7.6 for VMware IA L16 - Hands-On Lab Hands on with Instant Backup and Recovery Features of NetBackup 7.6 for VMware Description NetBackup 7.6 offers terrific new technologies that provide faster VMware backups and restores

More information

CMPT 354 Database Systems. Simon Fraser University Fall Instructor: Oliver Schulte. Assignment 3b: Application Development, Chapters 6 and 7.

CMPT 354 Database Systems. Simon Fraser University Fall Instructor: Oliver Schulte. Assignment 3b: Application Development, Chapters 6 and 7. CMPT 354 Database Systems Simon Fraser University Fall 2016 Instructor: Oliver Schulte Assignment 3b: Application Development, Chapters 6 and 7. Instructions: Check the instructions in the syllabus. The

More information