软件系统的4大技术本质

原来高可用还可以这么算,今天终于搞懂了本质 本文采用“高可用是什么,为什么要高可用,怎么做高可用,为什么这么做,软件风险在哪里”的逻辑来介绍。 高可用是一种控制风险的能力 高可用是一种面向风险设计,使系统具备控制风险,提供更高的可用性的能力。 为什么要高可用 对于一个公司而言,“为什么要高可用”可以完整理解为“公司为什么要(做系统)高可用”。 以公司为对象: 从内看包括:人,软件(物),硬件(物) 从外看包括:客户,股东,社会;从自身看包括:公司 高可用的大前提:所有事物都不是100%可靠的 所有事物都是变化的(唯一不变的是变化)。 阅读详情

软件系统的4大技术本质




需求
        软件定位在哪些用户,能帮用户解决什么问题,给用户带来多少价值,选择放弃的成本。
        需求是一个软件最重要的东西,如果你的软件不能帮用户解决问题,那就是没有意义的软件。
        一个软件服务的用户范围及给每个用户带来的价值决定着这个软件的前景。每个开发人员一定要想清楚软件服务的用户范围,从而得知软件的用户规模。
        比如你做一个类似QQ的即时通讯工具,那用户范围将是所有的网民。如果你做的是一个浏览器的脚本调试插件,那用户范围是开发浏览器软件的程序员,普通网民根本不可能用你这个软件。经常有一些程序员活在自己的世界里,对自己做的软件没有清醒的认识。所以我们需要关心一些宏观统计数据,比如,网民数量,使用某种软件的用户数,使用某种语言的程序员数,以前这些数据的变化趋势预估。
        软件能帮用户解决什么问题,这是一个发展的过程,初始版本一般解决的问题有限,随着用户的反馈及软件升级,软件能帮用户解决的问题会越来越多。
有人说做软件开发最怕需求变化,最好能前面就把需求明确好,责任人员签字,防止变化,但实际上很少有人能精确描述需求,更难预估软件的需求变化,所以如何做好需求分析,首先要定位软件的用户范围,计划解决的用户需求是什么,软件发展过程中及时收取用户反馈,使软件能解决客户的问题越来越多,敏捷与迭代开发更具有可操作性。
        除了一些大型基础软件,现在也很少看到几年开发一个软件的事情。Google的Chrome浏览器是版本帝,一年内发布几个大版本,市场点有率一直在上升,相比之下IE的步伐实在太慢了。
        在互联网公司更是有系统天天发布的现象,因为系统发布相比客户端软件成本低,并且互联网公司的软件需求大部份来自于用户使用的反馈,所以如果没有很好的系统升级及时性,客户满意度会大大下降。
    
界面与操作流程
        你的软件界面友好吗?操作及流程简单清晰吗?
        你的软件界面是不是只是一个信息保存工具,提供了大量增、删、改、查功能,如果软件要求用户输入的信息比给于用户的信息还多,那这个软件的价值何在。没有人喜欢用几十个文本框的输入或查询界面的软件,如果有这样的界面说明我们没有深入了解客户需求,我们只是堆积更多的功能让这些用户不要来烦我,让用户感觉“我已经提供了这么多,你还想怎么样”的结果。
        你能设计一个如Google一样的简便的软件吗?你的操作界面能如iPhone一样简单和绚丽吗?  像Google与iPhone这种的界面也许只有天才能会敢想并实现出来,再看看我们的软件界面吧,估计要无地自容。    
        你是否会思考软件布局清晰,操作流程简单。你的软件是否经常要给客户培训操作,并且培训后还有很多人不会用。
        你是否会思考用户使用一个功能的操作成本,包括键盘输入字符数,鼠标的总体移动时间,点击次数,鼠标键盘切换次数、提示文字思考时间、错误操作概率等等。想想这些,感觉我的软件可能不是在为用户解决需求,更多是在折磨用户,甚至是考验用户智商。
        一个好的软件界面及操作流程应该是不太需要给客户培训,客户就直接会用了。


