COMP390 (Design &) Implementation

Similar documents
COMP390 (Design &) Implementation

COMP390 (Design &) Implementation

learn programming the right way

Lecture 1: Overview

Web Hosting. Important features to consider

Reliable programming

Shorthand for values: variables

If Statements, For Loops, Functions

3 Continuous Integration 3. Automated system finding bugs is better than people

Blitz! (Outlook 2011 for Mac)

Real World Web Scalability. Ask Bjørn Hansen Develooper LLC

We aren t getting enough orders on our Web site, storms the CEO.

Creating the Data Layer

COPYRIGHTED MATERIAL. Getting Started with Google Analytics. P a r t

hw6, BFS, debugging CSE 331 Section 5 10/25/12 Slides by Kellen Donohue

CASE STUDY IT. Albumprinter Adopting Redgate DLM

Human-Computer Interaction Design

The name of our class will be Yo. Type that in where it says Class Name. Don t hit the OK button yet.

Mini-Project, Exam, Etc

Introduction. A Brief Description of Our Journey

Laboratory 1: Eclipse and Karel the Robot

Lesson 2. Introducing Apps. In this lesson, you ll unlock the true power of your computer by learning to use apps!

Testing is a very big and important topic when it comes to software development. Testing has a number of aspects that need to be considered.

Git. all meaningful operations can be expressed in terms of the rebase command. -Linus Torvalds, 2015

Term Definition Introduced in: This option, located within the View tab, provides a variety of options to choose when sorting and grouping Arrangement

Systems Software. Recitation 1: Intro & Revision Control. Quite different from 213. Our Philosophy. Partly-free lunch

PHP. MIT 6.470, IAP 2010 Yafim Landa

Test Your XAML-based Windows Store Apps with Visual Studio 2013 Benjamin Day

CSS Crash Course for Fearless Bloggers by Gill Andrews

Everything you need to know about cloud. For companies with people in them

CS168 Programming Assignment 2: IP over UDP

Small changes. Big results.

EPISODE 23: HOW TO GET STARTED WITH MAILCHIMP

Recipes. Marketing For Bloggers. List Building, Traffic, Money & More. A Free Guide by The Social Ms Page! 1 of! 24

MySQL Worst Practices. Introduction. by Jonathan Baldie

A short guide to learning more technology This week s topic: Windows 10 Tips

David DeFlyer Class notes CS162 January 26 th, 2009

Bellevue Community College Summer 2009 Interior Design 194 SPECIAL TOPIC: SKETCHUP

Seng310 Lecture 8. Prototyping

COMP6471 WINTER User-Centered Design

Spam. Time: five years from now Place: England

Frequently Asked Questions about the NDIS

Neo4J: Graph Database

9 R1 Get another piece of paper. We re going to have fun keeping track of (inaudible). Um How much time do you have? Are you getting tired?

In this white paper we want to look at seven basic principles that can help make your website be the best it can be.

Strategies That Work

Quick Web Development using JDeveloper 10g

Welcome to Lab! Feel free to get started until we start talking! The lab document is located on the course website:

Clickbank Domination Presents. A case study by Devin Zander. A look into how absolutely easy internet marketing is. Money Mindset Page 1

Dealer Reviews Best Practice Guide

WEBINARS FOR PROFIT. Contents

Timeless Theory vs. Changing Users: Reconsidering Database Education

Background. Let s see what we prescribed.

Welcome to Lab! You do not need to keep the same partner from last lab. We will come around checking your prelabs after we introduce the lab

Understanding prototype fidelity What is Digital Prototyping? Introduction to various digital prototyping tools

Description. Learning Objectives. Your AU Expert

Difference Between Dates Case Study 2002 M. J. Clancy and M. C. Linn

9 quick wins every membership organisation should adopt

Paper William E Benjamin Jr, Owl Computer Consultancy, LLC

How APEXBlogs was built

THE OPEN ENROLLMENT ENGAGEMENT PLAYBOOK. Your simple, all-in-one guide to Open Enrollment communications, resources, and planning

Beginning Tutorials. BT004 Enterprise Guide Version 2.0 NESUG 2003 James Blaha, Pace University, Briarcliff Manor, NY ABSTRACT: INTRODUCTION:

Lecture 5. Monday, February 1, 2016

Case Study Matrix Solutions Inc., Canada

Last, with this edition, you can view and download the complete source for all examples at

Duo Travel Guide. duo.com

1. I NEED TO HAVE MULTIPLE VERSIONS OF VISUAL STUDIO INSTALLED IF I M MAINTAINING APPLICATIONS THAT RUN ON MORE THAN ONE VERSION OF THE.

Adding content to your Blackboard 9.1 class

Science-as-a-Service

IGL S AND MOUNT NS. Taking AKKA to Production

These are notes for the third lecture; if statements and loops.

Strong signs your website needs a professional redesign

Unit 9 Tech savvy? Tech support. 1 I have no idea why... Lesson A. A Unscramble the questions. Do you know which battery I should buy?

