国考专业课-软件工程与信息系统框架
##第三章
第一节 软件工程
考点一 软件工程的概念
软件工程是一门研究用工程化方法构建和维护有效、实用和高质量的软件的学科。它涉及程序设计语言、数据库、软件开发工具、系统平台、标准、设计模式等方面,旨在培养学生具备计算机软件的基础理论、基本知识和基本技能,使其能够用软件工程的思想、方法和技术来分析、设计和实现计算机软件系统。
考点二 软件生命周期
软件生命周期(Software Life Cycle,SLC)是软件的产生直到报废或停止使用的生命周期。软件生命周期内有问题定义、可行性分析、总体描述、系统设计、编码、调试和测试、验收与运行、维护升级到废弃等阶段,也有将以上阶段的活动组合在内的迭代阶段,即迭代作为生命周期的阶段。
软件计划与可行性研究阶段(问题定义、可行性研究):此阶段是软件开发方与需求方共同讨论,主要确定软件的开发目标及其可行性。
需求分析阶段:在确定软件开发可行的情况下,对软件需要实现的各个功能进行详细分析。需求分析阶段是一个很重要的阶段,也是在整个软件开发过程中不断变化和深入的阶段,能够为整个软件开发项目的成功打下良好的基础。
软件设计阶段(概要设计和详细设计):主要根据需求分析的结果,对整个软件系统进行设计,如系统框架设计,数据库设计等等。
软件编码阶段:是将软件设计的结果转换成计算机可运行的程序代码。在程序编码中必须要制定统一,符合标准的编写规范。以保证程序的可读性,易维护性,提高程序的运行效率。
软件测试阶段:在软件设计完成后要经过严密的测试,以发现软件在整个设计过程中存在的问题并加以纠正。
软件运行和维护阶段:是软件生命周期中持续时间最长的阶段,包括纠错性维护和改进性维护两个方面。
考点三 软件开发模型
1.瀑布模型
也称为“线性顺序模型”或“传统生命周期模型”,简单来说就是一步步的进行系统开发,每个前阶段的结果都是后阶段的输入。
因此缺点有如果前面的某个环节出现错误,此环节后面的每个环节都需要修改。
2.原型模型
通过运行原型,使得用户快速了解未来软件系统的概貌,便于快速判断需求的正确性、操作的实用性,以及功能是否遗漏、是否需要改进或增强等意见,然后再设计、修改原型,再运行原型、征求用户意见,如此重复直至双方认可。原型模型的整个构造过程是一个迭代的过程。总结来看,原型模型就是先做一个demo给业务方看是否符合大致,然后不断修改确认。
缺点为用户可能无法理解demo,因为原型并不是应用的最初版本而不是一个演示工具。
3.增量模型
在增量模型中,软件被作为一系列的增量构件来设计、实现、集成和测试。与构建大厦类似,先设计一个总体规划图,然后一层层地构造搭建整个建筑。增量模型是把整个软件系统分解为若干个软件构件,开发过程中,逐个实现每个构件,实现一个构件,展示一个构件。如果发现问题可以及早进行修正,逐步进行完善,最终获得满意的软件产品。本质就是将应用的开发模块化,最后将多个模块拼接在一起就是最终的完整应用。
缺点为切分的功能不能太多,不然会影响开发的进度。
4.螺旋模型
螺旋模型是将瀑布模型和快速原型模型结合起来,强调其他模型所忽视的风险分析,特别适合于大型复杂的系统。该模型将开发分为4个环节:制订计划、风险分析、开发实施和用户评估。开发活动围绕这4个环节螺旋式地重复执行,直到最终得到用户认可的产品。
此模型就是一个不断重复开发-测试-修复的过程,极为重视风险分析,因此开发周期较长不适合需要短期就落地的项目开发。
5.形式化方法模型
形式化方法模型包含了一组导致计算机软件的数学规约的活动,使得软件工程师能够通过使用严格的、数学的符号体系来规约、开发和验证基于计算机的软件系统。用形式化方法开发软件时,提供一种通过数学分析来消除二义性、不完整性、不一致性问题的机制。这种方法能够作为程序验证的基础,能够发现和纠正在其他情况下发现不了的问题,可以生产高正确性的软件。因此,这种方法往往用于开发航空、医疗等安全性能要求很高的软件系统,但是在商业环境中不可能成为主流开发方法。
感觉上是一种先数论再开发的模型,这种模型的软件开发的特点是开发费时且费用昂贵,对开发人员的要求很高,需要具有形式化方法所必要的知识背景。
考点四 软件开发方法
软件开发方法主要包括生命周期法、原型法和面向对象法。
生命周期法:这种方法强调系统开发的整体性和全局性,通常包括系统调查与分析、系统设计、系统实现、系统调试、运行维护和废弃等阶段。其优点是避免了开发过程中的混乱状态,但缺点是开发周期长,效率较低,难以适应新型开发工具的发展。
原型法:适用于管理体制和结构不稳定的环境,开发人员首先构造系统初步模型,根据用户要求不断修改,直到达到用户满意。这种方法开发周期短,见效快,但初始原型设计困难,不适合大型复杂系统。
面向对象法:基于对象建模,考虑了输入、输出数据结构以及对象的数据结构。它分为面向对象分析(OOA)、面向对象设计(OOD)和面向对象编程(OOP)三个阶段。面向对象方法在需求分析、可维护性和可靠性方面有显著突破,适用于复杂系统的开发。
此外,还有其他方法如结构化方法和敏捷开发方
法。结构化方法通过数据流图进行需求分析,适合数据处理领域,但不适应大规模或需求多变的项目。敏捷开发方法则强调早期、持续地交付有价值的软件,适用于快速变化的需求环境。
第二节 软件需求分析与设计
考点一 软件需求分析
需求分析也称为软件需求分析、系统需求分析或需求分析工程等,是开发人员经过深入细致的调研和分析,准确理解用户和项目的功能、性能、可靠性等具体要求,将用户非形式的需求表述转化为完整的需求定义,从而确定系统必须做什么的过程。
具体分为功能性需求、非功能性需求与设计约束三个方面。
1.功能性需求
功能性需求即软件必须完成哪些事,必须实现哪些功能,以及为了向其用户提供有用的功能所需执行的动作。功能性需求是软件需求的主体。开发人员需要亲自与用户进行交流,核实用户需求,从软件帮助用户完成事务的角度上充分描述外部行为,形成软件需求规格说明书。
2.非功能性需求
作为对功能性需求的补充,软件需求分析的内容中还应该包括一些非功能需求。主要包括软件使用时对性能方面的要求、运行环境要求。软件设计必须遵循的相关标准、规范、用户界面设计的具体细节、未来可能的扩充方案等。
3.设计约束
一般也称做设计限制条件,通常是对一些设计或实现方案的约束说明。例如,要求待开发软件必须使用Oracle数据库系统完成数据管理功能,运行时必须基于Linux环境等。
需求分析阶段的工作,可以分为四个方面:问题识别、分析与综合、制订规格说明、评审。
问题识别:就是从系统角度来理解软件,确定对所开发系统的综合要求,并提出这些需求的实现条件,以及需求应该达到的标准。这些需求包括:功能需求(做什么)、性能需求(要达到什么指标)、环境需求(如机型、操作系统等)、可靠性需求(不发生故障的概率)、安全保密需求、用户界面需求、资源使用需求(软件运行是所需的内存、CPU等)、软件成本消耗与开发进度需求、预先估计以后系统可能达到的目标。
分析与综合: 逐步细化所有的软件功能,找出系统各元素间的联系,接口特性和设计上的限制,分析他们是否满足需求,剔除不合理部分,增加需要部分。最后综合成系统的解决方案,给出要开发的系统的详细逻辑模型(做什么的模型)。
制订规格说明书: 即编制文档,描述需求的文档称为软件需求规格说明书。请注意,需求分析阶段的成果是需求规格说明书,向下一阶段提交。
评审: 对功能的正确性,完整性和清晰性,以及其它需求给予评价。评审通过才可进行下一阶段的工作,否则重新进行需求分析。
从系统分析出发,可将需求分析方法大致分为功能分解方法、结构化分析方法、信息建模法和面向对象的分析方法。
(1)功能分解方法。
将新系统作为多功能模块的组合。各功能义可分解为若干子功能及接口,子功能再继续分解。便可得到系统的雏形,即功能分解——功能、子功能、功能接口。
(2)结构化分析方法。
结构化分析方法是一种从问题空间到某种表示的映射方法,是结构化方法中重要且被普遍接受的表示系统,由数据流图和数据词典构成并表示。此分析法又称为数据流法。其基本策略是跟踪数据流,即研究问题域中数据流动方式及在各个环节上所进行的处理,从而发现数据流和加工。结构化分析可定义为数据流、数据处理或加工、数据存储、端点、处理说明和数据字典。
(3)信息建模方法。
它从数据角度对现实世界建立模型。大型软件较复杂;很难直接对其分析和设计,常借助模型。模型是开发中常用工具,系统包括数据处理、事务管理和决策支持。实质上,也可看成由一系列有序模型构成,其有序模型通常为功能模型、信息模型、数据模型、控制模型和决策模型。有序是指这些模型是分别在系统的不同开发阶段及开发层次一同建立的。建立系统常用的基本工具是E—R图。经过改进后称为信息建模法,后来又发展为语义数据建模方法,并引入了许多面向对象的特点。
信息建模可定义为实体或对象、属性、关系、父类型/子类型和关联对象。此方法的核心概念是实体和关系,基本工具是E-R图,其基本要素由实体、属性和联系构成。该方法的基本策略是从现实中找出实体,然后再用属性进行描述。
(4)面向对象的分析方法。
面向对象的分析方法的关键是识别问题域内的对象,分析它们之间的关系,并建立三类模型,即对象模型、动态模型和功能模型。面向对象主要考虑类或对象、结构与连接、继承和封装、消息通信,只表示面向对象的分析中几项最重要特征。类的对象是对问题域中事物的完整映射,包括事物的数据特征(即属性)和行为特征(即服务)。
考点二 概要设计
概要设计,将软件需求转化为数据结构和软件的系统结构。其基本目的就是回答“概括地说系统应该如何实现”。
概要设计的主要任务是把需求分析得到的 DFD 转换为软件结构和数据结构。
概要设计的具体任务包括:
制定软件设计规范;
软件体系结构设计;
处理方式设计;
数据结构设计;
可靠性设计;
编写概要设计说明书;
概要设计评审;
概要设计要遵循的原则有:模块化、抽象、自顶向下、逐步细化、信息隐蔽、模块独立性。其中,模块独立性是最核心的原则。
1.抽象就是抽出事物的本质特性而暂时不考虑它们的细节。
2.将软件的体系结构按自顶向下的方式,对各个层次的过程细节和数据细节逐层细化,直到用程序设计语言的语句能够实现为止,从而最后确立整个软件的体系结构。
3.信息隐蔽是指一个模块的实现细节对于其它模块来说是隐蔽的。就是说,模块中所包含的信息(包括数据和过程)不允许其它不需要这些信息的模块使用。信息隐蔽的概念类似于软件开发中的「最小特权原则」
4.模块独立性是指软件系统中每个模块只涉及软件要求的具体的子功能, 而和软件系统中其它模块的接口是简单的。
度量模块独立性有两个准则:
耦合: 耦合是模块间互相联系的紧密程度的度量。它取决于各个模块之间接口的复杂程度,一般由模块之间的调用方式、传递信息的类型和数量来决定。
内聚:内聚是一个模块内部各个元素彼此结合的紧密程度的度量。
建议:尽可能松散耦合,避免强耦合。尽量使用数据耦合,少用控制耦合,限制公共耦合,完全不用内容偶合。
如果一个模块内所有成分都完成同一个功能,则称这样的模块为功能内聚模块。力求做到高内聚,尽量少用中内聚,绝对不用低内聚。
考点三 详细设计
详细设计,即过程设计。通过对系统结构进行细化,得到软件的详细数据结构和算法。
描述方法
a.程序流程图
b.PAD图
C.过程设计语言
语言工具
用某种高级语言(称之为伪码)来描述过程的细节。概要设计和详细设计的区别与联系。
有伪码和PDL(Program Design Language)等。就是不需要能跑通的逻辑代码。c
PDL也可称为伪码或结构化语言,它用于描述模块内部的具体算法,以便开发人员之间比较精确地进行交流。
流程逻辑
用图表(例如流程图、判定表等)辅以必要的说明来表示本程序的逻辑流程。
接口
用图的形式说明本程序所隶属的上一层模块及隶属于本程序的下一层模块、子程序,说明参数赋值和调用方式,说明与本程序相直接关联的数据结构(数据库、数据文卷)。
注释设计
说明准备在本程序中安排的注释,如:
a. 加在模块首部的注释;
b. 加在各分枝点处的注释;
c. 对各变量的功能、范围、缺省条件等所加的注释;
d. 对使用的逻辑所加的注释等等。
第三节 软件测试
考点一 软件测试的分类
软件测试的分类可以从多个角度进行,主要包括按测试对象、是否查看代码、开发阶段、实施组织、代码运行状态以及是否手工等方面。
按测试对象分类
界面测试:验证软件界面的完整性、一致性、准确性、友好性等,包括界面内容显示、布局排版、控件功能等。
功能测试:验证软件的功能是否满足用户需求,包括性能、接口和设计约束等。
可靠性测试:评估软件在特定条件下的稳定性和耐用性。
容错性测试:测试软件在错误或异常情况下的表现和恢复能力。
文档测试:验证软件文档的完整性和准确性。
兼容性测试:检查软件在不同环境或平台上的运行情况。
易用性测试:评估用户使用软件的便捷性和友好性。
安装卸载测试:验证软件的安装和卸载过程是否正常。
安全测试:检查软件的安全机制和防护能力。
性能测试:评估软件的运行速度和处理能力。
内存泄漏测试:检测软件是否存在内存泄漏问题。
按是否查看代码分类
黑盒测试:不查看代码,只通过输入输出验证功能。
白盒测试:通过查看代码进行测试,关注内部结构和逻辑。
灰盒测试:结合黑盒和白盒测试的特点,部分查看代码。
按开发阶段分类
单元测试:针对程序单元进行测试,验证其功能和性能。
集成测试:将多个单元组合成更大的模块进行测试,验证接口关系。
系统测试:验证整个系统的功能和性能,确保满足用户需求。
回归测试:在修改后重新测试,确保新改动没有引入新的问题。
冒烟测试:在集成测试前对关键功能进行快速测试,确保基本功能正常。
验收测试:在系统测试后进行,确保软件满足用户需求和规范。
按实施组织分类
α测试:由内部人员在开发环境下进行测试。
β测试:由外部用户在真实环境下进行测试。
第三方测试:由独立的第三方机构进行测试。
按代码运行状态分类
静态测试:不运行代码,检查代码质量和结构。
动态测试:运行代码,检查功能和性能。
按是否手工分类
手工测试:完全由人工进行测试。
自动化测试:使用自动化工具进行测试,提高效率和准确性。
考点二 软件测试的分类步骤及生命周期各阶段的关系
如果按照开发阶段进行分类,步骤主要包含以下:
1.单元测试
2.集成测试
3.确认测试
4.系统测试
可以将软件生命周期划分为6个阶段:问题定义、需求分析、软件设计、软件开发、软件测试、软件维护
如果不考虑问题定义,软件生命周期各阶段的关系如下:
- 需求分析:明确软件的需求和功能模块,生成需求规格说明书。需求分析的结果直接影响后续的设计和开发工作。
- 设计:根据需求分析的结果进行系统设计,包括概要设计和详细设计。设计阶段确定软件的体系结构和模块接口。
- 编码:将设计结果转化为可执行的程序代码。编码阶段需要遵循统一的编程规范,确保代码的可读性、易维护性和可移植性。
- 测试:在软件开发完成后进行测试,包括单元测试、集成测试和系统测试。测试阶段发现并修正设计和开发中的错误。
- 运行维护:软件投入使用后,进行运行维护,包括纠错性维护和改进性维护,确保软件适应环境变化和功能扩展。
第四节 系统实施与维护
考点一 系统实施
系统实施是指在系统概要设计和详细设计以后的系统实现与交付过程。它分两个阶段。
1.第一阶段是系统技术实现过程和对这个过程的管理,包括建立编程标准、程序设计、测试、建构和发行,这都是交付前的工作。实施阶段交付物包括软件、数据和文档资料,最终发行的软件是交付物的核心,用户手册等其他交付物也必不可少。
2.第二阶段是用户转化阶段,即系统发行后交付用户使用的过程,包括用户培训、业务流程重组实施、系统转换、运行和维护。
相当于第一阶段是开发系统交付给用户,第二阶段是对用户进行培训教他们怎么高效使用系统。
考点二 系统维护
为了清除系统运行中发生的故障和错误,软、硬件维护人员要对系统进行必要的修改与完善;为了使系统适应用户环境的变化,满足新提出的需要,也要对原系统做些局部的更新,这些工作称为系统维护。 系统维护的任务是改正软件系统在使用过程中发现的隐含错误,扩充在使用过程中用户提出的新的功能及性能要求,其目的是维护软件系统的”正常运作”。这阶段的文档是软件问题报告和软件修改报告,它记录发现软件错误的情况以及修改软件的过程。
系统维护的内容:
1.系统应用程序维护
2.数据维护
3.代码维护
4.硬件设备维护
5.机构和人员的变动
系统维护的类型:
1.纠错性维护
2.适应性维护
3.完善性维护
4.预防性维护
第五节 软件项目管理
考点一 软件项目管理
软件项目管理是指软件生命周期中软件管理者所进行的一系列活动,其目的是在一定的时间和预设范围内有效的利用人力、资源、技术和工具,使软件系统按原 定计划和质量要求如期完成。
软件项目管理涉及范围:人员(person)、产品(Product)、过程(Procedure) 和项目(Project)
核心要素有:需求分析、项目计划、进度管理、风险管理、质量保障、团队协作与沟通
考点二 软件评审
软件审核的主要类型:
1.需求评审
2.功能评审
3.质量评审
4.成本评审
5.维护评审
如果从软件质量角度进行评审:
(1) 设计的规格说明书符合用户的要求,这称为设计质量。着重于需求分析阶段的视角。
(2) 程序按照设计规格说明所规定的情况正确执行,这称为程序质量。着重于开发者的角度,与开发技术直接相关。
第六节 系统分析
考点一 系统分析
系统分析的过程包含以下四个步骤:
问题识别
1)从系统的角度来理解软件并评审软件范围是否恰当。
2)确定软件的需求,即提出这些需求应实现的条件,和这些需求应达到的标准。
分析与综合
1)逐步细化软件功能,找出系统各元素间的联系、接口特性和设计上的约束,分析是否满足功能要求,是否合理。
2)剔除不合理部分,增加其需要部分。最终综合成系统的解决方案,给出目标系统的详细逻辑模型。
3)常用的分析方法
面向数据流的结构化分析方法 (SA)
面向数据结构的 Jackson 方法 (JSD)
面向数据结构的结构化数据系统开发方法 (DSSD)
面向对象的分析方法 (OOA) 等编制文档
1)软件需求说明书;
2)数据要求说明书;
3)初步的用户手册;
4)修改、完善与确定软件开发实施计划。系统分析评审
系统定义的目标是否与用户的要求一致;
系统需求分析阶段提供的文档资料是否齐全;
文档中的所有描述是否完整、清晰、准确反映用户要求;
与所有其它系统成分的重要接口是否都已经描述;
被开发项目的数据流与数据结构是否足够;
所有图表是否清楚,在不补充说明时能否理解;
主要功能是否已包括在规定的软件范围之内,是否都已充分说明;
设计的约束条件或限制条件是否符合实际;
开发的技术风险是什么;
是否考虑过软件需求的其它方案;
是否考虑过将来可能会提出的软件需求;
是否详细制定了检验标准,它们能否对系统定义是否成功进行确认;
考点二 结构化分析方法
结构化分析方法是一种面向数据流进行需求分析的方法,适用于数据处理类型 (MIS) 软件的需求分析。用抽象模型的概念,按照软件内部数据传递、变换的关系,自顶向下逐层分解,直到满足所有功能要求为止。(自顶向下逐层分解是结构化分析的基本思路)
结构化分析所使用的工具主要有五种:
- 数据流图
(DFD)
- 数据字典
(DD)
- 结构化英语
(Structured English)
- 判定表
(Decision Table)
- 判定树
(Decision Tree)
主要考试我感觉还是在图上:
数据流图的规范。 具体内容如下:
DFD中允许的数据流:
①实体 -> 加工;②加工 -> 实体;③加工 -> 加工;④加工 -> 存储;⑤存储 -> 加工。
DFD中不允许的数据流:
①实体 -> 实体;②实体 -> 存储;③存储 -> 实体;④存储 -> 存储。
总结: 所有的数据流都要有加工,任意一个没有经过加工的数据流都是不规范的。
注意: 所有数据流信息都要标注,除了加工与存储相连时传递的信息刚好是数据存储的内容(可省略),其它一律不可以。
检查和修改数据流图的原则
1.数据流图上所有图形符号只限于上述四种基本图形元素。
2.数据流图的主图必须包括上述四种基本元素,缺一不可。
3.数据流图的主图上的数据流必须封闭在外部实体之间。
4.每个加工至少有一个输入数据流和一个输出数据流,而且所有的数据流都要经过加工。
5.在数据流图中,需按照层次给加工框编号,编号表明该加工所处层次及上下层的亲子关系;有一种特殊情况就 是,顶层图的加工可以不用加编号。
6.当数据流图只有一个加工时,可以不考虑存储,但当数据流图有多个加工时,一定要考虑存储。
7.规定任何一个数据流子图必须与它上一层的一个加工对应,两者的输入数据流和输出数据流必须一致,即父图 与子图的平衡。
8.图上每个元素都必须有名字。
9.数据流图中不可夹带控制流。
第七节 系统设计
考点一 软件设计的内容
总体设计:
总体结构设计:将复杂的系统按功能划分模块,确定每个模块的功能、模块间的调用关系和接口。
代码设计:设计模块内的数据结构和算法。
输入设计:设计数据的输入方式和格式。
输出设计:设计数据的输出方式和格式。
处理过程设计:设计模块的处理流程。
数据存储设计:设计数据存储的方式和结构。
用户界面设计:设计用户与软件的交互界面。
安全控制设计:设计软件的安全控制机制。
详细设计:
算法设计:为每个模块设计具体的算法。
数据结构设计:设计模块内的数据结构。
数据库物理设计:对数据库进行物理设计。
代码设计:编写具体的代码实现。
考点二 软件设计的基本原则
1、设计对于分析模型应该是可跟踪的:软件的模块可能被映射到多个需求上 。
2、设计结构应该尽可能的模拟实际问题 。
3、设计应该表现出一致性 。
4、不要把设计当成编写代码 。
5、在创建设计时就应该能够评估质量 。
6、评审设计以减少语义性的错误 。
7、设计应该模块化,将软件逻辑地划分为元素或子系统,并包含数据、体系结构、接口和构件的清晰表示 。
考点三 面向对象分析与设计
面向对象设计环节进行拆解,分为以下4个步骤:
1)划分职责进而识别有哪些类:
2)定义类及其属性和方法;
3)定义类之间的交互关系;
4)将类组装起来并提供执行入口。
第八节 系统架构
考点一 C/S架构
服务器-客户机,即Client-Server(C/S)结构。C/S结构通常采取两层结构。服务器负责数据的管理,客户机负责完成与用户的交互任务。
C/S模型的关键要素为:由客户而不是服务提供者发起动作;服务器被动的等待来自客户机的请求;
C/S模式的发展经历了从两层结构到三层结构。基于二层结构的以上不足,三层结构伴随着中间件技术的成熟而兴起。其核心概念是利用中间件将应用分为表示层、业务逻辑层和数据存储层三个不同的处理层次。
C/S结构的优点是能充分发挥客户端PC的处理能力,很多工作可以在客户端处理后再提交给服务器。对应的优点就是客户端响应速度快。
缺点就是兼容性和可移植性差,无法快速适配不同环境的设备。
考点二 B/S架构
B/S结构(Browser/Server,浏览器/服务器模式),是WEB兴起后的一种网络结构模式,WEB浏览器是客户端最主要的应用软件。这种模式统一了客户端,将系统功能实现的核心部分集中到服务器上,简化了系统的开发、维护和使用。客户机上只要安装一个浏览器,如Chrome、Safari、Microsoft Edge、Netscape Navigator或Internet Explorer,服务器安装SQL Server、Oracle、MYSQL等数据库。浏览器通过Web Server 同数据库进行数据交互。
本质上就是现在APP使用的Webview去加载实际的业务产品,也就是软件中套了一个浏览器,访问的页面实际是一个网页。
优点当然就是跨平台和可以快速适配不同环境设备。
缺点就是通信开销大、系统和数据的安全性较难保障,应用服务器运行数据负荷较重。
第九节 三层架构与MVC
考点一 三层架构
三层架构是指:视图层view(表现层),服务层service(业务逻辑层),持久层Dao(数据访问层)
表现层(UI):直接跟前端打交互(⼀是接收前端ajax请求,⼆是返回json数据给前端)
业务逻辑层(BLL):⼀是处理表现层转发过来的前端请求(也就是具体业务),⼆是将从持久层获
取的数据返回到表现层。
数据访问层(DAL):负责数据库的访问(可以访问数据库、二进制文件、文本文件等),是对数据库,而不是对数据的操作。直接操作数据库完成CRUD,并将获得的数据返回到上⼀层(也就是业务逻辑层)。
考点二 MVC架构
MVC是软件工程中的一种软件架构模式,它是一种分离业务逻辑与显示界面的设计方法,它把软件系统分为三个基本部分:模型(model)、视图(view)、控制器(controller)
控制器 controller:对请求进行处理,负责请求转发,也就是事件,用于流程的控制;
视图view:界面设计人员进行图形界面设计,也就是GUI组件,用于数据的展示;
模型model:编写程序应用功能(实现算法等等),数据库管理,也就是实体类。用于数据的封装和数据的传输; model一般分为以下两类:
数据承载bean,数据承载bean是指实体类专门承载业务数据的,比如Student,User等。
业务承载bean,业务处理bean是指Service或者Dao对象,专门处理用户的请求的。
MVC架构的工作流程:
本质上MVC是在三层架构的基础上设计的一种框架型架构,三层架构是一种宏观抽象的概念,而MVC是对三层架构的一种具体实现。