导图社区 软考高级系统架构设计师
软考高级相关知识点,帮助考生梳理了考试的知识点,形成了清晰的知识体系。同时,通过对每个知识点的详细解释和关联,思维导图也促进了考生对知识的理解和记忆。因此,考生在备考过程中可以充分利用这张思维导图,提高备考效率,取得更好的成绩。
编辑于2024-06-25 11:41:33软考高级
系统工程与信息系统基础
战略规划
企业战略规划
企业未来的发展思路,此时主要考虑业务的战略布局
信息化战略规划
依据企业战略规划,做信息化层面的支撑布局
信息系统战略规划
步骤
第一阶段(以数据处理为核心)
企业系统规划法(BSP)
U/C矩阵划分子系统,自上而下规划,自下而上实现
关键成功因素法(CSF)
抓主要矛盾,找关键信息集合
战略目标集转化法(SST)
战略目标信息集合转信息系统战略目标
第二阶段(以企业MIS系统为核心)
战略数据规划法(SDP)
提出了主题数据库
信息工程法(IE)/战略栅格法(SG)
第三阶段(以集成为核心)
价值链分析法(VCA)/战略一致性模型(SAM)
企业战略数据模型
数据库模型
数据库模型用来描述日常事务处理中的数据及其关系;
数据仓库模型
数据仓库模型则描述企业高层管理决策者所需信息及其关系。
企业信息化工程核心技术
【信息技术】【自动化技术】【现代管理技术】【制造技术】
企业信息化
ERP
企业资源计划
发展历程
MRP(物料)->MRPII(技术/人力)->ERP(客户关系/供应链)
CRM
CRM是一套先进的管理思想及技术手段,CRM 理念 将客户看作资产;客户关怀是中心,目的是与客户建立长期和有效的业务关系。最大限度地增加利润;核心是客户价值管理,提高客户忠诚度和保有率 它通过将人力资源、业务流程与专业技术进行有效的整合, 最终为企业涉及的客户或者消费者的各个领域提供了完美的集成,使得企业可以更低成本、更高效率地满足客户的需求,并与客户建立起基于学习性关系基础上的一对一营销模式,从而让企业可以最大程度提高客户满意度和忠诚度。
提高客户满意度->提升客户忠诚度->创造价值
与ERP等其它信息化体系相互配合形成闭环
主要模块
销售自动化
营销自动化
客户服务与支持
商业智能
SCM
供应链各企业强强联合
信息化三流
信息流(核心)
需求信息流
客户订单/【生产计划】/采购合同
供应信息流
入库单/完工报告单/库存记录/可供销售
资金流(辅助)
物流(辅助)
商业智能Bi
BI=数据仓库+数据挖掘+OLAP
BI以及所含技术均用于分析决策,基本模式是:先做大量分析,再配套商业策略
数据仓库
特点:面向主题、集成的、相对稳定、反应历史变化
数据挖掘
挖掘人类所未知的规律,以供决策使用
关联分析、序列分析、分类分析(先有标签再分类)、聚类分析(相似归为同类)
联机分析(OLAP)
以数据立方体形式呈现,多维数据分析,常用切片,钻取等
ETL
数据抽取,转换,装载
数据潮
既有结构化也有非结构化数据
数据偏原始数据,对数据的要求比数据仓库低
既可以做事务处理,也可以做数据分析的数据源
无限扩展性,并行执行
业务流程
业务流程重组(BPR)
强调对已有的流程进行撤底再造
业务流程管理(BPM)
强调小步但持续的改进
企业数字化转型
五个发展阶段
初始级->单元级->流程级->网络级->生态级
智能制造体系
系统层级
【设备层】传感器、仪器仪表、机器、装置等
单元层】企业内处理信息、实现监测和控制物理流程的层级
【车间层】面向工厂或车间的生产管理的层级
【企业层】面向企业经营管理的层级
协同层】其内部和外部信息互联和共享,实现跨企业间业务协同的层级
企业信息化方法
业务流程重构方法
彻底的,根本性的重新设计流程 企业业务流程重构是指重新审视企业的生产经营过程,利用信息技术和网络技术,对组织结构和工作方法进行彻底的重新设计,以适应市场发展和信息社会的需求。这种方法在企业信息化中起着重要作用,特别对长期受计划经济体制影响的企业更为实际意义。
核心业务应用方法
企业必须有自己的核心业务才能在市场竞争中生存发展。围绕核心业务应用计算机技术和网络技术是许多企业信息化成功的关键。
信息系统建设方法
信息系统建设是大多数企业信息化的重点和关键。建设信息系统是一种普遍意义的企业信息化方法。
主题数据库方法
主题数据库是面向企业业务主题的数据库,针对企业核心业务而设计。在大型企业中,应用主题数据库方法可以有效推进企业信息化,避免信息孤岛和无效投资。例如,油田企业投入开发“勘探开发数据库”来管理大量数据,这种方法在核心业务管理方面取得成功。
资源管理方法
资源是企业生存发展的基础,包括人力资源、物力资源等,同时分为内部和外部资源。有效管理企业资源是管理的核心主题,计算机技术和网络技术的应用为资源管理提供强大支持。流行的企业信息化资源管理方法包括ERP、SCM等。
人力资本投资方法
人力资本概念将企业优秀员工视为一种资本,可以带来投资回报。与人力资源的概念不同,人力资本投资方法适用于依靠智力和知识生存的企业,如咨询服务、软件开发等。这种方法强调投资于员工的发展和培训,以提高其知识和技能,从而为企业带来长期回报。
企业应用集成EAI

集成的层次

表示集成
界面集成(操作集成)
数据集成
通过中间件直接操作别的数据库,或共享数据库
控制集成
应用集成,API集成
业务流程集成
过程集成,B2B
集成的方式
消息集成
数据量小、频繁、立即、异步
共享数据库
实时性强、频繁、同步
文件传输
数据量大、频度小、即时性低
企业门户
企业网站
单向信息传递,缺互动
企业信息门户
各种系统与数据资源与互联网整合,信息交互增强
企业知识门户
增加知识性内容
企业应用门户
以业务流程与企业应用为核心
企业通用门户
集以上四者于一身
集成模式
面向信息集成
信息集成采用的主要数据处理技术有数据复制、数据聚合和接口集成等。 其中,接口集成仍然是一种主流技术。它通过一种集成代理的方式实现集成,即为应用系统创建适配器作为自己的代理, 适配器通过其开放或私有接口将信息从应用系统中提取出来,并通过开放接口与外界系统实现信息交互, 而假如适配器的结构支持一定的标准,则将极大地简化集成的复杂度,并有助于标准化, 这也是面向接口集成方法的主要优势来源。标准化的适配器技术可以使企业从第三方供应商获取适配器,从而使集成技术简单化。
面向过程集成
其中面向过程的集成模式强调处理不同应用系统之间的交互逻辑, 与核心业务逻辑相分离,并通过不同应用系统之间的协作共同完成某项业务功能。
面向服务集成
面向服务的集成技术。 基于SOA(Service-0riented Architecture,面向服务的架构)和Web服务技术的应用集成是业务集成技术上的一次重要的变化,被认为是新一代的应用集成技术。 集成的对象是一个个的Web服务或者是封装成eb服务的业务处理。Web服务技术由干是基干最广为接受的、开放的技术标准(如HTTP、SMTP等),支持服务接口描述和服务处理的分离、 服务描述的集中化存储和发布、服务的自动査找和动态绑定及服务的组合,成为新一代面向服务的应用系统的构建和应用系统集成的基础设施。
系统工程
系统工程的概念
是为了最好的实现系统的目的,对系统的组成要素、组织结构、信息流、控制机构进行分析研究的科学方法。
从整体出发、从系统观念出发,以求【整体最优】
系统工程方法
霍尔三维结构
应用场景组织管理大型工程建设项目
逻辑维
逻辑维即解决问题的逻辑过程
时间维
时间维是工作进程
知识维
知识维是专业科学知识
切克兰德方法
核心不是最优化而是“比较”和探寻 7步骤:认识问题、根底定义、建立概念模型、比较及探寻、选择设计与实施、评估与反馈
并行工程方法
“制造过程”与“支持过程”并行强调三个方面:产品设计开发期间,最快速度按质完成;各项工作问题协调解决;适当的信息系统工具
综合集成法
钱学森命名,【简单系统】和【巨系统】四原则:整体论原则、相互联系原则、有序性原则、动态原则
WSR系统方法
实践准则:【懂物理】-【明事理】-【通人理】
系统工程生命周期阶段方法
系统工程生命周期阶段
探索性研究
概念阶段
开发阶段
生产阶段
使用阶段
保障阶段
退役阶段
系统工程生命周期方法
计划驱动方法
需求-》设计-》构建-》测试-》部署
渐进迭代式开发
提供连续交付以达到启动的系统
精益开发
起源于丰田,上一个动态的,知识驱动的,以客户为中心的过程
敏捷开发
更好的灵活性
系统性能
性能指标
计算机性能指标
路由器性能指标
交换机性能指标
网络性能指标
操作系统性能指标
数据库管理的性能指标
对于数据库系统,性能调整主要包括 CPU/内存使用状况、查询语句性能、 进程/线程状态、 硬盘剩余空间、日志文件大小等;
Web服务器的性能指标
对于应用系统,性能调整主要包括应用系统的可用性、响应时间、并发用户数以及特定应用的系统资源占用等。
性能设计
性能调整
阿姆达尔解决方案
性能计算
性能评估
基准测试程序
真实程序、核心程序、小型基准程序和合成基准程序,其评测准确程度依次递减 TPC(Transaction Processing Performance Council,事务处理性能委员会)基准程序用以评测计算机在事务处理、数据库处理、企业管理与决策支持系统等方面的性能。 该基准程序的评测结果用每秒完成的事务处理数TPC来表示。 TPC-A基准程序规范用于评价在OLTP环境下的数据库和硬件的性能,不同系统之间用性能/价格比进行比较; TPC-B测试的是不包括网络的纯事务处理量,用于模拟企业计算环境; TPC-C是专门针对联机(在线)事务处理系统(OLTP)的测试标准; TPC-D、TPC-H和TPC-R测试的都是决策支持系统, 其中TPC-R允许有附加的优化选项; TPC-E测试的是大型企业信息服务系统。 TPC-W是基于Web 应用的基准程序,用来测试一些通过Intemet进行市场服务和销售的商业行为,所以TPC-W可以看作是一个服务器的测试标准。
Web服务器的性能评估
性能指标:连接数,延迟,吞吐量
系统监视
开发方法
结构化开发方法
结构化开发方法是一种软件开发方法,它强调在整个开发过程中进行系统的、结构化的分析和设计。该方法主要由三个部分组成:结构化分析、结构化设计和结构化程序设计。 结构化分析:主要任务是理解现实世界的环境,建立系统的逻辑模型,划清人机界限。结构化分析通过数据流图和数据字典来描述系统的行为。数据流图用于描述系统的数据流和处理过程,而数据字典则用于定义数据流图中的各个元素。 结构化设计:主要任务是根据系统的逻辑模型,设计出能够实现该模型的软件系统。结构化设计强调模块化、抽象、信息隐蔽和模块独立等原则。模块化是将系统划分为一系列相对独立的模块,每个模块都具有明确的功能和接口。抽象则是将系统的某些复杂细节隐藏起来,只显示其必要的接口和行为。信息隐蔽则是将模块的内部实现细节隐藏起来,只通过模块接口与外界进行通信。模块独立则是指模块之间应尽可能独立,减少模块之间的耦合性。 结构化程序设计:主要任务是根据结构化设计的结果,使用某种程序设计语言编写出具体的程序代码。结构化程序设计强调使用顺序、选择和循环三种基本控制结构来构造程序,避免使用复杂的控制结构,如嵌套循环和多重条件语句等。 结构化开发方法的核心思想是“自顶向下,逐步分解”。它从整个系统的角度出发,先对系统进行宏观的整体考虑,然后逐步细化,最终实现对系统的详细设计和编程实现。这种方法有助于提高软件开发的质量和效率,减少开发过程中的错误和复杂性。
自顶向下,逐步分解求精
优点
系统性:结构化开发方法从系统整体出发,强调在整体优化的前提下进行“自上而下”的分析和设计,从而保证了系统的整体性和目标一致性。 用户至上:该方法遵循用户至上的原则,根据用户需求进行开发,使得系统具有较强的适用性。 阶段明确:结构化开发方法严格区分系统开发的各个阶段,每个阶段都有明确的任务和成果,这有利于系统开发的管理和控制。同时,每个阶段的工作成果都是下一阶段的依据,这也使得开发过程更加有序和可控。 文档规范化:在结构化开发方法中,系统开发的每一步骤和每一阶段都按照工程标准建立标准化的文档资料,这有利于系统的维护和后续的开发工作。 错误发现早:由于结构化开发方法在每个阶段都进行严格的审查和测试,因此能够及早地发现系统开发过程中的错误,从而提高系统的成功率。
缺点
开发周期长:结构化开发方法通常需要进行详细的需求分析、系统设计和编程实现等多个阶段,这些阶段都需要耗费大量的时间和精力。因此,使用结构化开发方法开发软件可能需要较长的开发周期,难以满足一些急需上线的项目需求。 需求变更困难:结构化开发方法在开发初期就需要对系统的需求进行全面的分析和设计,一旦需求发生变更,就需要对整个开发过程进行重新规划和调整。这会导致开发成本增加、开发周期延长等问题。 不易适应变化:结构化开发方法强调系统的稳定性和可控性,因此在开发过程中往往会对系统的结构和功能进行严格的限制和控制。这使得系统不易适应外部环境的变化和用户需求的变化,可能导致系统无法满足用户的实际需求。 过于强调文档化:结构化开发方法非常注重文档化,要求开发人员编写大量的文档和资料。虽然这有助于保证系统的质量和可维护性,但也增加了开发人员的工作量和开发成本。同时,过多的文档也可能导致信息冗余和混淆,不利于系统的开发和管理。
使用场景
1.处理数据领域问题:结构化开发方法是一种面向数据流的开发方法,适用于处理数据领域问题的场景。它强调自顶向下、逐层分解的开发策略,注重开发过程的整体性和全局性,因此适用于大型、复杂的信息系统和管理信息系统的开发。 2.大型信息系统开发:结构化开发方法经常应用在大型、复杂的影响企业整体运作的企业事务处理系统(TPS)和管理信息系统(MIS)的开发项目中。由于它强调系统的稳定性和可控性,以及开发过程的阶段性和文档化,使得开发出的系统具有较高的质量和可维护性。 3.政府项目:结构化开发方法也常用于政府项目中,如电子政务系统、社会保障系统等。这些项目通常具有复杂性高、需求变化少、稳定性要求高等特点,适合采用结构化开发方法进行开发。
面向对象开发方法
面向服务开发方法
粗粒度、松耦合,标准化和构件化
原型法
针对需求不明确
形式化方法
净室工程
逆向工程
信息系统基础
信息系统生命周期
产生阶段
提出建设信息的初步方法,对需求进行调研和分析
开发阶段
总体规划--》系统分析-》系统设计-》系统实施-》系统验收
运行阶段
通过验收,移交之后
消亡阶段
更新改造,功能扩展,报废重建
信息系统建设原则
高层管理人员介入原则
用户参与开发原则
自顶向下规划原则
工程化原则
其它原则
信息系统开发方法
结构化法
自顶向下,逐步分解求精 开发目标清晰化 工作阶段程式化 开发文档规范化 设计方法结构化 应变能力差
面向对象方法
自底向上 阶段界限不明 更好应变、更好复用符合人们的思维习惯
面向服务的方法
粗粒度、松耦合 标准出和构件化 抽象级别:操作【低】-服务【中】->业务流程【高)
其他信息系统开发方法
形式化方法
统一过程方法
敏捷方法
基于架构的开发方法
信息系统的分类
业务处理系统【TPS)
【业务处理系统(TransactionProcessingSystem,TPS)】又可称为电子数据处理系统(ElectronicDataProcessingSystem,EDP),是计算机在管理方面早期应用的最初级形式的信息系统。 
管理信息系统【MIS】
高度集成化的人机信息系统,金字塔结构:分多个层级 管理信息系统(MIS,Management Information System)是一种用于收集、处理、存储和分析组织内部和外部信息的计算机系统。MIS 旨在为组织的管理层提供决策支持和信息反馈,帮助管理者更好地监控和控制组织的运作。MIS 主要包括以下几个方面的功能: 1. 数据收集和处理:MIS 可以收集不同部门和系统中的数据,对数据进行处理和整合,生成有用的信息。 2. 信息存储和管理:MIS 可以存储大量的信息和数据,确保信息的安全性和可靠性。 3. 决策支持:MIS 提供各种报表、分析和数据可视化工具,帮助管理者进行决策制定和问题解决。 4. 组织协作:MIS 可以促进不同部门和员工之间的信息共享和协作,提高工作效率和沟通效果。 5. 性能监控:MIS 可以监控组织的绩效和运营情况,及时发现问题并采取措施进行调整。 管理信息系统在现代组织中起着关键作用,帮助管理者更好地理解组织的运作情况,提高决策效率和管理水平。
决策支持系统【DSS】
由语言系统、知识系统和问题处理系统组成。 用于辅助决策、支持决策。 由语言系统,知识系统,问题处理系统 DSS应具有的特征 1.数据和模型是DSS的主要资源。 2.DSS用来支援用户作决策而不是代替用户作决策。 3.DSS主要用于解决半结构化及非结构化问题。 4.DSS的作用在于提高决策的有效性而不是提高决策的效率。
专家系统【ES】
 知识+推理=专家系统。人工智能的一个重要分支。 专家系统(Expert System,ES)是一种基于人工智能(AI)技术的计算机程序,旨在模拟人类专家在特定领域内的知识和决策过程。专家系统结合了专家知识库、推理引擎和用户接口,能够根据事先编程好的规则和知识来解决特定领域的问题。 专家系统的工作原理通常包括以下几个步骤: 1. 知识获取:将领域专家的知识转化为计算机可理解的形式,通常以规则、事实或推理方式表示。 2. 知识存储:将专家知识存储在系统的知识库中,以便系统能够访问和利用。 3. 推理机制:通过推理引擎对知识库中的知识进行推理和推断,以回答用户提出的问题或解决问题。 4. 用户接口:提供用户友好的接口,使用户能够与专家系统进行交互,输入问题并接收系统的回答或建议。 专家系统广泛应用于医疗诊断、金融风险评估、设备维护、客户服务等领域,帮助人们做出决策、解决问题和获取专业建议。
