首页 > 其他分享 >【系统架构设计】开发方法(一)

【系统架构设计】开发方法(一)

时间:2024-08-19 18:51:51浏览次数:12  
标签:架构设计 软件开发 迭代 模型 系统 UP 开发方法 构件 软件

【系统架构设计】开发方法(一)

软件生命周期

指软件自开始构思与研发到不再使用而消亡的过程。在GB8566-88(《软件工程国家标准–计算机软件开发规范》)中将软件生命周期划分为8个阶段:

  • 可行性研究与计划 : 如果确定该软件具有研发的必要,则将产生《可行性研究报告》和 ** 《软件开发计划》**。初步确定软件开发的目标和范围。
  • 需求分析:对软件的需求进行细致的分析,确定软件要做成什么样的。
  • 概要设计:确定整个软件的技术蓝图,负责将需求分析的结果转化为技术层面的设计方案。需要确定系统架构、各子系统间的关系、接口规约、数据库模型、编码规范等内容。
  • 详细设计:进一步细化,如类的设计,但不是开发过程中必须的阶段,在一些规模小、结构简单的系统中可以省略。
  • 实现:包括编码和单元测试。
  • 集成测试
  • 确认测试:当完成集成测试后,软件之间的接口方面的错误已经排除,这时需要验证软件是否同需求一致,是否达到了预期目标。
  • 使用和维护

软件开发模型

瀑布模型

核心思想

当软件需求明确、稳定时,可以采用瀑布模型按部就班地开发软件,当软件需求不明确或变动剧烈时,瀑布模型中往往要到测试阶段才会暴露出需求的缺陷,造成后期修改代价太大,难以控制开发的风险。

在这里插入图片描述

瀑布V模型

由于缺陷时无法避免的,任何一个阶段都会在软件中引入缺陷,而最后的测试也不能保证软件完全没有缺陷。因此,提出了更强调测试的瀑布V模型

在这里插入图片描述

缺点

  1. 由于需求分析阶段是一切活动的基础,设计、实现和验证活动都是从需求分析阶段的结果中导出的。而由于用户和开发者的立场、经验、知识域都不相同,不同人对同一个事物的表述也不同,这就造成需求分析的结果不可能精确、完整地描述整个软件系统,从而影响后续活动,给后期的维护工作带来繁重工作

  2. 难以适应变化。因为在瀑布模型中精确地定义了每个阶段的活动和活动结果,而每个阶段都紧密依赖于上一阶段的结果,如果在软件的后期出现需求的变化,整个系统又要从头开始。

  3. 使用该模型意味着当所有阶段都结束才能最终交付软件产品,所以在提出需求后需要很长一段时间才能看到最终结果,才能发现软件产品究竟是否能够满足客户的需求

  4. 文档驱动型的瀑布模型除了制造出软件产品外,还要产生一大堆的文档,大部分的文档对客户没有任何意义,但完成这些对客户没有意义的文档却需要花费大量的人力。所以瀑布模型也是一种重载过程

ps : 自顶向下设计,一次性设计出成品。

演化模型

一个演化模型可以看做若干次瀑布模型的迭代,当完成一个瀑布模型后,重新进入下一个迭代周期,软件在这样的迭代过程中得以演化、完善。根据不同的迭代特定,演化模型可以演化为螺旋模型、增量模型、原型法开发

螺旋模型

将瀑布模型和演化模型结合,还强调了其他模型均忽略的风险分析。螺旋模型的每个周期都包括如下4个阶段,由这4个阶段进行迭代,软件开发过程每迭代一次,软件开发就前进一个层次。

在这里插入图片描述
适用于庞大而复杂、具有高风险的系统。该模型支持用户需求的动态变化,为用户参与软件开发的所有关键决策提供了方便,有助于提高目标软件的适应能力,为项目管理人员及时调整管理决策提供了便利,从而降低了软件开发风险。
需要具有相当丰富的风险评估经验和专业知识,在风险较大的项目开发中,如果未能及时标识风险,势必会造成重大损失。而且过多的迭代次数会增加开发成本,延迟提交时间

