• 软件工程第一次作业


    一、本次编写的程序实现了整数和真分数的四则运算,使用的语言是C++,用户可选择题目类型(加,减,乘,除)和自己决定所做练习的题目个数,程序会对用户的回答判断对错并给出正确答案,结束练习时,显示出答对的题目个数和答错的题目个数以及正确率。然后用户可以选择是继续答题还是退出程序。我的地址为:https://coding.net/u/gmt1600802077/p/Arimetic/git/tree/master?public=true

    二、在一周之内,快速看完《构建之法》整部教材,我有以下5个不懂的问题:
    问题一:第2章,第1节中,“ 单元测试”具体是什么?
    在阅读“2.1.1 用VSTS写单元测试”时,遇到语句“首先小飞创建了一个C#的类库(Class Library)”然后教材上列出来小飞的一些代码清单。由于我之前并没有接触到过C#语言,一点儿都不了解该语言,所以看不懂教材上的代码,也不懂所谓的“单元测试”具体是指什么。不过我通过查阅资料了解到下面这些东西:
    (1)VSTS的全称是Visual Studio Team System,是由微软开发的一套具有高生产力、高集成性、可扩展的生命周期开发工具,VSTS使得整个开发团队拥有更好的沟通与合作,并且保证了更好的质量。
    (2)单元测试,是指对软件中的最小可测试单元进行检查和验证。对于单元测试中单元的含义,一般来说,要根据实际情况去判定其具体含义,如C语言中单元指一个函数,Java里单元指一个类,图形化的软件中可以指一个窗口或一个菜单等。总的来说,单元就是人为规定的最小的被测功能模块。单元测试是在软件开发过程中要进行的最低级别的测试活动,软件的独立单元将在与程序的其他部分相隔离的情况下进行测试。在一种传统的结构化编程语言中,比如C,要进行测试的单元一般是函数或子过程。在像C++这样的面向对象的语言中, 要进行测试的基本单元是类。对Ada语言来说,开发人员可以选择是在独立的过程和函数,还是在Ada包的级别上进行单元测试。单元测试的原则同样被扩展到第四代语言(4GL)的开发中,在这里基本单元被典型地划分为一个菜单或显示界面。经常与单元测试联系起来的另外一些开发活动包括代码走读(Code review),静态分析(Static analysis)和动态分析(Dynamic analysis)。静态分析就是对软件的源代码进行研读,查找错误或收集一些度量数据,并不需要对代码进行编译和执行。动态分析就是通过观察软件运行时的动作,来提供执行跟踪,时间分析,以及测试覆盖度方面的信息。
    我也有查阅一些关于C#的资料,通过阅读我对“单元测试”及C#有了一定的了解,不过还不算深入。
    问题二:在第2章中,教材第27页,有一句“100%的代码覆盖率并不等于100%的正确性!”,当时读的时候不太明白什么是“代码覆盖率”,也不怎么明白这句话是什么意思。而且我认为100%的代码覆盖率就等于100%的正确性。不过当我读过网上的一篇文章《代码覆盖率浅谈》之后好像有些明白了。
    代码覆盖率即为代码覆盖程度,覆盖率是度量测试完整性的一个手段,是测试有效性的一个度量。通过已执行代码表示,用于可靠性、稳定性以及性能的评测。测试覆盖是对测试完全程度的评测。测试覆盖是由测试需求和测试用例的覆盖或已执行代码的覆盖表示的。建立在对测试结果的评估和对测试过程中确定的变更请求(缺陷)的分析的基础上。从某种意义上说,覆盖率越高代码的正确性也就越高,不过100%的覆盖率并不代表100%的正确性,就如同书上阿超的分析“ 代码覆盖率对于“应该写但是没有写的代码”无能为力。例如代码申请了内存或其他资源,但并没有释放。。。。。。”,我觉得等我自己写单元测试的时候可能就会更加理解“100%的代码覆盖率并不等于100%的正确性!”这句话的含义。不过,作为一名程序员,高的代码覆盖率也是我们毕生的追求之一。
    问题三:160页,8.3 获取用户需求------用户调研。在这一小节中有一个软件业界非常著名的秋千图。这幅图所描述的问题该怎么解决呢?不过以我的认识,感觉这个问题不太可能完全解决,但至少应该有办法削弱这个问题所带来的负面影响。
    在第一节理论课中,老师也让我们看了这幅图,不过只有图片并没有注明文字解释,当时不太明白,当看到书上的解释之后就明白了图的意思,感觉它反应的问题很实际,但由于我没有做过也没有参与过大型项目,所以并不了解这些问题产生的具体原因,更不知道怎么解决?所以希望有经验的朋友们可以给我举一个实际的例子并谈谈你们的解决方案。
    问题四:为什么“回归测试”能够保证质量?
    教材43页,2.4.2.3 如何保证质量-------回归测试
    回归测试是指修改了旧代码后,重新进行测试以确认修改没有引入新的错误或导致其他代码产生错误。自动回归测试将大幅降低系统测试、维护升级等阶段的成本。
    回归测试作为软件生命周期的一个组成部分,在整个软件测试过程中占有很大的工作量比重,软件开发的各个阶段都会进行多次回归测试。在渐进和快速迭代开发中,新版本的连续发布使回归测试进行的更加频繁,而在极端编程方法中,更是要求每天都进行若干次回归测试。因此,通过选择正确的回归测试策略来改进回归测试的效率和有效性是很有意义的。
    问题五:在阅读第13章“软件测试”时,感觉整个章节所讲的内容,我都没有怎么接触过,也不怎么了解,看完之后感觉没有太大收获。大部分内容都只是按照书上的描述往下看,没有什么自己的想法和理解,所以我想知道怎么样能够很好地掌握各种测试方法?“实战中的测试”好像更麻烦,没有实战经验是不是就不能很好地掌握这些测试方法?在以后的学习中,我们会用到很多测试工具吗?

    三、基于网页的软件(Web APP)、操作系统(Operating System)和工具软件(Tools)三种软件各自的特点
    1、基于网页的软件(Web APP):我第一个接触到的这方面的软件应该是大一的时候用到的“Photoshop”,这个软件是由于上课的需要,老师让我们安装的,我们通过互相拷贝安装在了自己的电脑上,在网页上也可以免费下载这个软件,其实可以免费下载的软件有很多,所以软件开发者并不都是为了盈利。“Photoshop”的特点有:1、 功能强大的选择工具 (Photoshop拥有多种选择工具,极大地方便了用户的不同要求。而且多种选择工具还可以结合起来选择 较为复杂的图像。)2、制定多种文字效果 利用Photoshop不仅可以制作精美的文字造型,而且还可以对文字进行复杂的变换。 3、多姿多彩的滤镜 ,Photoshop不仅拥有多种内置滤镜可供用户选择使用,而且还支持第三方的滤镜。这样,Photoshop就 拥有了"取之不尽,用之不竭"的滤镜。 4、易学易用,用途广泛 ,对Photoshop不了解的人常常认为它是一种专业图形图像处理软件,其实这是一种误解,Photoshop虽 然功能强大,但是也易学易用,适应于不同水平的用户。它涉及图像合成、色彩校正、图层调板、通道使用、动作调板、路径工具、滤镜等图像处理功能。可制作如按钮制作、文字特效、材质纹理、三维物体、影像特效及广告创意设计等多种用途。是一门值得深入学习的一种好软件
    2、操作系统(Operating System):我所了解的是Windows操作系统,经常使用的是Win7操作系统。因为教学电脑上就是安装的这个系统,所以我接触和了解它比较多。它可以通过打补丁来进行系统修复,并且有它自己的更新机制来不断推出新版本的系统。Windows系统的特点为:直观、高效的面向对象的图形用户界面,易学易用。从某种意义上说,Windows用户界面和开发环境都是面向对象的。用户采用“选择对象-操作对象”这种方式进行工作。比如要打开一个文档,我们首先用鼠标或键盘选择该文档,然后从右键菜单中选择“打开”操作,打开该文档。这种操作方式模拟了现实世界的行为,易于理解、学习和使用。1、用户界面统一、友好、漂亮: Windows应用程序大多符合IBM公司提出的CUA (Common User Acess)标准,所有的程序拥有相同的或相似的基本外观,包括窗口、菜单、工具条等。用户只要掌握其中一个,就不难学会其他软件,从而降低了用户培训学习的费用。2、丰富的设备无关的图形操作: Windows的图形设备接口(GDI)提供了丰富的图形操作函数,可以绘制出诸如线、圆、框等的几何图形,并支持各种输出设备。设备无关意味着在针式打印机上和高分辨率的显示器上都能显示出相同效果的图形。3、多任务: Windows是一个多任务的操作环境,它允许用户同时运行多个应用程序,或在一个程序中同时做几件事情。每个程序在屏幕上占据一块矩形区域,这个区域称为窗口,窗口是可以重叠的。用户可以移动这些窗口,或在不同的应用程序之间进行切换,并可以在程序之间进行手工和自动的数据交换和通信。虽然同一时刻计算机可以运行多个应用程序,但仅有一个是处于活动状态的,其标题栏呈现高亮颜色。一个活动的程序是指当前能够接收用户键盘输入的程序。
    3、工具软件(Tools):相信大家都知道,简单方便而且实用的工具软件特别多,按照不同的方法进行分类会得到不同的划分结果,一般分为:1、系统类:主要包括硬件工具与系统维护工具和美化系统软件。2、图像类:包括众多针对创建、编辑、修改、查看等方面的软件。3、多媒体类:主要包括媒体的音频、视频播放以及文件格式转换。4、网络类:云盘、浏览器、聊天软件等。5、游戏类:游戏盒子。6、其他类。这些软件太多了我就不列举介绍了。
    它们所具有的特点为:
    (1)占用空间小。一般只有几兆字节到几十兆字节,安装后占用磁盘空间较小。
    (2)功能单一。每个工具软件都是为了满足电脑用户某类特定需求设计的,因此其功能单一。
    (3)可免费使用。大部分工具软件用户可以从网上直接下载到本地电脑上使。
    (4)使用方便。
    (5)更新较快。

  • 相关阅读:
    Leetcode--First Missing Positive
    Leetcode--LRU Cache
    java--遍历自定义数组
    爬网页?--Chrome帮你计算XPath
    log4j2配置
    winedt设置自动显示行号[latex]
    墓地雕塑-LA3708
    ctex moderncv版本更新--用latex写一个漂亮的简历
    用Jekyll在github上写博客——《搭建一个免费的,无限流量的Blog》的注脚
    用gameMaker做个小游戏
  • 原文地址:https://www.cnblogs.com/gggmmmttt/p/8618952.html
Copyright © 2020-2023  润新知