zoukankan      html  css  js  c++  java
  • 软件工程 第一次阅读作业

    软件工程 第一次阅读作业

    这个作业属于哪个课程 2020春季计算机学院软件工程(罗杰 任健)
    这个作业的要求在哪里 个人博客作业
    我在这个课程的目标是 进一步提高自己的编码能力,工程能力,提高团队协作能力
    这个作业在哪个具体方面帮助我实现目标 工程时间,加强思考
    其他参考文献 《构建之法——现代软件工程》第二版
    1. 快速看完整部教材,列出你仍然不懂的5到10个问题,发布在你的个人博客上。

      1. 在第二章中,作者提到:

        单元测试必须由最熟悉代码的人(程序的作者)来写。

        的确,代码的原编写者最为理解代码的功能、结构,让他(们)来写单元测试是最稳妥的选择。在Wikipedia中对Unit Test有说明

        During development, a software developer may code criteria, or results that are known to be good, into the test to verify the unit's correctness. During test case execution, frameworks log tests that fail any criterion and report them in a summary.

        单元测试可以测试出软件的不妨bug。然而,如果原编写已经不再复杂某个软件的维护,而这一软件又出现了原单元测试无法检测到的bug,那么是否只能由其他程序员来位这一软件的问题组件重新编写单元测试呢?在这种情况下,有什么好的方法来确保写出合适的Unit Test呢?

      2. 在第二章38页提到:

        软件设计原则……软件实体允许拓展……不允许修改……

        软件实体可以拓展的同时,是不可更改的。这里的“不可更改”是指哪种程度上的不可更改呢?是原模块的代码一字不能动,还是说可以在不改变模块接口的情况下适当改动?恰当地使用设计模式可以提高代码的可维护性和可扩展性,然而在某些特殊情况下是否允许改变原来的设计模式以适应新的需求?

      3. 在第三章53页,作者写道:

        问题——过早优化:……在局部问题上陷进去,花大量时间进行优化……

        所言极是,在笔者有限的程序开发经验中,的确碰到过“聪明反被聪明误”的陷阱。有时花很多时间完成一个局部模块的优化,但是却没有达到想象中的巨大效果,甚至在增加新功能时拖了后腿。但是,的确在很多情况下,局部优化是有必要的,那么,怎么平衡就局部优化和整体销量的平衡呢?

      4. 在第五章103页,有提到:

        温斯顿还指出,用户的及早介入、讨论、复审时很重要的。要让顾客正式地、深入地、持续地参与到项目中来。

        确实,客户的意见对软件的开发必不可少,但是真的有必要让客户深入地、持续地参与到项目中吗?我们知道,在实际工作中经常出现甲乙方直接的矛盾冲突,大部分都是甲乙方对对方领域没有深入的理解和交流。那么在这种情况下,客户的参与是否应该被限制在一定程度之内呢?

      5. 在第八章173页,作者认为:

        软件需求有必要需求辅助需求。功能有杀手功能外围功能

        毫无疑问,外围功能即良好的UI,平台之间的可移植性。而杀手功能时最核心的技术。但是,外围功能真的“外围”吗?随着用户审美的提高,对软件的界面设计的要求也水涨船高。在大家的核心功能做水准相近的情况下。外围功能也看成为核心竞争力,作为吸引客户的重要因素。

    2. 请问 “软件” 和 “软件工程” 这些词汇是如何出现的 - 何时、何地、何人?

      • 化学家和统计学家约翰·图基(John W. Tukey)在1958年撰写一篇科学文章时,首次使用“软件”这一术语。据报道,他早在1953年就已经提出这个词,用来标记计算机程序(即“软件)与使用这些程序的计算机(或“硬件”)之间的区别。
      • 1968年NATO会议上首次提出“软件工程”(Software Engineering)的概念,提出把软件开发从“艺术”和“个体行为”向“工程”和“群体协同工作”转化。其基本思想是应用计算机科学理论和技术以及工程管理原则和方法,按照预算和进度,实现满用户要求的软件产品的定义、开发、发布和维护的工程。从此也诞生了一门新的学科——软件工程。
    3. 【附加题】:大家知道了软件和软件工程的起源,请问软件工程发展的过程中有什么你觉得有趣的冷知识和故事?(+2')

      • 乔布斯没用过Siri,2010年,病榻上的乔布斯被刚刚出现在苹果手机应用商店里的一款名为Siri的手机应用吸引,他激动地坐了起来,仿佛看到了未来。不久后,Siri的开发者接到了已经身患绝症的乔布斯亲自打来的电话,第二天,在乔布斯家中的壁炉前,Siri的创始人与乔布斯进行了一次长达3小时的关于未来的秘密谈话。3周后,Siri的团队出现在了苹果公司。经过近两年的研发,Siri成为了苹果手机上的一个语音助理,2011年年底iPhone4s上市,不过乔布斯却没能等到Siri面世的这一天。Siri开发团队为了纪念乔布斯,做了这样一个设计。当使用者问:“如何才能成为乔布斯?”Siri的回答是:“做好你自己。”
      • https://www.zhihu.com/question/19556294
    4. 上网调查一下目前流行的源程序版本管理软件和项目管理软件都有哪些, 各有什么优缺点?

      • 管理软件 优点 缺点
        Microsoft TFS 任务版上能将需求、项目进度一览无余,对于小团队而言,比甘特图更有用集成了项目管理、版本控制、BUG 跟踪,能有效实现 SCRUM能与 VS 无缝接合 搭建、维护tfs比较复杂,硬件要求也比较高。
        GitHub GitHub是一个非常万能的工具。对于任何大小的项目,他都是理想的工具;他也是伟大的web工作流工具。首先,他可以作为一个版本控制系统和协作工具,用它来发布工作。利用GitHub,你可以将项目存档,与其他人分享交流,并让其他开发者帮助你一起完成这个项目。优点在于 ,他支持多人共同完成一个项目,因此你们可以在同一页面对话交流。 如果,你是Github使用新手,首先的挑战就是摆正心态——需要不断实践和时间。他可能不是捕捉创意过程和记录创意点子的最佳工具。对于这种特殊功能模拟可以选择LayerVault 或其他相 似工具。之前,我们已经强调过Github非常适用代码跟踪,但是却不是最好的设计跟踪工具。将图片内容转 化为代码,或者将设计用于产品设置,看起来依旧不是那样顺利。
        Trac Trac做一个SCM配置管理平台,意味着它有良好的扩充性;Trac的权限体系是比较完备的设计;非常灵活,可以随心所欲的定制,可以和TortoiseSVN集成。 不支持多项目,需求和缺陷没有分离,用 wiki 来替代 Word 等工具编写文档对于产品策划来说门槛太高了,中文化不完整,美术人员接触起来困难重重,不显示中文名,本地化做得很差,核心功能很少,不安装插件基本上没法用。
        BUGZILLA BUGZILLA不收费,BUGZILLA现在有中文版支持。BugZilla的定制功能强,能满足更多用户差异化的需求。BugZilla的安装简单。 BUGZILLA只能管理缺陷;BUGZILLA的UI并不精致;
        Apple XCode 可以自动创建分类图表。自动提供撤消、重做和保存功能,无需编写任何编码。 更新版本后,某个插件可能会失效。

        请按照最近一两年使用人数的多少, 从多到少排序并说明各自有多少用户(估计)

      • Name Users Projects Alexa rank (lower = more popular)
        Assembla Unknown [526,581+45] [23,052 as of 9 September 201946]
        Bitbucket [5,000,00047] Unknown [989 as of 9 September 201948]
        Buddy Unknown Unknown [73,518 as of 9 September 201949]
        CloudForge Unknown Unknown [339,271 as of 9 September 201950]
        Gitea Unknown Unknown [209,697 as of 9 September 201951]
        GitHub [31,000,00052] [100,000,00052] [65 as of 9 September 201953]
        GitLab [100,00054] 546,000[55][k] [2,146 as of 9 September 201956]
        GNU Savannah [93,34657] [3,84857] [100,244 as of 9 September 201958]
        Launchpad [3,965,28859] [40,88160] [12,344 as of 9 September 201961]
        OSDN [54,82662] [6,29462] [8,529 as of 9 September 201963]
        Ourproject.org [6,35364] [1,84664] [1,191,954 as of 9 September 201965]
        OW2 Consortium Unknown Unknown [610,052 as of 9 September 201966]
        Rosetta code Unknown Unknown [62,045 as of 9 September 201967]
        SEUL Unknown Unknown [1,268,571 as of 9 September 201968]
        SourceForge [3,700,00069] [500,00069] [407 as of 9 September 201970]
        NAME USERS PROJECTS ALEXA RANK (LOWER = MORE POPULAR

    调查完目前流行的源程序版本管理软件和项目管理软件后,请你选择其中至少2个软件来进行动手实践,对每个软件的要求如下:

    1. 下载和安装软件。
    2. 使用软件中的某个功能(例如,创建一个 bug,然后关闭这个bug),并进行屏幕截图。
    3. 把屏幕截图的照片放到博客中,要求该照片能够证明 是你在使用这个软件,比如在旁边放一下自己的博客首页。
    4. 简要谈一下你使用该软件后的看法。

    Git:

    使用git.png

    说明:使用git进行项目版本管理,commit,push等。

    感想:在命令行中使用git,简单轻便,也可以在VS中作为插件使用。总的来说较为方便,但是命令行可能不适合所有人。

    Trac:

    trac.png

    说明:使用Trac进行项目管理,提交、查找报表。

    感想:通过web来管理项目,图形化界面能够使人更加容易上手。

  • 相关阅读:
    【像程序员一样思考】读书笔记4
    MFC ListControl 与 Excel 数据的导入导出
    OpenCV中findContours函数的使用
    十大算法
    qsort对二维数组的排序
    【像程序员一样思考】读书笔记3
    【像程序员一样思考】 读书笔记2
    【像程序员一样思考】 读书笔记1
    代码混淆
    布局优化
  • 原文地址:https://www.cnblogs.com/kidogucb/p/12386488.html
Copyright © 2011-2022 走看看