`

应用软件合理性

阅读更多
我们在讨论应用软件的需求和设计的时候,常常会说:“我觉得这个需求不合理。”或者说:“按照我的经验,这样子设计是不合理的。”往往我们这样说的时候,是根据自己的经验和直觉来判断的。这样的理由往往不被认同和接受,所以最终的结果可能并没有向我们所想象的方向发展,直到最终我们得到一个教训。

    为什么应用软件的“合理性”很重要?

    理解应用软件的“合理性”,对于软件的构造者非常重要。合理性不仅是最终评价一个软件质量的标准之一,同时还是软件构造过程中的一个重要原则。

    黑格尔说:凡是合理的东西都是现实的,凡是现实的东西都是合理的(《法哲学原理》)。这里的“理”并不是指道德、法律或法则,而是指事物的本质和发展规律。现实是指长期、稳定的现实存在,而不是偶然的现象、表象、感觉、主观想象等等东西。对于应用软件开发而言,现实的系统(尚未实现的系统)是合理的,而只有目标系统成为一个合理的系统,它才会是现实的,才可以长期、稳定的存在,才可以最大限度的降低系统维护的成本。但现实却是软件的合理性长期得不到足够的重视,这给后期软件的维护增加了很多不必要的麻烦,而这又往往是人们认识之外的。

    从软件自身的发展看来,也附合一般事物的发展规律:随着用户对软件的理解越来越深刻,他们提出和要求也越来越合理。但在早期软件设计,特别是架构设计存在不合理的情况下,一般只存在两种结果——要么推倒重来,要么变成一堆垃圾,越来越难以维护,最终不得不被放弃。由此看来,应用软件的合理性,特别是在应用软件生命周期的早期,具有至关重要的地位。

    从开发过程的角度来说,合理性是评价一个应用软件的需求、设计的重要指标。我们在实际的开发过程中,总是在有意无意的使用它来衡量一个软件需求可设计的好坏。但是这种对合理性的应用是自发的,并不具备很大的说服力。在了解合理性的重要性之后,我们应该把对它的应用变成一种自觉的、主动的行为,有意识的去利用它来帮助我们的应用软件构造。

    需求合理性

    在需求阶段,主要的任务的就是识别不合理的需求,并努力把合理的需求变得更加合理。

    对于应用软件来说,初期的需求获得一般是间接的。即需求分析人员通过用户、客户得到第一手资料,然后在这个基础上进一步完善,逐渐形成一个完善的软件需求。所以需求在开始的时候主要由用户、客户对于现实系统的认识构成。这个时候的需求受限于用户、客户对现实系统的理解力,用户、客户对于现实系统的不正确、不合理的认识不可避免的渗入了原始的需求中。例如,当一个工作流完成后,需要通知最初起动流程的用户,这样一个需求可能会被用户认为:当一个工作流完成时,需要流转到最初起动流程的用户。也就是说,用户可能认识不到“通知”和“流转”的区别。辨别原始需求中的不合理成份,并通过和用户、客户沟通来促使其认识更加合理,是需求分析阶段的重要工作内容。

    另外,软件往往不仅仅是对现实系统的简单模拟。限于现实系统手工操作的难度,很多自动化的、重复的劳动,以及对于系统数据的深加工操作,多数时候并没有包括在现实系统之内。在目标系统完成后,大规模自动计算的条件已经具备,喜欢思考的用户、客户会很快“发现”这些需求,这也是用户、客户对系统的认识进化的合理结果。所以当我们考虑软件的合理性时,应当把这些潜在的需求考虑在内。这就需要需求分析人员对系统需求进行深度挖掘,尽可能多的找到用户、客户的潜在需求。

    我们需要理性的需求人员,凭借我们对于技术的深刻理解,来说服、引导、教育用户和客户。但在实际的操作过程中,并不能保证所有的说服、引导和教育都是成功的。有些用户相当固执,这意味着需求人员有时候不得不妥协。但妥协并不等于接受,需求人员有责任把其对不合理的需求的思考写入需求文档,以便在设计中还能够补救。

    设计合理性

    设计阶段在需求阶段之后,所以设计的合理性自然依赖于需求的合理性。另一方面,设计是形成目标系统模型的过程,它又依赖于计算机软件的内容和形式。

    首先考虑的是设计对需求的顺应。在需求合理的情况下,顺应需求的设计自然也具有了和现实系统一样的合理性。如果需求的合理性不能得到保证,则做为设计阶段不可缺少的尝试是使设计本身具备一定的前瞻性,即设计要足够灵活以适应将来需求的变化——在这种情况下,需求是最容易发生变化的。然而设计也不是要覆盖所有可能的需求变化,而是通过分析找到需求最可能合理的发展的方向,在这个方向上努力。

    毕竟应用软件在形式和内容上都囿于计算机这个载体,其设计必然要适应这个世界的游戏规则。从某种意义上说,计算机软件是人类思想动态的、模拟的存在,它是人类思想的一种表现形式。人类对于外部世界的认识是逐日加深的,它越来越接近这个世界的本质。同时,作为人类思想形式化存在的软件也必然需要保持同步的进化。这种进化就是软件存在的最基本的思想,它深刻的体现在软件的移交和改进过程中。一直以来,从软件设计理论中所提出的模块化,模块之间的高内聚、低偶合,到做为架构师主要职责的软件变化的控制和复杂性控制,都是这个思想的具体表现。

    另外,软件运行过程中的性能、可靠性要求也是软件合理性的一个方面。它可以被看作思想和数字空间的契合程度。当然,我们不能说一个低性能、低可靠性的应用是合理的。

并不是只有技术才是实在的,非技术的都是空洞的。项目的好坏成败,技术因素是很少的一部分。
需求的理解是一种更加重要的技术。要把眼睛从代码上移开,看看客户是如何工作的。
用户始终是本源,从用户出发考虑才是实际的和合理的。
分享到:
评论

相关推荐

    YDT 3228-2017移动应用软件安全评估方法.pdf

    因此,建立一套科学、合理的移动应用软件安全评估体系显得尤为重要。 #### 标准主要内容 该标准旨在为移动应用软件的安全评估提供一套全面、系统的指导原则和技术规范。主要包括以下几个方面: 1. **范围**:明确...

    企业级应用软件架构开发过程与实践

    在企业级应用软件架构开发过程中,我们关注的不仅仅是技术实现,更重要的是如何设计出能够满足大规模、高并发、可扩展性、稳定性和安全性的系统。本篇内容将围绕这一主题,依据提供的章节名称,深入探讨企业级应用...

    怎样进行嵌入式应用软件任务划分

    在确定任务划分方案后,还需要对任务进行分析与计算,以保证任务分割的合理性和有效性。这包括评估任务的优先级、执行时间和可能的时延。通过精心的任务划分,可以最大限度地减少任务之间的相互影响,提升系统的并发...

    信息安全技术 应用软件安全编程指南

    - **目标**:本标准的目标在于通过规范和指导应用软件的安全编程实践,帮助开发者在开发阶段就充分考虑到软件的安全性,从而降低软件发布后出现安全问题的风险。 - **适用范围**:主要面向PC或服务器架构的应用软件...

    嵌入式Linux应用软件开发流程

    嵌入式Linux应用软件开发流程涉及一系列特定的步骤和注意事项,尤其强调了与硬件平台的紧密结合。在软件工程中,嵌入式应用软件的生命周期包括需求分析、系统设计、编码、调试和维护,但其独特之处在于需要充分考虑...

    软件可靠性设计技术应用研究.docx

    通过建立合理的评估标准,可以有效地衡量软件的可靠性。 研究方法是在软件可靠性设计技术应用研究中的重要环节。研究方法包括文献调研、案例分析、专家访谈等。这些研究方法可以相互补充,提高研究的可信度和有效性...

    用于分布式系统管理的应用软件.pdf

    在分布式系统管理领域,应用软件是实现有效监控、自动化、部署及维护分布式环境不可或缺的工具。分布式系统由多个分散的组件组成,这些组件通过网络进行通信,以协同工作并提供一致的服务。在本文中,我们详细探讨...

    汉语编程企业管理应用软件项目文档

    《汉语编程企业管理应用软件项目文档》是一份详尽的软件开发资料,涵盖了软件工程的关键环节,旨在为企业管理提供定制化的应用软件解决方案。这份文档由三部分组成:可行性分析报告、需求分析说明书和用户手册,每...

    Android应用软件安全加固技术研究.pptx

    因此,如何合理地分配和管理应用软件的权限是提高安全性的关键。 加密技术是保护敏感数据的重要手段。在Android应用软件中,加密技术主要应用于数据的存储和传输过程。例如,可以将用户的密码、个人信息等敏感数据...

    计算机常用应用软件借鉴.pdf

    《计算机常用应用软件借鉴》 计算机应用软件是我们在日常生活中不可或缺的工具,它们丰富了我们的工作和娱乐生活。软件大致分为两类:系统软件和应用软件。系统软件,如操作系统和编程工具,是计算机的基础,负责...

    奥派电子商务应用软件研究.doc

    奥派电子商务应用软件的主要特点是实战性强,教学过程中将理论知识与实践相结合,系统安排学习进度,教师进行合理指导。在实训过程中,主要关注软件中的电子商务应用模型实践、网络营销实践、电子支付实践、电子商务...

    学生照片查询器应用软件

    【学生照片查询器应用软件】是一款专为教育机构设计的实用工具,旨在通过学生的学号快速查询并显示对应学生的照片。这款应用软件极大地方便了教职员工、班主任以及家长在需要确认学生身份时查找信息,提高了工作效率...

    应用软件运行状况全掌握.docx

    应用软件的可视性(application visibility)是指软件在运行过程中以多样化方式、多层次和多角度展示其运行状态的能力,使得运维人员能够全面了解系统状况。可视化应用系统(visual application)则是具备良好可视性...

    计算机应用软件的开发研究-计算机应用-计算机.pdf

    计算机应用软件的开发研究是一个重要的研究课题,旨在探讨计算机应用软件的开发和维护,以满足网民的相关需求,提高计算机设备的运行效率和稳定性。本文将从计算机应用软件开发、维护两个方面进行探讨,旨在为相关...

Global site tag (gtag.js) - Google Analytics