从知识视角理解软件开发

2024-09-07 06:28

本文主要是介绍从知识视角理解软件开发,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

软件构造中的核心知识:业务知识与架构知识

在软件构造过程中,最关键的两类知识是业务知识架构知识。业务知识回答“什么是正确的软件”,而架构知识解决“如何正确地构造软件”。从这两个方面深入理解软件构造,可以帮助我们在设计和开发过程中做出更明智的决策。

1. 业务知识:定义正确的软件

业务知识是关于如何解决现实问题的知识,包括业务的目标、规则、限制、和已有的解决方案。它定义了“正确的软件”是什么,即软件应实现哪些功能来满足业务需求。

  1. 业务知识的来源与特点

    • 问题驱动:业务知识源于对现实世界问题的理解,是为了在软件中解决这些问题。
    • 不等同于功能点:业务知识并非直接对应软件的功能点,而是表现为待解决的问题、规则和限制条件。在软件实现中,业务知识才映射为功能点。例如,同样的审批流程,现实中可能用邮件、微信群完成,而在软件中可能通过OA系统的特定工作流实现。
    • 组织与流程的影响:业务知识不仅存在于软件系统中,还嵌入在组织的流程与人员中。当软件接手部分业务知识或改变其范围时,往往伴随组织流程的变更,如从邮件办公模式切换到微信办公模式,组织的流程会相应调整。
  2. 业务知识在软件研发中的作用

    • 传递与学习过程:软件研发是业务知识的传递与学习过程,研发流程因此具备迭代特性。每次迭代包括:探测(构建软件)、感知(反馈验证)、响应(改进方案)。在产品生命周期内,这一过程类似于精益创业中的“构建-度量-学习”循环,持续验证软件是否满足业务需求。
    • 转化为软件需求:在研发之前,需要将业务知识转化为目标解决方案(如业务架构愿景)。根据这一解决方案,将业务知识分解为具体的软件需求,定义不同业务模块的功能。
  3. 复杂认知模式:业务知识的转化过程充满不确定性,体现为复杂的认知模式:

    • 感知:对业务问题的初步理解。
    • 分析:根据业务架构或解决方案进行问题处理。
    • 响应:生成软件需求,分配给不同的业务模块。
2. 架构知识:正确构造软件的方法

架构知识是关于如何有效构造软件的知识,涵盖技术决策和设计模式,解决软件的性能、可靠性、可扩展性等非功能性需求,保证软件能够正确实现业务需求。

  1. 架构知识的来源与特点

    • 技术视角的解决方案:架构知识从技术视角定义系统结构和组件交互方式,解决性能、扩展性、安全性等非功能性问题,是软件系统的技术蓝图。
    • 影响非功能性质量:架构知识直接影响系统的整体质量,如性能优化、可靠性保障和可扩展性设计。这些非功能性质量虽然用户不直接感知,但对用户体验至关重要。
    • 任务分解的指导:架构知识在任务分解过程中发挥指导作用,确保软件需求正确映射到架构组件,避免架构腐化(即任务划分错误导致的架构失效)。
  2. 架构知识在软件构造中的作用

    • 设计与决策依据:架构知识用于制定设计决策,如选择合适的技术栈、确定系统分层、定义服务接口等。这些决策影响软件的开发效率和质量。
    • 指导功能与非功能性质量平衡:架构知识帮助团队在构造过程中平衡功能性与非功能性质量,确保软件不仅满足业务功能,还具备良好的性能、安全性和可用性。
    • 任务分解与架构腐化:通过架构指导任务分解,将需求按架构规则分配到合适的组件。架构腐化往往源于分解过程中架构未能有效指导,导致持续的错误划分。
  3. 庞杂认知模式:架构知识的应用也遵循庞杂模式:

    • 感知:对软件问题的初步理解。
    • 分析:根据架构处理问题,进行技术分析和设计。
    • 响应:分解任务到架构组件,确保系统整体协调。
3. 功能性与非功能性质量的平衡

在软件构造过程中,功能性质量非功能性质量相辅相成,软件既要实现其核心任务,又需在性能、安全性、可用性等方面表现出色。为了实现这一平衡,需采用综合的质量保证措施:

  1. 代码审查:建立在反馈基础上的复杂模式措施,主要包括探测(成员实现功能)、感知(团队反馈评估)、响应(改进方向)。

  2. 测试策略:基于分析的庞杂模式措施,包括感知(理解需求边界)、分析(分解为不同种类测试)、响应(完成测试)。

总结

业务知识与架构知识在软件构造中的作用分别回答了“什么是正确的软件”和“如何正确构造软件”这两个核心问题。通过理解这两类知识及其应用场景,可以有效指导软件研发的每一个环节,确保软件既符合业务需求,又能在技术上稳定、高效地运行。

这篇关于从知识视角理解软件开发的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1144307

相关文章