办公自动化系统【OAS】
由计算机设备、办公设备、数据通信及网络设备、软件系统组成。
企业资源计划【ERP】
打通供应链,集成,整合
信息与信息化基本概念
信息的概念
香农:信息就是不确定性的减少
维纳:信息就是信息,既不是物质,也不是能量但它们之间可以转换
信息化的概念
信息化是从工业社会到信息社会的演进与变革
信息化的【主体】是全体社会成员(政府、企业、团体和个人),【时域】是一个长期过程,【空域】是经济和社会的一切领域,【手段】是先进社会生产工具。
信息化的需求
战略需求
组织信息化的目标是提升组织的竞争能力、为组织的可持续发展提供一个支持环境。从某种意义上来说,信息化对组织不仅仅是服务的手段和实现现有战略的辅助工具;信息化可以把组织战略提升到一个新的水平为组织带来新的发展契机。特别是对于企业,信息化战略是企业竞争的基础。
提升组织的竞争能力
运作需求
组织信息化的运作需求是组织信息化需求非常重要且关键的一环, 它包含三方面的内容: 一是实现信息化战略目标的需要 二是运作策略的需要。 三是人才培养的需要
实现信息化战略目标的需要
运作策略的需要
人才培养的需要
技术需求
由于系统开发时间过长等问题在信息技术层面上对系统的完善、升级、集成和整合提出了需求。 也有的组织,原来基本上没有大型的信息系统项目,有的也只是一些单机应用,这样的组织的信息化需求,一般是从头开发新的系统。
系统的完善、升级、集成
电子政务
三大主体
政府【Government】、企业【Business】、公民【Citizen】
六种形式
政府对政府(G2G)
例:人口与地理信息
政府对企业(G2B)
例:发营业执照
企业对政府(B2G)
例:交税,接政府工程
政府对公民(G2C)
例:户口、牌照
公民对政府(C2G)
例:反馈民意,报警
电子商务
B2C
京东,亚马逊
B2B
阿里巴巴
C2C
闲鱼
O2O
线上团购10人餐,线下聚会消费
软件工程
开发模型
瀑布模型
瀑布模型(Waterfall Model)是一个项目开发架构,开发过程是通过设计一系列阶段顺序展开的,从系统需求分析开始,直到产品发布和维护。每个阶段都会产生循环反馈,因此,如果有信息未被覆盖或者发现了问题,那么最好“返回”上一个阶段并进行适当的修改。项目开发进程从一个阶段“流动”到下一个阶段,这也是瀑布模型名称的由来。 瀑布模型将软件生命周期划分为制定计划、需求分析、软件设计、程序编写、软件测试和运行维护等六个基本活动,并且规定了它们自上而下、相互衔接的固定次序,如同瀑布流水,逐级下落。前一阶段的输出文档就是后一阶段的输入文档。 瀑布模型优点包括: 为项目提供了按阶段划分的检查点。 当前一阶段完成后,只需要去关注后续阶段。 有利于大型软件开发过程中人员的组织及管理,有利于软件开发方法和工具的研究与使用,从而提高了大型软件项目开发的质量和效率。 瀑布模型的缺点包括: 各个阶段的划分完全固定,阶段之间产生大量的文档,极大地增加了工作量。 由于开发模型是线性的,用户只有等到整个过程的末期才能见到开发成果,从而增加了开发的风险。 瀑布模型是由文档驱动,在可运行的软件产品交付给用户之前,用户只能通过文档来了解产品是什么样的。瀑布模型几乎完全依赖于书面的规格说明,很可能导致最终开发出的软件产品不能真正满足用户的需要。 综上,瀑布模型在软件开发中有着广泛的应用,特别适用于需求明确、变更较少的大型软件开发项目。但对于需求变化频繁、开发迭代迅速的项目,瀑布模型可能并不适合。因此,在选择软件开发模型时,需要根据项目的具体需求和特点进行综合考虑。
特点
阶段明晰
但前一阶段错误会延续到下一阶段
各阶段有产出物
自顶向下,逐步分解求精
应用场合
需求明确的开发
二次开发
变种
快速应用开发(RAD)
快速应用开发(Rapid Application Development,RAD)是一种软件开发方法,它强调极短的开发周期和快速发布系统方案。RAD模型是瀑布模型的一个“高速”变种,通过大量使用可复用构件,采用基于构件的建造方法赢得了快速开发。 RAD的特点包括: 采用基于构件的开发方法,复用已有的程序结构或使用构件。 可以使用CASE工具辅助软件构建。 每个主要功能可由一个单独的RAD组来实现,最后集成形成整体。 RAD模型的流程从业务建模开始,随后是数据建模、过程建模、应用生成、测试及反复。RAD的目的是快速发布系统方案,而技术上的优美相对发布的速度来说是次要的。 然而,RAD也存在一些问题,如不一致的GUI设计、不是通用的解决方案、文档不足以及难以维护和扩展软件等。
瀑布模型+CBSD
应用场合
模块化程度高
原型开发模型
原型开发模型是一种软件开发生命周期模型,主要用于在客户不完全了解最终产品应该如何及其需求时使用。在这种模型中,开发团队首先根据初步的需求和设计,快速构建一个产品的原型。这个原型通常具有基本的功能和界面,但并不完全满足最终产品的所有要求。 原型完成后,开发团队会将其展示给客户,并收集客户的反馈。根据客户的反馈,开发团队会对原型进行修改和优化,然后再次展示给客户进行验证。这个过程会反复进行,直到客户对原型感到满意为止。 原型开发模型的主要优点是能够尽早地发现并纠正开发中的问题,减少后期修改和返工的成本。同时,通过不断地展示和反馈,也能够更好地满足客户的需求和期望。
特点
先构造一个简易系统
应用场合
需求不明确
分类
快速原型
获得需求后抛弃原型
演化原型
将原型演化为最终软件产品
V模型
测试贯穿始终,测试分阶段,测试计划提前 
测试阶段
单元测试:依据【详细设计】
模块测试,模块功能、性能、接口等
集成测试:依据【概要设计】
本模块间的接口
系统测试:依据【需求文档】
在真实环境下,验证完整的软件配置项能否和系统正确连接
确认测试:依据【需求文档】
验证软件与需求的一致性。内部确认测试、Alpha测试Beta测试、验收测试
螺旋模型
螺旋模型是一种演化软件开发过程模型,它将瀑布模型和快速原型模型的特点结合起来,并特别强调了其他模型所忽视的风险分析。这种模型适用于大型复杂的系统,尤其是那些具有高风险的项目。 螺旋模型的基本思想是在每个开发阶段之前引入严格的风险识别、风险分析和风险控制。它把软件项目分解成一个个小项目,并在每个小项目中标识一个或多个主要风险,直到所有的主要风险因素都被确定。通过这种方式,螺旋模型有助于减小风险,并在无法排除重大风险时有机会停止项目,以减小损失。 螺旋模型的每一个周期都包括需求定义、风险分析、工程实现和评审四个阶段,这四个阶段不断迭代进行,推动软件开发的逐步深入。在每个周期结束时,都会根据评审结果对下一周期的计划进行调整,以确保软件开发的顺利进行。
特点
原型为基础+瀑布+迭代
引入风险分析
应用场合
庞大、复杂并具有高风险的系统
阶段(每轮迭代)
目标设定
风险分析
开发和有效性验证
评审(客户评价)
基于构件的开发模型(CBSD)
基于构件的开发模型(Component-Based Software Development,CBSD)是一种软件开发方法,它利用预先构建好的软件构件(或组件)来构建应用程序。这些构件可以是商业上可获得的(COTS,即Commercial-Off-The-Shelf),也可以是自行开发的,通过复用这些已有的构件,可以提高软件开发的效率和质量,同时降低开发成本。 CBSD模型的核心思想是“购买而不是重新构造”,它将软件开发的重点从程序编写转移到了基于已有构件的组装,从而提高了软件开发的效率和质量。此外,由于构件是可复用的,因此CBSD模型还有助于降低软件开发的成本和维护负担。 然而,CBSD模型也存在一些挑战和限制。例如,构件的质量和兼容性可能会影响系统的性能和稳定性;同时,由于构件通常是预先构建好的,因此可能无法完全满足系统的所有需求,需要进行一些定制化的开发工作。此外,CBSD模型也需要一套完善的管理和维护机制来确保构件的更新和维护。 总的来说,基于构件的开发模型(CBSD)是一种有效的软件开发方法,它能够提高软件开发的效率和质量,降低开发成本和维护负担。然而,在实际应用中需要根据项目的具体需求和特点进行综合考虑和选择。
阶段
需求分析和定义
明确系统的功能和需求,为后续的设计和开发提供基础。
软件架构设计
从已有的构件库中选取适合的构件,或者自行设计开发新的构件。这些构件应该能够满足系统的需求,并且具有良好的可复用性和可扩展性。
构件库的建立
构件库获取
构件库管理
应用软件构建
将选取和设计的构件进行集成,构建出完整的软件系统。这个阶段需要解决构件之间的接口和通信问题,确保系统能够正常运行
测试和发布
对构建好的系统进行测试和验证,确保系统满足需求并且稳定运行。 将系统部署到实际环境中,并进行持续的维护和升级。由于系统是由可复用的构件构建的,因此维护和升级的成本会相对较低。
标准
DNA
微软
Corba
EJB
EJB(Enterprise JavaBeans)是一种用于开发企业级 Java 应用程序的服务器端组件模型。EJB 提供了一种标准化的方法,使开发人员能够构建可重用、可扩展和分布式的企业级应用程序。EJB 组件通常部署在 EJB 容器中,并遵循容器管理的生命周期和事务处理。 EJB 有三种类型的组件: 1. 会话 Bean(Session Bean):负责处理特定会话的逻辑,包括状态保持和业务逻辑处理。会话 Bean 可以分为无状态会话 Bean、有状态会话 Bean和单例会话 Bean。 2. 实体 Bean(Entity Bean):用于表示持久化数据,与数据库表的行相对应。实体 Bean 可以管理数据的持久性和状态。 3. 消息驱动 Bean(Message-Driven Bean):用于处理异步消息的组件,通常与消息队列系统集成,实现异步通信和处理。
JAVA体系
优缺点
优点:易扩展、易重用、降低成本、安排任务更灵活。 缺点:构件设计要求经验丰富的架构师、设计不好的构件难重用、强调重用可能牺牲其它指标(如性能)第三方构件质量难控制。
敏捷开发
敏捷开发方法适用于多种场景,尤其是那些需求频繁变更、产品复杂度高、需要快速响应市场变化的场景。以下是一些适合使用敏捷开发的场景: 1.产品复杂且需求频繁变更:当产品的开发受市场影响较大,业务需求的变动十分常见时,敏捷开发方法非常适用。敏捷开发的迭代开发方式能够快速响应市场需求变化,及时推出新功能和修复bug,保持产品的竞争力。 2.开发周期短、需求变动大:敏捷开发也适用于Web应用开发等开发周期短、需求变动大的场景。敏捷开发的快速迭代开发方式能够满足这些应用快速开发的需求,确保及时交付高质量的产品。 3.高度协作和自组织团队:敏捷开发鼓励团队成员之间的密切合作和自组织,因此适用于那些团队成员之间协作能力强、具备自组织能力的团队。 4.创新性和探索性项目:敏捷开发方法也适用于创新性和探索性项目,这些项目通常具有很高的不确定性和风险性,需要快速试错和迭代来找到最佳解决方案。
敏捷宣言
个体和交互胜过过程和工具
可工作的软件胜过大量的文档
客户合作胜过合同谈判
响应变化胜过遵循计划
特点
小步快跑:1轮冲刺,1-4周
适合于小型项目(实际工作中,可将大项目拆成小项目)
方法
极限编程(XP)
核心是沟通、简明、反馈和勇气;提倡测试先行
自适应开发(ASD)
核心是三个非线性的、重叠的开发阶段:猜测、合作与学习
水晶方法(Crystal)
不同类型的项目需要不同的方法
SCRUM
发布产品的重要性高于一切
特性驱动开发(FDD)
编程开发人员分成首席程序员和“类”程序员
精益软件开发(Lean)
开放式源码
开发人员在地域上分布很广
动态系统开发(DSDM)
强调以业务为核心,快速而有效地进行系统开发
统一过程(UP/RUP)
RUP也称为UP、统一过程,其核心特点是:以架构为中心,用例驱动,迭代与增量。 该开发模型分4个阶段,分别为:初始、细化、构造、交付。
特点
用例驱动
以架构为中心
迭代与增量
阶段划分
初始
建立业务模型并明确项目边界
精化
完成架构设计
构建
开发剩余构件、将构件集成为产品并测试
交付
确保软件对最终用户是可用的
基于构件的软件工程
构件和构件模型
构件的特点
1、独立部署单元 2、作为第三方的组装单元; 3、没有(外部的)可见状态。
CASE过程
构件组装
逆向工程
概念
从产品反向推导设计与分析
所谓软件的逆向工程就是分析已有的程序,寻求比源代码更高级的抽象表现形式。 一般认为,凡是在软件生命周期内将软件某种形式的描述转换成更为抽象形式的活动都可称为逆向工程。 举个例子,假设有一个加密的软件程序,我们想要了解其内部工作原理。通过逆向工程,我们可以分析该程序的二进制代码,逐步还原出其更高级的抽象表现形式,比如算法逻辑或数据结构,以便更好地理解该软件的功能和设计。
阶段
原系统的维护阶段、新系统的需求阶段
重构
在【同一抽象级别】上【转换系统描述形式】
设计恢复
从已有程序中抽象出有关数据设计、总体结构设计
流程
现有系统
再工程/重构工程
包括逆向工程、新需求的考虑过程和正向工程
逆向工程
力图在比源代码更高抽象层次上建立程序的表示过程
层级
实现级
抽象语法树、符号表、过程的设计
结构级
反映程序分量之间相互依赖关系的信息
如调用图、结构图、程序和数据结构
功能级
程序段功能及程序段之间关系,例如数据和控制充模型
领域级
反映程序分量或程序诸实体与应用领域概念之间对应关系的信息
如:实体关系模型,UML模型
考虑新需求
正向工程
不仅从现有系统中恢复设计信息,而且使用该信息去改变或重构现有系统, 以改善其整体质量
新系统
净室软件工程
净室软件工程是一种应用数学与统计学理论以经济的方式生产高质量软件的工程技术,力图通过严格的工程化的软件过程达到开发中的零缺陷或接近零缺陷。 净室方法不是先制作一个产品,再去消除缺陷,而是要求在规约和设计中消除错误,然后以“净”的方式制作,可以降低软件开发中的风险,以合理的成本开发出高质量的软件。
理论基础
技术手段
应用于缺点
维护
维护类型
改正性维护【修Bug】
适应性维护【应变】
完善性维护【新需求】
预防性维护【】
遗留系统处置

