百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术文章 > 正文

软件架构设计系列之三(软件开发方法)

ccwgpt 2024-10-22 10:19 28 浏览 0 评论

软件架构设计系列包括软件生命周期、软件开发模型、软件开发方法、基于架构的软件开发、软件架构设计等。本文为系列之三——软件开发方法。

软件开发方法

软件开发方法有很多种分类方法。从开发风范上,可分为自顶向下和自底向上的开发方法;从性质上,可分为形式化方法和非形式化方法;从使用范围上,可分为整体性方法和局部性方法。

我们主要讲的软件开发方法是更加具体的方法:结构化方法、面向对象方法、基于构件的软件开发方法、面向服务的开发方法、基于模型的软件开发方法。

结构化方法是一种自顶向下、逐步求精,以模块化为基点,信息隐蔽、模块独立为准则的软件开发方法。分解和抽象是人们控制问题复杂性的两种基本手段。结构化方法是由结构化分析、结构化设计和结构化程序设计三部分有机组合而成的。

结构化分析方法进行需求分析,其建立的模型的核心是数据字典,围绕这个核心,有三个层次的模型,分别是数据模型、功能模型和行为模型。用实体联系图(E-R 图)表示数据模型,用数据流图(DFD) 表示功能模型,用状态转换图(STD)表示行为模型。

结构化设计包括架构设计、接口设计、数据设计和过程设计等任务。它是一种面向数据流的设计方法,是以结构化分析阶段所产生的成果为基础,进一步自顶而下、逐步求精和模块化的过程。概要设计阶段的主要任务是设计软件的结构、确定系统的模块组成,以及每个模块之间的关系。它采用模块结构图(包括模块、调用、数据)来描述程序的结构,也可以使用层次图和 HIPO(层次图加输入/处理/输出图)。

面向对象方法是面向对象的,以对象为中心,把数据封装在对象内部成为对象的属性,把面向过程的函数转为对象的行为方法,把对象抽象成为类,用以描述和设计、开发软件系统。面向对象方法以客观世界中的对象为中心,其分析和设计思想符合人们的思维方式,容易被人们接受。在面向对象方法中,分析和设计的界限并不明显,它们采用相同的符号表示,分析阶段可以平滑的过渡到设计阶段。客观世界中对象与对象间的关系相对稳定,因此用面向对象方法分析和设计的结果也相对比较稳定。

面向对象分析的目标是开发一系列模型,这些模型描述计算机软件,当它工作时以满足客户的需求。对象技术的流行,演化出了数十种不同的 OOA 方法,每个方法都引入了一个产品或系统分析的过程、一组过程演化的模型及使软件工程师能够以一致的方式创建每个模型的符号体系。其中比较流行的方法包括 OMT、OOA等方法。但不管哪种方法,面向对象分析的主要步骤基本是类似的,即:① 发现角色/参与者,② 发现用例,③ 建立用例模型,④ 进行领域分析,⑤ 建立对象—关系模型,⑥ 建立对象—行为模型,⑦ 建立功能模型。

OOA/OOD方法:OOA 模型中包括主题、对象类、结构、属性和服务 5 个层次,需经过标识对象类、标识结构与关联(包括继承、聚合、组合、实例化等)、划分主题、定义属性、定义服务 5 个步骤来完成整个分析工作。

OMT方法:OMT 是对象建模技术的缩写,它主要用于分析、系统设计和对象设计。包括对象模型(静态的、结构化的系统的“数据”性质,通常采用类图)、动态模型(瞬时的、行为化的系统“控制”性质,通常使用状态图)和功能模型(表示变化的系统的“功能”性质,通常使用数据流图)。

结构化分析与面向对象分析方法之间的最大差别是:结构化分析方法把系统看作一个过程的集合体,包括人完成的和电脑完成的;而面向对象方法则把系统看成一个相互影响的对象集。结构化分析方法的特点是利用数据流图来帮助人们理解问题,对问题进行分析。

基于构件的软件开发简单来说就是使用可复用的构件来开发应用程序。基于构件的软件系统中的构件可以是商用构件,也可以是通过其它途径获得的构件(如自行开发)。基于构件的软件开发将软件开发的重点从程序编写转移到了基于已有构件的组装,以更快地构造系统,减轻用来支持和升级大型系统所需要的维护负担,从而降低软件开发的费用,提高软件的开发效率和质量。

构件指的是一个独立发布的功能部分,可以通过其他接口访问他的服务。

基于构件的软件开发可以实现分析、设计、类等多层次上的重用。在分析抽象层上,重用元素有子系统、类;在设计层上重用元素有系统体系结构、子系统体系结构、设计模式、框架、容器、构件、类库、模板、抽象类等。

软件重用的形式大体可分为垂直式重用和水平式重用。

水平式重用是重用不同应用领域中的软件元素,例如数据结构、排序算法、人机界面构件等。标准函数库是一种典型的原始的水平式重用机制。

垂直式重用是在一类具有较多公共性的应用领域之间重用软件构件。垂直式重用活动的主要关键点在于领域分析:根据应用领域的特征和相似性,预测软件构件的可重用性。

模型驱动开发(MDD Model-Driven Development):一种比较新的软件开发方法——面向模型的分析设计方法。提到MDD,就不得不提到MDA,MDA(Model Driven Architecture)模型驱动架构,它是由国际对象管理组织(OMG,Object Management Group)于2001年7月提出的基于MDD方法的模型驱动架构。所谓驱动架构,其实就是把模型和具体的技术分离,实现关键业务部分的可移植性、互操作性和可重用性。由于业务和代码的解耦,可以更好的适应两个层次上的扩展和自适应性。技术的迭代发展和业务的变化互无影响。

