DOC PREVIEW
CMU 15441 Computer Networking - Lecture

This preview shows page 1 out of 4 pages.

Save
View full document
View full document
Premium Document
Do you want full access? Go Premium and unlock all 4 pages.
Access to all documents
Download any document
Ad free experience
Premium Document
Do you want full access? Go Premium and unlock all 4 pages.
Access to all documents
Download any document
Ad free experience

Unformatted text preview:

1Design & Modularity15-441 Recitation 3Dave AndersenCarnegie Mellon UniversityThinking about Design• How do you start thinking about how aprogram should work?• Data-centric programs:– What data does it operate on?– How does it store it?– Examples?• Protocol-centric programs– How they interact with the rest of the world– (Maybe “Interface-centric”)• (Not exclusive! Think about IRC server)Design Principles• Goal: once again, pain management• Be able to develop independently• Avoid the big brick end-of-semester wall• Stay motivatedP1: Don’t Repeat Yourself• Aka “DRY”• Like factoring out common terms…• If you’re copy/pasting code or writing“similar feeling” code, perhaps it shouldbe extracted into its own chunk.• Small set of orthogonal interfaces tomodulesP2: Hide Unnecessary Details• aka, “write shy code”– Doesn’t expose itself to others– Doesn’t stare at others’ privates– Doesn’t have too many close friends• Benefit:– Can change those details later withoutworrying about who cares about themExample 1:• int send_message_to_user( struct user *u, char *message)• int send_message_to_user( int user_num, int user_sock, char *message)2Example 2int send_to_user(char *uname, char *msg){ … struct user *u; for (u = userlist; u != NULL; u = u->next) { if (!strcmp(u->username, uname) …Consider factoring into: struct user *find_user(char *username)• Hides detail that users are in a list– Could re-implement as hash lookup if bottleneck• Reduces size of code / duplication / bug count– Code is more self-explanatory (“find_user” obvious), easier to read, easierto testP3: Keep it Simple• We covered in previous recitation, but– Don’t prematurely optimize• Even in “optimization contest”, program speedis rarely a bottleneck• Robustness is worth more points than speed!– Don’t add unnecessary features• (Perhaps less pertinent in 441)P3.1: Make a few bits good• Some components you’ll use again– Lists, containers, algorithms, etc.• Spend the time to make these a bitmore reusable– Spend 20% more time on componentduring project 1– Save 80% time on project 2…P4: Be consistent• Naming, style, etc.– Doesn’t matter too much what you choose– But choose some way and stick to it– printf(str, args) fprintf(file,str, args)– bcopy(src, dst, len) memcpy(dst,src, len)• Resources: Free where you allocate– Consistency helps avoid memory leaksError handling• Detect at low level, handle high– Bad: malloc() { … if (NULL) abort(); }– Appropriate action depends on program– Be consistent in return codes andconsistent about who handles errorsIncremental Happiness• Not going to write program in one sitting• Cycle to go for:– Write a bit– Compile; fix compilation errors– Test run; fix bugs found in testing• Implies frequent points of “kinda-working-ness”3Development Chunks• Identify building blocks (structures, algos)– Classical modules with clear functions– Should be able to implement some with roughsketch of program design• Identify “feature” milestones– Pare down to bare minimum and go from there– Try to identify points where testable– Helps keep momentum up!• Examples from IRC server?Testability• Test at all levels– Recall goal: reduced pain!– Bugs easiest to find/correct early and insmall scope. Ergo:• Unit tests only test component (easier to locate)• Early tests get code while fresh in mind• Write tests concurrently with code. Or before!– Also need to test higher level functions• Scripting languages work well here441 Testability• Unit test examples:– Your hash, list, etc., classes– Machinery that buffers input for line-basedprocessing– Command parser– Routing table insert/lookup/etc.– Others?Bigger tests• More structured test framework early– “Connect” test (does it listen?)– Alternate port # test (cmd line + listen)– …Testing Mindset• Much like security: Be Adversarial• Your code is the enemy. Break it!– Goal of testing is not to quickly say “phew,it passes test 1, it must work!”– It’s to ensure that 5 days later, you don’tspend 5 hours tracking down a bug in it• Think about the code and then writetests that exercise it. Hit border cases.Testing a Hash Table• Insert an item and retrieve it– Why?• Insert two items and retrieve both– Why?[help me fill in this list!]Note ordering: Simple to complex…4Design & Debugging• Covering more next week, but…• Strongly, strongly encourage people touse a consistent DEBUG()-like macrofor debugging• Leave your debugging output in• Make it so you can turn it


View Full Document

CMU 15441 Computer Networking - Lecture

Documents in this Course
Lecture

Lecture

14 pages

Lecture

Lecture

19 pages

Lecture

Lecture

14 pages

Lecture

Lecture

78 pages

Lecture

Lecture

35 pages

Lecture

Lecture

4 pages

Lecture

Lecture

4 pages

Lecture

Lecture

29 pages

Lecture

Lecture

52 pages

Lecture

Lecture

40 pages

Lecture

Lecture

44 pages

Lecture

Lecture

41 pages

Lecture

Lecture

38 pages

Lecture

Lecture

40 pages

Lecture

Lecture

13 pages

Lecture

Lecture

47 pages

Lecture

Lecture

49 pages

Lecture

Lecture

7 pages

Lecture

Lecture

18 pages

Lecture

Lecture

15 pages

Lecture

Lecture

74 pages

Lecture

Lecture

35 pages

Lecture

Lecture

17 pages

lecture

lecture

13 pages

Lecture

Lecture

21 pages

Lecture

Lecture

14 pages

Lecture

Lecture

53 pages

Lecture

Lecture

52 pages

Lecture

Lecture

40 pages

Lecture

Lecture

11 pages

Lecture

Lecture

20 pages

Lecture

Lecture

39 pages

Lecture

Lecture

10 pages

Lecture

Lecture

40 pages

Lecture

Lecture

25 pages

lecture

lecture

11 pages

lecture

lecture

7 pages

Lecture

Lecture

10 pages

lecture

lecture

46 pages

lecture

lecture

7 pages

Lecture

Lecture

8 pages

lecture

lecture

55 pages

lecture

lecture

45 pages

lecture

lecture

47 pages

lecture

lecture

39 pages

lecture

lecture

33 pages

lecture

lecture

38 pages

lecture

lecture

9 pages

midterm

midterm

16 pages

Lecture

Lecture

39 pages

Lecture

Lecture

14 pages

Lecture

Lecture

46 pages

Lecture

Lecture

8 pages

Lecture

Lecture

40 pages

Lecture

Lecture

11 pages

Lecture

Lecture

41 pages

Lecture

Lecture

38 pages

Lecture

Lecture

9 pages

Lab

Lab

3 pages

Lecture

Lecture

53 pages

Lecture

Lecture

51 pages

Lecture

Lecture

38 pages

Lecture

Lecture

42 pages

Lecture

Lecture

49 pages

Lecture

Lecture

63 pages

Lecture

Lecture

7 pages

Lecture

Lecture

51 pages

Lecture

Lecture

35 pages

Lecture

Lecture

29 pages

Lecture

Lecture

65 pages

Lecture

Lecture

47 pages

Lecture

Lecture

41 pages

Lecture

Lecture

41 pages

Lecture

Lecture

32 pages

Lecture

Lecture

35 pages

Lecture

Lecture

15 pages

Lecture

Lecture

52 pages

Lecture

Lecture

16 pages

lecture

lecture

27 pages

lecture04

lecture04

46 pages

Lecture

Lecture

46 pages

Lecture

Lecture

13 pages

lecture

lecture

41 pages

lecture

lecture

38 pages

Lecture

Lecture

40 pages

Lecture

Lecture

25 pages

Lecture

Lecture

38 pages

lecture

lecture

11 pages

Lecture

Lecture

42 pages

Lecture

Lecture

12 pages

Lecture

Lecture

36 pages

Lecture

Lecture

46 pages

Lecture

Lecture

35 pages

Lecture

Lecture

34 pages

Lecture

Lecture

9 pages

lecture

lecture

49 pages

class03

class03

39 pages

Lecture

Lecture

8 pages

Lecture 8

Lecture 8

42 pages

Lecture

Lecture

20 pages

lecture

lecture

29 pages

Lecture

Lecture

9 pages

lecture

lecture

46 pages

Lecture

Lecture

12 pages

Lecture

Lecture

24 pages

Lecture

Lecture

41 pages

Lecture

Lecture

37 pages

lecture

lecture

59 pages

Lecture

Lecture

47 pages

Lecture

Lecture

34 pages

Lecture

Lecture

38 pages

Lecture

Lecture

28 pages

Exam

Exam

17 pages

Lecture

Lecture

21 pages

Lecture

Lecture

15 pages

Lecture

Lecture

9 pages

Project

Project

20 pages

Lecture

Lecture

40 pages

L13b_Exam

L13b_Exam

17 pages

Lecture

Lecture

48 pages

Lecture

Lecture

10 pages

Lecture

Lecture

52 pages

21-p2p

21-p2p

16 pages

lecture

lecture

77 pages

Lecture

Lecture

18 pages

Lecture

Lecture

62 pages

Lecture

Lecture

25 pages

Lecture

Lecture

24 pages

Project

Project

20 pages

Lecture

Lecture

47 pages

Lecture

Lecture

38 pages

Lecture

Lecture

35 pages

Roundup

Roundup

45 pages

Lecture

Lecture

47 pages

Lecture

Lecture

39 pages

Lecture

Lecture

13 pages

Midterm

Midterm

22 pages

Project

Project

26 pages

Lecture

Lecture

11 pages

Project

Project

27 pages

Lecture

Lecture

10 pages

Lecture

Lecture

50 pages

Lab

Lab

9 pages

Lecture

Lecture

30 pages

Lecture

Lecture

6 pages

r05-ruby

r05-ruby

27 pages

Lecture

Lecture

8 pages

Lecture

Lecture

28 pages

Lecture

Lecture

30 pages

Project

Project

13 pages

Lecture

Lecture

11 pages

Lecture

Lecture

12 pages

Lecture

Lecture

48 pages

Lecture

Lecture

55 pages

Lecture

Lecture

36 pages

Lecture

Lecture

17 pages

Load more
Download Lecture
Our administrator received your request to download this document. We will send you the file to your email shortly.
Loading Unlocking...
Login

Join to view Lecture and access 3M+ class-specific study document.

or
We will never post anything without your permission.
Don't have an account?
Sign Up

Join to view Lecture 2 2 and access 3M+ class-specific study document.

or

By creating an account you agree to our Privacy Policy and Terms Of Use

Already a member?