增量模型

系统的技术架构成熟、风险较低的时候,可以采用增量方式进行开发,这样可以提前进行集成测试和系统测试,缩短初始版本的发布周期,提高用户对系统的可见度。常用的2种策略:

一是增量发布的办法,就类似于手机APP的不同版本累加,每个版本都是一个完整的版本,虽然最初的几个增量不能完全实现用户需求,但这些版本都是完整的、可用的;而且版本间的增量要均匀的,如果第一个版本花费一个月时间,而第二个版本需要花费6个月时间,这种不均匀的分配会降低增量发布的意义,需要重新调整

另一种是原型法 ,每一次迭代都经过一个完整的生命周期。当用户需求很不明确或技术架构中存在很多不可知因素的时候,可以采用原型法。在初始的原型中,针对一般性的用户需求进行快速实现,并不考虑算法的合理性或系统的稳定性。主要目的是获得精确的用户需求,或验证架构的可用性一般情况下,会在后面的开发中抛弃这个原型,重新实现完整的系统

构件组装模型

在这里插入图片描述
类似于组态。优点是:

  1. 构件的自包容性让系统的扩展变得更加容易
  2. 设计良好的构件更容易被重用,降低软件开发成本
  3. 构件的粒度较整个系统更小,因此安排开发任务更加灵活,可以将开发团队分成若干组,并行独立开发构件。

缺点是:

  1. 对构件的设计需要经验丰富的架构设计师,设计不良的构件难以实现构件的优点,降低构件组装模型的重用度
  2. 在考虑软件的重用度时,往往会对其他方面做出让步,如性能等
  3. 使用构件组装应用程序时,要求程序员熟练掌握构件,增加研发人员学习成本
  4. 第三方构件库的质量会最终影响到软件的质量,而第三方构件库的质量往往是开发团队难以控制的。

ps:现在微服务、组态这些其实类似构件组装模型的思想。

统一过程

统一过程(Unified Process ,UP)是由Rational 公司开发的一种迭代的软件过程,是一个优秀的软件开发模型,它提供了完整的开发过程解决方案,可以有效降低软件开发过程的风险,经过裁剪的UP可以适应各种规模的团队和系统。

在这里插入图片描述

在UP生命周期中共有4个里程碑

  1. 目标里程碑 :对应着先启阶段的结束,当开发者可以明确软件系统的目标和范围时即达到了该里程碑。
  2. 架构里程碑:主要hi明确稳定的系统架构
  3. 能力里程碑:当系统已经足够的稳定和成熟并完成Alpha 测试后,认为达到了第3个里程碑
  4. 发布里程碑:在达到发布里程碑前,需要完成系统的测试、完成系统发布和用户培训等工作。

UP的一些特点

  1. UP是一个迭代的二维开发模型,在生命周期的每个阶段都可以进行需求、设计等活动,UP不但给出了迭代的生命周期,还给出了生命周期每个阶段的迭代指南。
  2. 采用不同迭代方式的UP可以演变为演化模型或增量模型
  3. UP的迭代特点使得更容易控制软件开发的风险
  4. 虽然UP是一个迭代的开发模型,但UP本身并不属于敏捷方法。相反,一般认为未经裁剪的UP 是一个重载过程。
  5. 在实际应用中可以根据具体问题对UP进行裁剪,从而使其可以适应各种规模的软件和开发团队。

ps : 简单说,UP是一个详细的模板,然后根据实际情况去删减不必要的部分,虽然说,未裁剪的UP是一个重载的过程

敏捷方法

软件重用

基于架构的软件设计

形式化方法

标签:架构设计,软件开发,迭代,模型,系统,UP,开发方法,构件,软件
From: https://blog.csdn.net/weixin_48618536/article/details/141322952