Cross-platform software development in practice. Object-Oriented approach.

How to Read AWStats. Why it s important to know your stats

Selection the If Statement Try Catch and Validation

HOUR 18 Collaborating on Documents

The Idiot s Guide to Quashing MicroServices. Hani Suleiman

Designing largescale applications. in Python. EuroPython 2013 Florence, Italy. Marc-André Lemburg

CS61A Notes Week 6: Scheme1, Data Directed Programming You Are Scheme and don t let anyone tell you otherwise

Lab 1: Space Invaders. The Introduction

How to Host WebEx Meetings

ONLINE EVALUATION FOR: Company Name

Software Development and Usability Testing

WHITEPAPER MOVING TO A NEW BUSINESS PHONE SYSTEM

Testing, Debugging, Program Verification

The Top 25. To Keep Your Business on Track for 2017

Lecture Notes CPSC 491 (Fall 2018) Topics. Peer evals. UI Sketches. Homework. Quiz 4 next Tues. HW5 out. S. Bowers 1 of 11

MICRO DIGITAL: TECHNICAL CRITERIA FOR MAKING THE RTOS CHOICE

Assignments. Assignment 2 is due TODAY, 11:59pm! Submit one per pair on Blackboard.

Work like a startup! TUT Software Startup Day. Harri Kiljander, Dr. Tech

Surviving Live Stream Catastrophes. Tim Akimoff Oregon Department of Fish and Wildlife

Real Time and Embedded Systems. by Dr. Lesley Shannon Course Website:

1 Build Your First App. The way to get started is to quit talking and begin doing. Walt Disney

Are You Too Busy? Practical Tips For Better Time Management

Burning CDs in Windows XP

Assignment II: Foundation Calculator

Cancer Waiting Times. Getting Started with Beta Testing. Beta Testing period: 01 February May Copyright 2018 NHS Digital

Instructor s Notes Web Data Management Web Client/Server Concepts. Web Data Management Web Client/Server Concepts

Northern New York Library Network. Jim Crowley. Course objectives. Course description. Schedule. Workshop

Transcription:

COMP390 (Design &) Implementation A rough guide Consisting of some ideas to assist the development of large and small projects in Computer Science (With thanks to Dave Shield)

Design & Implementation What are we going to look at this morning? Modularity UI Design Top Down Design Testing & Debugging Timetabling Partial Completion Documentation Communication

UI Design I For those projects that have a UI Most clients consider UI above every other aspect of your project. It is the single aspect of your project to which the client and others are exposed. Your client doesn t usually care if your code is efficient (we do of course). If your program is unnecessarily hard to use, then it is unlikely to be used by your client.

UI Design II How can I be certain my UI is appropriate and easy to use? Develop prototypes early on in the project and give these to the client to obtain feedback Prototypes can be drawings, web pages or simple programs with little or no underlying functionality Get feedback early (and often) - before you have written much/any other code. Once the code is working, watch users attempting to use your software.

UI Design III What are some of the typical UI design errors? solutions that do not scale appropriately 22 335 3682 3424 13 128 16

UI Design III What are some of the typical UI design errors? Use of inappropriate technical detail

UI Design III What are some of the typical UI design errors? use of jargon / human-unfriendly text

UI Design III What are some of the typical UI design errors? use of jargon / human-unfriendly formats/text

UI Design III What are some of the typical UI design errors? giving the user unhelpful help...

UI Design III What are some of the typical UI design errors? giving the user unhelpful help...

UI Design IV What are some of the typical UI design errors? confusing the user

UI Design Prototype as soon as you can. Get Feedback - lots of it Watch people use your interface and see where they fail, or make mistakes Think about how your users think Think about the language they use If you have to present an error message, also provide a simple solution (if you can).

The Design Document COMP390 Guidelines suggest what to include in the document Remember that not all of the items listed will be relevant to your specific project e.g. Research project vs an App Development project Decide what is appropriate Consult your Supervisor if you can t figure it out yourself Don t just throw everything into the report!

A Useful Quote In 1989, Rick Cook wrote: Programming today is a race between software engineers striving to build bigger and better idiotproof programs, and the Universe trying to produce bigger and better idiots. So far, the Universe is winning.

Top Down Design Make a hard task simpler Turn a big problem into lots of little easier pieces (aka modules) If you re not sure what to do now, decide what to do next Never do today, what you can put off until tomorrow

Testing & Debugging Test each module individually If things work individually they ll probably work together If not its easier to fix one or two small modules Write tests for a module as you go along

Testing & Debugging Keep testing Test Harness Extend the tests as you uncover problems Don t leave testing until the end Test in the final environment Don t assume if it works on your laptop it ll work here

Testing & Debugging What do I do when my program stops working? Does your development system support a real debugger? No debugger? What tricks can be employed to assist debugging?

Testing & Debugging Real Debugger step through code - check variable values etc. (remember COMP103?) Set breakpoints Modify values live to test conditional code Difficult to debug real-time, asynchronous or interactive code

