研读Software.Engineering.Quality.Practices - chapter 1.1 Qualities

衡量软件产品质量的几个标准:

1.1.1 Characteristic Qualities of Products 软件产品的质量特性

       
      Software product quality is generally associated with the absence of defects in a software artifact. However, quality is also related to many other properties, characteristics, and attributes that people value. The ones that most affect software success are availability, efficiency, maintainability, portability, reliability, reusability, and usability.

      软件产品的质量通常是软件的缺点越少越好的。然而,软件质量通常是和人们关心的许多其他的property、特性、attributes 相关的。通常是: 有效可用、效率、易维护、便携、可信、易于复用、便利。


Quality 1.1. Availability. Availability is the readiness of a software system for immediate use at any time. Hence, a system can be highly reliable yet still be rarely available. For example, a software system may require significant
downtime for system maintenance or upgrade.

        有效性是系统在用户在"快速"使用下的时候的易读性(所见即所得)。然而,这一点却不是那么容易做到的。比如,在系统维护或者升级的时候会出现明显的中断(停机)。

     
Quality 1.2. Efficiency. Efficiency is the capability of a system to productively perform its function without wasting system resources. For example, efficient products run faster and consume less primary and secondary memory.

        效率是指,软件在不浪费系统资源的情况下,有效益的执行其功能。比如,有效的产品可以运行的很快,而且消耗很少的主存和副存(应该是指内存和硬盘空间)。
Quality 1.3. Maintainability. Maintainability is the extent to which software artifacts facilitate change [14]. The following qualities enable maintainable systems. 

      易于维护指得是软件的成长性改变(应指的是易于更新)。下面几个质量特性助于提升系统的可维护性。

Quality 1.3.1. Extensibility. Extensibility is the extent to which software can be expanded or enhanced [11]. In an idealized world, user needs, adopted technology, development team composition, and funding commitment would rarely change. However, in the real world, user needs change, technology changes, personnel change, and funding changes. Consequently, to develop quality systems on time and within budget that satisfy and delight customers requires that software engineers preplan products for evolution. Therefore, extensibility should be planned into the development of every nontrivial software system.

        可扩展性是软件可以被扩大或者加强的特性。理想情况下,用户需求、已采用的技术、团队构成的发展(改变)、资金组合很少会变化。但是,现实是,用户需求的变化、技术的变化、人事的变化和资金的变化是一直都有的。因此,如果要及时的开发出保证质量的系统,并且在预算之内,符合客户的满意,SE需要具为软件项目的开发制定前置性的计划。 每一个需要 减少问题的系统都要把可扩展性规划在内。

 

Quality 1.3.2. Modularity. Modularity is the extent to which one plans a software system in terms of a collection of standardized units for use together. Modular systems decompose into smaller components, each solving a fragment of a larger problem. Modularity reduces defects, reduces work in later maintenance efforts [15], and increases the possibility of reusing modules, assuming they have well-defined interfaces and loose coupling with other modules.

       Modularity,指软件系统的开发需要建立在一系列标准化的单元上。Modular system可以分解成为多个小的组件(部分),来解决一个大问题的多个小块。Modularity可以减少欠缺,减弱维护上的影响,增加重用模块的可能,前提是拥有定义良好的接口和很好的松耦合的模块。


Quality 1.3.3. Simplicity. Simplicity is the extent to which a software system contains only essential complexity. Thus, software systems should only include those features that it needs to achieve its purpose. Adding non-essential features simply creates greater risk because nonessential  features often do not fit well with the overall design and increase its complexity and reduce its elegance [15]. That is, software systems should have conceptual integrity,  which reflects one set of integrated ideas that work well with one another. In addition, because the enormous complexity associated with developing most modern software systems quickly stresses  the intellectual limitations of people, the best solutions are generally simpler ones [16] that cost less to develop and have fewer defects [17].

            简单性,指软件系统只应该包括必须的复杂度,即只包含实现其功能的特性。增加不必要的特性会增加软件的复杂度,增加其风险,经常会导致不符合整体的设计和减少软件的优雅性。 软件系统应该有其概念上的结构,这个结果可以反映出每个部件的功能和功能之间的关系。


Quality 1.3.4. Testability. Testability is the extent to which software facilitates the verification of its operation.

          可测试性,指软件能够容易的验证自己的操作。

 

Quality 1.3.5. Understandability. Understandability is the extent to which people can comprehend the behavior of a software system [11], which generally results in the development of more reliable software systems. The understandability of software systems can be increased, for example, by using improved design and documentation methodologies.

          可理解性,指用户可以理解软件系统的操作行为,这些通常导致更可信系统的开发。

       注:如何提升软件系统的易理解和便于操作性。