架构与性能
        软件需求包括已知需求和未知需求,实现需求的成本主要包括硬件成本及软件成本,而软件架构与性能的本质是让人与机器发挥最大的生产力,让实现需求的性价比最优。
        软件的性能是硬件成本的一个主要因素,越好的性能当然需要的硬件越少或者配置更低。不同的程序员开发的软件性能相差巨大,有时甚至达上万倍,也就是说你用一台大型机做事,别人用一台上网本可能比你还快。
        软件成本包括软件开发成本及第三方软件采购及学习使用成本,好的架构师在选择好合适的第三方软件的同时,会重点考虑软件开发架构。我认为软件开发架构最终的目标是让成员能高效工作,要让成员高效工作,软件架构应该能通过提取公共需求来减少重复工作,将复杂的问题简单化,定义清晰的接口规范,通过分模块及分层次的架构实现并行工作并减少沟通成本,在实现已知需求的情况下考虑未知需求对软件变更的成本。为了节约成本,软件架构设计一定会考虑成员的技能水平及新架构技术的学习成本,所以选择何种架构很大因素是当前团队熟悉的或市场通用的技术架构,也不排除一些架构师个人喜好用新技术架构尝试。
        选择软件架构没有最优的说法,因为每个团队的技能基础都不一样,因此也可以看到各个大公司的技术架构千差万别。好的软件架构肯定不是为了满足牛人程序员的需求,因为大部分程序员并不是牛人,不可能都是算法高手,也不可能是工作经验非常丰富的人,大部份程序员都是普通开发人员,架构师设计软件架构的目的就是能利用这些普通程序员的能力就可以更快的实现需求。

        架构不仅是要评估软件的成本,还需要评估硬件成本,有时还需要平衡软件与硬件互换的成本,还需要预估硬件的发展速度是否可保证实现未来需求。
        架构不仅要评估现在团队资源的技能,还需要评估团队资源技能学习的成本,新增团队资源成本等等。
        架构不仅要满足已知需求实现的可行性,还需要考虑实现未知需求的成本。人所掌握的知识是有限的,对已知需求的合理性都无法完全评估,未知需求就更难预测,所以一般架构师都是优先满足已知需求,再从已知需求来分析未知需求产生的可能性,对于发生可能性非常高的未知需求,并且会增加大的变更成本时,才考虑适当的架构基础。
        所以说架构是一种平衡艺术,她需要平衡各种资源,还需要平衡已知需求与未知需求,从而达到一定时间范围内资源最优的生产力。
        架构还有一种艺术是隔离已知需求与未知需求,自己团队只实现已知需求,对未知需求进行抽象并形成实现规范,自己做一些简单实现示例,最终让未知资源来实现未知需求。这类架构的代表作是Eclipse和Facebook,还有MySQL的存储插件引擎接口,这类软件架构的目的是提供解决需求的基础架构,提供非常方便解决需求的方法,可以让更多的人能参与进来,让别人来免费为你实现未知需求,从而达到更高一级的性价比。

安全与稳定性
        没人愿意使用一个不安全的系统,没人愿意把重要信息放在一个经常丢数据的系统里,也没人愿意把机密信息放在一个别人可以轻易得到的系统里。
        没人愿意使用隔三岔五停机维护的系统,也没人愿意在使用系统时经常出现异常错误。
        当你的软件缺乏安全性与可用性时,即使你的其它方面都很好,客户也会很快流失,因为你没办法让他认为是一个值得依赖的东西,他随时会抛弃你。
        所以如何让软件稳定运行是值得思考的,安全性除了软件本身的缺陷外,还需要注意设计好数据网络通讯及主机部署相关的安全性方案,随着系统的扩大,很多都属于系统运维技术。
        在可用性方面也更多是系统运维能力的考验,包括如何保证系统的高可用性,负载均衡,容灾切换,如何规范系统变更流程及操作规范,变更风险识别及应急预案准备等等。

简单来说:
         需求决定你的客户范围,系统价值,也代表着系统潜力
         架构与性能决定你的建设成本
         界面与操作流程主要决定你客户增长的速度
         安全与稳定性主要决定你客户流失的速度



         当然,上面几点只是软件一些的主要技术方面,软件要成功还需要很多其它重要因素,如人力资源、市场营销、竞争对手分析等等。

后记: 能看到这种高质量的文章,实属难得,必然对于我们开阔视野,增加对软件系统的整体认识。

信息技术主流架构全景图:从企业级到软件系统,一文掌握核心范式 本文系统梳理了当前主流IT架构体系,从企业级架构和软件架构两个维度展开分析。企业级架构包括业务、数据、应用和技术四大层次,强调IT与业务战略的协同;软件架构部分详细介绍了分层、微服务、事件驱动等主流风格及其适用场景。文章指出架构选择的黄金法则在于权衡业务需求与团队能力,并探讨了云原生、数据密集型等新兴架构趋势。最终强调架构设计的核心是判断力,需要在复杂性、性能和可维护性之间取得平衡,让技术真正服务于业务目标。 阅读详情

