现代软件工程 第一章 【概论】练习与讨论 杨星星(6,7,9,10)

题目描述:

6. 有学生提到,在大学选课的时候,可以写一个“刷课机”的程序,利用学校选课系统的弱点或漏洞,帮助某些人选到某些课程。或者帮助用户刷购票网站,先买到火车票。这些软件合法么?符合道德规范么?是在“软件工程”的研究范围么? 请大家讨论。

题目解答:

    我认为这些软件不合法,并且不符合日常道德规范,不在“软件工程”的研究范围内。

    通过了解,我知道了软件工程是研究和应用如何以系统性的、规范化的、可定量的过程化方法去开发和维护软件,以及如何把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来的一门工程学科。

    从事软件工程行业的软件工程师拥有自己的职业道德规范,并且软件的开发必须符合这个规范才算合法。“刷课机”、利用软件刷购票网站这种行为本身是为了个别人的利益,不符合公众利益要求,违反了软件工程职业道德规范中的有关条例,没有坚持以符合公众利益为目标,软件工程师在进行相关的专业判断时,没有坚持正直、诚实和独立的原则。这些软件的开发严重违反了道德规范,是一种自私自利的行为,且存在一些“欺诈”嫌疑。

    软件开发要以公众利益为出发点,不能以个别人的利益为出发点,否则悖于软件工程的初衷,因此这种行为不属于“软件工程”的研究范围。

题目描述:

7. 有人认为,中文编程, 是解决中国程序员编程效率一个秘密武器,请问它是一个 银弹?

题目解答:

    “银弹”?刚读题目的时候并没有理解银弹代指什么,经过搜索查询,知道了银弹指的是古老古老的欧洲民间传说中能杀死狼人的利器,代指能解决棘手项目等难以完成事件的方法,类似杀手锏 、王牌等。IBM大型机之父佛瑞德·布鲁克斯(Frederick P. Brooks, Jr.)在1986年发表的一篇关于软件工程的经典论文,便以《没有银弹:软件工程的本质性与附属性工作》(No Silver Bullet — Essence and Accidents of Software Engineering)为标题。其中的“银弹”是指一项可使软件工程的生产力在十年内提高十倍的技术或方法1

    据我了解,中文编程是指使用中文来书写的程序设计语言。我们之所以选择中文编程,是为了减少对英语的学习,将精力集中在程序设计上,并且便于程序交流和代码维护。然而中文编程技术关键不是简单程序编写汉字标识使用,而是程序代码的编译技术必须自己掌握,编程与编译必须互为统一发展,因此,我认为中文编程并不是解决中国程序员编程效率的一个秘密武器。

    看完老师推荐的参考文献,第二个参考文献最接近本题主题,但是我并没有在对“中莽”产生很大的兴趣。的确,编程对于初学者来说,满目的英文的确很烦人,然而,只要掌握一定的规律,英文编程其实是很简单的,相比较掺杂着中文的程序来说,全英文逻辑上会感觉更容易接受,整体看来会更舒服一些。编程不好,中英文差异并不是关键性的问题,我认为编程主要是思想以及逻辑的考验,想要学会编程,必须会运用清晰的头脑有条理的分析问题,即有逻辑的思考并解决问题,这个能力需要下大工夫锻炼,这并不是说英文不好就不能逻辑的思考问题。想要编程好,编程能力提高,必须锻炼逻辑思考,锻炼抽象解决问题的能力,而不是去反感英文编程,初学者可以利用“中文编程”来过渡,更好的适应抽象思考并解决问题的能力,从而提高中国程序员的编程效率。

    因此,我认为“中文编程”只是缓解初学者对英文的恐惧感。个人认为“中文编程”可以称为一个缓冲剂,但它并不是解决中国程序员编程效率一个秘密武器,更不能称得上是一个“银弹”。

引用:http://baike.baidu.com/link?url=GQ3JgkzvZZPFFwxMOhidqN-I6vCQXO2QIKPOiKfQTIZEE03lvBtMQN3t2gbHO0yT9MzGGTHXil4cV2-t2Kzdgdy2pZH5YC3SF1XW7tsBJCOe2Ewk5_R97dkMRflkHV2COwxW0wCXO0Bcvmprvn6T0q

 