需求工程
需求开发
需求获取与分析
编写需求文档
评审并确认需求文档
软件需求开发的最终文档经过评审批准后,则定义了开发工作的需求基线(baseline)这个基线 在用户和开发人员之间就构筑了计划产品功能需求和非功能需求的一个约定(agreement),它是需求开发和需求管理之间的桥梁。
需求管理
需求管理是一个对系统需求变更、了解和控制的过程。需求管理过程与需求开发过程相互关联,当初始需求导出的同时就启动了需求管理计划,一旦形成了需求文档的初稿,需求管理活动就开始了。关于需求管理过程域内的原则和策略,可以参考: ① 需求管理的关键过程领域不涉及收集和分析项目需求,而是假定已收集了软件需求,或者已由更高一级的系统给定了需求。 ② 开发人员在向客户以及有关部门承诺某些需求之前,应该确认需求和约束条件、风险、偶然因素、假定条件.。 ③ 关键处理领域同样建议通过版本控制和变更控制来管理需求文档。
变更控制
版本控制
需求跟踪
需求状态跟踪
软件设计
软件架构设计
软件架构设计包括提出架构模型、产生架构设计和进行设计评审等活动, 是一个迭代的过程。架构设计主要关注软件组件的结构、属性和 交互作用, 并通过多种视图全面描述特定系统的架构。
结构化设计
体系结构设计
定义软件系统各主要部件之间的关系
接口设计
接口设计(人机界面设计):软件内部,软件和操作系统间以及软件和人之间如何通信
数据设计
将模型转换成数据结构的定义。好的数据设计将改善程序结构和模块划分,降低过程复杂性
过程设计
系统结构部件转换成软件的过程描述。确定软件各个组成部分内的算法及内部数据结构
面向对象设计
流程

面向对象的分析模型
用例
用例图
顶层架构图
领域概念模型
设计模型
包图
体系结构图
交互图
用例实现图
类图
面向对象设计

状态图
活动图
界面设计
输入设计
系统输入设计中,通常通过内部控制的方式验证输入数据的有效性。 数据类型检査确保输入了正确的数据类型; 自检位用于对主关键字进行基于校验位的检査; 域检査用于验证数据是否位于合法的取值范围; 格式检查按照已知的数据格式对照检查输入数据的格式。
测试
测试方法
静态测试
静态测试是指在不执行代码的情况下,通过检查代码、文档和设计来评估软件的质量。这包括代码审查、文档审核、程序结构分析等活动。静态测试的目的是发现代码中的错误、不一致、冗余和其他潜在问题,而无需实际运行程序。
动态测试
动态测试是通过运行软件来评估其质量和性能。它涉及到执行代码并监视其行为,以检查是否符合预期。动态测试包括单元测试、集成测试、系统测试等,其中测试人员会输入数据并验证程序的输出
黑盒测试
黑盒测试也称为功能测试或数据驱动测试。测试人员不知道程序内部如何工作,只关注输入和输出。他们通过提供有效和无效的输入来检查程序是否产生正确的输出。黑盒测试的主要目标是确保程序满足其指定的需求,而不关心其内部实现。
白盒测试
白盒测试也称为结构测试或透明盒测试。测试人员了解程序的内部结构和逻辑,并基于这些信息设计测试用例。白盒测试的目的是检查程序的所有逻辑路径,确保每个语句和条件都被测试到。这种方法需要测试人员具备编程和调试技能
灰盒测试
灰盒测试是介于黑盒测试和白盒测试之间的一种测试方法。测试人员知道程序的某些内部信息,但不完全了解其结构和逻辑。 他们使用这些信息来设计测试用例,并关注输入和输出之间的关系。灰盒测试旨在结合黑盒和白盒测试的优点,既关注功能需求,也考虑程序的内部结构。
自动化测试
自动化测试是使用自动化工具来执行测试用例和验证软件质量的过程。 自动化测试可以显著提高测试效率,减少人为错误,并持续监控软件的质量。 自动化测试包括自动化单元测试、自动化集成测试、自动化系统测试等。 通过自动化测试,测试人员可以快速运行测试用例,获得结果,并及时发现问题。
测试阶段
单元测试
单元测试是对软件中的最小可验证单元进行检查和验证。在面向对象编程中,一个单元通常指一个方法、一个函数或一个类。单元测试的主要目标是确保每个单元按照预期工作,并且与其他单元之间的交互没有问题。单元测试通常由开发人员自己完成,并且是软件开发流程中的早期阶段。
集成测试
集成测试是将已经通过单元测试的单元(或模块)按照设计要求组装起来进行测试。目标是检测与接口有关的问题,例如一个模块与另一个模块之间的通信。集成测试通常在单元测试之后进行,以确保各个模块在集成到更大的系统中时能够正常工作
系统测试
系统测试是将已经通过集成测试的软件系统作为一个整体进行测试。这种测试的目的是检查系统是否满足其指定的需求,包括功能需求和非功能需求(如性能、安全性、可靠性等)。系统测试通常在集成测试之后进行,并且涉及对整个系统的全面检查 系统方案说明书来设计测试用例,常见的系统测试主要有恢复测试、安全性测试、压力测试、性能测试、可靠性测试、可用性测试、可维护性测试和安装测试。
性能测试
性能测试是对系统的性能进行评估,以确定其是否满足性能需求。这包括评估响应时间、吞吐量、资源利用率等。性能测试的目的是确保系统在实际运行环境中能够稳定、高效地运行
验收测试
验收测试也称为交付测试,是技术测试的最后一个阶段。它是在系统测试完成后,产品发布之前进行的测试活动。验收测试的目的是确保软件准备就绪,并且可以让最终用户将其用于执行软件的既定功能和任务。验收测试通常由用户或客户完成,以确保系统满足他们的需求。
其他测试
A/B测试
A/B测试是一种统计学上的假设检验,用于比较两个或多个版本的内容(如网页、应用界面、广告等)之间的效果差异。在这种测试中,通常会将用户随机分成几组,每组接收不同的版本内容,然后收集和分析用户的行为数据,以确定哪个版本更有效。A/B测试常用于优化网站或应用的转化率、点击率等指标。
Web测试
Web测试是对Web应用程序或网站进行的测试,以确保其按照预期工作,并满足用户的需求。Web测试通常包括功能测试、性能测试、安全测试、兼容性测试等多个方面。Web测试的目的是发现并修复潜在的问题,提高网站或应用的质量和用户体验。
链接测试
链接测试是Web测试的一部分,主要关注网站或应用中的链接是否有效。链接测试包括检查所有链接是否按指示正确链接到目标页面,以及这些目标页面是否存在。此外,链接测试还应确保Web应用系统中没有孤立的页面,即所有页面都应该有链接指向它们。
表单测试
表单测试是Web测试中的一项重要任务,主要关注用户提交表单时的操作。在表单测试中,测试人员会检查表单的提交功能是否完整,以及提交给服务器的信息是否正确。例如,表单中的日期、职业、省份、城市等字段的填写是否符合要求,以及如果表单只接受特定格式或字符集,这些限制是否得到了正确实施。
软件开发环境
软件工具集
环境集成机制
环境信息库
过程控制与消息服务器
环境用户界面
开发方法
结构化法
自顶向下,逐步分解
强调整体性全局性
工程化文档化
严格分阶段,阶段有成果
面向对象法
自底向上的开发方法
更好的复用性
关键在于建立一个全面、合理、统一的模型
分析、设计、实现三个阶段,界限不明确
更符合人的思维习惯
面向服务的方法
粗粒度、松耦合、标准化和构件化
三个抽象级别:操作【低】->服务【中】->业务流程【高】
原型法
用于需求不明确
仅用于需求阶段,而不是全流程
按功能分:水平原型(界面)、垂直原型(复杂算法)
按最终结果分:抛弃式原型、演化式原型
其他方法
形式化软件开发
净室软件工程
强调数学模型的使用
一般使用验证而非测试
统一过程方法【UP】
敏捷方法
基于架构的开发方法【ABSD】
于架构的软件设计(Architecture-Based Software Design,ABSD)是一种架构驱动的软件设计方法。它强调在软件设计过程中,架构先行,即在需求获取和分析尚未完成时就开始进行架构设计。这种方法的核心思想是由商业、质量和功能需求的组合来驱动软件架构设计。 ABSD方法的特点包括: 采用视角和视图来描述软件架构,以便更好地理解和设计软件系统。 使用用例(功能需求)和质量属性场景(质量需求)来描述需求,确保软件系统满足用户的实际需求。 ABSD方法的基础包括: 对系统进行功能分解,将软件系统划分为不同的模块和组件,以便更好地组织和管理代码。 通过选择适当的架构风格来实现质量和商业需求,确保软件系统在性能、可维护性、可扩展性等方面达到最佳状态。 使用软件模板设计软件结构,利用已有的软件系统结构来快速构建软件系统,提高开发效率。 ABSD的开发模型(ABSDM)将整个软件过程分成六个部分,包括架构需求、设计、文档化、复审、实现和演化。这些步骤相互迭代,形成一个循环往复的过程,确保软件系统的质量和稳定性。 总的来说,基于架构的软件设计(ABSD)是一种强调架构先行的软件设计方法,它可以帮助开发人员更好地理解和设计软件系统,提高软件的质量和可维护性。
需求工程与系统设计
业务流程设计
很少考
界面设计
置于用户控制之下
允许中断和撤销,不强迫用户
减少用户的记忆负担
直觉性的捷径,图标隐喻
保持界面的一致性
系统内保持一致
结构化设计
概要设计(外部设计)
确定模块间的调用关系,关注模块间接口
详细设计
模块内的设计,如确定算法
设计原则
高内聚,低耦合
多扇入,少扇出
面向对象设计
概念
类
实体类
对应数据表,如:学员类,课程类
控制类
用于控制用例工作的类,如:身份验证器
边界类
位于系统与外界的交接处,用于封装在用例内、外流动的信息或数据流。
如:窗体、报表、打印机、报表、二维码
多态
不同的对象收到同一消息可以产生完全不同的结果
设计原则/设计模式
需求工程
需求获取
需求获取主要是这三方面的需求: 功能需求 性能需求 约束设计
访谈、联合讨论会(JRP)、现场观摩
问卷调查、历史文档、抽样、原型、头脑风暴
需求分析
结构化分析
数据字典【核心】
功能建模
数据流图DFD
行为建模
状态转换图 STD
如下图: 
数据建模
ER
面向对象分析
用例模型
用例图
分析模型
类图
UML
构造快
事物
结构事物
结构事物:最静态的部分,包括:类、接口、协作、用例、活动类、构件和节点
行为事物
行为事物:代表时间和空间上的动作。包括:消息、动作次序、连接。
分组事物
分组事物:看成是个盒子,如:包、构件。
注释事物
注释事物:UML模型的解释部分。描述、说明和标注模型的元素。
关系
依赖
关联
泛化
实现
图
结构图
类图
类图(class diagram)描述一组类、接口、协作和它们之间的关系对象图(object diagram)描述一组对象及它们之间的关系 一个类从上到下分为三部分,分别是类名、属性和操作,类名是必须有的。 
关联
单向
(单向关联:如顾客拥有地址)顾客——>地址
无向
(双向关联:如顾客购买商品,商品卖给顾客)顾客——商品
聚合
car◇——>engine 成员是对象的一部分
组合
man◆——>head 成员是对象的一部分,但是如果头没了,嘴,和其他的一切都没了(整体对象可以控制成员对象的生命周期)
依赖
驾驶员------>car(表示由依赖(依赖一方的某个方法的实现需要被依赖对象)的一方指向被依赖的一方)
泛化
继承关系,子类拥有父类的一切 student——▷person
对象图
对象图(object diagram)描述一组对象及它们之间的关系、对象图描述了在类图中所建立的事物实例的静态快照。 对象只有两个分栏:名称和属性 
构件图
一个封装的类和它的接口
部署图
部署图表示了该软件系统如何部署到硬件环境中。用于描述系统硬件的物理拓扑结构以及在此结构上运行的软件的图形,部署图可以显示计算节点的拓扑结构、通信路径、节点上运行的软件、软件包含的逻辑单元(对象、类等)。 构件部署图的元素主要是节点(node)、组件(component)和关系(relationship)。 
包图
好的 UML 的包图是一种用于组织和描述系统结构的图形化工具。它将系统中的相关元素(如类、接口、组件等)分组到不同的包中,以展示系统的模块结构和依赖关系。 包图通常用来表示系统的高层次架构,每个包可以包含相关的类、接口和其他元素。包之间可以有依赖关系,这些依赖关系表示包之间的耦合程度。 包图的主要目的是帮助开发人员理解系统的整体结构,识别不同模块之间的关系,并进行系统的模块化设计和组织。通过包图,开发团队可以更好地规划和管理系统的开发过程,提高代码的复用性和可维护性。
制品图
系统的物理结构
组合结构图
行为图
用例图
用例图(Use Case Diagram)是由参与者(Actor)、用例(Use Case)以及 强调系统与外部参与者之间的交互 它们之间的关系构成的用于描述系统功能的视图,是被称为参与者的外部用户所能观察到的系统功能的模型图。 
关联
关联(参与者与用例)——>,
泛化
泛化(参与者与参与者),——▷
扩展
扩展(在这个行为上增加新的行为)------->《extend》
包含
包含(用例之间,一个用例包含了另外一个用例),------->《include》
交互图
顺序图
强调按时间顺序 
通信图(协作图)
通信图也是一种交互图,它强调收发消息的对象或参与者的结构组织。顺序图和通信图表达了类似的基本概念,但它们所强调的概念不同,顺序图强调的是时序,通信图强调的是对象之间的组织结构(关系)。 
定时图
强调实际时间
交互概览图
活动图
活动图:类似程序流程图 活动图是一种动态行为图,将业务流程或者计算流程抽象成一步步的数据流和控制流。它主要用于描述某一方法,某一用例的内部行为 
状态图
状态图: UML状态图,用于显示状态机,即描述一个对象所处的可能状态以及状态之间的转移。用状态图建模可以帮助开发人员分析复杂对象的各种状态的转换,以及对象何时执行怎样的动作。 
规则
定义
构造块命名
范围
范围:给一个名字以特定含义的语境
可见性
可见性:怎样使用或看见名字
完整性
完整性:事物如何正确、一致地相互联系
执行
执行:运行或模拟动态模型的含义是什么
公共机制
规格说明
规格说明:事物语义的细节描述,它是模型真正的核心
修饰
修饰:通过修饰来表达更多的信息
扩展机制
约束
构造型
标记值
4+1视图

逻辑视图
实现视图(开发视图)
描述了开发环境中软件的静态组织结构
部署视图(物理视图)
进程视图(过程视图)
用于捕捉设计的并发和同步特征
需求定义
严格定义法
适用于所有需求都能够被预先定义的情况
原型法
并非所有的需求都能在开发前被准确的说明
需求验证
方法
需求评审/需求测试
要求用户参与,签字
需求管理
变更控制
变更控制委员会(CCB)
项目经理、客户方、开发团队、监理方
版本控制
需求跟踪
需求跟踪是将单个需求和其他系统元素之间的依赖关系和逻辑联系建立跟踪, 这些元素包括各种类型的需求、业务规则、系统架构和构件、源代码、测试用例,以及帮助文件等。 需求跟踪一般采用需求跟踪矩阵做跟进工作,跟踪矩阵将从需求源头一直跟进到最终的软件产品。
把需求落实到后续的各个步骤中
建立与维护“需求-设计-编程-测试"之间的一致性
需求状态跟踪
测试和维护
软件测试
测试方法
静态测试【人工】
静态测试是一种软件测试方法,旨在检查源代码或其他软件开发文档而不运行程序。静态测试通常包括代码审查、静态分析和技术书写等活动,以发现潜在的问题和错误。这种测试方法有助于提前发现和纠正软件开发过程中的缺陷,从而提高软件质量并降低后续修复成本
手工测试,不利用计算机运行
桌前检查,代码审查,代码走查
动态测试【计算机运行】
动态测试是一种软件测试方法,通过运行软件程序来评估其行为和性能。在动态测试中,测试人员会提供各种输入,观察程序的输出,并检查程序是否按照预期运行。动态测试旨在发现软件中的错误、缺陷和性能问题,以确保软件符合规格说明并达到预期的功能要求
测试阶段
计算机执行测试
分类
白盒测试
白盒测试是软件测试中的一种方法,它涉及检查应用程序的内部结构、代码和设计。白盒测试通常由开发人员执行,旨在验证代码是否按照预期工作,并覆盖所有可能的路径和条件。这种测试方法可以帮助发现代码中的错误和潜在问题。
1. 控制流测试:
检查程序的控制流程,确保所有的路径都被执行到。
2. 数据流测试:
验证数据在程序中的流动和处理方式。
3. 语句覆盖:
确保每个代码语句至少被执行一次。
4. 判定覆盖:
确保每个条件语句的每个可能的结果都被覆盖。
5. 条件覆盖:
验证每个条件语句的真假两种情况都被覆盖。
6. 路径覆盖:
覆盖程序中所有可能的路径,包括不常见的路径。
黑盒测试
黑盒测试是一种软件测试方法,测试人员在不考虑程序内部结构和逻辑的情况下,通过检查软件的功能和用户界面来验证程序的正确性。黑盒测试关注于输入和输出之间的关系,而不关心内部代码实现细节。
软件维护
维护类型
正确性【修BUG】
修正测试阶段未发现的BUG
适应性【应变】
环境发生变化引发错误,进行调整
完善性【新需求】
增加功能,改善性能
预防性【针对未来】
针对未来
【专用】改【通用】
遗留系统
改造
高水平、高价值
相当于优化
继承
低水平、高价值
继承数据模型和功能模型,系统用新技术重新开发
集成
高水平、低价值
低价值体现为信息孤岛
淘汰
低水平、低价值
一般不采用,除非业务发生根本性变化,完全用不上了
项目管理
范围管理
过程
范围计划编制
范围定义
创建WBS
范围确认
范围控制
范围定义
输入
项目章程
项目范围管理计划
组织过程资产
批准的变更申请
输出
详细范围说明书
范围变更
变更流程
1、问题分析与变更描述
2、变更分析与成本计算
3、变更实现
变更申请的形式
口头的或书面的
直接的或间接的
外在的或内部的
法律、契约要求的或随意的
变更控制委员会(CCB)
产品部、计划管理/项目管理部、开发部
质量部、技术支持部、配置管理部
客户代表
进度管理
过程
制定时间管理计划、活动定义、活动排序、活动资源估算、活动历时估算、制定进度计划、进度控制
活动定义
在WBS的基础上进一步分解,得到活动
关键路径法
【计算题】最早最晚时间、关键路径、最短工期、总时差、压缩工期等
Gant图
直观简单,但不能表达活动间的复杂逻辑依赖关系
Pert图
能表达复杂逻辑
成本管理
盈亏平衡分析
【盈亏平衡时】销售额=固定成本+可变成本+税费
成本估算
成本估算是指估算出项目的总成本。
成本预算
成本预算是 将总的成本估算分配到各项活动和工作包 来建立一个成本的基线。
软件质量管理
影响软件质量的3组因素
产品修改
可理解性
可维修性
灵活性
可测试性
产品转移
可移植性
可再用性
互运行性
产品运行
正确性
健壮性
效率
完整性
可用性
风险
软件质量控制与质量保证
质量保证一般是每隔一定时间(例如,每个阶段末)进行的,主要通过系统的质量审计和过程分析来保证项目的质量。独特工具包括:质量审计和过程分析。
质量控制是实时监控项目的具体结果,以判断它们是否符合相关质量标准,制定有效方案,以消除产生质量问题的原因。
软件能力成熟度模型集成(CMMI)
软件能力成熟度模型集成(CMMI,Capability Maturity Model Integration)是一种用于评估和提高组织软件开发和管理过程能力的标准框架。CMMI 提供了一组最佳实践和指导原则,帮助组织制定和执行有效的软件过程,以实现持续的质量改进和项目成功。CMMI 涵盖了不同领域的能力成熟度,包括软件工程、系统工程、项目管理等,提供了一个综合的框架,帮助组织评估其软件开发能力水平,并制定改进计划以提高能力。CMMI 的目标是帮助组织实现更高水平的过程成熟度,从而提高软件开发的效率、质量和可靠性。
混乱级(初始级)
CMMI一级,完成级。在完成级水平上,企业对项目的目标与要做的努力很清晰。项目的目标得以实现。一般来说,公司的初始阶段就是一级,所以一级不需要认证。
已管理级(可重复级)
CMMI二级,管理级。在管理级水平上,企业在项目实施上能够遵守既定的计划与流程,有资源准备,权责到人,对相关的项目实施人员有相应的培训,对整个流程有监测与控制,并与上级单位对项目与流程进行审查。二级认证要求企业有一套简单的流程,一般稍微规范的企业都可以达到,认证价值不高。 项目级别的可管控
已定义级
CMMI三级,定义级。在定义级水平上,企业不仅仅能够对项目的实施有一整套的管理措施,并保障项目的完成;而且,企业能够根据自身的特殊情况以及自己的标准流程,将这套管理体系与流程予以制度化。三级认证有一套完整的流程,所以对一搬企业来说,三级是软件企业好的选择。 组织级,文档化,标准化
量化管理级
CMMI四级,量化管理级。量化管理级分析对软件工程和产品质量的详细度量数据,对软件过程和产品都有定量的理解与控制,管理有一个做出结论的客观依据。企业从三级过渡到四级是一个比较难的过程,而且从费用来说三级到四级和三级到五级来说,费用相差不大,大部分企业是从三级直接过渡到五级 量化管理
优化级
CMMI五级,优化级。优化管理级的量化反馈和先进的新思想、新技术促使过程持续不断改进。企业的项目管理达到了高的境界。企业不仅能够通过信息手段与数字化手段来实现对项目的管理,而且能够充分利用信息资料,对企业在项目实施的过程中可能出现的次品予以预防。能够主动地改善流程,运用新技术,实现流程的优化。
配置管理
配置项
基线配置项
产品组成部分的工作成果
需求文档、设计文档、源代码、测试用例等
非基线配置项
项目管理和机构支撑过程产生的
工作计划、项目质量报告、项目跟踪报告
注意:设备清单不是配置项;建模及开发工具不是配置项
文档管理
用户文档
系统功能描述、安装文档、使用手册、参考手册、操作员指南
系统文档
系统分析、系统设计、系统实现、系统测试的文档
版本管理
草稿版
版本号为0.X
正式版
第一个正式版1.0,之后可以是2.0,也可以是1.1
修改状态
版本号为1.XY,即比正常的版本号多一位
软件架构
架构概念
所处阶段
需求之后,设计之前
核心任务
将需求分配到各个构件上
定义1
软件系统提供了一个结构、行为和属性的高级抽象
定义2
干系人进行交流的手段
ADL架构描述语言
组件
组件(构件)是一个计算单元或数据存储。也就是说,组件是计算与状态存在的场所。在架构中,个构件可能小到只有一个过程或大到整个应用程序。
组件接口
连接件
连接件是用来建立组件间的交互以及支配这些交互规则的架构构造模块。
架构配置
架构配置或拓扑是描述架构的组件与连接件的连接图。
架构风格
定义
1、软件架构为软件系统提供了一个结构、行为和属性的高级抽象 2、软件架构风格是特定应用领域的惯用模式,架构定义一个词汇表和一组约束。 软件体系结构风格是描述某一特定应用领域中系统组织方式的惯用模式。体系结构风格定义一个系统家族,即一个体系结构定义一个词汇表和一组约束。词汇表中包含一些构件和连接件类型,而这组约束指出系统是如何将这些松件和连接件组合起来的。 体系结构风格反映了领域中众多系统所共有的结构和语义特性,并指导如何将各个模块和子系统有效地组织成一个完整的系统。对软件体系结构风格的研究和实践促进对设计的重用,一些经过实践证实的解决方案也可以可靠地用于解决新的问题。 例如,如果某人把系统描述为“客户/服务器"模式,则不必给出设计细节,我们立刻就会明白系统是如何组织和工作的。
数据流风格
共性
交互差;分阶段处理数据,上阶段的结果是下一阶段的输入
批处理风格
数据必须以整体方式传递
管道过滤器风格
管道-过滤器架构风格是一种面向数据流的软件体系结构,它将数据处理过程划分为一系列的管道和过滤器。 在这种架构中,每个过滤器负责执行特定的数据处理任务,例如数据转换、验证、过滤等,而管道则负责将数据从一个过滤器传输到另一个过滤器。每个过滤器都有明确的输入和输出接口,这使得过滤器可以独立设计、开发和测试,从而提高了系统的可维护性和可扩展性。 此外,管道-过滤器架构风格还具有很好的灵活性和可扩展性,因为新的过滤器可以很容易地添加到现有的管道中,以满足新的数据处理需求。同时,由于每个过滤器都是独立的,因此可以并行处理数据,从而提高了系统的性能。 总的来说,管道-过滤器架构风格是一种高效、灵活、可扩展的软件设计方法,特别适用于处理数据流的应用场景,如编译系统、网络通信、图像处理等领域。
优点
良好的复用性
可维护性和可扩展性较强
支持并发
经典实例
传统编译器、网络数据包处理
传统的编译器一般采用数据流架构风格,在这种架构中,每个构件都有一组输入和输出,数据输入构件,经过内部处理,然后产生数据输出。编译处理过程中,会分步将源代码一次一次的处理,最终形成目标代码,这与数据流架构风格相当吻合。
调用/返回风格
主程序/子程序
主程序/子程序架构风格是结构化开发时期的经典架构风格。这种风格一般采用单线程控制,把问题划分为若干处理步骤,构件即为主程序和子程序。子程序通常可合成为模块,模块可以进一步合成为系统。 在这种架构风格中,主程序负责程序的总体控制和流程调度,而子程序则负责执行具体的任务。子程序可以被主程序或其他子程序调用,以实现代码的重用和模块化。 主程序/子程序架构风格的主要特点是层次性和模块化。层次性体现在调用关系上,即子程序可以调用其他子程序,形成一个层次结构。模块化则体现在子程序的设计上,每个子程序都完成一个特定的功能,具有相对独立性。 此外,主程序/子程序架构风格还强调过程调用作为交互机制,即充当连接件。调用关系具有层次性,其语义逻辑表现为子程序的正确性取决于它调用的子程序的正确性。 总的来说,主程序/子程序架构风格是一种经典的软件设计方法,适用于大型、复杂的软件系统的开发,有助于提高软件的可读性、可维护性和可扩展性。
面向对象
优点
高度模块性、封装功能、代码共享、灵活性、易维护性、可扩充性
缺点
调用时需要知道对方对象ID,这样会产生紧耦合
分层
分层结构的特点是通过引入抽象层,在较低层次不确定的实现细节在较高层次会变得确定,并能够组织层间构件的协作,系统结构更加清。
B/S
分层表示架构
C/S
三层CS
分层数据和表示架构
表示层
表示层是应用的用户接口部分担负与应用逻辑间的对话功能。 它用于用户从工作站输入的数据,并显示应用输出的数据。 为使用户能直观地进行操作,一般要使用图形用户界面(GUI),在变更用户界面时, 只需改写显示控制和数据检查程序,而不影响业务逻辑。
功能层
功能层是应用的本体,它负责具体的业务处理逻辑,例如在制作订购合同时要计算合同金额。 表示层和功能层之间的数据互交要尽可能简洁。 例如,用户检索数据时,要将有关检索要求的信息一次性地传送给功能层,检索结果数 据也由功能层一次性地传送给表示层。
数据层
据层通常是数据库管理系统,负责管理对数据库数据的读写。 数据库系统必须能迅速执行大量数据的更新和检索。
二层C/S架构
分层数据架构
MVC
M(模型)
EJB
V(视图)
JSP
C(控制)
Servlet
MVP
MVVM
优点
利于复用;每一层只影响两层
缺点
分层不易;层次多了影响性能
独立构件风格
共性
不直接调用
进程通信
消息传递
事件驱动系统(隐式调用)
不直接调用,通过触发事件进行
例
调试器
调试器在设置断点时,其本质是在断点处设置一个事件监听函数,当程序执行到断点位置时,会触发并调用该事件监听函数,监听函数负责进行自动卷屏、刷新变量数值等动作。这是一个典型的回调机制,属于隐式调用的架构风格。
经典实例
现代集成编译环境(联动机制)、订阅-发布
虚拟机风格
共性
构建自定义语言的执行引擎
解释器
解释器风格的架构是一种软件架构风格,通常用于构建解释器或编译器等语言处理系统。在解释器风格的架构中,程序的核心是一个解释器,它负责解释输入的源代码并执行相应的操作。解释器通常由两个主要部分组成: 解析器(Parser):解析器负责将源代码转换为内部表示形式,通常是一种抽象语法树(AST)。解析器根据语言的语法规则将源代码分解为语法单元,并构建表示程序结构的树状数据结构。 执行器(Executor):执行器负责遍历和执行抽象语法树上的节点,根据每个节点的含义执行相应的操作。执行器的任务是实际执行程序的行为,可能是计算表达式的值、执行语句的操作,或者生成目标代码等。 解释器风格的架构通常简单直观,适用于需要动态执行代码的场景,例如脚本语言、领域特定语言(DSL)等。相比之下,编译器通常将源代码转换为目标代码,并在之后独立地执行目标代码,而不需要保留解释器在运行时的存在。
基于规则的系统
人工智能、DSS 适用于专家系统
经典实例
JVM、工作流引擎、自定义游戏关卡
仓库风格
在仓库风格中,有两种不同的构件: 中央数据结构说明当前状态, 独立构件在中央数据存储上执行
共性
以数据为中心,其它职能围绕数据展开
数据库系统
IDE集成开发环境更适合数据共享(数据库系统)。而不是黑板系统。 因为现代编译器主要关注编译过程和程序的中间表示,围绕程序的各种形态进行转化与处理。 这种情况下,可以针对程序的各种形态构建数据库,通过中心数据库进行转换与处理。根据上述分析,选项中列举的架构风格中,数据共享风格最符合要求
黑板系统
特别是涉及专家系统和人工智能的领域。在黑板架构中,系统被分为多个独立的组件,其中一个称为“黑板”(blackboard),它是一个共享的全局存储区域,用于存储问题的状态、数据和中间结果。 系统的其他组件(称为“知识源”)可以读取和写入黑板上的信息,根据自己的专业知识和规则来对问题进行分析和处理。这些组件可以独立工作,并通过黑板进行信息交换和协作。当一个组件对黑板进行修改时,其他组件可以根据新的信息状态来调整自己的行为。 黑板架构强调系统的分布式、协作和增量式解决问题的特点,适用于那些问题解决方案难以事先确定的领域。通过黑板架构,系统可以结合多个专家的知识和技能,实现复杂问题的协作求解。
信号处理、语音识别、问题规划等复杂问题
组成
黑板部分
知识源部分
控制部分
超文本系统
经典实例
现代集成编译环境(以语法树为中心)
其它风格
过程控制(闭环)
过程控制(闭环)架构风格是一种软件架构风格,强调系统内部各个组件之间的相互协作和通信。在这种架构中,系统的各个部分被组织成一个闭环,其中一个组件的输出会成为另一个组件的输入,形成一个循环反馈系统。这种架构通常用于需要实时监控和调整的系统,如控制系统、实时数据处理系统等。过程控制架构风格有助于系统实现高效的协作和响应能力。 采用闭环结构的软件通常由几个协作构件共同构成,且其中的主要构件彼此分开,能够进行替换与重用,但闭环结构通常适用于处理简单任务(如机器装配等)
反馈机制形成闭环
经典实例
空调控制、定速巡航
模型驱动架构(MDA)
计算独立平台(CIM)->平台独立模型(PIM)->平台相关模型(PSM)->代码(Code)
C2架构风格
构件和连接件都有一个顶部和一个底部。 构件之间不允许直连。 一个连接件可以和任意数目的其他构件和连接件连接。 当两个连接件进行直接连接时,必须由其中一个的底部到另一个的顶部。
基于架构的开发方法(ABSD)
基于架构的软件设计(ABSD)方法以构成软件架构的商业、质量和功能需求等要素来驱动整个软件开发过程,是.个自顶向下,递归细化的软件开发方法。 软件系统的体系结构通过该方法得到细化,直到能产生软件构件和类。它以软件系统功能的分解为基础,通过选择架构风格实现质量和商业需求,并强调在架构设计过程中使用软牛架构模板。采用ABSD方法,设计活动可以从项目总体功能框架明确后就开始。 因此该方法特别适用于开发一些下能预先决定所有需求的软件系统,如软件产品线系统或长生命周期系统等,也可为需求不能在短时间内明确的软牛项目提供指导。
特点
架构驱动 强调使用视角与视图描述架构 强调由业务、质量和功能需求的组合驱动架构设计 使用用例描述功能需求 使用质量场景描述非功能需求
三个基础
功能的分解 通过选择架构风格来实现质量和业务需求 软件模板的使用
开发过程
架构需求
需求获取
标识构件
需求评审
架构设计
提出架构模型
映射构件
分析构件相互作用
产生架构
设计评审
架构文档化
文档编写原则
使用者的角度进行编写
必须分发给所有与系统有关的开发人员
必须保证开发者手上的文档是最新的
输出成果
体系结构规格说明
测试体系结构需求的质量设计说明书
架构复审
目的
标识潜在的风险,及早发现架构设计中的缺陷和错误
内容
质量需求是否在设计中得到体现
体系结构能否满足需求
层次是否清晰
构件的划分是否合理
构件的设计是否满足功能与性能的要求
文档表达是否明确
架构实现
流程
分析与设计->构件实现->构件组装->系统测试
架构演化
应用场景
开发过程中需求变动
交付后需求变动
流程
需求变动归类->制订架构演化计划->修改、增加或删除构件->更新构件的相互作用->构件组装与测试->技术评审
面向服务的架构
特点
粗粒度
松耦合
标准化
WebService
ESB
ESB是由中间件技术实现并支持SOA的一组基础架构,它提供了一种基础设施 企业服务总线(Enterprise Service Bus,ESB)技术,其思想是提供一种标准的软件底层架构,各种程序组件能够以服务单元的方式“插入”到该平台上运行,并且组件之间能够以标准的消息通信方式来进行交互。
提供位置透明性的消息路由和寻址服务
提供服务注册和命名的管理功能
支持多种的消息传递范型
支持多种可以广泛使用的传输协议
支持多种数据格式及其相互转换
提供日志和监控功能
微服务
特点
挑战
微服务架构模式方案
云原生架构
云计算分类
SaaS【软件即服务】
基于多租户技术实现,直接提供应用程序
PaaS【平台即服务】
虚拟中间件服务器、运行环境和操作系统
laaS【基础设施即服务】
包括服务器、存储和网络等服务
云计算架构分层
[管理层】提供对所有层次云计算服务的管理功能。
【用户访问层】方便用户使用云计算服务所需的各种支撑服务,针对每个层次的云计算服务都需要提供相应的访问接口。
【应用层】提供软件服务,如:财务管理,客户关系管理,商业智能。
【平台层】为用户提供对资源层服务的封装,使用户可以构建自己的应用。
【资源层】提供虚拟化的资源,从而隐藏物理资源的复杂性。如:服务器,存储。
云原生架构设计原则
服务化原则:使用微服务
弹性原则:可根据业务变化自动伸缩
可观测原则:通过日志、链路跟踪和度量
韧性原则:面对异常的抵御能力
所有过程自动化原则:自动化交付工具
零信任原则:默认不信任网络内部和外部的任何人/设备/系统
架构持续演进原则:业务高速迭代情况下的架构与业务平衡
【云原生】基于分布部署和统一运管的分布式云,以容器、微服务、DevOps等技术为基础建立的一套云技术产品体系。
Web架构设计
架构
MVC,MVP,MVVM,REST,Webservice,微服务
缓存
MemCache, Redis, Squid
并发
集群、负载均衡、CDN
数据库
主从库(主从复制),内存数据库,反规范化技术NOSQL,分区(分表)技术,视图与物化视图
持久化
Hibernate,Mybatis
分布式存储
Hadoop,FastDFS,区块链
数据编码
XML,JSON
应用服务器
Apache,WebSphere, WebLogic, Tomcat.JBOSS,IIS
其它
静态化,有状态与无状态,响应式Web设计
软件产品线
定义
一个产品集合,这些产品共享一个公共的、可管理的特征集,这个特征集能满足特定领域的特定需求
技术构成
软件工程
领域工程
软件架构技术
特定领域软件架构(DSSA)
特定领域软件架构(Domain Specific Software Architecture,DSSA) 以一个特定问题领域为对象,形成由领域参考模型、参考需求、参考架构等组成的开发基础架构,其目标是支持一个特定领域中多个应用的生成。 DSSA的基本活动包括领域分析、领域设计和领域实现。 其中领域分析的主要目的是获得领域模型,领域模型描述领域中系统之间共同的需求,即领域需求; 领域设计的主要目标是获得DSSA,DSSA描述领域模型中表示需求的解决方案;领域实现的主要目标是依据领域模型和DSSA开发和组织可重用信息,并对基础软件架构进行实现
DSSA基本活动及产出物
领域【分析】
建立领域模型
领域【设计】
获得DSSA
领域【实现】
开发和组织可复用信息
参与DSSA的人员
【领域专家】提供咨询意见的用户、分析、设计等的人员
【领域分析人员】有经验的系统分析员
【领域设计人员】有经验的软件设计人员
(领域实现人员】有经验的程序设计人员
三层次模型
领域开发环境
领域架构师
领域特定的应用开发环境
应用工程师
应用执行环境
操作员
建立方式
基于现有产品演化式
风险最低
基于现有产品革命式
全新产品线演化式
全新产品线革命式
风险最高
构件和中间件技术
软件复用
软件复用【重用】是多次不同的软件开发过程中重复使用相同或相似软件元素(需求分析文档设计过程、设计文档、程序代码、测试用例、领城知识)的过程。
构件的定义
定义1:软件构件是一种组装单元,它具有规范的接口规约和是式的语境依赖。软件构件可以被独立地部署并由第三方任意地组装。 定义2:构件是某系统中有价值的、几乎独立的并奂的一个部分,它在良好定义的体系结构语足某清晰的功能。 定义3:构件是一个独立发布的功能部分,可以通过其接口访问它的服务。
构件的复用
检索与提取构件
1、基于关键字的检索
2、刻面检索法
3、超文本检索法
理解与评价构件
必须要求构件的开发过程遵循公共标准
修改构件
理想状态是直接复用构件库中现成的构件
组装构件
组装的三种方式
基于功能的组装
基于功能的组装:采用子程序调用和参数传递的方式将构件组装起来
基于数据的组装
基于数据的组装:仍然是传统的子程序调用与参数传递。但它所依赖的软件设计方法不再是功能分解,而是面向数据的设计方法,例如,Jackson系统开发方法。
面向对象的组装
面向对象的组装:如果从类库中检索出来的基类能够完全满足新系统的需求,则可以直接应用。否则,必须以基类为父类,生成相应的子类,以满足新系统的需求。
构件组装失配问题
由构件引起的失配
由构件引起的失配,包括由于系统对构件基础设施、构件控制模型和构件数据模型的假设存在冲突引起的失配;
由连接子引起的失配
由连接子引起的失配,包括由于系统对构件交互协议、连接子数据模型的假设存在冲突引起的失配;
由于系统成分对全局体系结构的假设存在冲突引起的失配
由于系统成分对全局体系结构的假设存在冲突引起的失配等。要解决失配问题,首先需要检测出失配问题,并在此基础上通过适当的手段消除检测出的失配问题。
系统构件组装的三个层次
定制
集成
扩展
三大构件标准
COBRA
DNA 2000
J2EE
会话Bean:实现业务逻辑,负责完成服务端与客户端的交互
实体Bean:实现0/R映射,简化数据库开发工作
消息驱动Bean:处理并发与异常访问
中间件
中间件技术的优点
(1)面向需求 (2)业务的分隔和包容性 (3)设计与实现隔离 (4)隔离复杂的系统资源 (5)符合标准的交互模型 (6)软件复用 (7)提供对应用构件的管理
中间件分类
通信处理(消息)中间件、 事务处理(交易)中间件、 数据存取管理中间件Web服务器中间件、 安全中间件、 跨平台和架构的中间件、 专用平台中间件、 网络中间件
质量属性
性能
参数
响应时间、吞吐量
策略
优先级队列、资源调度
经典场景
用户的交易请求需要在0.5秒内得到响应
可用性
参数
平均无故障时间、平均故障间隔时间
策略
冗余、心跳线
经典场景
能够在3秒内自动切换至备用站点并恢复正常运行
安全性

策略
追踪审计、加密
经典场景
能够抵挡恶意的入侵破坏行为
可惨改性
策略
接口-实现分离、信息隐藏
经典场景
某构件替换工作需要在5人/月内完成
易用性
策略
完成某个期望任务的容易程度和系统所提供的用户支持的种类
经典场景
(1)界面友好 (2)新用户学习使用系统时间不超过2小时
可测试性
策略
通过测试揭示软件缺陷的容易程度
经典场景
提供远程调试接口,支持远程调试
架构评估
概念
敏感点
一个或多个构件所具有的特性能影响系统的某个质量属性 研究敏感点可使设计人员或分析员明确在搞清楚如何实现质量目标时应注意什么。
权衡点
影响多个质量属性的特性,是多个质量属性的敏感点 提升安全级别,提高了安全性,但降低了性能(对冲性) 权衡点一定是敏感点,敏感点未必是权衡点 例如,改变加密级别可能会对安全性和性能产生非常重要的影响。提高加密级别可以提高安全性,但可能要耗费更多的处理时间,影响系统性能。如果某个机密消息的处理有严格的时间延迟要求,则加密级别可能就会成为一个权衡点。
风险点
系统中的风险 由于系统的业务逻辑目前尚不清楚,…,会影响系统可修改性
非风险点
****要求是可以接受的 例:假设每秒中用户查询请求的数量是10个,处理请求的时间为30毫秒,则“在1秒内完成用户的查询请求”这一要求是可以实现的
评估方法
主观
调查问卷
检查表
较主观
基于场景评估
SAAM
SAAM:最初用于分析架构可修改性,后扩展到其他质量属性。 
ATAM
ATAM:在SAAM的基础上发展起来的,主要针对性能、实用性安全性和可修改性,在系统开发之前,对这些质量属性进行评价和折中 
场景和需求搜集
架构视图和场景实现
属性模型构造和分析
折中
CBAM
较客观
度量
过于理论,难实施
可靠性
概念
平均无故障时间(MTTF)
失效率(1/MTTF)
平均故障修复时间(MTTR)
平均故障间隔时间(MTBF)
MTTR+MTTF
系统可用性
MTTF/(MTTR+MTTF)
串并模型
串联模型

并联模型

串并混合
分析清楚先串后并,还是先并后串,再计算
可靠性设计
避错技术
在系统正式运行之前避免、发现和改正错误
技术评审、系统测试、正确性证明
不可避免所有的错误
检错技术
检测系统是否出错的技术
特点
成本低于容错,但不能自动解决问题需要人工干预
四要素
检测对象
检测点应是容易出错的地方
检测内容选取有代表性的
检测延时
实现方式
判断返回结果是否超出正确范围,超出则进行异常处理
计算运行时间,超出时间则认为出错(超时)
通过状态标志位判断是否出错
处理方式
查出故障-停止软件运行-报警
容错技术
冗余技术
结构冗余(硬件冗余,软件冗余)
信息冗余
校验码
CRC
循环冗余校验(Cyclic Redundancy Check,CRC)是一种根据网络数据包或电脑文件等数据产生简短固定位数校验码的一种散列函数,主要用来检测或校验数据传输或者保存后可能出现的错误。它是利用除法及余数的原理来作错误侦测的。 例如: 若信息码字为111000110,生成多项式G(x)=x5+x3+x+1,则计算出的CRC校验码为?,其中X5是X的5次方的意思 1、将生成多项式的系数作为除数(101011) 2、生成多项式的最高幂次数(5)作为检验码的位数。 3、将信息码左移生成多项式的最高幂次数(5)位,作为被除数。 4、执行模2除法,即异或操作。 5、等到(5位)余数即为校验码 
时间冗余
重复多长进行相同的计算
软件容错技术
N版本程序设计
每个版本的需求说明相同,但由不同的人设计实现
实行多数表决机制
静态冗余
恢复块方法
动态冗余
每个恢复块的功能相同,但设计有差异,一个出现故障则替换为另一个
防卫式程序设计
try catch
输入参数校验
双机容错技术
双机热备
一台运行,一台待命
双机互备
两台都运行,互为备份
双机双工
集群前身
集群技术
降低复杂度
软件复杂性高则缺陷数急剧上升
策略
简化软件结构
缩短程序代码长度
优化软件数据流向
计算机系统基础
系统配置与性能评价
性能指标
网络性能
其他性能
计算机性能
性能设计
性能改进原则
阿姆达尔解决方案
系统性能评价
时钟频率法
指令执行速度法
等效指令速度法
数据处理速率法
综合理论性能法
基准程序法
程序中用得最多、最频繁的部分核心程序作为评估计算机性能的标准程序,称基准测试程序 全面测试系统性能 准确度排名:真实的程序>核心程序>小型基准程序>合成基准程序
真实的程序
核心程序
程序中用得最多、最频繁的部分核心程序作为评估计算机性能的标准程序,称基准测试程序
小型基准程序
合成基准程序
计算机系统
计算机硬件

处理器
CPU的组成
运算器
算术逻辑单元ALU:
数据的算术运算和逻辑运算
累加寄存器AC:
通用寄存器,为ALU提供一个工作区,用在暂存数据数据
缓冲寄存器DR:
写内存时,暂存指令或数据
状态条件寄存器PSW:
存状态标志与控制标志
控制器
程序计数器PC:存储下下一条要执行指令的地址
指令寄存器IR:存储即将执行的指令
指令译码器ID:对指令中的操作码字段进行分析解释
时序部件:提供时序控制信号
指令集
CISC
CISC(Complex Instruction Set Computer)是一种计算机体系结构,其指令集包含许多复杂的指令,每条指令可以执行多个低级操作。CISC 架构设计旨在提供丰富的指令集,以便能够完成复杂的任务,减少编程工作量并提高程序执行效率。CISC 设计通常包括多种寻址模式、多种数据类型和复杂的指令格式。 相对于 RISC(Reduced Instruction Set Computer)架构,CISC 架构的特点是指令集更为复杂,指令执行时间不均匀,指令长度不固定等。尽管现代处理器在设计上通常倾向于 RISC 架构,但一些传统的处理器仍然采用 CISC 设计。
RISC
例子ARM
对比

存储系统
局部性原理
它是层次化存储结构的基础(理论支撑)
时间局部性
刚被访问过的指令,很快再次被访问
空间局部性
刚被访问过的空间,其邻近空间很快被访问
缓存
片上缓存
片外缓存
主存(内存)
通常采用DRAM,数据会周期性刷新
外存
磁盘
存取时间计算
移臂调度算法
最短寻道时间优先
先来先服务
电梯算法(双向扫描)
扫描算法(单向扫描)
光盘
U盘
计算机软件
系统软件
应用软件
嵌入式技术
嵌入式系统概述
嵌入式系统
定义
1.嵌入式系统是以应用为中心、以计算机技术为基础,并将可配置与可裁剪的软、硬件集成于一体的专用计算机系统,需要满足应用对功能、可靠性、成本、体积和功耗等方面的严格要求。 2. 从计算机角度看,嵌入式系统是指嵌入各种设备及应用产品内部的计算机系统。它主要完成信号控制的功能,体积小、结构紧凑,可作为一个部件埋藏于所控制的装置中。 3.一般嵌入式系统由嵌入式处理器、相关支撑硬件、嵌入式操作系统、支撑软件以及应用软件组成。
组成架构
嵌入式系统开发设计
嵌入式系统组成部分
嵌入式微处理器(MPU)
存储器(RAM/ROM)
内(外)总线逻辑
定时/计数器
看门狗电路
定时器溢出则中断,系统复位处理。
外部设备(UART、LED等)
其他部件
I/0接口
嵌入式数据库
EDBMS的作用主要是解决移动计算环境下数据的管理问题,移动数据库是移动计算环境中的分布式数据库。 嵌入式数据库管理系统一般只提供本机服务接口且只为前端应用提供基本的数据支持。
对比传统数据库的特点
与传统数据库相比,嵌入式数据库系统有以下几个主要特点: 嵌入式 实时性 移动性 伸缩性
按存储位置不同分类
基于内存方式(Main Memory DatabaseSystem,MMDB)
基于内存的数据库系统(Main Memory Database System, MMDB)是嵌入式数据库中的一种特殊类型,其特点是将整个数据库存储在计算机的主内存中,而不是像传统数据库那样存储在磁盘或其他持久化存储设备上。由于主内存的访问速度比磁盘快得多,因此MMDB能够提供非常高的查询性能和事务处理速度。 MMDB的主要优势包括: 高性能:由于数据存储在内存中,MMDB能够快速地执行查询和更新操作,从而满足高并发、低延迟的应用需求。 简单性:MMDB通常没有复杂的存储结构和索引机制,因为内存访问是均匀的,不需要考虑磁盘I/O的瓶颈。 可伸缩性:随着系统内存容量的增加,MMDB能够处理更多的数据和更大的负载。 实时性:由于数据始终驻留在内存中,MMDB非常适合需要实时响应的应用场景。 故障恢复:由于数据存储在内存中,MMDB通常需要配合持久化技术(如写前日志、内存快照等)来确保数据的可靠性和故障恢复能力。 资源限制:由于MMDB完全依赖于内存,因此其可扩展性受到系统可用内存的限制。 数据持久性:与传统数据库相比,MMDB需要额外的机制来确保数据的持久性,因为内存中的数据在系统重启或崩溃后会丢失。 数据一致性:在分布式系统中,MMDB需要解决数据复制和一致性问题,确保不同节点上的数据副本保持一致。 嵌入式数据库中的MMDB通常用于需要高性能、低延迟和实时响应的场景,如金融交易系统、实时分析系统、物联网(IoT)应用等。然而,它们也面临着数据持久性、一致性和可用性等挑战,需要相应的技术和策略来解决。
基于文件方式(File Database,FDB)
基于网络方式(Netware Database,NDB)
基于网络的嵌入式数据库(Netware Database,NDB)是一种特殊类型的数据库系统,它结合了嵌入式数据库和基于网络的数据库技术的特点。NDB的设计目标是支持移动计算、分布式系统和嵌入式设备上的数据管理。 NDB的主要特点包括: 网络支持:NDB是基于网络的,这意味着它可以在不同的设备、节点或系统之间共享和传输数据。这允许嵌入式设备或远程用户访问和操作数据库中的数据。 嵌入式集成:NDB通常与嵌入式操作系统和应用程序紧密集成,以支持移动计算或特定计算环境中的数据管理需求。它可以在有限的资源条件下运行,并且具有较小的代码大小和内存占用。 客户端-服务器架构:NDB通常采用客户端-服务器架构,其中嵌入式设备或远程设备作为客户端,通过网络连接到远程数据库服务器。客户端负责提供接口给嵌入式程序,而服务器负责维护和管理数据库数据。 数据模型:NDB使用特定的数据模型来组织和管理数据。这可以是关系模型、层次模型或其他适合嵌入式环境的模型。数据模型定义了数据的结构、关系和操作方式。 数据同步和复制:由于NDB通常用于分布式环境,它支持数据同步和复制功能,以确保不同节点之间的数据一致性和可靠性。 优化和裁剪:由于嵌入式环境的资源有限,NDB通常具有可优化和可裁剪的特性,以适应不同的硬件和性能要求。 NDB通常用于嵌入式系统、移动设备、物联网设备和分布式系统中,以支持实时数据管理、远程访问和数据同步等需求。然而,由于嵌入式环境的限制,NDB可能需要在性能和功能之间进行权衡,以满足特定的应用需求。
嵌入式操作系统
特点
实时性分类
非实时系统:
响应时间没有严格要求
如分时操作系统,基于公平性原则,各进程分享处理器,获得大致相同的运行时间
嵌入式实时操作系统的评价指标:
中断响应和延迟时间、任务切换时间、信号量混洗时间等 中断响应和延迟时间: 中断响应:当外部设备或内部事件(如定时器溢出)需要CPU的注意时,它会向CPU发送一个中断信号。CPU在接收到这个信号后,会暂时停止当前的工作,转而去处理这个中断。这个过程就叫做中断响应。 中断延迟时间:从外部设备或内部事件产生中断信号,到CPU开始响应并处理这个中断信号所经过的时间,称为中断延迟时间。这个时间包括了硬件检测中断信号、保存当前执行上下文(如寄存器状态、程序计数器值等)、跳转到中断处理程序等步骤所花费的时间。 任务切换时间: 在多任务操作系统或实时系统中,任务切换(或上下文切换)是一个常见的过程。当CPU从一个任务(或线程、进程)切换到另一个任务时,需要保存当前任务的状态(如寄存器值、内存管理信息、程序计数器等),并恢复下一个任务的状态。这个切换过程所花费的时间就是任务切换时间。 任务切换时间通常包括保存和恢复上下文的时间、更新任务调度信息的时间以及可能的缓存失效导致的额外时间。 信号量混洗时间: 信号量是一种用于同步和互斥的机制,常用于多线程或多进程环境中。当多个线程或进程试图访问共享资源时,信号量可以用来确保资源在任意时刻只被一个线程或进程访问。 信号量混洗时间可能不是一个标准的术语,但根据上下文,它可能指的是与信号量相关的操作所引入的额外时间开销。这包括获取信号量(即P操作或wait操作)和释放信号量(即V操作或signal操作)所花费的时间,以及可能的上下文切换(如果信号量操作导致线程或进程阻塞或唤醒)。
RTOS实时操作系统
硬实时系统:
系统对响应时间有严格要求,若响应时间不能满足,是绝对不允许的,会引起系统的崩溃或致命的错误 这种操作系统通常用于航空航天、军事、医疗等领域。
软实时系统:
软实时操作系统:软实时操作系统要求在规定的时间内对输入做出响应,但响应时间可以适当放宽。 这种操作系统通常用于工业自动化、通信、消费电子等领域。
混合实时操作系统
混合实时操作系统:混合实时操作系统结合了硬实时和软实时的特点,既要求在规定的时间内对输入做出响应,又可以根据实际情况适当放宽响应时间。 这种操作系统通常用于汽车、机器人等领域。
嵌入式实时操作系统调度算法
优先级调度算法
系统为每个任务分配一个相对固定的优先顺序。
抢占式优先级调度算法
根据任务的紧急程度确定该任务的优先级。大多数RTOS调度算法都是抢占方式(可剥夺方式)。
最早截止期调度算法(EDF算法)
最早截止时间调度算法(EDF)将任务的截止时间作为调度的关键,任务的截止时间越早,其被调度的优先级就越高。
最晚截止期调度算法
最晚截止时间调度算法根据任务的最晚可能开始时间来安排调度,截止时间越紧迫的任务(即最晚可能开始时间越早),其调度优先级越高。
概要
假设有一个实时系统,其中包含四个任务:Task A、Task B、Task C和Task D。每个任务都有一个特定的开始时间和截止时间,并且每个任务都需要一定的执行时间来完成。 以下是每个任务的详细信息: - Task A:开始时间1秒,截止时间4秒,执行时间2秒 - Task B:开始时间2秒,截止时间5秒,执行时间1秒 - Task C:开始时间3秒,截止时间6秒,执行时间2秒 - Task D:开始时间4秒,截止时间7秒,执行时间1秒 最早截止期调度算法(EDF算法)示例: - 初始时,系统中没有任务就绪。 - 在1秒时,Task A就绪。由于没有其他任务,调度程序选择Task A进行执行。 - 在2秒时,Task B就绪。此时,Task A仍在执行。调度程序检查Task B的截止时间(5秒),发现它比Task A的截止时间(4秒)晚,因此继续执行Task A。 - 在3秒时,Task A完成,Task C就绪。由于Task C的截止时间(6秒)比Task B的截止时间(5秒)晚,调度程序选择Task B执行。 - 在4秒时,Task B完成,Task D就绪。此时,Task C仍在执行。调度程序比较Task C和Task D的截止时间,Task C的截止时间更早,因此继续执行Task C。 - 在5秒时,Task C完成,调度程序选择Task D执行。 最晚截止期调度算法示例: - 与EDF算法类似,初始时,系统中没有任务就绪。 - 在1秒时,Task A就绪。由于没有其他任务,调度程序选择Task A进行执行。 - 在2秒时,Task B就绪。此时,调度程序会检查Task B的最晚可能开始时间,即其截止时间减去执行时间(5秒-1秒=4秒)。由于当前时间(2秒)早于这个最晚可能开始时间,调度程序选择继续执行Task A。 - 在3秒时,Task A完成,Task C就绪。调度程序会检查Task C的最晚可能开始时间(6秒-2秒=4秒),同样发现当前时间(3秒)仍早于这个时间点,因此继续等待。 - 在4秒时,Task B的最晚可能开始时间已过,此时Task C的就绪时间也到了,调度程序需要根据具体算法来决定是执行Task B还是Task C。如果算法优先考虑最晚截止时间,则可能选择Task C(因为它有更长的执行时间),如果算法还考虑其他因素(如任务重要性),则可能有不同的选择。 - 随后,调度程序继续按照每个任务的最晚可能开始时间和截止时间来选择任务执行。 通过这个示例,可以看出EDF算法关注的是任务的截止时间,而最晚截止期调度算法关注的是任务的最晚可能开始时间。在实际应用中,根据系统的具体需求和任务特性,选择合适的调度算法非常重要。
操作系统内核架构
宏内核
宏内核(Monolithic Kernel)是一种操作系统架构,其特点是操作系统的核心代码都被编译和链接成一个单一的大程序,并在一个大的内核地址空间中运行。这个程序包含了进程管理、内存管理、设备管理、文件管理、设备驱动程序等各种功能模块的代码,以及向用户应用软件提供接口的系统API函数。所有这些代码都在处理器的特权模式下运行,这种模式通常被称为内核模式。 宏内核的一个主要优点是效率高、性能强,因为所有的服务都在内核中直接实现,不需要进行进程间通信或上下文切换。此外,由于所有代码都在一个大的程序中,因此设计相对简单。然而,宏内核也有一些缺点,例如代码规模大、难以修改和维护,以及由于所有服务都在内核中运行,因此任何一个服务的问题都可能导致整个系统的崩溃。 Linux内核是一个典型的宏内核,许多其他的操作系统,如安卓和iOS,也使用宏内核架构。尽管有一些操作系统采用微内核架构,但宏内核仍然是目前最普遍使用的操作系统架构之一。
微内核
微内核(Microkernel)是另一种操作系统架构,与宏内核相反,微内核将操作系统的功能划分为尽可能小的、独立的服务,每个服务都在独立的进程空间中运行。微内核仅提供最基础的服务,如进程间通信(IPC)、内存管理、进程调度和低级I/O等,而将其他如设备驱动、文件系统、网络协议等功能都放在用户态实现。 微内核的设计理念是将系统服务的实现与系统的基本操作规则区分开来,通过模块化设计,提高系统的可扩展性和可靠性。由于每个服务都在独立的进程空间中运行,因此一个服务的崩溃不会影响其他服务的运行,这增强了系统的稳定性。此外,由于服务可以根据需求动态加载和卸载,因此微内核也提供了更好的灵活性。 然而,微内核也有其缺点。由于服务之间需要进行进程间通信,这会增加额外的开销和延迟。此外,由于需要将更多的功能放在用户态实现,这也可能增加系统的复杂性。 微内核的典型代表是QNX和Mach操作系统。尽管微内核在某些特定领域如分布式系统和嵌入式系统中有一定的优势,但在大多数通用操作系统中,宏内核仍然是主流架构。
鸿蒙(Harmony OS)
嵌入式硬件
嵌入式系统发展历程
第一阶段:单片微型计算机(SCM)阶段,即单片机时代。
第二阶段:微控制器(MCU)阶段。
第三阶段:片上系统(SoC)。
第四阶段:以Internet为基础的嵌入式系统。
第五阶段:在智能化、云技术推动下的嵌入式系统。
嵌入式微处理器分类
微处理器(MPU)
将微处理器装配在专门设计的电路板上,只保留与嵌入式应用有关的母板功能。微处理器一般以某一种微处理内核为核心,每一种衍生产品的处理器内核都是一样的,不同的是存储器和外设的配置及封装。
微控制器(MCU)
又称为单片机。与MPU 相比MCU的最大优点在于单片化,体积大大减小,从而使功耗和成本下降,可靠性提高。
信号处理器(DSP)
DSP 处理器对系统结构和指令进行了特殊设计(通常,DSP 采用一种哈佛结构),使其适合于执行 DSP 算法,编译效率较高,指令执行速度也较高,适合数字信号处理。
图形处理器(GPU)
GPU 是图形处理单元的缩写,是一种可执行3D图形渲染等图修的半导体芯片(处理器)。 GPU 可用于个人电脑、工作站、游戏机和一些移动设备上做图像和图形相关运算工作的微处理. 它可减少对 CPU的依赖,并执行部分原本属于CPU的工作,尤其是在3D图形处理中,GPU采用了核心技术(如: 硬件T&L、纹理压缩等)保证了3D快速渲染的能力。 GPU目前已广泛应用于各行各业,GPU中集成了司时运行在GHz的频率上的成干上万个core,可以高速处理图像数据。最新的GPU峰值性能可高达100 TFlops以上。
片上系统(SOC)
追求产品系统最大包容的集成器件,包含了完整系统并有嵌入式软件的全部内容。 它是一个产品,是一个有专用目标的集成电路其中包含完整系统并有嵌入软件的全部内容。 同时它又是一种技术,用以实现从确定系统功能开始,到软/硬件划分,并完成设计的整个过程 成功实现了软硬件的无缝结合,直接在微处理器片内嵌入操作系统的代码模块。 减小了系统的体积和功耗、提高了可靠性和设计生产效率。 狭义角度:信息系统核心的芯片集成,是将系统关键部件集成在一块芯片上; 广义角度:SoC是一个微小型系统,如果说中央处理器(CPU)是大脑,那么SoC就是包括大脑、心脏、眼睛和手的系统。 国内外学术界一般倾向将SoC定义为将微处理器、模拟IP核、数字IP核和存储器(或片外存储控制接口)集成在单一芯片上,它通常是客户定制的,或是面向特定用途的标准产品。
嵌入式微处理器体系结构
冯诺依曼结构
指令与数据存储器合并在一起 指令与数据都通过相同的数据总线传输 典型应用:常规PC处理器
哈佛结构
指令与数据分开存储,可以并行读取,有较高数据的吞吐率 有指令和数据的数据总线与地址总线4条总线 典型应用:嵌入式系统处理器(DSP)
总线系统
总线的特点
分时,半双工
总线分类
按传输内容分
地址总线AB
地址总线AB(Address Bus)是计算机中用于传送地址信息的一组总线。它的主要作用是在CPU与外部存储器或I/O端口之间进行地址信息的传输。地址总线通常是单向三态的,意味着地址信息只能从CPU传向外部设备,不能反向传输。 地址总线的位数决定了CPU可以直接寻址的内存空间大小。例如,如果地址总线是16位的,那么CPU可以直接寻址的内存空间就是2^16=64KB。同理,如果地址总线是32位的,那么CPU可以直接寻址的内存空间就是2^32=4GB。因此,地址总线的位数是计算机系统中一个重要的性能指标。 地址总线的工作原理是在CPU执行指令时,将需要访问的内存或I/O设备的地址信息放在地址总线上,然后通过外部设备对地址信息进行解码,找到对应的内存单元或I/O设备进行数据的读写操作。 需要注意的是,地址总线并不是用来传输实际的数据信息的,而是用来指定数据应该存放或读取的内存位置或I/O设备的地址。实际的数据传输是通过数据总线来完成的。
数据总线DB
数据总线DB(Data Bus)是计算机系统中用于传输数据信息的主要通道。它是双向三态形式的总线,既可以把CPU的数据传送到存储器或I/O接口等其它部件,也可以将其它部件的数据传送到CPU。 数据总线的位数与微处理器的字长密切相关,位数越宽,一次性可传输的数据量越大,计算机的整体执行速度就会越快。例如,如果数据总线是8位的,那么一次可以传输一个字节的数据;如果数据总线是32位的,那么一次可以传输4个字节的数据。 在计算机系统中,数据总线是与微处理器、存储器以及I/O接口等部件直接相连的重要通道。CPU通过数据总线对存储器或I/O接口进行读写操作,实现数据的传输和交换。同时,数据总线也是实现计算机系统中各部件之间数据通信的基础。 需要注意的是,数据总线与地址总线和控制总线共同构成了计算机的三类系统总线。这三类总线协同工作,实现了计算机系统中各部件之间的信息传输和控制。
控制总线CB
控制总线CB(Control Bus)是计算机系统中所有控制信号的总称,用于传送控制信号和时序信号。控制总线是计算机系统中的一类总线,与数据总线和地址总线一起构成了计算机的三类系统总线。 控制总线的主要作用是控制对数据线和地址线的访问和使用。在控制总线中,传送的控制信号包括微处理器送往存储器和I/O接口电路的读/写信号、片选信号、中断响应信号等,以及其它部件反馈给CPU的中断申请信号、复位信号、总线请求信号、限备就绪信号等。 控制总线的传送方向由具体控制信号而定,一般是双向的。控制总线的位数要根据系统的实际控制需要而定,通常比数据总线和地址总线的位数要少。实际上控制总线的具体情况主要取决于CPU。 总的来说,控制总线是计算机系统中实现各部件之间协同工作的重要基础,它负责协调和控制各个部件之间的数据传输和操作时序,确保计算机系统能够正确地执行各种指令和操作。
按传输宽度分
串行总线
串行总线:数据是一位一位地进行传输的,在传输中每一位数据都占据一个固定的时间长度。【长距离,传输波特率可调整,正确性依赖于校验码,数据传输方式可以使用多种】
并行总线
将数据字节的各位用多条数据线同时进行传送。【短距离】
嵌入式存储部件

寄存器组
Cache
主存
外存
人工智能芯片
定义
从广义上讲只要能够运行人工智能算法的芯片都叫作 AI 芯片。 但是通常意义上的 AI 芯片指的是针对人工智能算法做了特殊加速设计的芯片,现阶段,这些人工智能算法一般以深度学习算法为主,也可以包括其他机器学习算法。
按技术架构分类
GPU
FPGA(现场可编程门阵列)
ASIC(专用集成电路)
类脑芯片
关键特征
新型的计算范式
AI计算既不脱离传统计算,也具有新的计算特质。
训练和推断
AI 系统通常涉及训练和推断过程
大数据处理能力:
满足高效能机器学习的数据处理要求。
数据精度:
降低精度的设计。
可重构的能力:
针对特定领域而不针对特定应用的设计,可以通过重新配置,适应新的AI算法架构和任务。
开发工具:
AI芯片需要软件工具链的支持。
嵌入式开发
嵌入式软件的设计
低功耗设计
嵌入式软件设计层面的功耗控制主要可以从以下方面展开: 1.软硬件协同设计,即软件的设计要与硬件的匹配,考虑硬件因素。 2.编译优化,采用低功耗优化的编译技术。 3.减少系统的持续运行时间,可从算法角度进行优化。 4.用“中断”代替“查询” 5.进行电源的有效管理。
嵌入式开发和传统软件开发的差异
1.嵌入式软件开发是在宿主机(PC机或工作站)上使用专门的嵌入式工具开发,生成二进制代码后,需要使用工具卸载到目标机或固化在目标机储存器上运行。嵌入式软件开发时更强调软/硬件协同工作的效率和稳定性。 2.嵌入式软件开发的结果通常需要固化在目标系统的储存器或处理器内部储存器资源中。 3.嵌入式软件的开发一般需要专门的开发工具、目标系统和测试设备。 4.嵌入式软件对实时性的要求更高。 5.嵌入式软件对安全性和可靠性的要求较高。 6.嵌入式软件开发是要充分考虑代码规模。 7.在安全攸关系统中的嵌入式软件,其开发还应满足某些领域对设计和代码审定模块化设计即将一个较大的程序按功能划分成若干程序模块,每个模块实现特定的功能
数据库系统
数据库模式
集中式数据库
三级模式
外模式
对应视图
模式
对应关系表
内模式
对应文件
二级映射
外模式/模式之间的映射
逻辑独立性:关系表变化,不用修改应用软件
内模式/模式之间的映射
物理独立性:存储文件变化,不用修改应用软件
分布式数据库
体系结构

全局模式
是对分布式数据库的最高层的抽象。
全局概念模式
全局概念模式:是分布式数据库的整体抽象,包含了系统中全部数据的特性和逻辑结构,描述分布数据库全局数据的逻辑结构,是分布式数据库的全局概念视图。
分片方式
描述全局数据逻辑划分的视图,是全局数据的逻辑结构根据条件的划分;每一个逻辑划分就是一个片段或称为分片。
水平分片:按元组分片
垂直分片:按属性列分片
混合分片
分配模式
描述局部逻辑的局部物理结构,是划分后的片段(或分片)的物理分配视图;是全局概念层的内容。
局部概念层
局部概念层:由局部概念模式描述,是全局概念模式的子集;全局概念模式经逻辑划分后被分配在各局部场地上
特点
分布性
物理上分布
自治性
局部自治
可用性
单个节点故障不影响整体可用
透明性
分片透明
位置透明
局部数据模型透明
数据库设计过程
需求分析
用户需求分析。数据库设计人员采用一定的辅助工具对应用对象的功能、性能、限制等要求所进行的科学分析。
产出物
数据流图
数据字典
单个节点故障不影响整体可用
概念结构设计
概念结构设计是对信息分析和定义,如视图模型化、视图分析和汇总,对应用对象精确地抽象、概括而形成的独立于计算机系统的企业信息模型。描述概念模型的较理想的工具是E-R图。
产出物
ER模型
实体
联系
属性
扩展的ER模型
步骤
抽象数据
设计局部ER模型
合并局部模型,消除冲突
集成的方法
多个局部E-R图一次集成。 逐步集成,用累加的方式一次集成两个局部E-R。
集成产生的冲突及解决办法
属性冲突:包括属性域冲突和属性取值冲突。 命名冲突:包括同名异义和异名同义。 结构冲突:包括同一对象在不同应用中具有不同的抽象,以及同一实体在不同局部E-R图中所包含的属性个数和属性排列次序不完全相同
重构优化,消除冗余
逻辑结构设计
将抽象的概念模型转化为与选用的DBMS产品所支持的数据模型相符合的逻辑模型,它是物理设计的基础。包括模式初始设计、子模式设计、应用程序设计、模式评价以及模式求精
产出物
关系模式
规范化过程在逻辑结构设计阶段考虑
物理设计
逻辑模型在计算机中的具体实现方案。
引入DBMS,硬件,OS等因素进行设计
关系代数
并交叉
集合运算
笛卡尔积
结果集的列是参与操作的关系模式列之和
结果的行是参与操作的关系记录两两拼接而成
选择
针对行
投影
针对列,条件中的数字代表列号
自然连接
连接条件为两个关系相同属性等值连接
自动去重复列
规范化理论
函数依赖
部分函数依赖
主键是AB,但有A->C成立(C为非主属性)
传递函数依赖
主键是A,但有A->B,B->C(B->A不成立,C为非主属性)
键
候选键
能唯一标识元组且无冗余
求解候选键可用图示法
全码:所有属性组成候选键
主键
多个候选键中,任选一个可充当主键
外键
当前关系中,可充当其它关键模式主键的属性(或属性集)
属性
主属性
构成某一个候选关键字的属性集中的一个属性
非主属性
不包含在任何一个候选码中的属性
范式
INF
所有属性都是不可分的基本数据项
2NF
达到INF,且消除非主属性对候选键的部分依赖
3NF
达到2NF,且消除非主属性对候选键的传递依赖
BCNF
达到3NF,且关系的函数依赖集中每个依赖的决定因素(左部)必定包含关系的某个候选码
模式分解
无损分解
拆分后的关系模式可以通过连接操作还原成拆分前的表
公式法判断
存在交集推导差集的函数依赖,则无损
保持函数依赖分解
原关系模式依赖集 与 拆分后的各子关系模式依赖集并集 等价
注意:冗余依赖不需要保持
并发控制
事务的特性(ACID):原子性、一致性、隔离性、持续性
并发产生的问题:丢失更新/丢失修改、不可重复读问题、读“脏”数据
解决方案-封锁协议
S锁/共享锁/读锁
X锁/独占锁/排他锁/写锁
一级封锁协议/二级封锁协议/三级封锁协议/两段锁协议
数据库完整性约束
实体完整性约束:主键,唯一且非空
参照完整性约束:外键,为空或其他关系的主键
用户自定义完整性约束
触发器:1解决复杂的完整性约束问题
数据库技术扩展
反规范化
产生原因
规范化把表拆小,导致查询低效
技术
增加派生性冗余列
增加冗余列
重新组表
分割表
带来的问题
数据不一致
使用触发器验证
数据重复的存储
数据表分区
分区与分表的区别
分区的优点
分区的策略(水平方向上)
范围分区
列表分区
散列分区
数据仓库与数据挖掘
数据仓库特点
面向主题
集成的
稳定的(非易失的)
反映历史变化的(随着时间变化)
其他概念:ELT,数据集市,OLAP,数据挖掘
NoSQL
与关系数据库对比
并发支持
存储与查询
扩展方式
索引方式
应用领域
常见分类
键值
列存储数据库
文档型数据库
图形数据库
数据库性能优化
集中式数据库
硬件系统
系统软件
数据库设计
表与视图:表的规划、建立物化视图
索引:常查询-建索引,常修改-避免索引
SQL优化:以不相干子查询替代相干子查询:只检索需要的列(避免select*);用带IN的条件子句等价替换OR子句:经常提交COMMIT,以尽早释放锁;尽可能减少多表查询;让自然连接和笛卡尔积运算的子表尽可能小
应用软件
数据库连接池
分布式数据库
通信代价
全局查询树的变换
多副本策略
查询树的分解
半连接与直接连接
数据库安全
数据库安全措施
用户标识和鉴定
存取控制
权限分配语句:GRANT关键字用法
密码存储和传输
视图的保护
审计
数据备份与恢复
数据备份
冷备/热备
完全备份/差量备份/增量备份
数据库故障与恢复
故障分类
事务本身可预期的故障
事务本身不可预期的故障
系统故障
介质故障
恢复
日志
Redo和Undo
计算机网络
计算机网络
功能
数据通信
资源共享
管理集中化
实现分布式处理
负载均衡
网络延迟
发送时延+传播时延+处理时延+排队时延等
时延的影响因素:运算、读取和写入、数据传输 以及数据传输过程中的拥塞所带来的延迟。
数据在 Internet 中传输时,由于互联网中的转发数据量大目所需经过的节点多,势必会带来更大的延迟。
在网络中,数据读写的速率较之于数据计算和传输的速率要小得多,因此数据读写的延迟是影响网络延迟的最大的因素。
在对等网络中,由于采用总线式的连接,因此网络中的终端数量越多,终端所能够分配到的转发时隙就越小,所带来的延迟也就越大。
路由器一般采取存储转发方式,需要对待转发的数据包进行重新拆包,分析其源地址和目的地址,再根据路由表对其进行路由和转发,而交换机采取的是直接转发方式,不对数据包的三层地址进行分析,因此路由器转发所带来的延迟要大于交换机。
网络分类
按传输介质
有线接入
无线接入
按地域大小
局域网
大型局域网通常划分为核心层、汇聚层和接入层,这种设计通常被称为三层网络架构。
核心层
核心层负责高速转发以及出口路由 - 核心层是网络中的顶层,主要负责处理网络中的高速数据传输和路由。在这一层,通常会部署高性能的设备,如路由器和交换机,以支持大量数据的快速传输。 - 核心层的主要功能是实现网络的快速转发和高可靠性,确保数据在网络中快速传输,同时保持网络的稳定性和可用性。 - 核心层通常不涉及终端设备的连接,主要处理不同汇聚层之间的数据交换和路由。
汇聚层
汇聚层定义网络的访问策略 - 汇聚层位于核心层和接入层之间,主要负责连接核心层和接入层设备,实现数据的聚合和分发。 - 在汇聚层部署的设备通常具有较高的处理能力和灵活性,用于处理不同接入层设备传来的数据,并将数据传输到核心层或其他接入层设备。 - 汇聚层的主要功能是实现不同网络区域之间的数据交换和连接,同时提供网络安全和管理功能。
接入层
接入层提供网络接入功能,可以使用集线器代替叫交换机 - 接入层是网络中的底层,负责连接终端设备(如计算机、IP电话、无线设备等)到网络,并为这些设备提供网络访问。 - 在接入层部署的设备通常是交换机,用于连接终端设备并提供局域网接入服务。 - 接入层的主要功能是实现终端设备与网络的连接,提供网络接入、身份认证、安全策略等服务,同时管理和监控终端设备的接入情况。
城域网
广域网
因特网
5G网络的主要特征
服务化架构
5G核心网中隐去了SBA服务化架构,实现网络功能的灵活定制和按需组合。
网络切片
通过网络切片技术在单个独立的物理网络上切分出多个逻辑网络,从而避免了为每一个服务建设一个专用的物理网络,极大地降低了建网和运维成本。
网络冗余设计
备用路径
目的
提高可用性,由路由器、交换机等设备之间的独立备用链路构成,一般情况下备用路径仅仅在主路径失效时投入使用。
设计
(1)备用路径的带宽
(2)切换时间
(3)非对称
(4)自动切换
(5)测试
冗余分担
目的
对备用路径方式的扩充,通过并行链路提供流量分担(冗余的形式)来提高性能,主要的实现方法是利用两个或多个网络接口和路径来同时传递流量
设计
网络中存在备用路径、备用链路时,可以考虑加入负载分担设计
对于主路径、备用路径都相同的情况,可以实施负载分担的特例一负载均衡
对于主路径、备用路径不相同的情况,可以采用策略路由机制,让一部分应用的流量分摊到备用路径上
组网技术
OSI七层模型
交换技术
交换技术
数据在网络中转发通常离不开交换机。交换机的功能包括:集线功能、中继功能、桥接功能、隔离冲突域功能等。
基本交换原理
交换机是一种基于MAC 地址识别,能完成封装转发数据包功能的网络设备。交换机可以"学习"MAC 地址,并把其存放在内部地址表中,通过在数据的始发者和目标接收者之间建立临时的交换路径,使数据直接由源地址到达目的地址。
交换机功能
(1)转发路径学习。根据收到数据中的源 MAC地址建立该地址同交换机端口的映射写入MAC 地址表中。
(2)数据转发。如果交换机根据数据中的目的MAC 地址在建立好的 MAC 地址表中查询到了就向对应端口进行转发。
(3)数据泛洪。如果数据中的目的 MAC 地址不在 MAC 地址表中,则向所有端口转发也就是泛洪。广播帧和组播帧向所有端口(不包括源端口)进行转发。
(4)链路地址更新。MAC 地址表会每隔一定时间(如300s)更新一次。
TCP/IP协议簇
传输层协议
TCP
UDP
IP报文首部
版本号、首部长度、区分服务(旧版本中叫服务类型)、总长度
标识、标志、片偏移
生存时间(避免无限转发)、协议、首部校验
源IP、目标IP
网络层协议
网际层是整个TCP/IP体系结构的关键部分,其功能是使主机可以把分组发往任何网络并使分组独立地传向目标。
IP:网际互连协议,TCP和UDP协议是基于IP协议的
ARP:地址解析协议,IP地址转换为MAC地址
RARP:反向地址解析协议,MAC地址转IP地址
ICMP:因特网差错控制协议,PING命令来自该协议
IGMP:组播协议
网络工程
网络规划
网络设计
网络实施
综合布线
综合布线是一种模块化的、灵活性极高的建筑物内或建筑群之间的信息传输通道。 通过它可使话音设备、数据设备、交换设备及各种控制设备与信息管理系统连接起来,同时也使这些设备与外部通信网络相连。 它还包括建筑物外部网络或电信线路的连接点与应用系统设备之间的所有线缆及相关的连接部件。 综合布线由不同系列和规格的部件组成,其中包括:传输介质、相关连接硬件(如配线架、连接器、插座、插头、适配器)及电气保护设备等。 
工作区
工作区:一个独立的需要设置终端设备的区域宜划分为一个工作区。工作区应由配线子系统的信息插座模块延伸到终端设备处的连接缆线及适配器组成。
配线子系统
配线子系统:配线子系统应由工作区的信息插座模块、信息插座模块至电信间配线设备的配线电缆和光缆、电信间的配线设备及设备缆线和跳线等组成。
干线子系统
干线子系统:干线子系统应由设备间至电信间的干线电缆和光缆,安装在设备间的建筑物配线设备及设备缆线和跳线组成
建筑子系统
建筑群子系统:建筑群子系统应由连接多个建筑物之间的主干电缆和光缆、建筑群配线设备及设备缆线和跳线组成。
设备间
设备间:设备间是在每幢建筑物的适当地点进行网络管理和信息交换的场地。对于综合布线系统工程设计,设备间主要是用来安装建筑物配线设备。电话交换机、计算机主机设备及入口设施也可与配线设备安装在一起。
进线间
进线间:进线间是建筑物外部通信和信息管线的入口部位,并可作为入口设施和建筑群配线设备的安装场地。
管理
管理:管理应对工作区、电信间、设备间、进线间的配线设备、缆线、信息插座模块等设施,按一定的模式进行标识和记录。
信息安全技术知识
秘钥管理技术
数字证书
PKI公钥体系
访问控制及数字签名技术
访问控制的基本模型
访问控制的目标
访问控制的三要素
访问控制的实现技术
访问控制矩阵
访问控制列表
能力表
授权关系表
数字签名技术
信息摘要
数字签名过程分析
国产密码算法
SM1
SM2
SM2 是一种非对称加密算法,基于椭圆曲线密码的公钥密码算法标准。
SM3
SM3 是一种密码杂凑(哈希、散列)算法。
SM4
SM4 是一种分组密码算法,密钥长度和分组长度均为128位,适用于无线局域网标准的分组数据算法
SM9
SM9 是基于标识的非对称密码算法。
信息安全的保障体系
计算机系统安全保障等级
用户自主保护级
系统审计保护级
安全标记保护级
结构化保护级
访问验证保护级
信息安全基础
信息安全的5个基本要素
机密性:机密性是指网络信息不泄露给非授权的用户、实体或程序,能够防止非授权者获取信.。
完整性:完整性是指网络信息或系统未经授权不能进行更改的特性。
可用性:可用性是指合法许可的用户能够及时获取网络信息或服务的特性。
可控性:可控性是指可以控制授权范围内的信息流向及行为方式。
可审查性:可审查性是指对出现的信息安全问题提供调查的依据和手段。
网络安全漏洞
安全隐患主要表现:物理安全性、软件安全漏洞、不兼容使用安全漏洞、选择合适的安全哲理。
网络安全威胁
破坏数据完整性
破坏数据完整性指的是以非法手段窃得对数据的使用权,然后删除、修改、插入或重发某些重要信息,或者恶意添加、修改数据,以干扰用户的正常使用。这种行为可能导致数据的不准确、不一致或被篡改,从而破坏数据的完整性和可信度。
拒绝服务攻击
利用网络传播病毒
信息泄露或丢失
非授权访问
安全措施的目标
安全措施的目标包括:访问控制、认证、完整性、审计、保密。
信息安全内容
设备安全
数据安全
内容安全
行为安全
信息解密技术
对称加密体制
用途:对消息明文进行加密传送
常见算法
DES
三重des加密
三重数据加密算法(英语:Triple Data Encryption Algorithm,缩写为TDEA,Triple DEA),或称3DES(Triple DES),是一种对称密钥加密块密码,相当于是对每个数据块应用三次数据加密标准(DES)算法。由于计算机运算能力的增强,原版DES密码的密钥长度变得容易被暴力破解;3DES即是设计用来提供一种相对简单的方法,即通过增加DES的密钥长度来避免类似的攻击,而不是设计一种全新的块密码算法。 3DES是三重数据加密算法块密码的通称。它相当于是对每个数据块应用三次DES加密算法。三重DES要用到2个DES的密钥K1,K2,每个是56位。而加密过程:K1加密->K2解密->k1加密。解密过程:K1解密->K2加密->k1解密。
3DES
IDEA
RC-5
AES
非对称加密体制
用途:对密钥加密,做数字签名
常见算法
RSA
Elgamal
ECC
Deffie-Hellman
案例特训专题
信息安全整体架构设计
WPDRRC模型
6个环节包括:预警、保护、检测、响应、恢复和反击。
3大要素包括人员、策略和技术。
各模型安全防范功能
PDR:保护、检测、响应。
PPDR:策略、保护、检测、响应。
PDRR:保护、检测、响应、恢复。
MPDRR:管理、保护、检测、响应、恢复。
WPDRRC:预警、管理、保护、检测、响应、恢复、反击。
网络安全体系架构设计
开放系统互联安全体系结构
认证框架
访问控制框架
机密性框架
完整性框架
抗抵赖框架
区块链技术
区块链技术是一种基于密码学原理和分布式计算的技术,用于建立透明、安全、不可篡改的数据记录系统。区块链是由一系列数据块(block)组成的链式结构,在每个数据块中包含了一定数量的交易信息,并通过加密技术和共识算法确保数据的安全性和完整性。每个数据块包含前一块的哈希值,形成了不可篡改的链式结构。
什么是区块链
区块链的特点
区块链技术的主要特点包括: 1. 去中心化:区块链技术不依赖于中心化的管理机构,通过网络中的多个节点共同验证和记录交易信息。 2. 安全性:区块链使用加密技术保护数据安全,每个数据块都包含前一块的哈希值,确保数据不被篡改。 3. 透明性:区块链上的交易信息是公开可查的,任何人都可以查看区块链上的数据,增强了透明度和信任度。 4. 不可篡改:一旦数据被记录在区块链上,几乎不可能对其进行篡改,确保数据的完整性和可靠性。 区块链技术被广泛应用于加密货币、智能合约、供应链管理、数字身份认证等领域,为信息交换和价值传递提供了一种全新的方式。
去中心化
哈希加密/防篡改
比特币的加密算法和防篡改主要通过以下几个关键技术实现: 1. 公钥加密:比特币使用非对称加密算法,其中每个用户都有一对公钥和私钥。公钥用于加密信息,私钥用于解密信息。这种机制确保只有私钥的持有者才能访问和控制相关资产。 2. 区块链技术:比特币的交易记录被存储在区块链中,这是一个由区块组成的不断增长的链式结构。每个区块包含了一定数量的交易信息和前一区块的哈希值,形成了不可篡改的链式结构。 3. 工作量证明(PoW):比特币网络通过工作量证明机制来确保交易的安全性和防篡改性。矿工需要通过计算复杂的哈希值来解决数学难题,以验证交易并创建新的区块。这种机制使得篡改区块链中的交易变得极其困难,因为需要大量计算力才能改变一个区块的内容。 4. 分布式共识机制:比特币网络采用分布式共识算法,确保所有节点之间达成一致的交易记录。通过多数节点的共识来确认交易的有效性,从而防止恶意篡改和双重支付等问题。
共识算法/全民记账
"全民记账"是一种概念,与共识算法有关。在区块链和加密货币领域,"全民记账"指的是所有网络参与者(节点)共同维护和记录交易数据的过程。这意味着每个节点都具有完整的交易记录,从而实现去中心化的记账系统。 共识算法在这个过程中起着关键作用,它确保网络中的所有节点在没有中心权威的情况下就交易的有效性和顺序达成一致。常见的共识算法包括工作量证明(Proof of Work,PoW)、权益证明(Proof of Stake,PoS)、权益证明加密(Delegated Proof of Stake,DPoS)等。这些算法通过不同的机制来确保网络的安全性和一致性,从而实现"全民记账"的目标。 总的来说,"全民记账"强调了区块链网络的去中心化特性,每个参与者都有权参与记账和验证交易,而共识算法则是确保网络中所有节点就交易记录达成一致的关键机制。
安全模型
安全模型的分类
BLP模型
Biba模型
Chinese Wall模型
安全架构概述
信息安全面临的威胁
人为蓄意破坏
灾害性攻击
系统故障
人员无意识行为
数学与经济管理
运筹方法
线性规划
动态规划
随机函数
数学建模
过程
1. 模型准备
了解问题的实际背景,明确其实际意义,掌握对象的各种信息,用数学语言来描述问题。
2. 模型假设
根据实际对象的特征和建模的目的,对问题进行必要的简化,并用精确的语言提出一些恰当的假设。
3. 模型建立
在假设的基础上,利用适当的数学工具来刻画各变量常量之间的数学关系,建立相应的数学结构(尽量用简单的数学工具)。
4. 模型求解
利用获取的数据资料,对模型的所有参数做出计算(或近似计算)。
5. 模型分析
对所得的结果进行数学上的分析,特别要注意当数据变化时所得结果是否稳定。
6. 模型检验
将模型分析结果与实际情形进行比较,以此来验证模型的准确性、合理性和适用性。如果模型与实际较吻合,则要对计算结果给出其实际含义,并进行解释。如果模型与实际吻合较差,则应该修改假设,再次重复建模过程。
7. 模型应用
所建立的模型必须在实际应用中才能产生效益,在应用中不断改进和完善。
模型分析
模型分析方法
利用实际案例数据对模型进行检验
可以请专家来分析模型是否合理
利用计算机来模拟实际问题,再在计算机上检验该数学模型。
模型的误差分析
模型误差、观测误差、截断误差、舍入误差、过失误差、绝对误差、相对误差等。
参数灵敏性分析
变量数据是否敏感,在最优方案不变的条件下这些变量允许变化的范围。
知识产权与标准化
保护范围与对象
著作权法
著作权法主要保护中国公民、法人或其他组织的文学、艺术和科学作品,无论这些作品是否已发表。 著作权包括人身权和财产权,如发表权、署名权、修改权、保护作品完整权,以及复制权、发行权、出租权、展览权、表演权、放映权、广播权等。 此外,外国人或无国籍人的作品,如果其作者所属国或经常居住地国与中国签订了协议或共同参加了国际条约,那么这些作品也受中国著作权法的保护。
作品被卖出
著作权法规定,美术作品著作权不由原件的转移而转移,原件卖出或赠出后,原作者仍有该画的著作权,原件持有人仅有所有权与展览权。
专利法
根据专利法,职务发明创造的专利申请权属于该单位,而非职务发明创造的专利申请权则属于发明人或者设计人。 对于利用本单位的物质技术条件所完成的发明创造,如果单位与发明人或者设计人之间有合同约定,那么专利申请权和专利权的归属将按照合同的约定来确定。 此外,专利法还规定了专利的申请、审查和授权程序,以及专利权的保护、转让和终止等内容。对于违反国家法律、社会公德或者妨害公共利益的发明创造,不授予专利权。同时,对于涉及国家安全或者重大利益需要保密的发明创造,专利申请和审查过程需要按照国家有关规定进行保密处理。
著作权职务作品
本职工作规定的目标
本职工作活动成果
使用了单位资源
专利权职务作品
本职工作内的发明创造
履行本单位交付的本职工作之外的任务所作出的发明创造
离职、退休或调动工作后1年内,与原单位工作相关
商标法
根据商标法,任何能够将自然人、法人或者其他组织的商品与他人的商品区别开的标志,包括文字、图形、字母、数字、三维标志、颜色组合和声音等,以及上述要素的组合,均可以作为商标申请注册。商标注册遵循自愿注册和申请在先原则,即商标使用人可以根据自己的需要选择是否注册商标,但如果有多个申请人申请注册同一商标,那么将按照申请在先的原则进行审查。 此外,商标法还规定了商标的禁用条款,即哪些标志不得作为商标注册或使用。例如,同中华人民共和国的国家名称、国旗、国徽、军旗、勋章相同或者近似的,以及同中央国家机关所在地特定地点的名称或者标志性建筑物的名称、图形相同的标志等,都不得作为商标注册或使用。
反不正当竞争法
不正当竞争行为是指经营者在生产经营活动中,违反本法规定,扰乱市场竞争秩序,损害其他经营者或者消费者的合法权益的行为。 这些行为包括但不限于:混淆行为、商业贿赂、虚假宣传、侵犯商业秘密、低价倾销、搭售或附加不合理交易条件、不正当有奖销售、诋毁商誉以及招标投标中的串通投标、欺诈等行为。
许可使用权
独占使用许可-仅1个授权对象可用,著作权人不可用
排他使用许可-仅1个授权对象和著作权人可用
普通使用许可-多个授权对象和著作权人可用
保护期限
不受限
著作权 中的 署名权、修改权、保护作品完整权
商业秘密
著作权
发表权、获得报酬权作者终生及死后第50年12月31日
标准化
标准分类
国家标准
标准代号
强制国家标准GB
推荐国家标准GB/T
行业标准
行业代号
QJ航天
SJ电子
JB机械
JR金融
HB航空
地方标准
DBXX/T
DB
企业标准
Q/XXX
标准代号
侵权判断
不侵权
个人学习、研究或者欣赏
内部数据,严赫外发
用于教学或科学研究
适当引用
公开演讲内容
采用他人的开发思想,处理过程,操作方法,数学概念
著作权特例
行政、立法、司法性质的文件
官方正式译文
时事新闻
历法、通用数表、通用表格和公式
开发软件所用的思想、处理过程、操作方法或者数学概念不受著作权保护
算法可以申请专利
合理使用不需要付费、不需要通知作者,原作品仍然受到著作权保护