相关推荐

计算机软件:核心组件与关键技术

计算机软件是信息时代的核心,贯穿于操作系统、数据库、文件系统、网络协议、中间件、软件构件和应用软件等各个领域。每一部分都有其独特的重要性和功能,共同支撑起现代计算机系统的高效运行和广泛应用。

479

软件系统 技术关键和主要技术指标怎么写

国际物流技术发展的新趋势之一,而移动机器人是其中的核心技术和设备,是用现代物流技术配合、支撑、改造、提升传统生产线,实现点对点自动存取的高架箱储、作业和搬运相结合,实现精细化、柔性化、信息化,缩短物流流程,降低物料损耗,减少占地面积,降低建设投资等的高新技术和装备。点焊机器人主要用于汽车整车的焊接工作,生产过程由各大汽车主机厂负责完成。(9)包含丰富的交换库(用于备份和交换数据用),用以支持不同运动学的工业机器人的开发,例如Delta机器人,Scara机器人,Portal机器人以及龙门式机器人等;

顺其自然~专栏 2871

信息管理系统开发关键技术——MIS开发技术

1 构建应用程序框架技术 2 用户身份验证技术 3 错误验证技术 4 容 错 技 术 5 界面设计技术 6 访问数据库技术 7 数据绑定技术 8 数据查询、插入、修改、更新技术 9 复杂流程图、结构图的绘制技术

软件系统 技术关键和主要技术指标怎么写_不同的机器人控制各需要什么关键技术?...

机器人控制系统是机器人的大脑,是决定机器人功能和性能的主要因素。工业机器人控制技术的主要任务就是控制工业机器人在工作空间中的运动位置、姿态和轨迹、操作顺序及动作的时间等。具有编程简单、软件菜单操作、友好的人机交互界面、在线操作提示和使用方便等特点。关键技术包括: (1)开放性模块化的控制系统体系结构:采用分布式CPU计算机结构,分为机器人控制器(RC),运动控制器(MC),光电隔离I/...

weixin_39925098的博客 1万+

DataEaseV2.9 本地开发环境搭建与调试指南

本文详细指导如何搭建DataEase V2.9的本地开发环境,涵盖从软件准备、源码获取、数据库初始化到在IDEA中配置、编译和调试的全过程。重点解决了本地运行环境的关键配置与常见问题,帮助开发者高效开启DataEase的定制化开发与二次开发。

weixin_29290863的博客 142

GX WORKS2通过交换机连接PLC的方法

三菱PLC连接方法的分享

weixin_64927621的博客 3620

软件系统 技术关键和主要技术指标怎么写_2020曲阜哪有写可行性研究报告水溶肥项目可研报告写的...

2020曲阜哪有写可行性研究报告水溶肥项目可研报告写的可行性报告的主要用途有哪些?企业投此类可行性报告通常要求市场分析准确、方案合理、并提供竞争分析、营销计划、管理方案、技术研发等实际运作方案。  体、深入、细致的技术论证和经济评价,以求确定一个在,技术上合理、经济上合算的方案和而写的书,面报告,可行性研究报告主要内容是要求以、系统的分析为主,要方法,整个可行性研究提出综合分析评价,指出优缺点,和...

weixin_40000999的博客 1085

OI 生涯回忆录 《Pilgrimage》

前言 于 NOI2020 后写下本文。 本文简单提及了在写作时尚能回忆起来的,在我的 OI 生涯中对我的影响重大的人、事、比赛等。 写作本文,旨在在回忆允许的范围内,对 OI 生涯进行一定程度上的梳理,总结。 开端 入门 我最早接触计算机程序设计,是在小学。 那时候,我的数学成绩不错,就被老师推荐去学习编程。 就这样,我在局前街小学的何静老师的指导下,走上了编程的道路。 小学时的编程,与其说是 “竞赛” ,不如说是 “兴趣班” 。 当时,包括我在内,很多小孩子天性是浮躁的。支撑我对着无聊的代码学下去的,并不

cz_xuyixuan的博客 1万+

软件系统的4大技术本质(转)

软件系统的4大技术本质 需求         软件定位在哪些用户,能帮用户解决什么问题,给用户带来多少价值,选择放弃的成本。         需求是一个软件最重要的东西,如果你的软件不能帮用户解决问题,那就是没有意义的软件。         一个软