Testing & Debugging No debugger? Don t Panic! Add output statements to your code - display the values of variables, your sql queries... Set variables to fixed values to test conditional code Dump output into files to view when done. (like an audit trail after the event) Run your code on the command line and see what happens (errors are more direct) Check log files for hidden warnings and errors Write a mini program to test your code Use a Swift Playground to test code

Testing & Debugging - example 1

Testing & Debugging - example 1 Web access log-file output:

Testing & Debugging - example 1 php program run on command line:

Testing & Debugging - example 1

Testing & Debugging - example 1

Testing & Debugging - example 2

Testing & Debugging - example 2

Testing & Debugging - example 2

Testing & Debugging - example 2

Testing & Debugging - example 2

Testing & Debugging - example 2

Testing & Debugging - example 2

Testing & Debugging - example 2

Timetabling Modules help in drawing up a timetable January February March April May think up great ios app learn Swift Design UI Code & test Adjust the timetable if necessary Sell app & retire January February March April May think up great ios app learn Swift Design UI Code & test Sell app & retire

Partial Completion If you run out of time prioritise and complete selected modules You can show those completed modules Half a program that works - ok to demo A program that half works - much less use

Functional Modularity Web Form SQL query Database Results e.g. Web-fronted database Web interface Database backend Customer view Administration view Develop separately then combine

Model / View / Controller Separates the underlying data representations from the input and output modules Changes in one don t necessarily require changes in the other Modules have well defined APIs of course if the interfaces change, then all affected modules must also be modified

Prototyping Web Form SQL query Database Results Prototype the form and output - get feedback from users e.g. use fixed results to illustrate the interface Don t need to query the database initially - we may not even have a DB or real data yet! Simulate real code behind the scenes

Design Changes Full catalogue Special offers SQL query Database Results Feedback from prototypes likely to lead to changes to original design Modular design limits the pain - just the affected modules If you had developed everything prior to first test - potentially lots to modify! Get feedback as soon as you can!

Maintenance Web Form if things need to be changed SQL query Oracle mysql Results

Maintenance Web Form when things need to be changed modular design limits the pain SQL query Oracle mysql Results

A Useful Historical Quote No plan survives contact with the enemy - Helmuth von Moltke the Elder. 1800-1891 Applies just as much to application development as it does to war.

Change DBMS (maintenance) Which program is easier to switch to another DB? $x = mysql_query($query); $z = mysql_fetch_row($result); $this = mysql_query($query2); $that = mysql_query($query4); $y2 = mysql_fetch_row($result3); $z = mysql_query($query1); $t = mysql_query($query5); // etc. $x = doquery($query); $z = dofetch_row($result); $this = doquery($query2); $that = doquery($query4); $y2 = dofetch_row($result3); $z = doquery($query1); $t = doquery($query5); //etc. function doquery($q) { return mysql_query($q); } // function dofetch_row($r) // etc.

Change DBMS (maintenance) Which is easier to debug? $x = mysql_query($query); $z = mysql_fetch_row($result); $this = mysql_query($query2); $that = mysql_query($query4); $y2 = mysql_fetch_row($result3); $z = mysql_query($query1); $t = mysql_query($query5); //etc. $x = doquery($query); $z = dofetch_row($result); $this = doquery($query2); $that = doquery($query4); $y2 = dofetch_row($result3); $z = doquery($query1); $t = doquery($query5); //etc. function doquery($q) { return mysql_query($q); echo $q. <br>\n ; } // function dofetch_row($r) // etc.

Maintenance Write it twice Second revision is invariably better Rewriting a module is realistic Rewriting a whole program usually isn t

Choice of Development Environment For many projects - don t need to decide up front Usually has minimal impact on design, though language special features may affect things. Design should drive development choices (not the other way round)

Choice of Development Environment Modularity allows easy change A clean design is adaptable Web interface / Standalone app Same underlying processing Just a different interface

Development Environment Considerations What do you already have experience of? What would you like experience of? What is available to you? What is available to the client? What can the client support? What is suitable for the task? Be prepared to defend your choice (don t just choose something on a whim)

It s worth 65%!! Documentation I ve only got 2 weeks to write it! Write down everything you re doing Write it down now! Yes everything! Don t forget to write the why s Write a daily log consisting of things you did and things you learned Much easier to take existing material and edit and filter it than to write from scratch

Revision Control It used to work, now something s changed and it s broken Regular snapshots Full revision control - snapshots of all changes Essential for collaborative work Continuous documentation!

Communication Talk to your client Talk to each other Talk to the tech staff (they are your friends) Don t feel you have to do it all alone It s ok to consult / research / borrow But you must reference stuff you got elsewhere Well, most of them are...

Communication Tech staff can help you with more information on detailed topics - each of them has expertise in specific areas Don t be afraid to ask for assistance (the setup here may be different from elsewhere e.g. your laptop - so test it here as well as on your laptop!)

and finally... You can go to any Help Desk session for help with Honours Projects If they can t help you directly, they will attempt to point you in the right direction (to the right person or the right bit of the web!)

The End