420 likes | 521 Views
F27SB2 Software Development 2. Lecture 1: Introduction. Form follows function. in artefacts, useful to distinguish form what something looks like function what something does e.g. MP3 player & mobile phone - same forms & different functions
E N D
F27SB2 Software Development 2 Lecture 1: Introduction
Form follows function • in artefacts, useful to distinguish • form • what something looks like • function • what something does • e.g. MP3 player & mobile phone - same forms & different functions • e.g. motorcycle & bicycle - different forms and same functions
Form follows function • can change form without changing function • e.g. new model of car • can change function without changing form • e.g. use screwdriver to open tin • “form follows function” • i.e. how things look should reflect what they do • Louis Sullivan, US Architect, 1856-1924 • modern movement
Form follows function • e.g. doors • plate ==> push • handle ==> pull • e.g. cooker hob • knobs & burners • layout of knobs should match position of burners • useful guideline for designing computer systems • how things look on screen should suggest what effects they have when selected
Syntax and semantics • in language, useful to distinguish • syntax • structure/representation • sequences of words/symbols represented as sounds, marks on paper, pixels on screen • semantics • meaning • how structured symbol sequences refer to things in reality
Syntax and semantics • e.g. print squares from 1 to 10 • BASIC 5 FOR I = 1 TO 10 10 PRINT I*I 15 NEXT I • Java int i; for(i=1;i<=10;i++) screen.println(i*i); • different syntax & same semantics
Syntax and semantics • e.g. 111 • three in Roman - 1+1+1 • seven in binary - 1*4+1*2+1*1 • one hundred & eleven in decimal - 1*100+1*10+1*1 • same syntax and different semantics
Implementation and interface • in computer systems, useful to distinguish between: • implementation • underlying behaviour • interface • how user initiates underlying behaviour • two common styles of interface • text-based - command line • windows-based - WIMP
Implementation and interface • in programming • implementation • methods that affect data structures • interface • how user interacts with methods
Implementation and interface • important to separate interface and implementation • may want to change implementation without changing interface • e.g. change data representations/algorithms to make program more efficient • may want to change interface without changing implementation • e.g. replace text-based interface to program with windows-based interface
From user to program display mouse • hardware • peripherals • e.g. keyboard/mouse & screen • computer • e.g. CPU/memory keyboard computer
From user to program display mouse • operating system • software running on computer • detects hardware changes via computer to read input • causes hardware changes via computer to write output keyboard computer operating system
From user to program display mouse • program • software running on computer • controlled by operating system • requests input from operating system • sends output to operating system keyboard computer operating system program
Command line interface • e.g. Windows: DOS window • e.g. Linux: terminal window • keyboard ==> input • screen ==> output • text is sole means of communication between user and program
Command line interface display • typical read/process/write cycle • program • asks operating system for input • pauses keyboard computer operating system program
Command line interface display • user • types on keyboard keyboard computer operating system program
Command line interface display • user • types on keyboard • computer • detects electronic signals keyboard computer operating system program
Command line interface display • user • types on keyboard • computer • detects electronic signals • operating system • identifies key presses keyboard computer operating system program
Command line interface display • user • types on keyboard • computer • detects electronic signals • operating system • identifies key presses • sends details to program keyboard computer operating system program
Command line interface display • program • interprets key presses keyboard computer operating system program
Command line interface display • program • interprets key presses • sends outputs to operating system keyboard computer operating system program
Command line interface display • program • interprets key presses • sends outputs to operating system • operating system • initiates hardware signals from computer keyboard computer operating system program
Command line interface display • program • interprets key presses • sends outputs to operating system • operating system • initiates hardware signals from computer • computer • displays outputs on screen • note that program pauses until user enters input keyboard computer operating system program
Command line interface • user does not know what to do unless told by program • program should use textual prompts to: • request inputs • describe appropriate forms for inputs • provide error information • describe output
Command line interface • e.g. find sum of 10 numbers between 0 and 100 intsum=0; intnext; for(int i=0;i<10;i++) { next=Integer.parseInt(keyboard.readLine()) while(next<0 || next>100) next=Integer.parseInt(keyboard.readLine()); sum=sum+next; } display.println(sum);
Command line interface • user is not told • what the program does • when to enter a number • what sort of number to enter • when the entered number is inappropriate • what the output represents
Command line interface int i; int sum=0; intnext; display.println(“Find sum of 10 integers between 0 & 100”); for(i=0;i<10;i++) { display.print(“Enter integer “+i+” > “); display.flush(); next=Integer.parseInt(keyboard.readLine()) while(next<0 || next>100) { display.println(“Integer not between 0 & 100”); display.print(“Enter integer “+i+” > “); display.flush(); next=Integer.parseInt(keyboard.readLine()); } sum=sum+next; } display.println(“Sum is: “+sum);
Command line interface • Note: • interface has changed • implementation has not changed
WIMP • Windows/Icons/Mice/Pointers • contemporary interface style supplanting command line • developed at Xerox PARC in 1970’s • first taken up by Apple for Lisa & Macintosh • developed by Microsoft for Windows • incorporated into X Windows interface for UNIX • now ubiquitous
Window • autonomous area on screen • communicates with operating system to enable interaction through physical devices • contains graphical areas/objects for interaction • user sees window not program • operating system mediates interaction between • user and window • window and program
Icon • symbolic representation on screen • graphical picture indicating purpose • associated with program activity • select icon ==> initiate activity • window maps icon to activity
Icon • icon choice fundamental to effective interfaces • use symbols that reflect purpose • e.g. word processor text formatting • use familiar metaphor • e.g. CD/DVD controls to stop/start/pause action
Mouse & pointer • movable physical device • associated by operating system with graphical pointer on screen • user • moves mouse • hardware • generates signals
Mouse & pointer • operating system • detects mouse movements • moves pointer on screen • determines which window pointer is pointing to • tells window that pointer is inside it • window • stops what its doing • determines which area/object pointer is pointing at • note that mouse activity interrupts program
Mouse & pointer • mouse & pointer mediate between physical and virtual activities • user not conscious of moving mouse • think they’re moving pointer...
Mouse buttons • send identifying signals to operating system when pressed • user • presses mouse button to initiate activity through area/object under pointer • hardware • generates signal
Buttons • operating system • detects signal • tells appropriate window • activity is being initiated by the mouse • which button was pressed • window • stops what its doing • determines which area/object pointer is indicating • initiates associated activity
User illusion • users focus on • intention behind system use • interaction with icons on screen • users do not distinguish • hardware from software • operating system from window • window from program
User illusion • user see system as integrated whole through window • not conscious of physical/virtual boundaries • user thinks virtual world is real • e.g. getting lost in cyberspace • e.g. treating a game as real
User illusion • computer use like driving a car • car becomes extension of body • driver: • wants to get to destination • most aware of: • road conditions/traffic/signals/engine noise • least aware of: • clutch/gears/accelerator/brake
Interface programming • how to create user illusion? • separate interface from implementation • given methods/functionality • design screen layout to optimise interaction through WIMP • associate WIMP actions with appropriate methods in underlying program
Interface programming • we’re going to: • look at programs with simple implementations • focus on: • interface design • integration with implementation • important to ensure that interface reflects implementation • interface should provide hints to user about what will happen