You got three grading sheets with your marked up hard copy. The first grading sheet, by John, marked well-formedness issues and gives a score out of 50 The second grading sheet, by Ali, marked presence of required use cases and gives a score out of 30 The third grading sheet, by Dan, marked various correctness issues and gives a score out of 20 The first two were marked from the e-copy. The third was marked from the hard copy on which Dan wrote comments that are summarized here: MISCONCEPTIONS: Even with the full control paradigm, you will need LRE and RLE in your files, because they are the markers for the beginning of sub-documents. Overriding is NOT the same as Embedding. Overriding is forcing characters to have a specified direction. Embedding is creating a sub-document with its own direction which is independent of that of the containing document or sub-document. ("Independent" is NOT the same as "different".) Embedding is NOT the same as changing text direction. One can change text direction WITHIN a sub-document, even more than once. Connecting is NOT the same as ligaturing. Connecting is joining two adjacent letters that are connectable because they are horizontal enough at the baseline. A ligature is a single character that replaces two or more adjacent letters, e.g., "fi", "ae", lam alif. Therefore, one breaks a connection at the POINT between two letters, and one breaks a ligature at the ligature character. Thus their selections are different. Document direction is independent of Text Direction. Each can be set to either LR or RL independently AND for the SAME region. There is no such thing as just "direction". There are document direction and text direction. You were not asked to turn off ligaturing over an arbitrary sequence of characters. Rather, you were asked to be able to disable ligaturing of any sequence of Arabic, Perisan, and Urdu characters that normally make a ligature. In most cases, a ligature replaces 2 characters, as with lam-alif, lam-mim, lam-yaa, and faa-yaa. However, there are ligatures that replace 3 characters, as with lam-mim-haa, lam-mim-jim, and lam-mim-chaa. So it was necessary to talk about "any sequence" of ... characters that ... make a ligature. IMPROVEMENTS: Do not combine two use cases into one. For example, some of you had the use case for breaking a connection begin with selecting a point. This is not incorrect, but it is simpler if you have a use case for selecting a point and then the use case for breaking a connection begins with the assumption that the cursor is at a point. That is, any use case can have prerequisites or assumptions of invocation. DISCOVERIES: The domain model might need a clipboard in the interface. You might want two different variations of the paste command: 1. preserve the document direction of the source, which might mean creating a subdocument at the paste point in the target. 2. inherit the document direction of the target at the paste point. If you have only one option, the customer thinks the second is better. NITS: Logical order and visual order are ORDERINGS of characters. In a definition of the form "a B is a C", B and C must be of the same type. Logical order is the order in which characters are pronounced. Visual order is the order in which characters are displayed or printed, in which the text of each language is written in the language's direction while maintaing the general flow of the text in the containing document's document direction. The relation between visual and logical order is that when a visually ordered document is read aloud according to the conventions, the characters are pronounced in the logical order. Sequence diagrams or scenario descriptions should have at most 2 or three columns, the USER, the BDWP, and only if necessary, the OS (if you are letting the OS do some functions like change the keyboard). Breaking the BDWP into several columns is showing implementation details. Some of you had non-parenthetical parenthesized material. See the advice for user manual writing to see why there should be no parentheses in the natural langauge text of a user's manual or SRS. MISUNDERSTANDING ABOUT REQUIREMENTS: While the need to be able to show the time-ordered view was not in the assignment description at http://www.student.cs.uwaterloo.ca/~se463/FirstDraft.html, it was at http://www.student.cs.uwaterloo.ca/~se463/BDWPassignment.html. So THIS time, you got EXTRA points for having it rather than losing points for not having it. Why is a special search function needed if everything is stored in logical order? For each operation that creates something, e.g., an embedding, you need an operation that removes the same thing. For each operation that removes something, e.g., a connection between two letters, you need an operation that removes the removal, i.e., that restores the same thing. The problem with a selection that crosses a direction change boundary, WHICH DOES NOT HAVE TO BE the beginning of an embedding or an overriding, is the cognitive dissonance caused by the fact that as the selection crosses the direction change boundary, the highlighted region starts to grow in the direction opposite that of the hand movement so the user is tempted to start moving the other way. Moving the other way should cause undoing of the selection, not growing of the selection. MY MISTAKES: You need to have a way to show the time ordering of the file being edited. The description of breaking a connection is mistakenly described in terms of the character C before the connection. It should have been described as breaking the connection between the characters on both sides of where the cursor is.