MDD驱动流程:

1、由实际业务场景得出初步的领域和限界上下文(module),以及上下文之间的关系;

2、分析上下文,划分实体和值对象;

3、关联聚合实体、值对象,从而得到聚合的范畴和聚合根;

4、从聚合根设计仓储(资源库),同时设计如何创建实体和值对象;

5、应用模型并在实践中不断重构模型。

评论:

软件开发方法也可以认为是对软件开发的思想的具体化,是软件开发模型中特定过程或活动的实现方法。软件开发模型的概念比较抽象,软件开发方法则比较具体。软件开发方法作为模型的实践,是诸多知识和经验的总结与凝练,想要掌握这些知识,一定要抓住主干,深入的学习理论,理论指导实践,才能做到融会贯通和灵活运用。

相关推荐

Spring框架基础知识-第四节内容(Spring基础配置)

Spring基础配置Spring框架本身有四大原则:(1)使用POJO进行轻量级和最小侵入式开发。(2)通过依赖注入和基于接口编程实现松耦合。(3)通过AOP和默认习惯进行声明式编程。(4)使...

SpringBoot项目开发实战销售管理系统——项目框架搭建!

项目框架搭建在完成项目的分析和数据库设计后,一般由架构师完成项目框架的搭建,包括项目依赖的添加、项目的配置和项目日志的配置,完成后再开始业务代码的编写。技术栈的搭建新建一个SpringBoot项目,...

从零到一:独立运行若依框架系统并进行本地二次开发

####一、环境准备1.**基础环境**:-JDK1.8+(推荐JDK17)-Maven3.6+-MySQL5.7+(推荐8.0)-Redis5.0+-Node.js16...

单片机时间片轮询程序架构(单片机如何实现精准的时间周期)

时间片轮询法有很多时候都是与操作系统一起被提到,也就是说很多时候是操作系统中使用了这一方法:STM32单片机开发中的RTOS。下文将参考别人的代码,演示建立的一个时间片轮询架构程序的...

Netty主要组件和服务器启动源码分析

1.Netty服务端启动代码publicclassNettyServer{publicstaticvoidmain(String[]args)throwsInterrup...

前端定时任务的神库!快把它加到你的项目中去!

我们常会遇到定时刷新数据、轮询接口、发送提醒等场景,我们常会遇到定时刷新数据、轮询接口、发送提醒等场景。为什么选择cron库?定时任务开发痛点原生setInterval的时间误差累积难以实现复杂的...

如何正确实现一个后台(定时)任务(后台定时任务怎么实现)

相信大家都知道如何在.NET中执行后台(定时)任务。首先我们会选择实现IHostedService接口或者继承BackgroundService来实现后台任务。然后注册到容器内,然后注册到容...

秒杀传统的Linux Crontab,这款开源的定时任务管理系统绝了!

Gocron是一款开源的定时任务管理系统,基于Go语言开发,旨在替代传统的LinuxCrontab。它通过Web界面提供直观的任务管理功能,支持精确到秒的Crontab时间表达式,并具备任务重试、超...

Python 定时任务:schedule 自动执行脚本太方便。

2025年了,还在为Python定时任务头疼?轻量级需求搞什么Celery,schedule三行代码就搞定。这库把定时任务简化到像说人话,但新手直接抄文档容易踩坑。文档只会告诉你怎么设置每10分钟执行...

SpringBoot扩展——定时任务!(基于springboot的校园宿舍管理系统的设计与实现)

定时任务项目开发中会涉及很多需要定时执行的代码,如每日凌晨对前一日的数据进行汇总,或者系统缓存的清理、对每日的数据进行分析和总结等需求,这些都是定时任务。单体系统和分布式系统的分布式任务有很大的区别,...

适合普通开发者和产品经理的PHP应用模板开发AI的SaaS应用框架

简单到傻!Liang_SaaS适合普通开发者和产品经理的PHP应用模板开发AI的SaaS应用框架,利用Php开发AI的SaaS应用框架,是一个强大的内容管理仪表板模板,基于Bootstrap和...

非常实用的15款开源PHP类库(php开源管理系统)

PHP库给开发者提供了一个标准接口,它帮助开发者在PHP里充分利用面向对象编程。这些库为特定类型的内置功能提供了一个标准的API,允许类可以与PHP引擎进行无缝的交互。此外,开发者使用这些类库还可以简...

蜂神榜苹果商店也凑热闹:“520”我爱玩家!

各位看官,今天被朋友圈各类“520”刷屏呢?有没有给你亲爱的家人一份“520”模式的红包呢?苹果商店也给了玩家一个“520”模式的惊喜---再一次提供了多款“1元”价格的游戏!并且此次降价的游戏品质都...

变成气球的猫咪《气球》十一正式推出

墨西哥游戏公司NoodlecakeGames曾开发过《致命框架》、《阿尔托冒险》等优秀佳作,而它旗下的最新游戏《气球》(TheBalloons)在十一的时候就要和大家见面了。游戏中,玩家要操控娃娃...

星座超游爱:狮子遇挑战,处女手抓牢~

teemo跟大家讲了三期太阳星座,也许有很多不热心的小伙伴并不知道是什么东西,今天就小科普一番~在出生的那一天,太阳所落的那个星座,就是每个人的太阳星座,而这恰好就是大家的性格中心,是权势驱力、人格的...

取消回复欢迎 发表评论: