[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"detail-sidebar-cat-0-en-105":3,"doc-seo-657622-105":59,"doc-detail-657622-en":130},{"code":4,"msg":5,"data":6},0,"success",[7,13,18,23,28,33,38,43,48,51,55],{"id":8,"doc_module":4,"doc_module_name":9,"category_name":10,"show_sort_weight":11,"slug":12},1,"Document","Story & Novel",90,"story-novel",{"id":14,"doc_module":4,"doc_module_name":9,"category_name":15,"show_sort_weight":16,"slug":17},2,"Literature",80,"literature",{"id":19,"doc_module":4,"doc_module_name":9,"category_name":20,"show_sort_weight":21,"slug":22},4,"Exam",70,"exam",{"id":24,"doc_module":4,"doc_module_name":9,"category_name":25,"show_sort_weight":26,"slug":27},5,"Comic",60,"comic",{"id":29,"doc_module":4,"doc_module_name":9,"category_name":30,"show_sort_weight":31,"slug":32},6,"Technology",50,"technology",{"id":34,"doc_module":4,"doc_module_name":9,"category_name":35,"show_sort_weight":36,"slug":37},7,"Healthcare",40,"healthcare",{"id":39,"doc_module":4,"doc_module_name":9,"category_name":40,"show_sort_weight":41,"slug":42},8,"Research & Report",30,"research-report",{"id":44,"doc_module":4,"doc_module_name":9,"category_name":45,"show_sort_weight":46,"slug":47},9,"Religion & Spirituality",20,"religion-spirituality",{"id":46,"doc_module":4,"doc_module_name":9,"category_name":49,"show_sort_weight":46,"slug":50},"World Cup","world-cup",{"id":52,"doc_module":4,"doc_module_name":9,"category_name":53,"show_sort_weight":52,"slug":54},10,"Lifestyle","lifestyle",{"id":56,"doc_module":4,"doc_module_name":9,"category_name":57,"show_sort_weight":24,"slug":58},19,"General","general",{"code":4,"msg":60,"data":61},"ok",{"site_id":62,"language":63,"slug":64,"title":65,"keywords":66,"description":67,"schema_data":68,"social_meta":123,"head_meta":125,"extra_data":127,"updated_unix":129},105,"en","module-dependence-diagrams-lecture-10-fall-2005","Module Dependence Diagrams - Lecture 10 - Fall 2005","","A lecture on Module Dependence Diagrams (MDDs) explains how to decompose software into parts while managing coupling. It introduces core notions for representing implementation and specification parts, including dependency and meet relationships, arcs imposing obligations, and how specifications determine meaning. The lecture also covers weak dependencies and illustrates MDD structure using a browser example, then uses an email client scenario to analyze decoupling mechanisms and instrumentation targets.",{"@graph":69,"@context":122},[70,84,105],{"@type":71,"itemListElement":72},"BreadcrumbList",[73,77,79,82],{"item":74,"name":75,"@type":76,"position":8},"https://docshare.wps.com","Home","ListItem",{"item":78,"name":9,"@type":76,"position":14},"https://docshare.wps.com/document/",{"item":80,"name":30,"@type":76,"position":81},"https://docshare.wps.com/document/technology/",3,{"item":83,"name":65,"@type":76,"position":19},"https://docshare.wps.com/document/module-dependence-diagrams-lecture-10-fall-2005/657622/",{"url":83,"name":65,"@type":85,"image":86,"author":91,"headline":65,"publisher":94,"fileFormat":97,"inLanguage":63,"description":67,"dateModified":98,"datePublished":99,"encodingFormat":97,"isAccessibleForFree":100,"interactionStatistic":101},"DigitalDocument",{"url":87,"@type":88,"width":89,"height":90},"https://docshare.wps.com/thumbnails/module-dependence-diagrams-lecture-10-fall-2005/657622.png","ImageObject",300,407,{"name":92,"@type":93},"ahduag","Person",{"url":74,"name":95,"@type":96},"DocShare","Organization","application/pdf","2026-10-30","2026-10-26",true,{"@type":102,"interactionType":103,"userInteractionCount":29},"InteractionCounter",{"@type":104},"ViewAction",{"@type":106,"mainEntity":107},"FAQPage",[108,114,118],{"name":109,"@type":110,"acceptedAnswer":111},"What problem does the lecture address when designing software modules?","Question",{"text":112,"@type":113},"It focuses on how to decompose a program into parts while identifying coupling between parts and showing how coupling can be reduced.","Answer",{"name":115,"@type":110,"acceptedAnswer":116},"How does an MDD relate meaning between implementation and specification parts?",{"text":117,"@type":113},"Arrows specify that an implementation part depends on a specification part, or that it meets a specification, so meaning can be determined from the part and its depended specifications.",{"name":119,"@type":110,"acceptedAnswer":120},"What is a weak dependence in a module dependency diagram?",{"text":121,"@type":113},"A dotted arrow indicates the dependent part depends only on the existence of some satisfying part, without depending on details such as member names or behavior.","https://schema.org",{"og:url":83,"og:type":124,"og:title":65,"og:site_name":95,"og:description":67},"article",{"robots":126,"canonical":83},"index,follow",{"doc_id":128,"site_id":62},657622,1793102332,{"code":4,"msg":5,"data":131},{"doc_id":128,"user_id":132,"nickname":92,"user_avatar":133,"doc_module":4,"category_id":29,"category_name":30,"doc_title":65,"doc_description":67,"doc_content":134,"file_id":135,"file_url":136,"file_type":137,"file_size":138,"view_count":29,"is_deleted":4,"is_public":8,"is_downloadable":8,"audit_status":8,"page_count":39,"language":139,"language_code":63,"site_id":62,"html_lang":63,"table_of_contents":140,"faqs":141,"seo_title":142,"seo_description":67,"update_tm":143,"read_time":46},3985747870414,"https://ap-avatar.wpscdn.com/davatar_9964176cb1d06d4a9deccf72a44ae3dc","Module Dependence Diagrams  \n6.170 Lecture 10  \nFall 2005  \nA central issue in designing software is how to decompose a program into parts. In this lecture, we’ll introduce some fundamental notions for talking about parts and how they relate to one another. Our focus will be on identifying the problem of coupling between parts, and showing how coupling can be reduced.  \nA good programming language allows you to express the dependences between parts, and control them – preventing unintended dependences from arising. In this lecture, we’ll show the features of Java can be used to express and tame dependences through a simple coding exercise, that illustratesin particular the role of interfaces.  \n1 Module Dependency Diagrams  \nLet’s start with introducing the module dependency diagram (MDD) . An MDD shows two kinds of program parts: implementation parts (classes in Java) shown as boxes with a single extra stripe atthe top, and speciﬁcation parts shown as boxes with a stripe at the top and bottom. Organizations of parts into groupings (such as packages in Java) can be shown as contours enclosing parts in Venn-diagram-style.  \nA plain arrow with an open head connects an implementation part A to a speciﬁcation part S, and says that the meaning of A depends on the meaning of S. Since the speciﬁcation S cannot itself have a meaning dependent on other parts, this ensures that a part’s meaning can be determined from the part itself and the speciﬁcations it depends on, and nothing else. An arrow from an implementation part A to a speciﬁcation part S with a closed head says that A meets S: its meaning conforms to that of S. By introducing a speciﬁcation part S, we can say that A depends on Sand B meets S. The diagrams below illustrate this; note the use of two double lines to distinguish speciﬁcation parts from implementation parts.  \nEach arc incurs an obligation. The writer of A must check that it will work if it is assembled with a part that satisﬁes the speciﬁcation S. And ‘works’ is now deﬁned by explicitly meetingspeciﬁcations: B will be usable in A if it works according to the speciﬁcation S, and A will be deemed to work if it meets whatever speciﬁcation is given for its intended uses – T say. The  \ndiagram on the right shows this. It’s the same depends-meet chain centered on an implementation part rather than a speciﬁcation part.  \nBecause speciﬁcations are so essential, we will always assume they are present. Most of the time, we will not draw speciﬁcation parts explicitly, and so a dependence arrow between two implementation parts A and B should be interpreted as short for a dependence from A to the speciﬁcation of B, and a meets arrow from B to its speciﬁcation. We will show Java interfaces as speciﬁcation parts explicitly.  \nA dotted arrow from A to B is a weak dependence; it says that A depends only the existence of a part satisfying the speciﬁcation of B, but actually has no dependence on any details of B. In other words, A references the name of B, but not the name of any of its members. A knows that the class or interface B exists, and refers to variables of that type, but calls no methods of B, and accesses no ﬁelds of B.  \nThe MDD for a browser is shown below.  \nThe Main part uses the Protocol part to engage in the [HTTP](HTTP) protocol, the Parse part toparse the HTML page received, and the Display part to display it on the screen. These parts in turn use other parts. Protocol uses Network to make the network connection and to handle the low-level communication, and Page to store the HTML page received. Parser uses the part AST to create an abstract syntax tree from the HTML page – a data structure that represents the page asa logical structure rather than as a sequence of characters. Parser also uses Page since it must be able to access the raw HTML character sequence.  \nIn our browser, for example, the abstract syntax tree in AST may be accessible as a global name (using the Singleton pattern, which we’ll see later) ","cbCaicPaZ3XMyqWI","https://ap.wps.com/l/cbCaicPaZ3XMyqWI","pdf",212687,"English","# Module Dependency Diagrams\n## Types of parts in an MDD\n## Dependence and meet arrows\n## Weak dependence\n# Example: Instrumenting a Program\n## Email client scenario","[{\"question\":\"What problem does the lecture address when designing software modules?\",\"answer\":\"It focuses on how to decompose a program into parts while identifying coupling between parts and showing how coupling can be reduced.\"},{\"question\":\"How does an MDD relate meaning between implementation and specification parts?\",\"answer\":\"Arrows specify that an implementation part depends on a specification part, or that it meets a specification, so meaning can be determined from the part and its depended specifications.\"},{\"question\":\"What is a weak dependence in a module dependency diagram?\",\"answer\":\"A dotted arrow indicates the dependent part depends only on the existence of some satisfying part, without depending on details such as member names or behavior.\"}]","Module Dependence Diagrams - Lecture 10 - Fall 2005 | PDF",1792985391]