版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
软件工程核心知识点复习资料一、软件工程概述软件工程是应用计算机科学、数学及管理科学等原理,以工程化方式开发和维护软件的学科。其核心目标是在给定的成本、进度约束下,开发出满足用户需求、兼具可靠性、可维护性与效率的软件产品。(一)软件工程的基本原则1.分阶段规划与评审:将开发分解为需求、设计、实现等阶段,阶段结束后评审,避免后期返工。2.模块化与抽象:通过模块化降低复杂度,抽象隐藏实现细节,聚焦核心逻辑。3.复用原则:复用已有组件(如开源库、设计模式),减少重复开发,提升效率与质量。4.质量优先:在开发各阶段融入质量保障活动(如代码评审、单元测试),而非仅依赖后期测试。二、软件生命周期模型软件生命周期模型定义了开发过程的阶段划分与迭代方式,需根据项目特点选择:(一)传统瀑布模型将开发分为需求分析、设计、编码、测试、维护五个线性阶段,阶段间有严格输入输出关系。适用场景:需求明确、稳定(如政府公文系统),项目风险低。局限性:需求变更适应性差,后期修改成本呈指数级增长。(二)快速原型模型先构建可运行的简化版原型(含核心功能),与用户迭代沟通后完善需求,再开发最终系统。优势:快速验证需求,减少误解,适合需求模糊的创新项目(如互联网产品初期探索)。注意点:需避免“原型即产品”的陷阱,原型的技术债务需在后续开发中偿还。(三)迭代与增量模型(以RUP、敏捷为例)1.RUP(RationalUnifiedProcess):分为初始、细化、构建、移交四阶段,每次迭代产生可运行增量,强调“用例驱动、以架构为中心”。2.敏捷开发:以《敏捷宣言》为核心,强调“个体与交互>流程与工具,可工作的软件>详尽的文档”。常见框架如Scrum(Sprint、Backlog)、XP(极限编程,结对编程、测试驱动开发)。适用场景:需求多变、追求快速交付的项目(如互联网App迭代)。(四)螺旋模型融合瀑布模型的系统性与快速原型的迭代性,引入风险分析环节。每一圈代表“计划、风险分析、实施工程、客户评估”,风险越高,迭代次数越多。适用场景:大型复杂、高风险项目(如航空航天软件、金融核心系统)。三、需求工程需求工程是软件开发的“地基”,决定项目成败,包含需求获取、分析、规格说明、验证四个核心活动。(一)需求获取方法1.用户访谈:通过结构化访谈挖掘用户显性/隐性需求,需避免引导性问题,覆盖不同角色。2.问卷调查:适合需求范围广、用户分散的场景(如百万级用户产品调研),需设计清晰问题。3.观察法:实地观察用户工作流程(如医院护士操作),发现未明确表达的需求(如操作效率痛点)。4.原型法:快速构建界面原型(如Axure、Figma),让用户直观反馈,验证需求可行性。(二)需求分析方法1.结构化分析(SA):以数据流图(DFD)和数据字典(DD)为核心,分解系统功能,梳理数据流向(如电商系统“订单处理”的DFD分解)。2.面向对象分析(OOA):通过UML建模(用例图、类图、时序图)描述系统。用例图梳理参与者与系统交互;类图分析领域模型(如电商“商品”“订单”类关系)。(三)需求规格说明(SRS)需求规格说明书是“书面契约”,需包含:功能需求:系统必须实现的功能(如“用户可查询近一个月订单”)。非功能需求:性能(如“系统响应时间≤2秒”)、安全性(如“密码加密存储”)、兼容性(如“支持Chrome、Firefox”)。约束条件:技术栈(如“后端用Java+SpringBoot”)、时间/成本约束。(四)需求验证通过需求评审(组织专家、用户评审SRS)、原型演示、测试用例预演(用需求推导测试用例,验证可测试性)等方式,确保需求完整、一致、无歧义。四、软件设计软件设计分为架构设计(宏观)与详细设计(微观),核心是“组织系统结构,使软件易开发、易维护、高性能”。(一)架构设计定义系统顶层结构,包括组件划分、交互方式、技术选型。常见架构风格:1.管道-过滤器:组件(过滤器)通过数据流(管道)传递数据,各组件独立处理(如编译器的词法→语法→语义分析)。2.客户-服务器(C/S):客户端请求服务,服务器响应(如传统桌面应用+后台服务)。3.分层架构:系统按功能分层(如Web应用的表现层→业务逻辑层→数据访问层),层间低耦合,便于维护。4.面向对象架构:以类和对象为核心,通过封装、继承、多态组织系统(如Spring的IOC容器管理对象)。(二)详细设计聚焦模块内部的算法、数据结构、接口细节,输出“详细设计文档”或“代码蓝图”(如UML活动图、伪代码)。例如,排序模块需明确“采用快速排序,时间复杂度O(nlogn),边界条件处理(空数组、单元素数组)”。(三)设计原则设计原则是“指导设计决策的准则”,避免过度设计或设计不足:1.单一职责(SRP):一个类/模块只负责一个功能(如“用户认证”不包含“订单处理”逻辑)。2.开闭原则(OCP):软件实体对扩展开放,对修改关闭(如通过“策略模式”扩展支付方式,无需修改原有逻辑)。3.里氏替换(LSP):子类可完全替代父类,且不破坏系统行为(如“鸟”子类“企鹅”重写“飞”方法,需确保调用者无感知)。4.依赖倒置(DIP):高层模块依赖抽象,而非具体实现(如业务层依赖“支付接口”,而非“微信支付实现类”)。5.接口隔离(ISP):客户端不应依赖不需要的接口(如“用户服务”拆分为“查询用户”“修改用户”等细粒度接口)。6.迪米特法则(LOD):一个对象应尽可能少地与其他对象交互(如“订单”类只需调用“库存”的“扣减库存”方法,无需关心库存内部逻辑)。7.组合/聚合复用(CARP):优先通过“组合”(has-a)而非“继承”(is-a)复用代码(如“汽车”类组合“发动机”类)。(四)设计模式设计模式是“经过验证的、解决特定问题的设计方案”,分为三类:1.创建型:处理对象创建(如单例模式:SpringBean默认单例;工厂模式:MyBatis的SqlSessionFactory)。2.结构型:处理类或对象的组合(如代理模式:SpringAOP的代理;适配器模式:老系统对接新支付接口)。3.行为型:处理对象间的交互与职责分配(如观察者模式:Spring的事件监听;策略模式:支付方式切换)。五、软件实现与测试(一)软件实现(编码)编码是设计的“落地”,需关注:编码规范:统一代码风格(如Java的阿里巴巴手册、Python的PEP8),提升可读性。代码质量:避免“坏味道”(如过长方法、重复代码),通过重构(如ExtractMethod、ExtractClass)优化。版本控制:使用Git管理代码,遵循分支策略(如Master、Develop、Feature分支)。(二)软件测试测试是“验证软件是否满足需求,发现缺陷”的过程,分为多个层次:1.测试阶段单元测试:测试最小可测试单元(如函数、类),隔离外部依赖(如用Mock模拟数据库),确保逻辑正确(如JUnit、pytest)。集成测试:测试模块间的交互(如Web层与Service层),发现接口不兼容、数据传递错误等问题。系统测试:将系统作为整体,测试功能、性能、兼容性、安全性(如JMeter做性能测试,Selenium做UI自动化测试)。验收测试:由用户/客户执行,验证系统是否满足业务需求(如UAT用户验收测试)。2.测试方法黑盒测试:不关注内部实现,仅通过输入输出验证功能(如测试登录,输入正确/错误账号密码,观察结果)。白盒测试:关注内部逻辑,设计测试用例覆盖代码分支(如条件语句的True/False分支、循环的边界情况)。灰盒测试:结合黑盒(功能)与白盒(部分内部逻辑),如测试接口时分析参数校验逻辑。3.测试用例设计方法等价类划分:将输入划分为“有效等价类”(合法输入)和“无效等价类”(非法输入),每个类选代表性用例(如测试年龄输入,有效类:18-60,无效类:<18、>60、非数字)。边界值分析:关注输入的边界点(如年龄的18、60,数组的0、length-1索引),边界是错误高发区。因果图法:分析输入(因)与输出(果)的逻辑关系,用因果图转化为判定表,设计用例(如“登录成功”需“账号正确”且“密码正确”且“无冻结”)。场景法:模拟用户实际操作场景(如电商购物的“浏览→加购→下单→支付”全流程),覆盖主要业务路径。六、软件维护与演化软件交付后,需持续维护以适应需求变化、修复缺陷、提升性能,维护成本通常占生命周期总成本的60%~80%。(一)维护类型1.纠错性维护:修复隐藏的缺陷(如用户反馈的崩溃、数据错误)。2.适应性维护:适应环境变化(如操作系统升级、数据库迁移)。3.完善性维护:扩展功能、提升性能(如电商系统新增“推荐算法”模块)。4.预防性维护:主动重构代码、优化架构,预防未来问题(如将单体应用拆分为微服务)。(二)软件演化软件演化遵循“持续迭代”的规律,需关注:技术债务:为快速交付积累的“临时解决方案”(如硬编码配置),需定期偿还(如重构、代码评审)。重构:在不改变功能的前提下,优化代码结构(如ExtractInterface、InlineMethod),提升可维护性。退役与迁移:软件生命周期结束时,需平滑迁移用户数据,或提供替代方案(如旧系统下线前引导用户使用新系统)。七、软件项目管理项目管理是“在约束条件下,协调资源、确保项目按时、按质、按预算完成”的过程。(一)项目计划与估算1.规模估算:估算软件规模(如功能点、代码行),常用方法:功能点分析(FPA):基于用户功能的复杂度,计算功能点数。代码行估算:根据历史项目的“功能-代码行”关系,估算新系统代码量。3.进度计划:使用甘特图(可视化任务时间线)、PERT图(分析任务依赖与关键路径),分解任务(如需求→设计→编码→测试)。(二)进度管理通过里程碑评审(如需求、设计、测试评审)监控进度,识别关键路径(决定项目最短工期的任务链),对关键路径任务优先保障资源。若进度偏差,可通过“赶工”(增加资源)、“快速跟进”(并行任务)调整。(三)质量管理质量管理贯穿全流程:质量规划:定义质量目标(如缺陷率≤0.5个/千行代码)、质量标准(如代码评审通过率≥90%)。质量保证(QA):通过流程审计(如检查编码规范遵循情况)、文档审查(如SRS是否符合模板),预防缺陷。质量控制(QC):通过测试、代码评审,发现并修复缺陷(如单元测试覆盖率≥80%)。(四)配置管理配置管理确保“软件的所有版本、文档、数据可追溯、可复现”:配置项:代码、文档、测试用例、配置文件等。版本控制:使用Git、SVN
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年船舶配套业项目合作计划书
- 2025年专门用途灯具:工艺装饰灯具项目建议书
- 肾病的康复指导
- 辽宁省2025秋九年级英语全册Unit4Iusedtobeafraidofthedark课时1SectionA(1a-2d)课件新版人教新目标版
- 2025年大功率电源及系统项目发展计划
- 2025年金融担保服务项目发展计划
- 吉林省白城市2025~2026学年度上学期期末测试 七年级数学(含答题卡、答案)
- 脑卒中概述与分类
- 护理护理研究方法
- 体位引流护理的质量控制与改进
- 野性的呼唤读书分享
- 极简化改造实施规范
- 达托霉素完整版本
- DBJ51-T 139-2020 四川省玻璃幕墙工程技术标准
- 一带一路教学课件教学讲义
- 中医热敏灸疗法课件
- 工厂虫害控制分析总结报告
- 回顾性中医医术实践资料(医案)表
- 延期交房起诉状
- 广东省消防安全重点单位消防档案
- 高考日语形式名词わけ、べき、はず辨析课件
评论
0/150
提交评论