Java架构师知识体认识

源码分析 常用设计模式 Proxy代理模式Factory工厂模式Singleton单例模式Delegate委派模式Strategy策略模式Prototype原型模式Template模板模式 Spring5 beans 接口实例化代理Bean操作 Context Ioc容器设计原理及高级特性Aop设计原理Factorybean与Beanfactory Transaction 声明式事物

认识、理解、分类——acm之搜索

普通搜索方法有两种:1、广度优先搜索;2、深度优先搜索; 更多搜索方法: 3、双向广度优先搜索; 4、启发式搜索(包括A*算法等); 搜索通常会用到的知识点:状态压缩(位压缩,利用hash思想压缩)。

sqlite3 相关知识

WAL 模式 VS 回滚模式 特性WAL 模式回滚模式(Rollback Journal)定义使用写前日志来记录变更。使用回滚日志来记录事务的所有修改。特点更高的并发性和性能;支持多读者和单写者。支持安全的事务回滚,但并发性较低。性能写入性能更好,尤其是读多写少的场景。写操作会造成较大的性能开销,尤其是在事务开始时。写入流程数据首先写入 WAL 文件,然后才从 WAL 刷新到主数据库。数据在开始

【生成模型系列(初级)】嵌入(Embedding)方程——自然语言处理的数学灵魂【通俗理解】

【通俗理解】嵌入(Embedding)方程——自然语言处理的数学灵魂 关键词提炼 #嵌入方程 #自然语言处理 #词向量 #机器学习 #神经网络 #向量空间模型 #Siri #Google翻译 #AlexNet 第一节:嵌入方程的类比与核心概念【尽可能通俗】 嵌入方程可以被看作是自然语言处理中的“翻译机”,它将文本中的单词或短语转换成计算机能够理解的数学形式,即向量。 正如翻译机将一种语言

系统架构师考试学习笔记第三篇——架构设计高级知识(20)通信系统架构设计理论与实践

本章知识考点:         第20课时主要学习通信系统架构设计的理论和工作中的实践。根据新版考试大纲,本课时知识点会涉及案例分析题(25分),而在历年考试中,案例题对该部分内容的考查并不多,虽在综合知识选择题目中经常考查,但分值也不高。本课时内容侧重于对知识点的记忆和理解,按照以往的出题规律,通信系统架构设计基础知识点多来源于教材内的基础网络设备、网络架构和教材外最新时事热点技术。本课时知识

【C++高阶】C++类型转换全攻略:深入理解并高效应用

📝个人主页🌹:Eternity._ ⏩收录专栏⏪:C++ “ 登神长阶 ” 🤡往期回顾🤡:C++ 智能指针 🌹🌹期待您的关注 🌹🌹 ❀C++的类型转换 📒1. C语言中的类型转换📚2. C++强制类型转换⛰️static_cast🌞reinterpret_cast⭐const_cast🍁dynamic_cast 📜3. C++强制类型转换的原因📝

深入理解RxJava:响应式编程的现代方式

在当今的软件开发世界中,异步编程和事件驱动的架构变得越来越重要。RxJava,作为响应式编程(Reactive Programming)的一个流行库,为Java和Android开发者提供了一种强大的方式来处理异步任务和事件流。本文将深入探讨RxJava的核心概念、优势以及如何在实际项目中应用它。 文章目录 💯 什么是RxJava?💯 响应式编程的优势💯 RxJava的核心概念

如何通俗理解注意力机制?

1、注意力机制(Attention Mechanism)是机器学习和深度学习中一种模拟人类注意力的方法,用于提高模型在处理大量信息时的效率和效果。通俗地理解,它就像是在一堆信息中找到最重要的部分,把注意力集中在这些关键点上,从而更好地完成任务。以下是几个简单的比喻来帮助理解注意力机制: 2、寻找重点:想象一下,你在阅读一篇文章的时候,有些段落特别重要,你会特别注意这些段落,反复阅读,而对其他部分

深入理解数据库的 4NF:多值依赖与消除数据异常

在数据库设计中, "范式" 是一个常常被提到的重要概念。许多初学者在学习数据库设计时,经常听到第一范式(1NF)、第二范式(2NF)、第三范式(3NF)以及 BCNF(Boyce-Codd范式)。这些范式都旨在通过消除数据冗余和异常来优化数据库结构。然而,当我们谈到 4NF(第四范式)时,事情变得更加复杂。本文将带你深入了解 多值依赖 和 4NF,帮助你在数据库设计中消除更高级别的异常。 什么是

分布式系统的个人理解小结

分布式系统:分的微小服务,以小而独立的业务为单位,形成子系统。 然后分布式系统中需要有统一的调用,形成大的聚合服务。 同时,微服务群,需要有交流(通讯,注册中心,同步,异步),有管理(监控,调度)。 对外服务,需要有控制的对外开发,安全网关。