武汉大学软件工程复习重点总结

时间:2024.4.7

   软件工程复习

一、概论

1、软件的组成:程序+文档+数据;

   软件的特点:更依赖于人、开发成本进度难以估计、正确性难保证、维护困难、不磨损老化、可长期使用;

   软件开发的三个时期:程序设计语言兴起时期、结构化程序设计时期、软件工程与软件开发环境时期;

2、软件危机的表现:难以控制开发进度、软件工作量难以估计、软件修改维护困难,原因:需求问题、管理问题、方法工具问题、局限性;

3、软件工程是:(1)把系统化的、规范的、可度量的途径应用于软件开发、运行和维护过程,也就是把工程化应用于软件中;(2)研究(1)中提到的途径;

   软件工程三要素:以质量保证为基础的过程、方法、工具;

4、软件生存的三个时期:定义时期、开发时期、使用和维护时期;

   软件生存的六个阶段:软件计划、需求分析、软件设计、实现编码、测试、维护;

5、瀑布模型

基本思想:分而治之

优点:规范管理开发过程、文档驱动

缺点:初期系统的需求难以完全确定、文档驱动、周期长

V型模型:瀑布模型+质量控制

适用范围:结构化方法、面向过程的软件开发方法,需求变化少,开发人员熟悉应用领域,低风险项目,使用环境稳定

6、原型模型

针对软件开发初期需求难以确定,采用快速原型法

基本思想:快速建立原型,完善用户需求

优点:用户参与、快速

缺点:快速、对开发环境要求高

适用范围:已有产品、有快速原型开发工具、进行产品移植或升级

二、软件质量评价

1、良软件结构:具有层次性,无回路块调用的软件结构

2、模块独立性测量

耦合:零耦合、数据耦合、控制耦合、公共环境耦合、内容耦合,尽量使用数据耦合,少用控制耦合,限制公共环境变量耦合的范围,完全不用内容耦合;

内聚:偶然内聚、逻辑内聚、时间内聚、过程内聚、通信内聚、顺序内聚、功能内聚,内聚更重要

3、软件质量定性评价

用户角度:达到需求、界面友好、简单易学

开发人员角度:良结构、易测试、易维护、可移植

4、软件质量定量评价——软件度量:软件复杂性度量(规模、文本复杂性、控制结构的复杂性)、软件可靠性度量(系统故障率、软件修复与软件有效性、软件可靠性估算)

5、软件质量好的宏观标准:可靠性、良软件结构、文档齐全

三、软件计划

1、任务:弄清开发项目的性质、目标、规模、可行性、成本、风险分析、开发计划等,并编写项目任务说明书(项目计划书、可行性分析报告)

2、可行性研究的内容:经济可行性(成本效益分析)、技术可行性(风险分析、资源分析、技术分析)、法律可行性、开发方案的选择

3、软件项目的量化估算:成本估算&工作量估算(代码行成本估算、阶段成本估算)、工程进度安排(甘特图、任务网络图)

四、软件需求分析

1、需求分析的任务:问题分析、需求描述、需求评审

2、初步获取需求技术:调研、阅读相关资料、市场问卷调查、同类产品用户手册等

3、需求内容:功能性需求、非功能性需求(技术需求)

4、需求建模方法

面向数据流的分析方法:结构化方法建模、实体关系图、数据流图、状态转换图

面向对象的分析方法

面向数据结构的分析方法

五、传统软件设计方法

1、设计启发规则:提高模块独立性(水平划分、垂直划分)、模块规模适中、深度广度扇入扇出适当、作用域在控制域内、降低接口的复杂程度、单出单入避免内容耦合、模块功能可预测

2、表示软件结构的图形工具:层次图(调用关系)、HIPO图(H图+IPO图+IPO表)、结构图

3、软件系统设计技术

面向数据流的设计方法:DFD的类型决定映射方法(变换流、事务流、混合型)

SA/SD方法优点:自顶向下,逐步求精,各模块可单独设计、编码、测试、修改

SA/SD方法缺点:纸上设计,长时间偏离软件实体、开发周期长、剥离了数据/功能的关系、顶在何方,下到何处

面向数据结构的设计方法:Jackson方法、Warnier方法

原型法

4、详细设计

设计表示方法:流程图、PAD、伪码

流程图:

5、结构化程序设计(SP):避免用GOTO语句、自顶向下的程序设计、一种组织和编程方法、主要作用是使程序正确性的证明易于实现、讨论如何将大规模和复杂的流程图转换为一种标准形式,能用几种标准的控制结构通过嵌套来表示。

6、结构化定理:任何正规程序都可语义等价于由基集合{顺序、条件、循环}通过嵌套复合成结构化程序。

   正规程序:有一个入口点和出口点、程序中的任何一个结点都可以找一条从入口点经过该点到出口点的路径。

六、软件编码

1、结构化程序设计的观点首要是强调好的结构而不是效率,它的目的在于编写结构清晰、易于理解,也易于验证的程序

七、软件测试

1、程序正确性证明

2、测试:也是软件的“建设性”,为了发现程序中的错误而执行程序的过程,证明程序错误,暴露错误;分为动态测试和静态测试。

3、动态测试分为黑盒测试(功能测试法)和白盒测试

黑盒测试方案:等价划分法、边界值分析法、错误推测法

等价划分的评价:选用等价类中的任意值/典型值作为用例、没有选用某些高效率的测试方案;

边界值分析的评价:边界值易发现错误,考虑输出等价类,联合使用等价划分和边界值分析法

白盒测试方案:语句覆盖、判定覆盖、条件覆盖、判定-条件覆盖、条件组合覆盖

4、软件测试的步骤与策略

单元测试:模块、白盒法

集成测试:接口、多以黑盒为主,辅以白盒

增式测试法:

自顶向下集成,深度优先策略、宽度优先策略

优势:尽早测试主要控制、关键选择(上层)、尽早实现软件的完整        功能并验证、无需driver

缺点:需编写stub、底层关键模块测试晚、软件结构中没有重要的          数据自下往上流、并行测试困难

自底向上集成,

优势:无需stub、可尽早并行测试、可尽早发现底层关键模块的错误、         易建立测试条件和判定测试结果

缺点:需编写driver、接口出错发现较迟、系统轮廓形成较晚

混合法

确认测试:验证软件的有效性、以用户为主或用户积极参与、黑盒法

系统测试:软件作为计算机系统的一部分,与硬件、外设等其它系统结合起来,对计算机系统进行一系列的集成测试和确认测试

5、面向对象的软件测试:不能孤立测试单个操作,把操作作为类的一部分来测试(不能再‘真空’中孤立地进行测试操作,有必要在每个子类的语境中测试继承的操作)、OOM易于测试与纠错

八、软件维护

1、软件维护的类型:校正性维护/纠错性维护、适应性维护、完善性维护、预防性维护

2、提高可维护性的措施

需求分析:清晰、易读、结构好——易修改

设计:结构层次清晰、独立性强——修改局部化、灵活的数据逻辑结构——适应处理的变化

编码:编码规则、风格,SP,通用性高的PL

测试:测试充分

文档: 

3、维护的副作用:修改软件后导致新错误的发生

编码的副作用——严格执行回归测试、数据的副作用——完善的设计文档资料、文档资料的副作用——对整个软件配置进行评审

九、软件管理

1、软件管理的内容:开发计划与进度管理、成本估算与控制、人员管理与组织管理、质量管理、文档管理

2、软件管理的原则:软件生存期、按阶段确认、质量检查、自顶向下SP/OOP、职责分明、人员少而精、不断充实

3、软件管理的特点:知识密集,非实物性、单品生产,开发过程不确定、开发周期长、内容复杂,正确性难保证、劳动密集,自动化程度低、软件用法繁琐,维护困难,费用高

十、软件开发环境的基本概念

1、SDE的目标:支持软件生产的全生命周期、支持大型软件项目、支持基本语言、支持配置管理

2、SDE的特征:整体性、开放性、移植性、坚定性、

3、SDE的基本组成:中心信息库、接口界面、工具组,三级结构——核心级、基本级、应用级,


第二篇:武汉大学-软件工程课程设置


软件工程课程设置

大一:

英语听说(专业必修)

大学英语(公共必修)

体育(公共必修)

军事理论(公共必修)

高等数学(公共必修)

线性代数(公共必修)

思想道德修养和法律基础(公共必修)

马克思主义基本原理(公共必修)

中国近现代史纲要(公共必修)

C++程序设计(专业必修)

离散数学(专业必修)

计算机系统导论(专业必修)

信息系统导论(专业选修)

大二:

体育(公共必修)

大学英语(公共必修)

概率论与数理统计B(公共必修)

毛泽东思想、邓小平理论和“三个代表”重要思想概论(公共必修) 面向对象的程序设计(专业必修)

计算机组织与体系结构(专业必修)

用户界面设计与测试(专业必修)

数据库系统(专业必修)

数据库课程实践(专业必修)

操作系统原理(专业必修)

数据结构与算法(专业必修)

编译技术及应用(专业必修)

