- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
程式碼鑑賞 師大資工 鄭永斌副教授 軟體的困難本質 Complexity Conformity Changeability Invisibility (抽象化) Complexity 非其他創作能比擬 沒有兩個部分是一樣的 However, in hardware, building, automobile construction, they can 大量的重複使用零件 Digital computer 比大部分人們建造的東西要更複雜 有一大堆狀態 使得理解,描述,測試都非常困難 軟體系統的狀態又比 digital computer 多出幾個數量級 When scaling up 雖然有少數同樣的元素可以重複使用 不同元素的數量也勢必增加 彼此的交互作用成指數性成長 其他科學的突飛猛進緣由 數學與物理學的三世紀的突飛猛進 由複雜現象─ model 簡單的模型 這種方式之所以行的通,是因為模型中所排除掉的複雜性非現象的本質,如果這些複雜性是屬與本質上的特性,就行不通了 軟體的老問題來自於複雜的本質以及複雜性隨著軟體規模呈非線性成長的特性 我們對付的問題是複雜性本身 功能上的複雜性 結構上的複雜性 使程式擴充新功能時,難保不會產生副作用 Conformity (配合性) changeability 其他製造業的產品雖然必須面對改變的壓力,不過量產之後很少更動,只有會背後來的新型產品所取代 產品回收,現場變更(field change),頻率都比軟體來的非常非常低 Invisibility You cannot see You cannot touch A building blue print 可以幫助建築師與客戶一起評估空間動線與景觀 機械零件比例圖,化學粒子棒線圖模型都達到類似的效果 軟體的本質與空間沒有關係,所以沒有什麼幾何表示法可用 Software 的表示圖 可能是許多 directed graphs 這些圖可表現control flow, data flow, relation, temporal relation, namespace … etc. 通常不是2D,也少有階層性 由於軟體開發少了強大的概念性工具的意圖,不僅阻礙了一個人腦袋所進行的設計過程,更會嚴重阻礙不同大腦之間的溝通 How about UML? OK,now what? 軟體有抽象的本質 軟體有看不到的本質 軟體有難以描述的本質 請問軟體開發有藝術的成分在嗎? 程式碼鑑賞 程式設計有藝術的成分在嗎? 軟工的研究顯示 另外一個研究顯示 成為高手與庸手與年資經驗沒有絕對關係 Yes 我們認為寫軟體有藝術的成分在 藝術的東西 有時只能意會不能言傳 有學過畫畫等藝術的東西嗎?請問你怎麼學的? 上過藝術鑑賞這種課程嗎? 通常藝術的傳授一定會配合藝術的鑑賞 AND? 你看過多少別人的程式碼?(教科書的片段程式碼不算) 你知道什麼樣的程式碼是好的? 你知道什麼樣的程式碼是壞的? 我們先來看看壞的 Spaghetti Code Lasagna code Lasagna code is used to describe software that has a simple, understandable, and layered structure. Lasagna code, although structured, is unfortunately monolithic and not easy to modify. An attempt to change one layer conceptually simple, is often very difficult in actual practice. Ravioli code In ravioli code, each of the components, or objects, is a package containing some meat or other nourishment for the system; any component can be modified or replaced without significantly affecting other components. The ideal software structure is one having components that are small and loosely coupled; this ideal structure is called ravioli code. Now, let’s look at some spaghetti code
您可能关注的文档
- 计算机软件与理论学科(专业)博士研究生培养方案-合肥工业大学研究生.doc
- 论共生原则对当代学院版画语境的影响-广东美术馆.doc
- 记承天寺夜游【田阳】.ppt.ppt
- 论国际私法中的最密切联系原则与自由裁量权.doc
- 记者团培训之——周报中常见错误概览.ppt
- 讲座1高考地理选择题的解题技法.ppt.ppt
- 论文格式样板,A4纸-海南省工业学校.doc
- 设计案例网络课程设计的案例分析.doc
- 说课——关于酶本质的探索.ppt
- 请按照本表背面填表注意事项正确填写本表各栏-专利.doc
- 明代士庶婚配地域选择分析.pdf
- 省域内基础教育质量的地区差异分析及协调发展对策研究--基于江苏632所中小幼学校的问卷调查.pdf
- 肉桂双瓣卷蛾危害香料用樟树矮林的发生特点与防控技术研究.pdf
- 草乌头种子层积过程中内源激素变化和相关基因表达分析.pdf
- 财政激励下主产区粮食低碳生产“稳中求进”策略——基于演化博弈模型的分析.pdf
- 第一师阿拉尔市产业结构与就业结构协调性分析.pdf
- 山西明清古砖物理性能及成分分析.pdf
- 澳大利亚大堡礁海洋公园制度建设及对中国的启示——基于《大堡礁2050长期可持续发展计划》的分析.pdf
- 2020~2023年北京市某医院常见9项呼吸道感染病原体检测结果及分布特点分析.pdf
- 基于黑水虻虫卵自供给的养殖优化及经济效益分析.pdf
文档评论(0)