软件架构设计系列之三(软件开发方法)
ccwgpt 2024-10-22 10:19 23 浏览 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、应用模型并在实践中不断重构模型。
评论:
软件开发方法也可以认为是对软件开发的思想的具体化,是软件开发模型中特定过程或活动的实现方法。软件开发模型的概念比较抽象,软件开发方法则比较具体。软件开发方法作为模型的实践,是诸多知识和经验的总结与凝练,想要掌握这些知识,一定要抓住主干,深入的学习理论,理论指导实践,才能做到融会贯通和灵活运用。
相关推荐
- 想快速上手Python网络爬虫?这份实战指南你不能错过!
-
以下是关于Python网络爬虫实战的详细指南,涵盖基础知识、常用工具、实战案例及注意事项:一、爬虫基础概念1.什么是网络爬虫?o通过自动化程序从网页上抓取并提取数据的工具。o核心步骤:请求网...
- python爬虫怎么副业接单
-
其实这个问题也挺重要的,花了时间花了经历去学了python爬虫,本想靠着这个技能去补贴家用或者挣点零花钱,但是发现有时候的单子是自己力所不能及的,有的东西真的是不会,又或者不知从何下手。那么这篇文章主...
- 用Python写了一个图像文字识别OCR工具
-
人生苦短,快学Python!在之前的文章里,我们多次尝试用Python实现文本OCR识别!今天我们要搞一个升级版:直接写一个图像文字识别OCR工具!引言最近在技术交流群里聊到一个关于图像文字识别的...
- taskPyro:为 Python 任务与爬虫插上自动化翅膀的开源利器
-
在数据驱动的时代,无论是数据采集、ETL流程,还是定期的系统维护脚本,高效、可靠的任务调度成为了许多开发者和运维人员的刚需。特别是对于Python开发者而言,如何优雅地管理和调度日益增多的爬虫任...
- 网络爬虫:Python动态网页爬虫2种技术方式及示例
-
作者:糖甜甜甜https://mp.weixin.qq.com/s/5Dwh5cbfjpDfm_FRcpw1Ug这一讲,我将会为大家讲解稍微复杂一点的爬虫,即动态网页的爬虫。动态网页技术介绍动态网页爬...
- 30个小时搞定Python网络爬虫(全套详细版)
-
【课程介绍】适用人群1、零基础对Python网络爬虫感兴趣的学员2、想从事Python网络爬虫工程师相关工作的学员3、想学习Python网络爬虫作为技术储备的学员课程目标1、本课程的目标是将大家培养成...
- python爬虫常用工具库总结
-
说起爬虫,大家可能第一时间想到的是python,今天就简单为大家介绍下pyhton常用的一些库。请求库:实现基础Http操作urllib:python内置基本库,实现了一系列用于操作url的功能。...
- 玛森:Python爬虫书籍推荐
-
Python爬虫书籍推荐什么?玛森科技徐老师介绍,网络爬虫现在很火,不管业内人士或业外人士,大家对爬虫或多或少都有一些了解,网络爬虫通俗的讲,就是通过程序去互联网上面爬取想要的内容,并且爬取的过程...
- 如何入门python爬虫?
-
1.很多人一上来就要爬虫,其实没有弄明白要用爬虫做什么,最后学完了却用不上。大多数人其实是不需要去学习爬虫的,因为工作所在的公司里有自己的数据库,里面就有数据来帮助你完成业务分析。什么时候要用到爬虫呢...
- 爬虫修炼手册,Python爬虫学习入门Scrapy
-
爬虫就如同江湖中的神秘侠客,应运而生,成为了我们获取数据的得力助手。爬虫,正式名称是网络爬虫(WebCrawler),也被叫做网页蜘蛛、网络机器人,它是一段神奇的计算机代码,能够自动在互联网的信息...
- 如何入门 Python 爬虫?
-
1.很多人一上来就要爬虫,其实没有弄明白要用爬虫做什么,最后学完了却用不上。大多数人其实是不需要去学习爬虫的,因为工作所在的公司里有自己的数据库,里面就有数据来帮助你完成业务分析。什么时候要用到爬虫呢...
- 有了这4张思维导图,带你Python(爬虫)轻松入门
-
刚接触Python爬虫,该怎么学更有效?指南君给大家带来了这四张思维导图。非常适合刚开始学Python爬虫的同学用于回顾知识点、巩固学习情况等。话不多说,快来学习Python爬虫入门的最强干货吧!P...
- python爬虫教程之爬取当当网 Top 500 本五星好评书籍
-
我们使用requests和re来写一个爬虫作为一个爱看书的你(说的跟真的似的)怎么能发现好书呢?所以我们爬取当当网的前500本好五星评书籍怎么样?ok接下来就是学习python的正确姿...
- 超实用!Python 在爬虫和自动化领域的 8 类工具与技术大盘点
-
Python在爬虫和自动化领域拥有丰富的工具库和框架,以下是一些常用工具和技术的分类整理,帮助你高效实现数据抓取和自动化任务:1.基础HTTP请求库oRequestso简洁的HTTP库...
- 学习Python的第四天之网络爬虫
-
30岁程序员学习Python的第四天之网络爬虫的Scrapy库Scrapy库的基本信息Scrapy库的安装在windows系统中通过管理员权限打开cmd。运行pipinstallscrapy即可安...
你 发表评论:
欢迎- 一周热门
- 最近发表
- 标签列表
-
- MVC框架 (46)
- spring框架 (46)
- 框架图 (58)
- bootstrap框架 (43)
- flask框架 (53)
- quartz框架 (51)
- abp框架 (47)
- jpa框架 (47)
- laravel框架 (46)
- express框架 (43)
- springmvc框架 (49)
- 分布式事务框架 (65)
- scrapy框架 (56)
- shiro框架 (61)
- 定时任务框架 (56)
- grpc框架 (55)
- ppt框架 (48)
- 内联框架 (52)
- winform框架 (46)
- gui框架 (44)
- cad怎么画框架 (58)
- ps怎么画框架 (47)
- ssm框架实现登录注册 (49)
- oracle字符串长度 (48)
- oracle提交事务 (47)