现代软件工程 第二章 【个人技术】 练习与讨论

 1  基本作业: 从Hello World开始

要求每个读者(或者学生)开始管理自己的源代码:

  1. 每个人都有一个VSTS的客户端,系统管理员给每一个人都创建了TFS项目,每个学员都是各自项目的管理员。
  2. 每个同学去申请一个GitHub [i]的项目,或者 www.coding.net 项目,存放源程序和其他文档。

下面的练习可以用来锻炼学生的编程基本功。

(1)全部用命令行工具和notepad编辑器,不用Visual Studio 等集成编辑环境,每人手工创建并编译一个C的命令行程序:“Hello World”。

(2)练习数值计算。找出一个整数数组中子数组之和的最大值,例如:数组[1, -2, 3, 5, -1],返回8(因为符合要求的子数组是 [3, 5]);数组[1, -2, 3, -8, 5, 1],返回6(因为符合要求的子数组是 [5, 1]); 数组[1, -2, 3,-2, 5, 1],返回7(因为符合要求的子数组是 [3, -2, 5, 1])。

(3)写一个命令行程序, 找出一本英文长篇小说中最常出现的字母数大于 4 的单词的前十名, 和最常出现的两个相邻单词的短语前十名。 并用效能分析工具来分析程序中最费时的函数是什么, 如何改进? 请看《构建之法》 中效能分析部分。

(4)使用工具Visual Studio,创建一个C++或C# Windows程序,在主窗口中显示“Hello World”,用户可以用鼠标拖动“Hello World”在主窗口中移动。

(5)很多同学自己会写不少程序,但是往往看不懂别人写的程序,这也需要练习。不借助电脑的帮助,回答下面的问题(如代码清单2-8所示)。

View Code

问题1:这个程序要找的是符合什么条件的数?

问题2:这样的数存在么?符合这一条件的最小的数是什么?

问题3:在电脑上运行这一程序,你估计多长时间才能输出第一个结果?时间精确到分钟(电脑:单核CPU 4.0G Hz,内存和硬盘等资源充足)。

问题4:在多核电脑上如何提高这一程序的运行效率?


[i] GitHub 的资料请看: https://github.com/

2  软件工程和程序设计大作业的调查

请同学们做一个调查,到相关的软件学院或计算机学院采访学长或学弟学妹,调查一下程序设计大作业的完成情况:程序花多少时间完成?程序量是多少(多少行代码)?开发过程中使用了源代码管理等工具么? 完全独立完成的同学有多少个?程序解决实际问题么?在一些学校里,全班50 个同学,交上来的作业只有 4 到 5 种版本。这说明了什么?

3  效能分析的讨论

果冻:噫吁唏,危乎高哉!我以前一直害怕做效能分析,看来是否会用效能分析工具来提高程序质量是一个优秀程序员的标志之一。我在今天之前都是盲人骑瞎马。

小飞:改成盲人摸象更恰当。我听说,如果一个程序员从来没有用过效能分析工具,那他就不是一个程序员,只是一个编程爱好者罢了。

我的WC 程序事实上是最快的。但是在今天的程序评比之前,我想更进一步,就再优化了一下,估计能把速度提高2%。没想到出了一个小错误,导致报告的结果(行数、词数、字数)仅仅差了1。由于程序不正确,因此不能参加速度评比。我才是最需要大喊“噫吁唏”的人。

阿超:这有两个教训:

(1)先保证正确性,再提高效能。一个“仅仅差了1”的错误可能会导致缓冲区溢出(Buffer Overflow[i])的严重漏洞。

(2)如果效能的提高效果在5%以下,用户不会注意到程序效能的区别。所以要考虑那些微小的提高是否值得。

另外,WordFreq算法的时间复杂度是多少?能否再优化?请写实际程序加以验证。

荔荔:怎么才能快捷地得到有适量重复文字的文件,来帮助我们进行测试和效能分析?

小飞:我是这样做的,在电脑的根目录下,运行“dir /s > c:\temp\test.txt”命令。

