CSE 436S Software Engineering Workshop

advertisement
Welcome to CSE 436S So/ware Engineering Workshop “iPhone Class” Networking
Platform
1 Extensible
- CSE 436 – Software
Engineering
Workshop
1
Course Informa>on • Instructor –
–
–
–
Todd Sproull todd@wustl.edu Jolley 538 Office Hours by Appointment • Classrooms – McMillan G052 – Whitaker 316 (Mac Lab) • Time – Mondays and Wednesdays 10 – 11:30 AM • Course Website – hNp://research.engineering.wustl.edu/~todd/cse436/ • Head TA – Lyn Han • lynhan@wustl.edu Networking
Platform
2 Extensible
- CSE 436 – Software
Engineering
Workshop
2
Requirements • CSE 332S – Object Oriented SoTware Development Laboratory • Access to an Intel-­‐based Macintosh – Running Mac OS X 10.9 – 10.11 – iPhone SDK Xcode 6.4 and iOS 8 • Textbook – None, we will use lecture slides and the developer.apple.com website • Owning an iPhone or iPod Touch not required – We will use the simulator throughout the semester – Final projects may target an iPhone or iPod Touch Networking
Platform
3 Extensible
- CSE 436 – Software
Engineering
Workshop
3
Stanford CS193p • This course is based on cs193p taught at Stanford by Evan Doll and Alan Cannistraro – Lectures and slides available on iTunes • Many of the lectures and programming assignments come from this class – Ini`al assignments are iden`cal – Later assignments somewhat different • Consider taking the iTunes course if that suits your personality Networking
Platform
4 Extensible
- CSE 436 – Software
Engineering
Workshop
4
iPhone Developer University Program • WashU is enrolled in the program – Free development on devices for students – Valid for the en`re semester • Each student will need to enroll online at developer.apple.com – More details to come later • This license does not allow you to sell your applica>on on the App Store Networking
Platform
5 Extensible
- CSE 436 – Software
Engineering
Workshop
5
Copyrights, Patents, Fair Use… • Everything discussed in this class and on the website is completely OPEN and FREE – Do whatever you want with it • The goal of this class is to share as much informa>on as possible – Open discussion of topics and ideas • If you have a great idea and do not want others to implement it and sell it DO NOT discuss it here – If you choose to discuss it, we can probably improve it • You are free to become an Apple Developer ($99/yr) and sell anything you create in this class – Or implement another student’s great idea and sell it Networking
Platform
6 Extensible
- CSE 436 – Software
Engineering
Workshop
6
What is this class all about? • So/ware Engineering – Crea`ng useful soTware to solve interes`ng problems – U`lize amazing hardware with lots of cool features • Building applica>ons on the Apple iPhone and iPod Touch with Cocoa Touch Networking
Platform
7 Extensible
- CSE 436 – Software
Engineering
Workshop
7
Cocoa Touch and iPhone SDK • Based on Cocoa – API used to develop soTware on Mac • Provides rich star>ng point for exploring app design • Shows real-­‐world implementa>ons of OO design pa^erns • Designs learned on iPhone translate directly to Mac OS X Networking
Platform
8 Extensible
- CSE 436 – Software
Engineering
Workshop
8
Why Objec>ve-­‐C • Exposure to other languages is good – Probably new to most students to this class • ObjC is a language focused on simplicity and elegance of objected oriented design – Based on ANSI C – Brings many object oriented principles, but with a minimal amount of syntax • Useful data point to compare with designs of C, C++, Java other languages Networking
Platform
9 Extensible
- CSE 436 – Software
Engineering
Workshop
9
Grading • 5 lab assignments during the semester – 55% of your final grade • Mid-­‐term – Covers ObjC programming and some soTware engineering concepts – 20% of your final grade • Final Project – Work on something that can make a difference • Start thinking about your project today! – 25% of your final grade Extensible
Networking
Platform
10
- CSE 436 – Software
Engineering
Workshop
10
Ques>ons? Networking
Platform
11Extensible
- CSE 436 – Software
Engineering
Workshop
11
iPhone OS Overview Extensible
Networking
Platform
12
- CSE 436 – Software
Engineering
Workshop
12
iPhone Extensible
Networking
Platform
13
- CSE 436 – Software
Engineering
Workshop
13
Mac OS X Extensible
Networking
Platform
14
- CSE 436 – Software
Engineering
Workshop
14
Mac OS X Extensible
Networking
Platform
15
- CSE 436 – Software
Engineering
Workshop
15
iPhone / iPad Extensible
Networking
Platform
16
- CSE 436 – Software
Engineering
Workshop
16
• Core OS –
–
–
–
–
–
–
OS X Kernel BSD Sockets Security Power Mgmt Keychain File System Extensible
Networking
Platform
17
- CSE 436 – Software
Engineering
Workshop
17
• Core Services –
–
–
–
–
–
Extensible
Networking
Platform
18
- CSE 436 – Software
Engineering
Workshop
Collec`ons Networking SQLite Net Services Threading Preferences 18
• Media –
–
–
–
–
–
–
–
–
Core Audio Audio Mixing Audio Recording Video Playback JPG, PNG, TIFF PDF Quartz (2D) Core Anima`on OpenGL ES Extensible
Networking
Platform
19
- CSE 436 – Software
Engineering
Workshop
19
• Cocoa Touch –
–
–
–
–
–
Extensible
Networking
Platform
20
- CSE 436 – Software
Engineering
Workshop
Mul`-­‐Touch Events Mul`-­‐Touch Controls Accelerometer Localiza`on Alerts Web Views 20
Development • Tools – Xcode • Storyboard (formerly Interface Builder) • Frameworks – Founda`ons – UIKit • Languages and Run>mes – Objec`ve C – SwiT Extensible
Networking
Platform
21
- CSE 436 – Software
Engineering
Workshop
21
Cocoa Touch Architecture Extensible
Networking
Platform
22
- CSE 436 – Software
Engineering
Workshop
22
Object Oriented Programming Extensible
Networking
Platform
23
- CSE 436 – Software
Engineering
Workshop
23
Object Thing
Extensible
Networking
Platform
24
- CSE 436 – Software
Engineering
Workshop
24
Behavior Thing
behavior
doSomething
Extensible
Networking
Platform
25
- CSE 436 – Software
Engineering
Workshop
25
Message Thing
“doSomething”
doSomething
Extensible
Networking
Platform
26
- CSE 436 – Software
Engineering
Workshop
26
State Thing
state
count
flag
behavior
doSomething
Extensible
Networking
Platform
27
- CSE 436 – Software
Engineering
Workshop
27
Other Objects as State otherThing
Thing
state
behavior
count
flag
helper
doMore
doSomething
Extensible
Networking
Platform
28
- CSE 436 – Software
Engineering
Workshop
28
Outlets Controller
slider
label
updateLabel
Extensible
Networking
Platform
29
- CSE 436 – Software
Engineering
Workshop
29
Target/Ac>on Controller
slider
label
target
action - ‘updateLabel’
updateLabel
Extensible
Networking
Platform
30
- CSE 436 – Software
Engineering
Workshop
30
Demo Extensible
Networking
Platform
31
- CSE 436 – Software
Engineering
Workshop
31
Recap • Keep logic separate from interface elements • Outlets connect controllers to views • Use target/ac>on to customizer behavior Extensible
Networking
Platform
32
- CSE 436 – Software
Engineering
Workshop
32
Download