相关文章

  • 湿式复合机剥离涂布机切纸机高静电横切机PLC数据采集系统车间联网方案
     序号设备名称品牌/厂家型号数量"系统类型" 品牌/厂家 "其他型号补充说明" "可用通讯接口" 数采需求内容1 "复合机组(1#)" "松德机械股份有限公司" FTB1600 1 PLC "西门子PLC(SIEMENS)" S7-300 RS485(串口) "4.设备运行状态+产量+工艺参数"2 "双工位湿式复合......
  • SSM客房订餐系统s2whx 系统界面在最后面
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表系统内容:用户,客房信息,房间类型,预定客房,餐饮中心,美食类型,餐饮订单,库房管理,出库管理,员工,服务记录,设备管理,维修记录开题报告内容一、选题背景及意义......
  • 问答、对话系统场景下的LLM优化评估方法
    针对特定的场景,LLM优化方法有三类:PromptEngineering、RAG、Fine-tuning不论使用那种方式优化,我们都需要在完成优化后,评估优化的效果,这个效果不能只人为的感觉(做不过来,也不科学),那如何做自动化评分呢?下面以最常见的问答、对话系统的优化任务为例来展开介绍几种简单的自动化评分......
  • 【2025毕设热门选题】《基于SpringBoot+Vue的毕业设计管理系统》功能规划和开题报告
    博主介绍:8年资深码农、211小硕,全网10万+粉丝。文科生转码,所以非常懂小白学习历程。java领域优质创作者,擅长小白基础课程教学和项目讲解辅导。专注于Java技术领域和大学生毕业项目实战讲解已经5年,服务10000+小白客户。技术范围:自己手撸SpringBoot、Vue、javaweb网站、小程......
  • 国产操作系统 离线部署MYSQL、NGINX、redis、JDK1.8
    目录1.1、龙蜥操作系统8.4【AnolisOS8.4GA】1.2、安装关键步骤说明2.1、安装必要的系统组件2.2、配置JDK2.3、安装redis2.4、安装nginx2.5、安装mysql3.1、启用防火墙3.2、开放业务端口3.3、修改SSH端口号为100223.4、配置特定端口指定IP访问4.1、网络设置4.2......
  • 基于django+vue框架的教学资源管理系统【开题报告+程序+论文】计算机毕设
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容研究背景随着信息技术的飞速发展,教育领域正经历着前所未有的变革。传统的教学模式逐渐向数字化、网络化、智能化方向转型,教学资源管理系统作为教育......
  • 树莓派使用新版本系统镜像调用CSI摄像头
    前言:最近做一个小项目,使用树莓派CSI摄像头采集直播视频推流至SRS,本地拉流再做目标识别,但是在调用CSI摄像头的时候遇到了一些问题,这里记录一下树莓派型号:4B,感光芯片:ov5647CSI摄像头安装,系统烧录方法这里不再赘述问题1:sudoraspi-config设置中找不到开启相机的选项见上图,本......
  • Kafka--分布式MQ系统、日志系统
    简介:Kafka是由Linkedin(领英)开发的一个分布式、分区多副本、多订阅者、基于Zookeeper协调的分布式日志/MQ系统,于2010年贡献给Apache基金会并成为顶级开源项目。Kafka的特性#1、高吞吐、低延迟kafka最大的特点就是收发消息非常快,kafka每秒可以处理百万级别的消息,最低延迟......
  • WindowsServer系统下nginx代理问题
    部署vue打包后的dist文件夹后,重启nginx发现没生效,操作如下:1.停止redis,删除浏览器缓存并用无痕模式访问发现依然不生效,试着各种办法重新导入数据库数据也不行,nginx.exe-sstop依然能访问2.搜索发现可能是WindowsServer系统的问题,于是执行命令nginx-squit退出nginx......
  • 基于python个性化旅游线路推荐系统(源码+文档+调试+讲解)
    收藏关注不迷路!!......