xiongxiao的专栏 847

LDO 上电过冲的根因

LDO在上电瞬间常出现短时过冲电压(3.4V-3.5V),可能损坏敏感器件。其根本原因是:低

硬核科技 294

NLP高频面试题(一)——Transformer的基本结构、作用和代码实现

本文详细介绍了Transformer模型的基本结构和PyTorch代码实现过程。首先解析了Transformer的核心组成部分,包括嵌入层、多头自注意力机制、位置编码、前馈神经网络、编码器和解码器等模块,并通过清晰的代码示例逐步展示了如何在PyTorch中构建完整的Transformer模型。文末提供了一个可运行的简单示例,帮助读者快速理解并实践Transformer的核心原理与实现方法。

WeLearnNLP 1026

实时操作系统(RTOS)本质上是一个软件系统

它运行在硬件之上,负责管理和调度任务、资源,并提供实时性保障。但需要补充的是,RTOS的“实时性”能力不仅依赖于软件设计,还。RTOS作为软件层,直接运行在裸机(Bare-Metal)硬件或微控制器(MCU)上,与应用程序代码共同构成完整的嵌入式系统。RTOS像一个乐队的指挥(软件),负责协调各个乐手(硬件模块)的演奏节奏。RTOS是一个由代码实现的。虽然RTOS是软件,但其。

wanghao312的博客 750

【YOLOv12改进trick】高效多尺度卷积注意力EMCAD_Block模块引入YOLOv12,实现涨点和效率提升,含创新点Python代码

EMCAD引入YOLOv12模块,实现高效多尺度注意力模块引入到YOLOv12中的快速涨点及效率提升

向上生长的程序媛的博客 852

中小型软件系统的挑战是什么?

中小型软件系统与大型系统的核心差异在于规模、复杂度和资源约束。中小型系统面临资源有限、需求多变、架构选择两难等技术挑战,更强调快速交付和灵活调整;大型系统则需解决分布式架构、团队协作、长期演进等系统性难题,注重稳定性和扩展性。两者的本质差异体现在团队规模、架构复杂度、技术债务管理等方面。中小型系统应避免过度设计,大型系统则需建立规范化流程。关键在于根据业务阶段选择匹配的技术方案,平衡效率与系统韧性。

软件行业技术文化交流。 1166

30、优化算法在芯片布局与药物设计中的应用

本文探讨了优化算法在芯片布局与药物设计中的关键应用。针对芯片布局问题,提出了一种改进的粒子群优化(PSO)方法,通过引入转向因子、重叠检测与消除机制以及优先处理约束模块,有效优化了芯片面积、线长和运行时间,并在有无布局约束条件下均优于传统方法。在药物设计领域,介绍了基于蚁群优化(ACO)的PLANTS算法,用于解决蛋白质-配体对接问题,通过离散化连续变量、信息素更新、局部搜索和聚类处理,提高了构象预测的准确性。文章还总结了两种算法的操作流程,并展望了未来在多约束集成与算法融合方向的发展潜力。

egg99的博客 94

Redhawk: dynamic ir drop分析(Clock Buffer Clustering)

在dynamic分析中,ir drop问题多出现在三种情况下,缺power mesh,缺power switch,clock cell过于密集。 前两种情况通过选中具体instance查看min res path都比较容易分析出来,而且大部分问题都出现在channel里,这里不多做赘述。 clock cell过于密集这是观察结果,缺少报告支持,这里分享一下分析方法。 首先,选中压降超过signoff标准的instance,(Results->List of Worst Instance DVD中

m0_61544122的博客 5274

阿里技术出品:高可用的本质!

见字如面,我是军哥!今天这篇文章厉害了,请看下文。我是乐羊,一个热爱风险防控的人,之前参与过蚂蚁Glocal多个站点从0到1的建站和高可用建设,目前正在参与蚂蚁大安全的高可用建设。无论是一...

chengjun_java的专栏 237

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

软件件系统的4大技术本质

软件系统的4大技术本质 需求         软件定位在哪些用户,能帮用户解决什么问题,给用户带来多少价值,选择放弃的成本。         需求是一个软件最重要的东西,如果你的软件不能帮用户解决问题,那就是没有意义的软件。         一个软

sam的自留地 539

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

上一篇: 写给我们这些浮躁的90后程序员
下一篇: 程序员技术以外的功夫
疯疯爱吃辣
博客等级 码龄15年 25粉丝 26原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值