Quality 1.4. Portability. Portability is the extent to which code can operate in different computer configurations and environments [14]. It is also a measure of the effort to modify a program to run in a new environment.

            便携:指能在不同的计算机配置和环境下进行操作。
Quality 1.5. Reliability. Reliability is the probability that a program will function without failure over a specified time [14]. In addition, reliable products perform their intended tasks in a manner consistent with user expectations and yield the same results when given the same inputs. Unfortunately, reliability is not free. In general, it costs 50 percent more to develop high-dependability software products than to develop lowdependability software products. However, such an investment is generally cost-effective if a project involves significant operations and maintenance
activities [18]. Achieving reliability depends on three other qualities: accuracy, completeness, and robustness.

        可信赖度。 软件系统在指定时间内不会出现错误,正确整其功能。即,在相同指令下,可信赖的系统通过执行其任务得到可预期的相同结果。....... 其中依靠 准确性、完整性和robustness。

 

Quality 1.5.1. Accuracy. Accuracy is the extent to which the preciseness of program output satisfies its intended use.
Quality 1.5.2. Completeness. Completeness is the extent to which all parts of a software system are fully developed.
Quality 1.5.3. Robustness. Robustness is the extent to which a software system can continue to operate despite anomalies and perform as intended [11].


Quality 1.6. Reusability. Reusability is a measure of the ease with which a software artifact can be used by a software project other than the one for which it was originally intended.

         可复用性:软件不仅仅在最初设计方面可以使用,还可以用在其他的软件中。
Quality 1.7. Usability. Usability is the extent to which code satisfies its purpose without wasting the time of its users [14]. It is also a measure of  the effort required to learn, use, and prepare input for a program and interpret its output. One way to develop usable software systems is to use concepts, terms, and behaviors familiar to users [11].

          便用性: 不浪费用户时间的情况下,满足其目的。 这也是一个衡量其效果,

 

1.1.2 Characteristic Process Qualities 过程质量特性
      Process qualities are related to how people develop products. There are  three key product qualities: effectiveness, efficiency, and predictability. 

     过程质量和人们怎么开发软件产品相关。有效果、有效率和能预测是关键的3个品质。

 

Quality 1.8. Effectiveness. Effectiveness is the extent to which one can produce a product that is ready for service. Thus, effective products meet the needs of their users and provide a quality of service that pleases them. This should be a minimum standard; going one step beyond this is to provide products that delight customers by doing something unexpected but of great value [12].

         有效的,指开发出的软件能够提供服务。因此,有效的产品必须迎合用户的需求,并提供有质量的服务。最小的标准是多走一步: 是多做一些更有价值的事情就能取悦客户。(多为用户想一点,就多一些满意度)


Quality 1.9. Efficiency. Efficiency is the extent to which a software system is developed using a minimum expenditure of energy, resources,  time, and money. The cost to develop and maintain products should be achieved as efficiently as possible to reduce waste. There are two primary  ways to achieve such efficiency. The first way is to build only what is  needed. Thus, products should provide only necessary or high-value features to their users because the addition of features that do not meet  this criteria tends to lower product quality. The second way is to minimize

product development cost by efficiently using human resources, whose benefits generally increase at a greater than linear rate. To efficiently use software development personnel, an organization must assign personnel having the appropriate skills to tasks and provide a work environment that enhances their productivity.

        有效率的,花费最小的成本(能源、资源、时间、金钱)来完成软件系统。开发和维护软件系统需要被压缩到尽可能减少浪费。有2种方案来压缩以达到效率化。 第一个方法是仅仅开发需要的部分。即,仅仅提供必须的或者是高价值的特性,因为附加特性不符合这个标准使得产品质量降低 。 第二种办法是最有效话利用人力资源来缩小产品开发的效率。这些得意会高于线性收益。为了有效利用人们的价值,组织通常需要根据适当的技能来指人们的任务,并提供增加产效的工作环境。


Quality 1.10. Predictability. Predictability is the extent to which one can declare something in advance based on observation, experience, or reason. In software development, one needs to reliably predict the required
resources, delivery date, and cost of a software development effort. To do so requires the establishment of a measurement program, as well as a way to define stable requirements. To define stable requirements, an
organization must manage the definition of requirements, assign work tasks based on the requirements and related requirement groupings, evaluate the effects of adding and changing requirements, and control the realization of such requirements.

         可预测性,指通过观察、经验和某些原因 实现明确一些事情。在软件开发中,管理者的可信的预测需要给予资源、delivery日期、努力开发软件的成本。 为达到这个成果,需要实现制定可衡量的程序,比如定义稳定的需求。定义稳定的需求,组织需要管理需求的定义、指定工作和相关的需求分组、评定需求的增加和更改和 控制需求的实现。

 

    

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
提供的源码资源涵盖了安卓应用、小程序、Python应用和Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值