《软件设计实践》课程作业
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
《软件设计实践》课程作业
目录
一、写一篇“我对‘软件工程’的理解”的小文章。 (2)
二、[3选1]画出图书馆对读者借书、还书服务的DFD. (5)
三、开发某种“优化处理”软件 (8)
四、课本: (9)
[习题1]-P32 (9)
[习题6]-P141 (9)
[习题7]-P183 (12)
一、写一篇“我对‘软件工程’的理解”的小文章。
在大三第一学年,修了这门“软件工程”,还是熟悉的钱老师,但是这门课带给我的感觉和一些影响和离散数学有很多新的不一样。
先说说这门课的代入吧!人类认识大千世界万事万物有一个最基本的手段:那就是按其顺时间发展的过程分阶段来认识。人的成长阶段可以分为:婴儿期,儿童期,青春期,成人期,老年期,这样来引入软件生存周期(Software lifecycle)很形象生动,容易带入,软件生存周期:分析、设计、编码、测试、维护。
老师上课时候也好多次强调设计一个软件,对于一个工程,需求分析和规划,一步步按规律来,蛮重要。我觉得这样的分析,这样的一种思维方式,给了我很多好的影响。正好这学期有一门课程“软件设计实践”,在完成相关任务的时候,就有深刻的感觉到“软件工程”这门课中讲到的一些方法和思想。
很重要的一点就是在软件工程中有提到:在编写程序(编码)的时候,要有好的编码风格,其中简明清晰是最重要。从上世纪70年代以来,编码的目标从强调效率转变到强调清晰,与此相应,编码风格也从追求“聪明”和“技巧”,变为提倡“简明”和“直接”。我觉得这样的一种习惯,一点一点有意识的养成还是很有用的,至少可读性和易理解性都很好,也会让人感觉到很舒服。
“软件工程”的提出,是在一次主题是探讨摆脱“软件危机”的途径和方法的会议上,之后软件工程成为一门新兴的工程学科,两者之间还是有很大关联的。它们的重点还是在关于软件的“开发”和“维护”,这其中,良好的软件质量管理是获得高质量软件的重要保证!林锐在《软件工程思想》中也强调:程序员要充分了解软件的质量因素,只有提高设计水平,才能开发出高质量的软件。
阅读教材,因为书中很多学术性语言和描述,啃起来很拗口。读林锐的《软件工程思想》,文章的言辞和内容幽默诙谐,但是却会有一种神奇的让人边笑边思考的奇妙能力。
林锐用三个问题来解释软件工程的道理:是什么、为什么、怎么办。还提到
了关于“需求分析”:不论是为客户做软件项目还是为自己做软件产品,都要进行需求分析。需求分析最恼人之处是难以在项目刚启动时搞清楚需求,如果在项目做了一大半时需求发生了变化,那将使项目陷入困境。他对于很多事物的理解和分析都十分的透彻,并且最后用很幽默的语言,讲述出事物的本质和联系,比如“测试有助于提高软件的质量,但是提高软件的质量不能依赖于测试。”
还有一些小片段,比如林锐关于程序员的一段描述,非常的幽默俏皮可爱,细细品味之后,也慢慢嗅到一股小小讽刺的味道,但是吐槽之后,最后留给人的印象还是鼓舞与期待。读着读着,就觉得每一个人都有一个世界,每一件事情的发展和经过,也都像一个世界。
“一个高水平的程序员既然能学好数字逻辑,能理得清楚软件中很多象“嵌套”这类“鸡生蛋并且蛋又生了鸡”的错综复杂的关系,从理论上讲当个县长也不成问题。”
这句话我也很有体会。我从小学开始进入校队开始打乒乓球,在一个普通观众看来,乒乓球只是一项运动,好像每天无非就是对着发球机练练各种发球,配上几种炫酷技巧:削球哇、拉球哇各种,然后参加比赛这样的单曲循环。但投进去之后,会发现远不是这样:一方面是我真的喜欢打乒乓球,就像那些真的沉迷于编程开发的程序员,真的喜欢的时候,每一点点都是欢呼雀跃;另一方面就是我的的确确在跟着教练一起训练和自己练习、比赛的时候,悟到了一些对我很有用的很多方面的小道理,学习自己分析问题查找问题,分大块,然后慢慢找到小块,然后一点一点的扣,很练耐心的,我看纪录片《乒乓球在中国》背后的故事,甚至要把每一场比赛的每一个点的时间扣出来对比分析;心态的磨练是最大的考验,如果遇到一个发球就让自己措手不及的选手,怎么办,没有对自己了解清晰,就会很容易乱了手脚;老是借不到那个位置的球怎么破;到最后,就会成为给自己向内汲取的能力,在太多的时候,外界能给的实在有限。
“人们都有自己的世界观和方法论,能自然而然地运用于生活和工作中。同样,程序员脑子里的软件工程观念会无形地支配其怎么去做事情。”事情、事物之间都是相通的、有迹可循的,这一点我也在慢慢成长的过程中有所体会。站在你面前的也还是一个普普通通的乒乓球选手,一个在你看来只是一直在电脑前写
程序的人,但是你不知道的是他在这漫长的过程中学到了什么,经历了什么,感悟到什么,又崩溃过多少次,想放弃过多少次,最后不得不耐下性子去绞尽脑汁用生命去解决,直到最后,端庄的站在你面前,面带微笑好像看起来没有什么变化,但其实内在的样子丰富魁梧,久经战场,可以看清本质,见招拆招,很厉害。
软件工程这门课还有钱老师的上课方式带给我比较多的,一方面就是对于“需求分析”的认识,老师上课也举了几个例子,林锐在《软件工程思想》中也举到了几个例子,强调了关于合理的正确的需求分析的重要性,如果一开始的需求分析就没有实事求是,存在偏差,后面的很多工作都是无用功,不管付诸多少努力,需求分析就是最重要的一击。就像是一个人对自己的认识一样,把自己认识清楚了,把自己分析清楚了,在后来干很多事情就会比较有针对性,也会很准确。另一方面是很小说起来有点滑稽搞笑的一点,就是我可以很清楚的感觉到自己在写一些课程的实验报告的时候,会很清楚,思路很清晰,会先划分大模块然后一点点完成,就是感觉很有步骤,整个流程走下来地去完成,整个人的会因为结构清晰而感觉到非常的舒服。
在大二学习的毛概课上,老师说“大学学习的是你十年以后还能回想起来的东西,是思考判断的能力。”软件工程带给了我很多,也在自己想要学习的过程中培养了一些至少对我来说很有用的习惯,希望自己可以继续学习,继续思考,继续进步,成为一个自己更喜欢更有用的人。