软件构造第一章知识小结

本文探讨软件构造的复杂性,从构造时/运行时、时刻/阶段、代码/构件三个维度分析软件,覆盖设计到编码各流程,强调代码逻辑、组合与版本控制的重要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

第一章课程内容简述

  • 软件的多维度视图

    ​软件的多维度视图大致可以从3个方面进行分析:按照阶段划分可以分为:构造时/运行时视图;按照动态性划分可以分为:时刻/阶段视图;按照构造对象的层次划分可以分为:代码/构件视图

    ​在实际中进行对软件的开发和分析实际上是极其复杂的,这里可以通过课程中介绍的一张图片进行分析:

    软件构造的过程

    由上面的这张图片,我们能够很清晰的看到其实在设计软件或者构造软件的过程中,是包含很多不同的流程的,之前我们一直在训练的都是设计和编写代码环节,而忽视了在其他环节的分析和构建。而软件构造的多维度视图正是可以通过不同的维度尽量对图中所包含的环节尽可能进行覆盖。

    ​对软件的分析可以通过以上3个层次进行分析。而在不同的角度大致可以通过这个分类将软件构造的整个过程分成8个部分进行管理。它们之间的关系如图所示:

    软件构造的多维度视图

    通过上面这张图,我们能够清楚看到在不同的阶段交叉点,我们应该注意或者关注的重点是什么。以下通过详细介绍在构造、时刻、代码阶段构造、阶段、代码阶段之间的不同来更好认识这张图,了解其他6个阶段我们应该关注什么。

    ​在构造、时刻、代码阶段,我们应该通过关注AST抽象语法树来达到对构造软件过程中的理解。在源代码方面,我们可以通过分析词汇、语法、语义层面来进行对代码的分析。在这个过程中,我们主要更加关注的是代码的逻辑组织,以及在这个特定时刻的软件形态。在这个角度中,我们更加关注的就是在这个时间点上我们构造的代码呈现的是一种什么样的形式。从词法层面,我们关注的是使用代码的语句和变量。这其中包含着两种,一种是近似自然语言的注释,另一种是遵循特定的编程语法。这两种各有方便的人群。从语法层面,我们更关注的是语句的流程,通常可以表示为语法树。对于功能都可以转化为流程,而AST将源代码彻底结构化,变成抽象语法树。语义则是表达源代码具体想实现什么目标,通常可以通过将类与类之间的关系通过UML图表示出来,这通常是形式化的。换成图形结构能够方便我们理解。

    ​在构造、阶段、代码阶段的组合,我们关注的主要是代码的组合。在设计程序的过程中,我们一般会通过改变代码来完成某一些功能。在这个过程中,我们需要通过一些版本控制工具来保存代码的改变。

  • 软件不同视图之间的转化

    不同的视图是通过不同的角度来看待同一个软件,因此它们之间必然存在着某种联系。它们之间的关联可以通过如下关联图来表示:

    维度之间的关联

    例如从代码阶段和构件结构来说,最终的构件就是不同的代码之间的组合。因此从这张图中,我们通过这些关联线,我们能够很轻松理解它们之间的关系。

### 编译原理第三章语法分析的知识点总结 虽然当前提供的引用并未直接涉及编译原理第三章的内容,但可以通过对已有章节的理解来推测其可能覆盖的主题。以下是基于常见教材结构和逻辑推导的编译原理第三章语法分析的主要知识点: #### 1. **文法的基本概念** 文法是描述语言的形式化工具,用于定义编程语言的句法规则。常见的文法形式包括上下文无关文法(CFG)。 - 终结符与非终结符的区别及其作用[^3]。 - 推导的概念:直接推导、间接推导以及最左/最右推导[^1]。 #### 2. **文法的分类** 根据乔姆斯基体系,文法被划分为四种类型: - 型0文法:无任何限制,适用于图灵机。 - 型1文法(上下文有关文法):左侧长度小于等于右侧长度。 - 型2文法(上下文无关文法):左侧仅含单一非终结符。 - 型3文法(正则文法):右侧为单个非终结符或终结符组合。 #### 3. **FIRST集合与FOLLOW集合** FIRST集合表示某个符号串能够产生的第一个终结符集合;FOLLOW集合表示某非终结符之后可能出现的终结符集合。这些集合对于后续构建LL(1)解析表至关重要。 #### 4. **消除歧义性** 部分文法可能存在二义性,即同一字符串存在多种不同的派生树。为了简化解析器的设计,需通过改写文法或其他技术手段去除这种不确定性[^2]。 #### 5. **左递归的处理** 左递归是指形如`A -> Aα | β` 的规则模式,它会阻碍某些类型的自顶向下载入器正常工作。因此需要采用特定算法将其转化为等价形式: ```python # 转换示例 A → αA' A'→βA'|ε ``` #### 6. **预测分析表构造** 对于满足条件的LL(1)文法,可通过计算各产生式的SELECT集建立对应的预测分析表,从而指导词素序列的实际匹配过程。 尽管上述内容并非严格对应具体版本书籍中的确切表述,但它概括了大多数关于此主题的标准教学材料里应该包含的关键要素。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值