数字电路(专业选修)

UML及软件建模(专业选修)

计算机接口与通信(专业选修)

大三:

软件工程(专业必修)

网络及分布式计算(专业必修) 网络工程与编程实践(专业必修) 解释器构造(专业必修) 系统级别编程(专业必修) Unix系统程序设计(专业选修) 模式识别(专业选修) 数字图像处理(专业选修) C#程序设计(专业选修) 日语(专业选修) 信息安全(专业选修)

嵌入式软件技术 (专业选修) 计算机辅助艺术设计(专业选修) XML及其应用(专业选修) 管理沟通(专业选修) 游戏架构与编程(专业选修)

软件系统开发课程: SSD1 信息系统导论 SSD2计算机系统导论 SSD3面向对象编程与设计 SSD4以用户为中心的设计与测试 SSD5数据结构与运算 SSD6系统级别编程 SSD7数据库系统 SSD8网络与分配计算 SSD9软件规范,测试与维护 SSD10软件项目组织与管理

更多相关推荐:
软件工程学习总结

——0708210101管科4班XXX在上学期的信息管理课程中我们已经大略学习过了软件的开发过程、方法、生命周期等软件工程的内容,但一直不能系统地去理解这些东西,对软件开发过程也没有没有清晰地概念。通过这学期以…

软件工程学习总结

软件工程是一门实践性很强、交叉性很强的学科,它提供给我们的不仅是一种方法论,更是一种世界观。在没有接触软件工程这门课时,我一直认为软件就是程序。能编出解决问题的程序就可以了,从没有想过,在写一个程序之前还要对整…

软件工程学习总结

软件工程学习总结未接触软件工程之前一直都非常想学这门课程,因为觉得这门课非常NB,是那些有工程师称号的高手才摆弄的东西。但学过之后,最大的感触却是:软件工程方法一定要从娃娃抓起,否则到了后面坏习惯已养成后再回过…

软件工程学习总结和体会(自己总结)

软件工程I课程考核报告学号1115115285姓名王瑞博专业软件工程班级11软工软件一班指导教师李生南阳理工学院软件学院20xx年5月软件工程课程学习总结以前从没学过软件工程这门课只是听学长学姐们说过这是一门很...

《软件工程》学习心得

《软件工程》学习心得一、软件工程的定义软件工程(SoftwareEngineering,简称为SE)是一门研究用工程化方法构建和维护有效的、实用的和高质量的软件的学科。它涉及到程序设计语言,数据库,软件开发工具…

学习软件工程的心得感受

学习软件工程的心得体会学习了这门课程,还有老师们的多元化教课,不但使我们从理论上掌握软件工程,还有从不同的实例,让理论和实践得到了很好的结合,老师主要是从六个方面来描述软件工程,分别是信息和多媒体,JAVA编程…

软件工程学习总结

软件工程学习总结班级网络工程1001学号02230100121姓名潘书阳在本学期的软件工程课程的学习中我们学习了十一章的内容第一章软件与软件工程的概念这一章主要讲解的是一些概念性和基础性的内容例如软件的概念特性...

软件工程学习总结

软件工程学习总结通过一个学期系统的学习软件工程这门课结合与小组成员一起开发设备管理系统的经验让我对软件的开发有了更深的了解学习到每一个软件的开发都不仅仅是写代码还有更加复杂的系统性的开发流程要开发一个软件就拿设...

《软件工程》学习心得

软件工程学习心得时光匆匆不知不觉间软件工程的课程已经快学完虽说没有具体的项目来开发应用但我们知道软件工程是将系统化的规范化的可度量的方法应用于软件的开发运行和维护的过程在整个学习期间总的来说还是学到了很多实用的...

《软件工程》学习心得 蒋

《软件工程》学习心得一、软件工程的定义软件工程(SoftwareEngineering,简称为SE)是一门研究用工程化方法构建和维护有效的、实用的和高质量的软件的学科。它涉及到程序设计语言,数据库,软件开发工具…

软件工程总结

软件工程课程设计总结学院计算机与软件学院姓名谢静专业班级软件工程1班学号20xx1344043本系统这实现了电子商务网站所具备的基本功能即注册登录新品展示搜索购物车订单结算分类DIY商品添加商品简单易用适合用户...

软件工程方法学的学习总结

软件工程方法学学习总结软件工程方法学是研究软件设计方法论及工程开发技术的一门学科主要研究的是模型方法过程工具理念原则文档甚至相应的开发语言随着软件工程的发展形成了不同的软件工程方法结构化面向对象敏捷方法在某个开...

软件工程学习总结(43篇)