题目描述:

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

    每个问题后面,请列出你对此进行的思考。

题目解答:

既然题目说是快速浏览,有些内容未能仔细阅读,根据个人见闻及本书提出以下问题,如果提的问题比较愚昧请见谅。

(1)软件工程师在一般公司有什么样的地位?

(2)需求分析是软件开发比较重要的阶段,但需求分析未必会做到照顾到各个方面,如若需求分析结束后发现未考虑的需求,接下来要怎么快速处理该问题?

(3)大学中相关专业往往会开设高级语言设计,数据结构等编程相关课程,软件工程与这些课的关系如何?

(4)软件开发总是分为研发人员和测试人员,如果两个团队合二为一,即测试人员全程参与研发,这样是否会更高效

(5)并没有系统学习软件工程相关课程的人员,与系统学习过软件工程的,在软件开发相比有什么独有的优势?

题目描述:

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

      10.1: 请每个小组在 cnblogs.com 上面创建团队博客,第一个博客把小组成员都介绍一下  #团队博客作业1

      10.2: 现代软件工程这门课已经上了好几年了,以前有很多学生做过团队项目(说不定包括本校的学生),请你们找一个以前的团队采访一下:

                - 当时的项目有多少用户,给用户多少价值? 现在还有人用吗?

                - 这个项目能否给我们团队继续开发,源代码/文档还有么?

                - 项目开发有什么经验和教训

                - 对学好软件工程有什么建议

                写成一个博客   #团队博客作业2

题目解答:

    10.1:

    可在博客置顶处查看。

    10.2:

    看到这个问题,我想到本科舍友做过的一个项目,因此对她进行了一个电话采访

    经过采访,我更加清楚的了解到了当时他们的那个项目详情。通过提问老师设定的问题,以及自己的临场发挥,我认识到了他们当时做的那个项目是一个类似“脸萌”、“美图秀秀”等软件的人脸图像处理与识别的android类软件。当时项目未完全推广开来,只是在本年级推广了下,使用此软件的用户大概有100人左右,使用者反应软件设想很好,在同学之间可以玩转的开,并且增加了很多新的功能,比现存的软件多了些“换脸”(哭脸变笑脸,笑脸变哭脸等)、动态表情(脸部做出哭笑等表情时会产生面部动作)等闪光点,因此很受同学们的欢迎,为用户带来了乐趣。就推测,现在这个软件应该仅有极个别人在使用。她开发的项目的源代码/文档现在都还留着,但是开发前景不大,不适合我们团队继续开发。

    通过她的叙述,我认为最有价值的地方便是经验与教训。我了解到了在他们的开发过程中遇到很多问题,并且也得到很多经验与教训。为了保证项目的顺利开发,需要清楚的了解软件的开发流程:需求分析——概要设计——详细设计——编码——测试——软件交付——验收——维护。舍友说此开发流程要熟练掌握,不需要完全按照此流程一步不落的做,但大体流程要这样走完。并且在项目开发中一定要注意团队协作,要明确分工,合理分工,团队人数不在于多,而在于精,要每个人都去实打实的去做事情,不要养闲人。舍友还强调,要注意需求分析,不要觉得需求分析不重要,需求分析关乎项目开发难易程度,也影响了项目开发时间。尤其注意,项目开发的后期维护十分重要,做不好维护,软件的生命周期会很短。

    当被问及“对学好软件工程有什么建议?”时,舍友引用了当时教我们《软件工程》这门课程的老师的回答:“要想学好《软件工程》,就要学会问三个问题:是什么?为什么?怎么做?”软件工程是什么?要了解软件工程的思想,对软件工程的基本概念有个透彻的了解,深入了解什么是软件工程。要明白为什么学习软件工程,学习软件工程,学会总结并学习软件实践者的成功经验和失败教训。从而明白自己在面对一个项目开发时应该怎么做。学好软件工程对项目开发很必要!

 

答题者:杨星星         

学 号 :2016218053     

 

posted @ 2016-09-10 18:34  群鸦的盛宴  阅读(180)  评论(0编辑  收藏  举报