精华内容
下载资源
问答
  • 2009-05-12 13:45:00

    一.可理解性:

    可理解性表明人们通过阅读源代码和相关文档,了解程序功能及其如何运行的容易程度。

     

    二.可靠性:

    可靠性表明一个程序按照用户的要求和设计目标,在给定的一段时间内正确执行的概率。

     

    三.可测试性

    可测试性表明论证程序正确性的容易程度。程序越简单,证明其正确性就越容易。而且设计合用的测试用例,取决于对程序的全面理解。
    一个可测试的程序应当是可理解的,可靠的,简单的。
    用于可测试性度量的检查项目如下:
    程序是否模块化? 结构是否良好?
    程序是否可理解? 程序是否可靠?
    程序是否能显示任意中间结果?
    程序是否能以清楚的方式描述它的输出?
    程序是否能及时地按照要求显示所有的输入?
    程序是否有跟踪及显示逻辑控制流程的能力?
    程序是否能从检查点再启动?
    程序是否能显示带说明的错误信息?

    四.可修改性

    可修改性表明程序容易修改的程度。

     

    五.可移植性

    可移植性表明程序转移到一个新的计算环境的可能性的大小。或者它表明程序可以容易地、有效地在各种各样的计算环境中运行的容易程度。
    一个可移植的程序应具有结构良好、灵活、不依赖于某一具体计算机或操作系统的性能。

    用于可移植性度量的检查项目如下:

    1.是否是用高级的独立于机器的语言来编写程序?
    2.是否使用广泛使用的标准化的程序设计语言来编写程序? 是否仅使用了这种语言的标准版本和特性?
    3.程序中是否使用了标准的普遍使用的库功能和子程序?
    4.程序中是否极少使用或根本不使用操作系统的功能?

    六.效率

    效率表明一个程序能执行预定功能而又不浪费机器资源的程度。
    这些机器资源包括内存容量、外存容量、通道容量和执行时间。
    用于效率度量的检查项目如下:
     程序是否模块化? 结构是否良好?
     是否消除了无用的标号与表达式,以充分发挥编译器优化作用?

     

    七.可使用性

    从用户观点出发,可使用性定义为程序方便、实用、及易于使用的程度。一个可使用的程序应是易于使用的、能允许用户出错和改变,并尽可能不使用户陷入混乱状态的程序。

    更多相关内容
  • 软件测试中的可用性、可维护性、可靠性有什么区别?

    我们生活在一个用户依赖于对服务的一致访问的可靠性时代。在相互竞争的服务之间进行选择时,对用户来说,没有比可靠性更重要的特性了。但是可靠性是什么意思呢?

    为了回答这个问题,我们将根据可靠性工程中的其他度量来分解可靠性:可用性和可维护性。区分这些术语并不是语义问题。了解这些差异可以帮助您更好地将开发工作的优先级放在客户的满意度上。

    可用性

    可用性是可靠性最简单的组成部分。此度量描述服务运行的时间百分比,这也被称为服务的“正常运行时间”。可用性可以通过连续查询服务并以预期的速度和准确性确认返回的响应来监控。

    服务的可用性是用户感知可靠性的主要因素。考虑到这一点,设定一个100%正常运行时间的目标是很诱人的。但是SRE告诉我们失败是不可避免的;导致停机的事故总是发生在工程预期之外。可用性通常用“9”表示,表示正常运行时间的百分比可以达到多少位小数。一些主要的软件公司会吹嘘自己的“5个9”或者99.99%的正常运行时间,但永远不会有可确保的100%的正常运行时间。

    此外,用户是可以容忍甚至无法注意到服务的某些领域出现宕机。致力于改善超出预期的可用性的开发资源并不会增加客户的满意度,把这些资源用在可维护性上会更好。在这里插入图片描述

    可维护性

    可靠性的另一个主要组成部分是可维护性。通过描述停机时间的产生和解决方式,将可维护性因素考虑到可用性中。当发生导致停机的事件时,可维护服务可以快速修复。事件越早得到解决,服务就越快恢复可用。

    可维护性有两个主要组成部分:主动式可维护性和反应式可维护性。

    主动式可维护性包括构建易于理解和更改的代码库。随着开发的进行,会出现与现有代码不兼容的问题。如果工程师写的是面条式代码,而不是优先考虑可维护性,就容易出问题,并且很难发现和解决问题。主动维护还包括质量保证和测试等程序。

    反应式可维护性描述了服务在事故发生后被修复的能力。这受服务的事故响应过程的影响。大型事故的反应和防范是必要的,如果事故响应程序可靠,团队将迅速解决事件。适当的事故反应也有助于减少复发。高度可维护的服务允许工程师有效地汲取这些经验教训。

    可维护性反映在可用性指标中。缩短停机时间或停机频率可以提高可用性。但是,可维护性不是实现可用性的唯一手段。采取这种方法可能导致发展资源分配不当。在可维护性方面的投资可能不会立即带来更好的正常运行时间。当您重构旧代码以解决技术债务时,服务的功能将与以前相同,并具有相同的可用性。直到事件发生,您才会看到这种高可维护性的好处。可维护性应该被看作是可靠性方面的投资,而不仅仅是可用性的一个组成部分。
    可靠性
    可靠性可以定义为当用户访问服务时,服务按预期运行的可能性。这似乎与我们定义可用性的方式相同,但有关键的区别。可用性检查服务是否工作,用户是否正在访问它。如果用户在所有时间、所有功能上统一访问服务,可用性将决定可靠性。一般情况下,这不可能发生。
    以两种情形为例:

    服务A:
    用户登录页面的可用性为97%
    目录搜索的可用性为97%
    站点设置页面的可用性为97%

    服务B:
    用户登录页面具有可用性为99%
    目录搜索的可用性为98%
    网站设置页面的可用性为90%

    仅从可用性度量来看,服务A胜出。但是如果登录页面被100%的用户使用,目录搜索被90%的用户使用,而站点设置页面只有30%的用户使用,那么服务B就会被认为更可靠。可靠性需要考虑实际使用情况,将可用性指标转化为客户满意度的度量指标。在这里插入图片描述
    通过理解系统的可靠性,开发人员可以避免浪费时间来改进超出客户预期的可用性。服务级别指标将延迟和可用性等指标捆绑到更有效的度量中。然后将服务水平目标设定在顾客不满意的阈值。这种方法从客户的角度来看可靠性,因为对他们来说,服务的可靠性比它的可用性更重要。

    可维护性也可以通过这种标准来评估。响应事件所花费的时间耗尽了服务正常运行时间的错误预算……SLI和SLO可以帮助分配开发工作,以改进可维护性和最影响客户满意度的事件响应过程。

    可靠性不仅仅是度量的集合或代码库的质量。这是一个全局概念,包含了用户的观点、变化和增长的必然性以及开发代码的人员。这种整体方法是SRE的基础,是实践的集合,也是提高服务可靠性的文化课程。

    最后;

    如果你不想再体验一次自学时找不到资料,没人解答问题,坚持几天便放弃的感受的话,可以关注我一起讨论。

    给大家推荐一个软件测试技术交流群:810119819 群友福利免费领取

    【软件测试流程图总结】

    公众号【程序员阿沐】

    加油吧,测试人!路就在脚下,成功就在明天!

    未来的你肯定会感谢现在拼命的自己!

    愿你我相遇,皆有所获! 欢迎关注微信公众号:程序员阿沐
    1.免费领取一份216页软件测试工程师面试宝典文档资料。

    2.软件测试学习路线以及相对应的视频学习教程免费分享!

    展开全文
  • 可维护性的度量和设计原则(1)

    千次阅读 2020-07-03 20:10:16
    文章目录可维护性的度量和设计原则软件维护和演化软件维护软件演化可维护性的指标可维护性的几个名字关于可维护性的问题一些可维护性的指标模块化设计和模块化原则模块化编程评估模块性的五个标准模块设计的五个规则...

    可维护性的度量和设计原则(1)

    软件维护和演化

    软件维护

    • 软件维护指在软件发布后对软件中的错误进行修改以提升性能或者其他特性的活动。
    • 软件维护是软件产品最困难的方面,因为它与其他所有的软件开发阶段都相关。
    • 修复代码后
      • 测试修改是否正常:使用特殊构造的测试用例
      • 检查回归性错误:使用存储的测试数据,并将特殊构造的测试用例添加到存储的测试数据中,以便将来进行回归测试
      • 记录所有更改
    • 软件维护的种类
      • 纠正性维护(Corrective maintenance):纠正软件产品中的问题
      • 适应性维护(Adaptive maintenance):对软件产品进行修改,以使软件产品能够适应新的变化的环境
      • 完善性维护(Perfective maintenance):增强软件产品以提高性能或增加可维护性
      • 预防性维护(Preventive maintenance):修改软件产品,以便在软件产品成为有效故障之前检测并纠正软件产品中的潜在故障。

    软件演化

    • 软件演化是在软件维护中使用的一个概念,指最初开发软件的过程,然后由于各种原因反复更新软件。
    • 典型系统的90%以上的成本出现在维护阶段,并且任何成功的软件都将不可避免地得到维护。
    • Lehman’s Laws:一个软件是为了解决现实世界中的问题而产生的,它如何表现应该和它运行的环境紧密相关,因此这样的软件需要适应不同的需求和环境。

    可维护性的指标

    可维护性的几个名字

    • Maintainability:软件易于被修改以纠正错误、提升性能或者其他特性、适应变化的环境的能力。
    • Extensibility:一个软件易于增加新的功能的能力。
    • Flexibility:软件对于用户的需求、外部技术和社会环境而易于改变的能力。
    • Adaptability:一个交互系统能够根据用户或环境提供的信息改变它的行为的能力。
    • Manageability:可以高效,轻松地监控和维护软件系统,以保持系统的正常、安全地运行。
    • Supportability:在软件部署后还有多大的受支持程度。

    关于可维护性的问题

    • 结构和设计简单性:改变事物有多容易
    • 紧密或松散耦合的事物(即关注点分离)
    • 包装/模块中的所有要素是否具有凝聚力,其责任是否明确且密切相关
    • 它是否具有过于深入的继承层次结构,还是有利于组合而不是继承
    • 方法定义中有多少独立的执行路径(即圈复杂度)
    • 存在多少代码重复

    一些可维护性的指标

    • Cyclomatic Complexity:度量软件的结构复杂性
      • 计算程序流中独立路径的个数
      • 程序流越复杂,需要的测试就更多,可维护性也更低
      • 计算公式:CC = E-N+2, CC=P+1, CC=number of areas
        maintain1
    • Lines of Code
      • 很高的代码行数预示着可能有些类或者方法尝试实现太多的功能,而这些功能应该被分开
      • 也可能意味着类或者方法难以维护
    • Halstead Volume:基于源代码中运算符和操作数的个数
    • Maintainability Index(MI):计算一个0到100的指标,代表了软件维护的相对容易程度,基于以下几个指标计算:
      • Halstead Volume (HV)
      • Cyclomatic Complexity (CC)
      • The average number of lines of code per module (LOC)
      • The percentage of comment lines per module (COM)
        171 − 5 ln ⁡ ( H V ) − 0.23 C C − 16.2 ln ⁡ ( L O C ) + 50.0 sin ⁡ ( 2.46 × C O M ) 171-5\ln (HV)-0.23CC-16.2\ln (LOC)+50.0\sin (\sqrt {2.46\times COM}) 1715ln(HV)0.23CC16.2ln(LOC)+50.0sin(2.46×COM )
    • Depth of Inheritance:继承关系越深,系统就会越难理解
    • Class Coupling:通过参数,局部变量,返回类型,方法调用,通用或模板实例化,基类,接口实现,在外部类型上定义的字段以及属性修饰来测量与唯一类的耦合
      • 良好的软件设计要求类型和方法应具有高内聚和低耦合性
      • 高耦合表明设计难以重用和维护,因为它与其他类型有很多相互依赖性
    • Unit test coverage :指自动单元测试都涵盖了代码库的哪些部分

    模块化设计和模块化原则

    模块化编程

    • 是一种软件设计方法,讲程序的功能分散到独立的、可交互的模块中,这样每个模块都实现整体功能的仅一个方面
    • 模块化是高层的功能分解技术
      • 结构化编程中是如何根据控制流分解代码
      • OOP中是指对象的使用方式
    • 设计的目标是将系统划分为模块,并以下列方式在组件之间分配责任:
      • 模块内的高内聚
      • 模块之间的低耦合
    • 模块化降低了程序员在任何时候必须处理的总复杂性,假设:
      • 将功能分配给远离的模块,将相似的功能组合在一起(关注点分离)
      • 模块之间有小而简单,定义良好的接口(信息隐藏)
    • 内聚和耦合的原理可能是评估设计可维护性的最重要的设计原则

    评估模块性的五个标准

    • Decomposability (可分解性)
      • 将问题分解为各个可独立解决的子问题
      • 目标:使模块间的依赖关系显式化和最小化
      • 自顶向下的函数式设计:
        module1
    • Composability (可组合性)
      • 可以容易的将模块组合起来形成新的系统
      • 目标:使模块可以在不同的环境下复用module2
    • Understandability (可理解性)
      • 每个子模块都可以被系统设计者容易地理解
      • 例子:序列依赖( A → A\rarr A B → B\rarr B C C C
        module3
    • Continuity (可持续性)
      • specification中的一个小的改变只会影响一小部分模块而不会影响整个系统架构
      • 例子:为模块提供的服务通过统一的标识提供
        module4
    • Protection (保护性)
      • 运行时异常情况限制在小范围的模块内
      • 例子:在源处验证输入
        module5

    模块设计的五个规则

    • Direct Mapping(直接映射)
      • 模块的结构与现实世界问题领域的结构一致
    • Few Interfaces(尽可能少的接口)
      • 模块应该尽可能少地与其他模块通信
    • Small Interfaces(尽可能小的接口)
      • 如果两个模块通信,那么它们应该交换尽可能少的信息
    • Explicit Interfaces(显式接口)
      • 当A与B通信时,应明显地发生在A与B的接口之间
    • Information Hiding(信息隐藏)
      • 经常发生变化的设计决策应该尽可能隐藏在抽象接口后面

    内聚和耦合

    • 耦合(Coupling)
      • 耦合是模块之间依赖性的度量。 如果一个模块中的更改可能需要更改另一个模块,则两个模块之间存在依赖关系。
      • 模块之间的耦合程度由以下因素确定:
        • 接口数量
        • 接口复杂度
        • 通信复杂度
    • 内聚(Cohesion)
      • 内聚是衡量模块的功能或职责的相关程度
      • 如果模块的所有元素都朝着相同的目标努力,则模块具有高内聚
    展开全文
  • 软件维护主要针对一下几种(数据来源未知2333):纠错25%适应21%完善50%预防4%“变化”在软件生命周期中是不避免的!那么如何在最初的设计中充分考虑到未来的变化,避免因为频繁的变化导致软件复杂度增加...

    1.软件的维护与演化

    我们一直说软件维护,那么什么是软件维护呢?其实就是修改错误、改善性能的过程。运维是软件开发中最困难的工作之一,他需要处理各种来自用户报告的问题与故障。

    软件维护主要针对一下几种(数据来源未知2333):

    • 纠错性25%
    • 适应性21%
    • 完善性50%
    • 预防性4%

    “变化”在软件生命周期中是不可避免的!那么如何在最初的设计中充分考虑到未来的变化,避免因为频繁的变化导致软件复杂度增加和质量的下降呢?这就是我们这章要说的事情——提高软件的适应性,延续软件生命。注意软件维护不仅仅是运维工程师的工作,而是从设计和开发阶段就开始了。所以在设计开发的过程中就要考虑到将来的可维护性,使设计方案容易改变。

    这张将会着重讲解几个基于可维护性建设的例子:

    • 模块化
    • OO设计原则
    • OO设计模式
    • 基于状态的构造技术
    • 表驱动的构造技术
    • 基于语法的构造技术


    2.可维护性的度量

    首先来说几个常用的可维护性度量指标:

    • 圈复杂度(Cyclomatic Complexity):度量代码的结构复杂度。
    • 代码行数:……
    • 可维护性指数(Maintainnbility Index)MI:计算0到100之间的索引值。表示维护代码的相对容易性,高价值意味着更好地可维护性。
    • 继承的层次数(Depth of Inheritance):就是继承深度,英文更通俗些。
    • 类之间的耦合度(Class Coupling):通过参数,局部变量,返回类型,方法调用,泛型或模板实例化,基类,接口实现,在外部类型上定义的字段和属性修饰来测量耦合到唯一类。
    • 单元测试覆盖率(Unit test coverage):只是代码库的那些部分被自动化单元测试覆盖。

    3. 模块化设计和模块化原则

    其设计目的只有两点:

    • 模块内高内聚
    • 模块间低耦合

    至于如何评估模块化也有五个标准:

    1. 可分解性(Decomposability)
    2. 可组合性(Composability)
    3. 可理解性(Understandability)
    4. 可持续性(Continulity)
    5. 出现异常之后的保护(protection)

    模块化设计的五个规则:

    1. 直接映射
    2. 尽可能少的接口
    3. 尽可能小的接口
    4. 显示接口
    5. 信息隐藏

    然后我们来说一下耦合与内聚的概念(Coupling and Cohension)

    耦合是模块之间的依赖关系的度量。

    对“依赖关系”解释:如果两个模块之间的变化可能需要另一个模块的变更,这两个模块之间存在依赖关系。

    模块之间的耦合主要取决于:

    1. 模块之间接口的数量(质量)
    2. 每个接口的复杂度


    而聚合是指衡量一个模块的功能或责任的强烈程度的一个指标。如果一个模块的一切的结构都朝着相同的目标努力,那么他就具有很高的聚合度。


    模块化设计所追求的目标就是高内聚低耦合!


    4.OO设计原则:SOLID

    不不不!这可并不是固态原则……他是五个类设计原则的缩写:

    • (SRP)单一责任原则The Single Responsibility Principle
    • (OCP)开放-封闭原则The Open-Closed Principe
    • (LSP)Liskov替换原则The Liskov Substitution Principe
    • (ISP)接口聚合原则The Interface Segregation Principe
    • (DIP)依赖转置原则The Dependency Inversion Principe

    SOLID原则!剩下的将主要围绕这五个原则分别说明:


    A. 单一责任原则(SRP):

    原则内容很简单,总结就是做好自己的事,不要插手别人的事。

    什么意思?假设一个软件有一段代码,如果有维护软件的需求需要改动这段代码,那么也就可以理解为这段代码对这次改动负有责任。形象点说,如果软件如果出现了问题,通过改动这段代码修复了,那么这段代码就是要对这个问题负责。所以代码变化的根本原因是责任,代码负责的功能出现了问题才会变化。

    所以为了减少代码变化,最好让一个类有一个责任而不是多个,也就是说做好自己的事。

    反过来说如果一个类承担了多个责任,那么会引入额外的包,占据资源。同时会导致频繁的重新配置部署等。



    2. 开放-封闭原则(OCP)

    开放:指的是对拓展性开放,模块的行为应该是可拓展的,从而该模块可表现出新的行为以满足需求的变化。

    封闭:指的是对修改封闭,模块自身的代码是不应被修改的,拓展模块的行为的一般途径是通过修改模块内部实现实现的。如果一个模块不能被修改,那么它通常被认为是具有固定的行为。

    其核心思想就是抽象技术。

    但运用的时候也会有一些情况,我们来看一下的栗子:


    问题:


    修改后:



    3. Liskov替换原则(LSP)

    其原则主要是:子类型必须能够替换其基类型。而且派生类必须能够通过其基类的接口使用,客户端无需了解二者之间的差异。

    这个原则已经在第五章中的复用性结构中详细说明了,不了解的可以看这里


    4. 接口聚合原则(ISP)

    其原则内容是:客户端不应依赖于他们不需要的方法。也就是说要吝啬你的接口方法,除去无用的。

    如果接口过于庞大可以分解为多个小接口,不同的接口向不同的客户端提供服务,客户端只需要访问自己所需要的接口。



    5.依赖转置原则(DIP)

    其原则内容是:抽象的模块不应依赖于具体的模块,而是具体的模块应该依赖于抽象。

    觉得课程中的栗子不是很恰当,所以就不截图了,这篇博客讲解的很详细,感兴趣的大家可以看一下。



    5. OO设计原则GRASP

    General Responsibility Assignment Software Patterns(Principes)通用责任分配软件模式

    其是关于如何为“类”和“对象”指派“职责”的一系列原则。

    对象的职责与对象的义务是有关联的。

    大栗子:


    责任是使用方法来实现的,makepayment代表sale对象有责任创建payment对象。


    GRASP通常由以下几部分组成:

    • 控制器(Controller)
    • 信息专家(Information expert)
    • 创建者(Creators)
    • 低耦合(Low coupling)
    • 高内聚(High cohension)
    • 间接(Indirection)
    • 多态(polymorphism)
    • 受保护的变体(Protected variations)
    • 纯制造(Pure fabrication)


    展开全文
  • 可维护性的常见度量指标

    千次阅读 2019-06-21 20:48:25
    可维护性的常见度量指标 ***圈复杂度:衡量代码的结构复杂性,通过计算程序流程中不同代码路径的数量。具有复杂控制流程的程序将需要更多的测试来实现良好的代码覆盖率,并且将不易维护。 ***代码行数:指代码中的...
  • 可维护性、可复用性又被认为是两个最重要的用于衡量软件质量的属性。 在《Java设计模式》一书中对可维护性的定义为:指软件能够被理解、改正、适应及扩展的难易程度。 对可复用性的定义为:指软件能够被重复使用的难...
  • 软件工程-软件可维护性

    千次阅读 2013-12-17 22:00:53
    软件可维护性的定义: 维护人员理解、改正、改动或改进这个软件的难易程度。 决定软件可维护性的因素: 可理解性: 定义:表现为外来读者理解软件的结构、功能、接口和内部处理过程的难易程度。如何提高可理解...
  • (DDIA)第一章:可靠性、可伸缩性、可维护性
  • 故障可以是硬件(通常是随机的和不相关的),软件(缺陷通常是系统的,难以处理的),以及人类(不避免地会不时出错)。容错技术可以隐藏最终用户的某些类型的故障。 扩展意味着即使在负载增加的情况下也有...
  • 一开始提到,现如今很多应用程序都是“数据密集型”,而非“计算密集型”。...因此,在预见的时间内,我个人感觉数据密集型应用的使用频率和数量应该是更高的。 可靠 硬件故障 断电,洪水,地震...
  • 软件和系统追溯学习(一)

    千次阅读 2019-09-12 14:02:56
    ** Traceability Strategy(追溯策略) ** 1. Traceability Fundamentals(追溯基础) ...追溯的价值在于通过此类相互关系提供的信息能够实现的许多软件和系统工程活动和任务,例如变化影...
  • 软件测试和维护

    千次阅读 2021-03-12 17:53:50
    软件测试的目的就是在软件投入生产运行之前,尽可能多地发现软件产品(主要是指程序)中的错误和缺陷。 1983年,BillHetzel在"CompleteGuideofSoftwareTesting"一书中指出:"测试是以评价一个程序或者系统属性为...
  • HIT 软件构造 软件维护 设计原则

    千次阅读 2019-06-06 11:08:40
    可维护性的指标 圈复杂度:程序中不同代码路径的数量(这个数字越大,维护起来就越难) 代码行数:程序的代码的行数(如果一个类的代码行数太多,可能意味着这段代码做了太多的工作,他需要被分割) 继承深度:...
  • 8.4 软件可维护性 软件的维护是十分困难的,为了使软件能易于维护,必须考虑使软件具有可维护性。 8.4.1可维护性定义 软件可维护性的定义:软件能够被理解、校正、适应及增强功能的容易程度。 软件的可维护性...
  • 它能体现软件的规模,为项目的发展和计划提供一些数据支撑。例如,我们每个月统计一次代码的行数,我们就能大体知道项目的发展情况。当然,这不是一个值得信赖的标准,因为有重构以及设计的因素。 SLOC 最好是...
  • 2051061 单选 目前广泛使用7个特性来衡量软件的可维护性,下列()特性不属于衡量软件可维护性的范围。 2051062 单选 软件维护费用高的主要原因是()。 2051063 单选 维护阶段的文档是()。 20510
  • 软件工程——编码、测试、维护

    千次阅读 2020-05-14 15:40:22
    一、编码 (一)选择语言 任何一种语言都不是“十全十美”的,因此,在选择程序设计语言时,首先明确求解的问题对编码有什么要求,并把...为了提高程序的可维护性,源代码也需要实现“文档化”。内部文档的组织包括
  • 软件工程——软件维护总结

    万次阅读 2018-07-19 17:01:04
    (1)改正性维护:在软件交付使用后,因开发时测试的不彻底、不完全,必然会有部分隐藏的错误遗留到运行阶段。这些隐藏下来的错误在某些特定的使用环境下就会暴露出来。为了识别和纠正软件错误、改正软件性能上的...
  • 软件系统的扩展设计

    万次阅读 2020-01-16 14:33:50
    系统的扩展一、扩展的设计1.扩展设计的优势2.扩展设计的目的3.扩展设计的两种方法二、扩展设计的形式1.分层架构2.消息队列3.远程调用4.开放平台三、企业级系统的平台化设计1.分层设计2.模块...
  • )维护。 A、预防;B、适应;C、完善;D、纠错; 2按照软件配置管理的原始指导思想,受控制的对象应是( C    )。 A、软件过程;B、软件项目;C、软件配置项;D、软件元素; 3下列(  D   ...
  • 软件工程》— 软件测试与维护

    千次阅读 2017-06-17 22:03:47
    软件测试(英语:software testing),描述一种用来促进鉴定软件的正确、完整、安全和质量的过程。据此,您可能会想,软件测试永远不可能完整的确立任意电脑软件的正确。然而,在计算理论(计算机科学的一...
  • 一般来说,架构除了关注功能需求外,其实更重要的是要关注非功能需求,比如,性能,可用伸缩扩展。而且一旦架构决定下来,一般难以改变,所以要求我架构师从一开始就要设计一个满足性能,可用,...
  • 如何衡量软件设计的质量

    千次阅读 2015-06-05 15:32:48
    当然除了功能需求以外,还有很多衡量软件设计质量的标准,如可读性、可复用性、可扩展性、可维护性等。一个好的软件设计一般具有以下几个特点:可读性:软件的设计文档是否轻易被其他程序员理解。可读性差的设计会给...
  • 软件工程导论—可行研究

    千次阅读 多人点赞 2020-05-03 23:00:29
    可行研究的任务2. 可行研究过程2.1. 可行研究的主要步骤3. 系统流程图4. 数据流图 Data Flow Diagram,DFD5. 数据字典 Data Dictionary,DD6. 成本/效益分析7. 小结 1. 可行研究的任务 可行研究实质上是要...
  • 整体是因为 HQ 试图衡量软件开发的尽可能多的方面,了解软件开发如何以多种方式脱轨。 HQ本身是用Python(后端)和JavaScript(前端)开发的,但是可以报告以任何语言开发的软件的质量,因为它不能衡量质量本身...
  • 云服务的服务经典6问

    千次阅读 2020-12-22 11:22:26
    可服务是产品在交付部署、运营维护时所具有的服务质量(可用、可靠、可维护等能力)和客户满意度,在不影响可用的情况下,可以影响的更改的简易和程度。 可服务其实质是衡量产品在交付过程及客户使用&...
  • 软件开发可行分析规范

    万次阅读 多人点赞 2017-05-24 19:55:23
    目录1. 引言 1.1 项目背景 1.2 术语定义 1.3 参考资料 2. 市场可行 ...4.2 软件资源 4.3 设备资源 4.4 时间资源 5. 经济可行 5.1 投资规划 5.1.1 基础投资 5.1.2 直接投资 5.2 收益分析
  • 软件工程 - 可行研究

    千次阅读 2020-10-31 15:14:49
    软件工程 - 可行研究 一、填空题 软件计划时期一般包括问题定义和可行研究两个阶段 可行研究的目的就是用最小的代价在尽可能短的时间内确定该软件项目是否能够开发,是否值得去开发 成本——效益分析的目的是...
  • 软件工程 之 软件维护

    千次阅读 多人点赞 2014-01-12 19:20:19
    此后的工作就是要保证软件在一个相当长的时期能够正常运行,这样对软件维护就成为必不少的了。 软件维护的种类: 1.校正性维护(corrective maintenance)  在软件交付使用后,由于...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 36,035
精华内容 14,414
关键字:

如何衡量软件的可维护性