阿超:好主意,大家还有没有别的办法?

4 各种编程的玩法
编程可以是一门理论,也可以是一门工程,还可以是一门手艺,这些年来程序员们玩出了不少好手艺,请看:
5 学什么,怎么学?
程序员经常在学习,交流,提高自己,怎样才是有效的学习方法呢?  打字快就能写程序快么?  哪一种语言、编辑器是最好的? 请看:
6. Coder, and Hacker 的区别:
### 回答1: 《软件工程 第2版 吕云翔pdf》是一本经典的软件工程参考书,作者吕云翔是清华大学计算机系的教授,他在书深入浅出地探讨了软件工程的基本概念、方法和技术。该书分为三个部分,第一部分介绍了软件工程的基础知识,包括软件生命周期、软件过程模型和软件需求工程等;第二部分讨论了软件设计、构建和测试等具体过程;第三部分则重点介绍了软件质量和维护等方面的内容。全书涵盖了软件工程领域的各个方面,尤其对新手来说,非常适合理解软件开发的基本原理和方法。此外,书还附有十个案例,方便读者理解实际应用。总的来说,这本书是一本不可多得的软件工程指南,对于在软件开发和IT行业工作的人来说,是一本必备的参考书。 ### 回答2: 《软件工程第2版吕云翔pdf》是一本经典的软件工程教材,作者吕云翔在书系统地介绍了软件工程的基本概念、方法和工具,并结合实际应用场景进行深入分析和实践指导。本书的主要内容包括软件生命周期、需求分析、设计、编码、测试、维护和管理等方面,旨在帮助读者掌握现代软件工程的理论与实践,并了解到如何应对日益复杂的软件开发挑战。 《软件工程第2版吕云翔pdf》具有以下几个特点:第一,本书内容详尽,几乎涵盖了软件工程领域的所有知识点,深入浅出地介绍了软件开发全过程的各种概念和方法,同时还介绍了一些新兴领域,如敏捷开发等;第二,本书注重实践,许多章节都有实践案例和练习题,能够帮助读者深化对理论的理解,并将理论知识转化为实际的开发能力;第三,本书具有一定的权威性,作者吕云翔是国内软件工程领域的资深专家,他在这方面的研究和实践经验丰富,能够为读者提供有价值的参考。 总之,《软件工程第2版吕云翔pdf》是一本适合广大软件从业者和学生使用的优秀教材,它不仅具有深入的学术内涵,而且实用性极强,可以帮助读者提高软件开发的水平和能力。 ### 回答3: 《软件工程》是一本经典的软件工程教材,由吕云翔等人编写。第2版更加系统和详尽地介绍了软件工程的理论和实践内容。 本书包括15章,内容涵盖了软件工程的全过程,从软件开发的基本概念和原则,到软件需求、设计、测试、维护和过程改进等方面。特别是在软件质量保证、软件工程实践、软件过程改进等方面,本书都有较详细的介绍和案例。 该书具有以下几个特点: 1.全面介绍软件工程全过程 本书不仅介绍了软件开发的基本概念和原则,还详细介绍了软件需求、设计、测试、维护和过程改进等方面的内容。这使得本书成为了一本全面介绍软件工程的教材。 2.将软件工程理论与实践结合起来 本书的特点之一是将软件工程理论与实践结合在一起。例如,本书不仅介绍了软件质量保证的理论,而且还提供了一系列的案例和实践方法,使读者能够更好地理解和掌握软件质量保证的方法。 3.强调软件过程改进的重要性 软件过程改进是软件工程不可或缺的一环。为了满足不断变化的需求和提高软件开发的质量,软件过程改进尤为重要。本书不仅介绍了软件过程改进的理论和方法,还提供了一系列的案例和工具,使读者能够更好地了解和应用软件过程改进。 总之,作为一本软件工程的经典教材,《软件工程》第2版吕云翔pdf全面系统地介绍了软件工程的理论和实践,对软件开发人员和学生都具有很高的参考价值。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值