当前位置 博文首页 > weixin_34416754的博客:现代软件工程 第一章 【概论】练习与讨

    weixin_34416754的博客:现代软件工程 第一章 【概论】练习与讨

    作者:[db:作者] 时间:2021-09-06 13:26

    1、像阿超那样,花二十分钟写一个能自动生成小学四则运算题目的“软件”,和同学们比较一下各自程序的功能、实现方法的异同等等。(苏志华)

    ? ? ?详见http://www.cnblogs.com/bywb/p/5859547.html

    2、选择mobile app手机应用(唐家炜)

    (1)此类软件是什么时候开始出现的,?这些软件是怎么说服你(陌生人)成为他们的用户的?? 他们的目标都是盈利么?? 他们的目标都是赚取用户的现金么?还是别的?

    ? 严格意义上我接触的手机移动应用开始于塞班,兴起于ios,成熟于安卓和ios。苹果手机引领了潮流,大家就都纷纷开始用手机应用了。本质上他们都是盈利的,有直接从用户手中赚钱的,也有通过广告实现收益的。最高明的是通过用户向第三方付款,通过资金沉淀实现盈利。

    (2)你个人第一次用此类软件是什么时候,你当时多大,具体在什么学校读几年级,是什么状态,对软件有什么期望 ?软件是如何到你手里的,例如:邮购,下载,互相拷贝,从应用商店购买,等等。?(这个必须详细写,不然这道题目得0分,我要看看全世界的学生怎么抄袭这一段的)。

    ? 本人2012年参加高考。第一次用app是玩塞班自带的爸妈手机上的游戏,初中左右。到了高中有了一台nokia手机,开始安装一些基本应用,如上网浏览器,这是我真正使用手机应用。到了大学,我有了一台iphone,才开始广泛使用手机应用。一开始是玩游戏,后来主要是用微信交流,用日历去安排日程,用课程格子安排课程,用大众点评去吃饭结账。

    (3)我们知道有些软件是收费的,有些是“免费” 的, 那么,写这个软件的工程师们,他们的工资大约是多少,请给出尽量详细的分析,精确到年收入多少万元人民币。?

    ? ?我从来没有到专业相关企业去过实习,我只能从本科毕业时工作的同学了解一些情况,在天津8k起步,在北京10k起步。我实在不了解企业的盈利情况,无法给出详尽的分析。我曾经去听过一些国内仅次于BAT的二线互联网企业,他们也承认他们在烧钱,但他们坚信为社会提供服务早晚会挣到钱。

    (4)你是如何学会用这软件的?它给你什么好处,坏处??这些软件是如何处理 bug 的?? 如何更新新版本的? ?你估计软件团队更新一个主要版本花了多少 人月? 请写上人月的定义.?

    ? 现在手机应用之间的人机交互类似,极易操作。好处是生活方便,坏处是我经常看到别人盯着手机,忽略了现实生活,成了“低头族”。作为用户,我在手机上无法debug,如果总是闪退出问题,也只好找替代软件。现在的手机应用版本更新很快,一到两个月必然更新,以一个团队1k个成员,得1k个人月。人月是工作量的计量单位,是项目所有参与者工作时长的累计,是最为方便计算成本的数据。是项目管理中常用的概念。

    (5)同一类型的软件之间是如何竞争的?你现在还用它么,或者是同类软件的不同品牌,为何?

    ? 手机应用的竞争很激烈,但又很奇怪,现在陷入了合并风暴,大众点评美团,优酷土豆,滴滴优步。竞争主要是通过烧钱打价格战。在价格战结束之后,我依然会使用使用,叫外卖确实比堂食更加方便,电子商务确实比溜商场更加快捷。

    (6)5年后, 这种软件运行的硬件会有什么变化, 软件再过 5 年还会存在么,为什么?

    ? 乔布斯玩的是“道”,库克勉强算是“术”,只能从配置上不断提高,缺乏创新。在可预见的将来,手机依旧会存在,手机应用作为手机的强大支撑依旧会存在,五年是肯定的。

    (7)列举你在使用上述软件的时候观察到的 “特殊”现象,它们和硬件有什么不同?? 这些能说明软件的某些本质特性么?

    ? 人表面上在触摸手机,处理器是手机的大脑,而指导人脑工作的和指导处理器工作的原则就是软件,总之是看不到的,但必定存在的。

    3、上网调查一下目前流行的源程序版本管理软件和项目管理软件都有哪些, 各有什么优缺点? (提示:搜索一下Microsoft TFS、GitHub、Trac、Bugzilla、Rationale,Apple XCode),请用一个实际的源代码管理工具来建立源代码仓库,并签入/签出代码。(唐家炜)

    Microsoft TFS:

    优点:

    1.任务版上能将需求、项目进度一览无余,对于小团队而言,比甘特图更有用

    2.集成了项目管理、版本控制、BUG 跟踪,能有效实现 SCRUM

    3.能与 VS 无缝接合

    缺点:

    1.整个系统是用 asp 实现的,用浏览器访问相当慢

    2.从 IE 上访问、填写各种开发、测试记录,也是很慢,感觉不如 mantis? BT 这样基于 php 的那么方便、迅速

    3.XP系统无法访问,还要求64位的操作系统

    ?

    github与SVN的优劣

    1)适用对象不同。Git适用于参与开源项目的开发者。他们由于水平高,更在乎的是效率而不是易用性。Svn则不同,它适合普通的公司开发团队。使用起来更加容易。

    2)使用的场合不同。Git适用于通过Internet,有多个开发角色的单个项目开发, Svn 适合企业内部由项目经理统一协调的多个并行项目的开发。

    3)权限管理策略不同。Git没有严格的权限管理控制,只要有帐号,就可以导出、导入代码,甚至执行回退操作。Svn则有严格的权限管理,可以按组、按个人进行针对某个子目录的权限控制。区分读、写权限。更严格的,不支持回退操作。保证代码永远可以追踪。

    4)分支(branch)的使用范围不一样。Git中,你只能针对整个仓库作?branch,?而且一旦删除,便无法恢复。而svn中,branch可以针对任何子目录,它本质上是一个拷贝操作。所以,可以建立非常多、层次性的?branch,并且,在不需要时将其删除,而以后需要时只要checkout老的svn版本就可以了。

    5)基于第三点,Git适用于单纯的软件项目,典型的就是一些开源项目,比如Linux内核、busybox等。相反,Svn擅长多项目管理。比如,你可以在一个svn仓库中存放一个手机项目的bsp/设计文档/文件系统/应用程序/自动化编译脚本,或者在一个svn中存放5款手机项目的文件系统。git中必须建立n (项目数)* m(组件数)个仓库。Svn中只需要最多n或者m个就可以了。

    参考:http://www.cnblogs.com/AyaBrea/p/5285574.html

    4、写程序这个活动大多数情况下是个人行为。 我们听说的优秀程序员似乎都是单打独斗地完成任务。同学们在大学里也认识一些参加ACM 比赛的编程牛人,? 他们写的ACM 比赛的程序是软件么?? ?“写程序做软件有区别么??请采访这些学生。?(梁绍楠)

    ? ?唐家炜同学说:程序当然不是软件,写程序仅是软件开发的一部分,做软件涵盖的东西要更?? 多,例如做软件需要进行用户的前期调研、需求分析、软件开发、后期测试、上线运营等等 好多环节。

    ? 朱翔宇同学说:我觉得“写程序”和做软件不是一回事,程序只是为了实现软件的功能和性? 能要求而编写的指令序列。而软件是一个或多个程序编译出来的成品,是程序、数据及其相关文档的一个大的完整集合。

    ?软件工程是不是教那些不怎么会写程序的人开发软件? 你怎么看?

    ? ? 软件工程是一门庞大的、覆盖面广的学科,涉及程序设计语言数据库软件开发工具、系统平台、标准、设计模式等方面。包含软件开发原理、过程、方法、管理,会写程序仅是其中的一部分,并且在当下软件应用与发展的背景下软件工程的管理、行业运作规范等越来越重要。

    5你所在的学校有计算机科学专业和软件工程专业么?相关专业的教学计划和毕业出路有什么不同?阅读有关软件工程和计算机科学的区别的文章,谈谈你的看法。文章:http://www.drdobbs.com/architectureand-design/software-engineering-computer-science/217701907?(唐家炜)

    ? ?天津大学有计算机科学与技术学院和软件学院,两者关系非常密切,在学生看来,没有什么本质性的区别,因为学生关注于就业。在老师给的参考资料里面,有一张图片,区别了两个专业。软件工程强调软件可用性、稳定性、可维护性、软件成本等,软件工程其实是研究如何更好地完成工程的学科,还达不到科学的程度,因为它的研究对象就是工程。而计算机是不针对工程,更准确地说,不研究人,研究机器,研究计算的属性,研究算法的复杂度。

    ? 简而言之,软件工程管理人的行为,使项目可控,使成果按时在预算内达到要求,而计算机科学则是在算法上对项目实施改进。软件工程更偏向于管理学,而计算机科学更依赖于数学。而在中国的实际来看,是类似的,因为毕业都会去到互联网公司。

    6、有学生提到,在大学选课的时候,可以写一个“刷课机”的程序,利用学校选课系统的弱点或漏洞,帮助某些人选到某些课程。或者帮助用户刷购票网站,先买到火车票。这些软件合法么?符合道德规范么?是在“软件工程”的研究范围么? 请大家讨论。?参考信息: 通常人们都在路边招手叫出租车,只有很少的人打电话约车, 从2014年起,在很多叫车软件出现后, 在路边招手往往看到很多出租车不停车,它们已经被叫车软件订了。这个例子和上面的有不同么?(刘祉成)

      经过小组的讨论,我们一致认为这类软件虽然没有违反法律,但是不符合道德规范。根据《构建之法》中第17章第6节软件工程师的职业道德中所提到的《职业道德规范和实践标准》的原则一:软件工程师的行为应与公众利益一致。这些软件的制作人违反了该原则,因为这些软件因流通渠道不公开的原因,必然无法让所有用户得知并使用,因此制造了用户之间的不公平,其行为帮助了一部分用户得到了利益确实令一部分用户的利益遭受损失,与公众利益相左。

      叫车软件软件的出现虽然使一些在路边招手叫出租车的人叫不到车,但是这种软件既是合法的,同时也符合道德规范。因为叫车软件并没有与公众利益相左。软件是在积极推广的,用户只要有手机,在有网络的环境下就可以使用。对用户来说并没用产生不公平。

    7、有人认为,"中文编程", 是解决中国程序员编程效率一个秘密武器,请问它是一个 "银弹" 么? (苏志华)

    ? 中文编程并不单指程序是由汉字组成,更要在于其编译技术得自身掌握,因而编程和编译互为统一发展、缺一不可。但汉语的博大精深,经常会出现歧义和地域性差异,导致汉语编程的统一风格很难实现。例如从 http://weibo.com/2210132365/BiYTws20这一链接的内容来看,虽然简单实现了中文编程,可仍然是中英混杂在一起,代码的可读性不强,并且在编写的过程不停切换中英文则大大降低了效率和用户体验。http://www.chinesepython.org/ 该链接里提出"中蟒"这一基于Python的中文编程语言,利用了Python编程格式的优点,但并没有实现其他语言的汉化,因而表示不出C、Java、C#等编程语言的优势,另外其平台的扩展性也不是很好,只在部分linux和windows上测试过,同时繁体字也未达到简洁明了的初衷。正如http://baike.baidu.com/subview/545069/545069.htm所言,汉语编程需要具有易用性、安全性、本地化、国际化、跨平台、融合性、先进性、自然醒、无代码编程等特点,但就目前的编程环境来说,单单文件的中文名就可能会导致整个程序的崩溃,更别提庞大的汉语编程,而完全利用中文编程来开发软件、国际化和跨平台的实现尤为困难。综上所述,个人认为"中文编程"还算不上是"银弹",其应用场景的不广泛性和较差的用户体验、开发的难度等缺点,仍不足以在IT界刮起革命的风潮。

    8、创建个人技术博客(建议是 cnblogs.com),列出问题并在每个问题后面,请列出哪一章节的什么内容引起了你的提问,? ② 你对此进行了什么思考 (每个问题至少写100 字)?(梁绍楠)

    ? ?详见http://www.cnblogs.com/liangshaonan/p/5861571.html

    9、快速看完整部教材,列出你不懂的 5 - 10 个问题,发布在你的个人博客上。(苏志华)

    ? 详见http://www.cnblogs.com/xlwm/p/5850260.html

    10、课上同学们应该根据自己的爱好和情况组成了5-6 人的项目小组。?并且报告了助教。(王喆)cs