1-1 软件构造过程中的多维视图

本节目标:

在这里插入图片描述

本节大纲:

在这里插入图片描述
随着时间的推移,人们对软件的认识的变化:
在这里插入图片描述
软件不能脱离外部环境:
在这里插入图片描述

软件构造的多个维度:

时间:瞬时(某一天某个时间点)、周期(变化情况)
编码:构建开发(代码的结构、多少类、类与类之间的关系)、运行阶段(在电脑上的配置情况,占用多少内存等)
代码和模块:代码(细致的组成,一个类中有多少种方法)、模块(宏观)在这里插入图片描述

构造阶段:

在这里插入图片描述
(1)Build-time, Moment, Code-level
关注在某一个时间点,构建代码时,代码呈什么样。分为三个层面:词汇层面、语法层面、语义层面,三个层面由具体到抽象。
词汇层面:就是程序中的代码语句。源代码,是程序员层面的,是半结构化的,近乎自然语言的风格+特定的变成语法。
语法层面:关注软件执行的算法的流程。将代码结构化为抽象语法树AST,面向编译器。在这里插入图片描述
语义层面:关注程序多个组成部分之间的联系情况,关注程序由多少个类来组成,以及类与类之间的关系。面向不懂编程的人。UML图。
(2)Build-time, Period, Code-level
关注在编码的时候代码的改变情况。即一个程序可能需要一段时间才能完成,其中会对代码进行多次修改,需要用代码改动工具code churn来记录代码的变化。
(3)Build-time, Moment, Component-level
关注代码的组织情况,即如何组织文件、组织各个块。使用库文件。讲库文件链接到程序有两种方式:静态链接、动态链接。
静态链接:程序转换为可执行代码时,所需要的库文件被拷贝进入代码中形成一个整体,执行的时候就不再依赖库。静态链接发生在构造阶段。缺点:难以升级。
(4)Build-time, Period, Component-level
关注在某个阶段对代码做了哪些变化。通过版本变更来体现。软件在不同的阶段有不同的版本,需要一个版本控制工具把不同的版本记录下来,不同的版本变化了什么。版本控制工具还可以支持协同开发。文件不同版本组合得到不同的软件版本。

运行阶段:

关注四个点:可执行文件、库文件、配置文件、分布式程序
可执行程序:编译执行:一次性编译,速度快、但移植性差(不同的操作系统机器码不同);程序完全解释执行:需要执行某行代码时,才把代码翻译成可执行程序。
动态链接:库文件不在build阶段被加入可执行文件,仅仅做出标记,标记是运行到哪需要调用库文件,库文件在哪。程序运行时,根据标记将库装载至内存。发布软件时,要将程序所依赖的库文件一并发布。优点:易于升级,库文件和程序是分开的。
配置文件:对程序的执行进行限定。配置文件告诉程序在读取不同类型的文件时应该怎么去做。
分布式程序:程序部署于多个计算机物理环境上。
在这里插入图片描述
(5)Run-time, Moment, Code-level
关注程序运行的某一个阶段,程序中有多少对象,以及每个对象的值是什么。使用代码快照图去描述这个视图。code snapshot就是一种图,程序运行的某个时刻,程序在内存中会产生一些存在的对象,将这些对象绘制出来,他们之间谁调用谁,具体。
在这里插入图片描述
一个工具:内存信息转储(Memory dump)、宏观。
(6)Run-time, Period, Code-level
关注代码最终的执行情况。通过UML图。用日志去跟踪程序的执行情况、记录调用次序。
(7)Run-time, Moment, Component-level
关注程序在不同的位置上的配置情况。
(8)Run-time, Period, Component-level
关注整个系统的调用情况。使用事件日志,宏观角度、系统层面。
在系统层面和代码层面日志的记录是不一样的:代码层面关注某一个方法、某一个类的情况,系统层面关注宏观。
执行跟踪(代码层面)和事件日志(系统层面)的区别:执行跟踪是用日志方式记录程序执行的调用次序、细节;事件日志是在系统层面,各种各样的类都会被记录下来。
在这里插入图片描述

本门课程关注的方面:

在这里插入图片描述

不同视图之间的转换:

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
图像识别技术在病虫害检测的应用是一个快速发展的领域,它结合了计算机视觉和机器学习算法来自动识别和分类植物上的病虫害。以下是这一技术的一些关键步骤和组成部分: 1. **数据收集**:首先需要收集大量的植物图像数据,这些数据包括健康植物的图像以及受不同病虫害影响的植物图像。 2. **图像预处理**:对收集到的图像进行处理,以提高后续分析的准确性。这可能包括调整亮、对比、去噪、裁剪、缩放等。 3. **特征提取**:从图像提取有助于识别病虫害的特征。这些特征可能包括颜色、纹理、形状、边缘等。 4. **模型训练**:使用机器学习算法(如支持向量机、随机森林、卷积神经网络等)来训练模型。训练过程,算法会学习如何根据提取的特征来识别不同的病虫害。 5. **模型验证和测试**:在独立的测试集上验证模型的性能,以确保其准确性和泛化能力。 6. **部署和应用**:将训练好的模型部署到实际的病虫害检测系统,可以是移动应用、网页服务或集成到智能农业设备。 7. **实时监测**:在实际应用,系统可以实时接收植物图像,并快速给出病虫害的检测结果。 8. **持续学习**:随着时间的推移,系统可以不断学习新的病虫害样本,以提高其识别能力。 9. **用户界面**:为了方便用户使用,通常会有一个用户友好的界面,显示检测结果,并提供进一步的指导或建议。 这项技术的优势在于它可以快速、准确地识别出病虫害,甚至在早期阶段就能发现问题,从而及时采取措施。此外,它还可以减少对化学农药的依赖,支持可持续农业发展。随着技术的不断进步,图像识别在病虫害检测的应用将越来越广泛。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值