论文:论软件系统架构评估
文章目录
论文一
摘要
2021年3月,我公司承担了国家某安全中心漏洞挖掘系统的开发工作,我在该项目中承担系统架构设计师的职务,主要负责系统的架构设计。该项目的主要目的是依托大数据平台从互联网流量中挖掘未知漏洞。
本文以漏洞挖掘系统为例,论述了软件系统的架构评估。首先分析了软件架构评估所普遍关注的质量属性并阐述了其性能、可用性、可修改性和安全性的具体含义。整个系统采用了面向服务SOA的架构设计方法。在架构设计完成之后,对SA评估采用了基于场景的评估方式中的体系结构权衡分析方法ATAM,并详细描述了其评估过程,项目评估小组经过对项目的风险点、敏感点和权衡点的讨论后生成了质量效应树。 目前系统已稳定运行一年多,从而验证了该项目采用ATAM架构评估保证了系统的顺利完成。
正文
随着互联网的快速发展,网络上出现的安全问题越来越多,从互联网发展至今,已经爆发了众多的网络攻击事件,如网络蠕虫病毒感染、主机被控制、数据库被非法访问、非法电子银行转账等等。针对这些安全问题,很有必要开发一种web漏洞的发现和利用技术。2021年3月我公司承接了国家某安全中心漏洞挖掘系统的开发工作。该项目通过对互联网中的流量进行特征分析,从中提取出相关的攻击内容,并将这些内容存储到大数据平台,结合大数据分析技术,对攻击者进行跟踪分析,从而捕获出未知漏洞。通过这种漏洞挖掘技术可以极大的解决大数据,大流量背景下web攻击入侵,帮助用户做好“事中”的安全工作,协助安全厂商对互联网攻击进行针对性过滤。
系统在整体架构上采用了面向服务的架构SOA。前端采用了PHP进行开发,后台流量分析工作采用运行性较教高的c语言在Linux服务器上开发,流量包存储使用了企业磁盘阵列,数据存储采用了mysql。通过将系统拆分为多个子模块,各个子模块的构建上用服务进行了封装,它们之间通过消息进行通信。经过对客户需求的分析,我将该系统拆分为了流量捕获模块(负责从互联网中捕获流量)、pcap文件存储模块(负责将互联网中的流量存储到大数据平台)、流量分析模块(负责对流量进行分析验证)、数据库模块(负责漏洞数据的存储)和web管理模块(负责下发漏洞规则和查看漏洞信息)。下面先介绍下软件架构评估的质量属性。
架构评估是软件开发过程中的重要环节,在软件架构评估中的质量属性有:性能、可用性、可修改性、安全性、可测试性、可靠性和易用性等。其中前4个质量属性是质量效应树的重要组成部分。性能是指系统的响应能力,即经过多长时间对事件做出响应。可用性是指系统能够正常运行的比例,通过用两次故障之间的时间长度或出现故障时系统能够恢复的速度来表示。可修改性是指系统能以较高的性价比对系统做出变更的能力。安全性是指系统能够向合法用户提供服务,同时拒绝非授权用户使用或拒绝服务的能力。
常用的架构评估方法有:基于问卷调查的评估方式、基于场景的评估方式和基于度量的评估方式。基于问卷调查的评估方式是由多个评估专家通过调查问卷的方式回答问卷中的问题,对多个评估结果进行综合,最终得到最终结果。其评价的具有主观性不太适合本项目。基于度量的评估方式虽然评价比较客观,但是需要评估者对系统的架构有精确的了解,也不太适合本项目。而基于场景的评估要求评估者对系统中等了解,评价比较主观,故本项目采用了基于场景的评估方式。基于场景的评估方式又分为架构权衡分析法ATAM,软件架构分析法SAAM和成本效益分析法CBAM。本项目中根据不同质量属性使用了ATAM作为系统架构评估的方法。
在使用ATAM进行架构评估时,我们根据项目需要成立了项目评估小组。其主要成员包括:评估小组负责人、项目决策者、架构设计师、用户、开发人员、测试人员、系统部署人员等项目干系人。
我在这里的身份是项目的评估小组负责人和首席架构师。架构的评估经历了描述和介绍阶段、调查和分析阶段、测试阶段和报告阶段四个阶段。下面我分别从这四个阶段进行介绍。
一、在描述和介绍阶段
由于项目评估成员有部分人员对ATAM并不熟悉,我首先介绍ATAM的方法。它是一种基于场景的软件架构评估方法,对系统的多个质量属性基于场景进行评估。通过该评估确认系统存在的风险,并检查各自的非功能性需求是否满足需求。客户也阐述了系统的目的和商业动机。项目是为了通过捕获互联网流量从而挖掘出有价值的漏洞信息。通过实时获取漏洞可以有效的展开防御,保证网站的安全性。客户关注系统的性能及系统能否获取高质量的漏洞信息。最后作为架构设计师的我描述了系统将要采用的soa架构,并将系统进行了拆分,并讲解了各个子模块的功能,初步决定系统服务端在Linux下使用c语言进行开发。
二、在调查分析阶段
不同的需求方基于各自的考虑都提出了各自的要求。其中客户方提出:系统的要保证其可靠性,特别是针对黑客ip进行跟踪的时,系统发生故障必须在1分钟内恢复,此优先级最高。经过自动化分析,系统对漏洞的自动识别率必须达到90%以上,此优先级较高。系统可以对规则模块实时进行修改,其修改工作必须在1人天完成,以便可以根据最新的规则进行漏洞捕获。系统要确保一定的安全性。安全分析人员提出:系统需要过滤大部分正常的流量,以减轻安全分析人员的分析难度。系统必须提取出有价值的高风险ip,无效的流量跟踪将会带来产出的低下。开发人员提出为了保证系统的开发效率及系统修改性,可以进行并行开发。
针对这些场景我们分析了项目开发过程中的风险点、敏感点和权衡点。经过分析,该项目中存在以下风险点:黑客的ip如果不能实时捕获,将会丢失重要漏洞信息;系统中对消息的处理如果超过12小时,将会产生大量的消息积压。敏感点有:用户的加密级别、漏洞规则的修改。权衡点有:改变漏洞规则的严格程度会提升漏洞的准确率,同时带来系统性能的下降。改变系统的加密级别对系统的安全性和性能都会产生影响。
三、在测试阶段
经过评估小组集体讨论,确定了不同场景的优先级如下:系统的可用性最高,性能其次,可修改性及安全性优先级较低。在保证系统可用性方面,在流量捕获部分使用双机热备技术,在两个捕获系统之间设置心跳,当一台捕获系统出问题,另一台捕获设备接管。在流量自动化分析部分,采用了集群部署技术,一台分析设备出问题,不会影响整个分析系统。在保证数据安全性方面,磁盘采用企业磁盘阵列raid5机制。在用户数据安全性方面,采用了非对称加密及信息摘要技术。
四、最后形成了评估报告
经过对架构的评估,确定了系统的风险点、敏感点、权衡点和非风险点,最后以文档的形式表现。其包括的内容包括:架构分析方法文档、架构的不同场景及各自的优先级、质量效应树、风险点决策、非风险点决策及每次的评估会议记录。
总结
该项目开发工作于2021年8月完工,系统上线后,我们的安全分析人员和客户使用该系统对互联网流量进行漏洞挖掘,一共产生了150种以上的web流量攻击流量特征和5个未知web漏洞。在国家某安全中心网研室的其他项目中起到了支撑作用,尤其是某变量覆盖漏洞、某文件写入漏洞,某sql注入漏洞在项目使用过程中取得了一定得效果,得到了好评。为开展互联网安全事件得防御、发现、预警和协调处置等工作提供了数据依据,更好的维护了国家公共互联网安全,保障基础信息网络和重要信息系统的安全运行。
论文二
摘要
2021年4月,我参加了某市大型车企的车联网开发项目,该项目主要为该车企的用户提供车联网服务,功能包含车控、维保预约、智能家居、音乐电台等。我在该项目担任系统架构师角色,主要负责项目整体的架构设计。本文以该项目为例,介绍软件架构评估在项目中的实际运用。通过对场景和需求收集,包括功能和非功能需求,确立了项目所需关注的场景和需求。通过对架构视图和场景实现,展现架构的整体思想,分析场景和架构的匹配度,对场景做优先级划分。通过属性模型构造和分析,对单一属性进行分析,对安全性和性能等属性冲突之处进行权衡分析。通过以上实施过程,我们顺利对项目的软件架构进行了评估,为提升项目质量提供了坚实保证。最终项目顺利上线,获得预期目标,得到客户一致好评。
正文
随着汽车行业的快速扩张,以及互联网行业的快速发展,汽车不再仅仅是个代步工具,人们更多赋予了汽车互联网的功能,让车变得更加智能,各大车企车联网的开发也如火如荼进行着。为了提升用户粘性与品牌忠诚度,提升汽车行业市场份额,同时收集用户埋点数据,为后面的决策提供重要数据,某市某知名车企自202年4月至今实施了车联网开发项目。项目主要开发车联网APP、车机系统,功能包含三大块:灰色服务,即车控、超速报警、电子围栏、健康报告、行程统计等。彩色服务,即智能家居、音乐电台、停车缴费、违章代缴、维保预约等。基础服务,即品牌咨询发布、绑车入会、商城、在线客服等。同时做好线上功能的埋点,实时采集用户的数据,定期对绑车率、激活率等功能报表分析。项目前后端开发、测试、产品经理等角色合计50余人,集成了斑马、喜马拉雅、京东、高德地图、中国移动等多家服务提供商,开发周期约半年。我在项目中担任架构师,负责架构组整体架构需求分析、架构设计、架构评估等工作。
对于大型的系统来说,良好的系统架构至关重要,将直接关系到系统的质量。在软件架构评估中,人们普遍关注的质量属性包括性能、可用性、可修改性、安全性等。性能是指系统的响应能力,既要经过多长时间才能对某个事物作出响应,或者在某段时间内系统所能处理的事件个数。可用性,即系统能够正常运行的时间比例,经常用两次故障之间的时间长度或在故障出现时系统能够恢复正常的速度来表示。安全性,是指系统在向合法用户提供服务的同时能够阻止非授权用户使用的企图或拒绝服务的能力。可修改性,是指能够快速以较高的性价比对系统进行变更的能力。
结合项目实际,我们的软件架构评估方法主要采用了基于场景的评估方法——架构权衡分析法(ATAM),过程主要包含场景与需求收集,架构视图与场景实现,属性模型构造分析,折中四个方面。下面将重点从前三个方面介绍ATAM方法在项目中的实际运用。
一、场景和需求收集
由于项目庞大,涉及的系统多,对项目的质量有很高要求,若不提前确认项目的场景和需求,将无法为架构评估提供依据。鉴于此,在架构评估的第一步,我们进行了场景和需求收集。我们召集了项目的关键干系人成立评估小组,包含架构人员、设计人员、管理人员和客户代表,在和他们宣传软件评估过程和思想以后,收集他们对于场景的设想与需求。
场景包括功能性和非功能性需求,功能需求主要按照项目的功能要求确定,非功能需求我们按照项目需求确立了可用性、性能、安全性、可修改性、互操作性、功能性、可变性等,并对非功能需求需要进行细化的描述,包括需求、约束和环境,例如对于性能的要求,需要细化到用户点击某一个页面,在正常网络情况下页面响应时间需要控制在2s以内。在场景收集中,不同角色关注的视角不同,因此我们需要尽可能覆盖到不同类别的人员,以保证场景不会遗漏。通过这个环节,我们收集了全面的场景和需求,为软件架构评估提供了关键的依据。
二、架构视图和场景实现
在场景和需求收集以后,若不与项目的架构结合起来做匹配,也无法针对场景对架构做评估。因此,我们第二步进行了架构视图和场景实现。我们向评估小组展现了项目的整体架构与思想,对不同的场景介绍了架构设计方案。例如对于用户查看行程统计报表的场景,需求是每天24:00更新报表,因此架构设计方案为数据通过跑定时任务进行批处理,而非实时处理。对于用户关键的个人信息,例如手机号、身份证号,场景需求是保证用户敏感数据安全,因此我们的架构设计为用HTTPS对数据通道进行加密,同时APP前端对敏感数据做脱敏处理。通过这样的方式将架构设计与具体场景匹配起来。同时,也建立了质量属性效用树,将涉及的质量属性进行图形化表示,以更加直观展示。评估项目这个环节还需要对场景进行划分,我们召集了评估小组成员对场景的优先级进行投票,对场景进行排序。通过这个方式,使评估小组成员可以对架构和场景的匹配有了很好的认识,也对场景进行了分级处理,为后续的评估工作提供了重要参考。
三、属性模型构造和分析
在获得项目的需求和场景之后,若不对质量属性以及质量属性之间的关系进行分析,也无法对软件架构进行评估。因此,我们进行了属性模型构造和分析。首先,我们对单一的属性抽取出来做详细分析,对属性确立了参数化指标。例如我们在通过场景分析后。确立了可用性的指标,对于接口的成功率需要达到99.8%,页面响应时间需要控制在2s以内。我们还对质量属性之间的关系作了分析,很多属性之间会有对冲关系,鱼翅熊掌不可兼得,在这个时候我们往往要基于项目实际做权衡与取舍。例如,性能和安全这两个指标往往会有冲突,我们在APP登陆的时候由于要做鉴权处理,会导致登陆时间有几秒的延迟,会对性能有影响,这个时候就需要依赖项目需求进行权衡。经过权衡利弊分析,我们选择了安全性而牺牲了一部分性能,确保用户的敏感信息不受到泄漏。通过这个过程,我们对每个质量属性都进行了详细的分析,细化了指标,也分析了属性之间的关系,使得评估小组成员对质量属性有了更深入的认识。
总结
通过以上过程实施,我们成功完成了软件架构的评估,并搭建了项目质量属性评价机制。通过对项目的非功能需求评价,我们发现了软件架构需要改善的地方以及质量属性需要提升的地方,为后续的架构优化提供了重要的依据。同时,对于系统性能指标的梳理,也作为考核系统以及团队成员绩效的依据。对于质量属性的逐级评价,也便于我们对系统的不足点进行逐步优化,逐步提升系统的健壮性。
系统已经于2022年2月成功上线,且上线以后表现稳定,得到了客户高层领导的大力好评。尽管如此,这个过程还是有需要改进的地方,部分团队成员对于质量属性的分析理解还是不够深入,分析过程掌握不够熟练,对于多个场景综合分析或者同时涉及几个对冲质量属性的场景分析,分析不够到位。后期我们将加强对质量属性评估方法的研究和应用,提升综合场景下质量属性方法灵活使用的能力,更好地发挥软件架构评估的作用。
标签:场景,架构,软件系统,项目,系统,设计师,评估,属性 From: https://blog.csdn.net/cui_yonghua/article/details/141827307更多内容请见: 备考系统架构设计师-核心总结索引