软件工程导论要点

重点:编程能力很强不代表软件工程能力强!

1、学习软件工程的意义:
(1)所有发达国家的经济都依赖软件
(2)软件工程这门课涉及到职业软件开发流程,帮助你更加了解实际上软件是如何生产的

2、评判软件好坏的标准
(1)软件费用 (2)开发时间(一旦交付太晚可能会被他人抢先一步)
3、什么是软件
(1)软件 = 程序 + 文档
(2)软件包括通用产品和定制产品。通用产品一般是直接生产后供人使用,定制产品是先了解相关需求,再生产产品。

4、什么是软件过程
(1)软件开发的过程
(2)开发、维护软件的过程,是所有软件过程中共通的活动
(3)包括软件描述(需求分析、写文档)、软件开发、软件有效性验证(产品测试)、软件进化(根据客户需求变化而变化)。
(4)陈xx老师重点讲两头,也就是软件描述(需求分析、写文档)、软件进化
(5)软件过程没有定式,不同的公司有不同的软件过程,但是有一些通用模型。这些模型不是万能的,但基本有效。

5、软件工程
(1)软件工程:做软件
(2)系统工程:做硬件
(3)开发成本60%,测试成本40%
(4)对于定制软件,软件测试成本大于生产成本(通常开发出来无法完全满足要求,要修改程序)
(5)软件工程的交付物:需求规格说明书、总体设计书、测试表格

6、软件工程方法
(1)软件工程方法是一种软件开发的结构化方法,目的在于提高软件的性价比。

7、结构化软件工程方法
(1)曾经的软件开发喜欢使用goto,但是被循环、选择、顺序结构所取代。goto使得程序结构混乱,而后者使得程序完全有三种结构所组成,实现结构化编程
(2)结构化分析方法:需求也可以分解为一个个结构,实现结构化分析方法

8、计算机辅助软件工程CASE
(1)computer assisted software engineering
9、优良软件必备属性
(1)可维护性(能不断进化满足变化的需求) (2)可依赖性 (值得信赖,如一个错误率99.9999999%的计算机不被信赖)(3)有效性(不浪费资源) (4)可用的(指用户能用,不仅仅是开发者能用,也要方便用户能用)
10、软件工程面临的挑战
(1)遗留系统。旧的有价值的系统需要更新,但是没有人懂遗留系统,遗留系统的规则和现在软件规则可能不相同,遗留系统遗留的文档不足
11、软件过程
(1)描述
(2)设计、开发(有时候只说设计或者只说开发,实际上同时指设计开发)
(3)有效性验证
(4)进化
12、瀑布模型
(1)将开发过程划分为若干阶段
(2)只有当前一个阶段完成后才进行下一个阶段
(3)一般有若干阶段:需求定义、系统和软件设计、实现和单元
测试、集成和系统测试、操作和维护
(4)优点:逻辑清楚。大项目适合使用瀑布模型
(5)缺点:对需求更改没有适应性
在这里插入图片描述
13、瀑布模型扩展-V模型
在这里插入图片描述进行需求分析之后就可以敲定如何进行系统、交付

14、进化式开发
(1)为了理解适应不充分的需求
(2)探索式原型:和客户一起工作,从最初的需求草案进化到最后的系统。应该从理解最清楚的需求开始
(3)抛弃式原型:目的是理解系统需求。从理解较差的需求开始。
(4)进化式开发本质上是弄几个模型出来,让客户看看,让其选择,从而理解客户的需求。几个原型是可以同时进行描述、开发、验证的
(5)缺点:缺乏过程可见性,系统结构通常较差,需要特殊的工具和计数(比如快速建立原型的技术)
(6)适用性:适用于中小型交互式系统,适用于大型系统的一部分(如用户界面),适用于生命周期短的系统。
(7)注意:凡是交互式界面都不容易弄清楚需求,因此交互式系统适合用进化式开发

15、形式化开发
(1)优点:只需要进行形式化描述就可以免去开发的而麻烦;适用于严格的系统,特别是安全性和保密性极高的系统
(2)缺点:需要专业技能和训练;形式化开发不是万能的,一些方面难以描述, 如用户界面

在这里插入图片描述

16、面向组件的开发
(1)基于已有组件的系统;COTS系统 (commercial off-the-shelf商用现成品)
(2)阶段:分析组件、需求修正(这种开发方式的最大特点)、基于组件重用的系统设计、开发和集成
17、增量式开发
(1)系统不是一次性开发的,而是将要求的功能分成多次增量进行开发和交付。
(2)用户的需求是有优先顺序的, 优先级最高的需求在最初的增量当中
18、增量式开发的优势
(1)系统可以较早地被看到
(2)较早的增量可以作为原型帮助理解后面增量的需求
(3)项目总体失败的风险降低
(4)最高优先级的系统功能是最早的增量,得到最多的测试

在这里插入图片描述
19、螺旋式开发和增量式开发的区别
(1)增量式开发就好像是画中国地图,一个 一个省份来画
(2)螺旋式开发好像是先画轮廓、再画省份、再画市

20、需求工程过程
(1)需求工程过程
(2)圆角矩形表示动词,直角矩形表示名词

在这里插入图片描述
21、测试、检验、有效性验证
(1)测试,跑程序
(2)检验verification,强调过程
(3)有效性验证validation,强调结果

22、CASE
计算机辅助软件工程

**PM PL PG **在这里插入图片描述
23、系统交付物
(1)代码
(2)需求规格书
(3)系统设计书
(4)测试报告书
(5)运行环境

24、风险矩阵
在这里插入图片描述
25、python语法
(1)def main:这个函数里面的程序只有当该python脚本直接作为执行程序时才会运行,当该python脚本作为module被导入时main函数的内容不执行

在这里插入图片描述
(2)if name = ="main"这句话就是用来判断本脚本是不是直接作为可执行文件执行的。如果满足条件,就说明该脚本是直接执行,运行main函数。如果不满足条件,说明该脚本是被调用的。

26、database schema table
(1)schema是若干table的集合

27、风险管理
(1)风险识别
需求不明确(让用户参与开发)、硬件兼容性
(2)风险分析
(3)风险规划
(4)风险监控

** 28、项目管理和开发进度表管理**
(1)项目分解
(2)子项目排序(注意前置项目需要串行,非前置项目可以并行)
(3)估算子项目时长(注意颗粒度)
(4)项目分工
(5)做出甘特图

29、功能需求和非功能需求
(1)功能需求:描述系统的服务,如何响应特定的输入,系统在特定情形下应该如何动作
(2)非功能要求:一些额外的约束,如符合一定标准、隐私性要求

30、目标和可检验非功能需求
(2)用户目标一般是比较模糊,要转化成可检验的非功能需求
(1)系统目标:要求一个系统有易用性
(2)可检验的非功能需求:经过两小时培训,有经验的管理员应该能使用所有的系统功能。经过培训后,有经验用户的平均错误数量不超过2个错误/天

31、MTTF和MTBF
mean time to failure 平均失效前时间
mean time between faliure 平均失效间隔时间
mean time to restoration 平均恢复前时间

32、用户需求和系统需求
(1)用户需求是写给用户看的
(2)系统需求是写给开发者看的
(3)系统需求是比用户需求更详细的需求

33、需求文档
(1)需求文档的英文翻译是需求规格书。其实需求规格书就是需求文档,描述了所有需求。
(2)需求规格书不是系统文档,是写要干什么不写怎么干
(3)需求文档是对需求的正式表达
(4)需求文档一条需求和一个章节写完,如果本页还有留白也不能在留白上写下一需求和下一章节。要在下一页写吓一跳需求和下一章节,方便以后有添加。满足容易改变的特点。
(5)写需求可以使用特定的软件
(6)需求文档包含用户需求和系统需求,通常写在一份文档当中。系统需求要用结构化的方式来表示
34、需求文档的需求需要有编号
(1)需求要编号
(2)需求要删除,就用删除线删除掉。但不能直接删除

35、需求文档包含用户需求和系统需求

36、需求工程的过程
在这里插入图片描述

需求工程
1、需求工程的产出物是需求规格书
2、需求工程过程包括:需求导出、需求分析、需求验证、需求管理
3、需求导出的基本出发点是,关于具体的需求客户自己说不出来,需要自己去挖掘,也就是从客户的脑子里导出。需求导出有面向视点的导出、有VORD方法

用例
在这里插入图片描述

序列图
在这里插入图片描述
竖线代表软件执行的时间方向。矩形代表运行的程序,箭头代表事件。事件激活一段程序运行或者不运行。
序列图描述的是具体的时间,程序流程图更加具体(因为写了if else等逻辑)。程序流程图是最详细的,对于大型软件一般不会再用程序流程图,而是用序列图。

需求规格说明书(SRS)格式
一、概述(或者叫引言)
1、编写目的【读者是谁,编写需求规格书的目的是什么】
2、产品背景
3、产品功能
二、标准和规范
1、术语定义
2、数据描述(数据流图DFD、数据字典DD)
2、参考资料
三、接口
1、用户界面
2、硬件界面
3、软件界面
三、功能需求编号和描述(需要结构化描述)
(1)需求编号
(2)需求名称
(3)需求概述
(4)输入
(5)输出
(6)功能处理
(7)备注
四、非功能需求(性能需求)
(1)安全性
(2)易用性
(3)反应时间、
五、特殊需求

对象模型
在这里插入图片描述
(1)面向对象的典型操作的是继承,存在继承就存在层级。一般层级不能太多,防止系统混乱。上面的图当中,顶上的是父类,是被继承的。个人感觉箭头的指向不对。

(2)对象和类本质上就是抽象数据结构APT,一些相同的对象构成类。也就是对象是个体,类是整体。

UI开发
(1)大多数情况下用户不会有完整的UI需求,因此要使用原型开发,没有别的方式。
(2)原型开发的目的是为了导出系统需求

数据流图DFD和数据字典DD
(1)数据流图和数据字典是需求规格说明书SRS中的标准和规范当中的部分
(2)数据流图DFD,基本格式是 输入->操作->输出,其中操作用圆圈圈起来,输入和输出数据写在箭头上。
(3)数据字典DD是对数据流图DFD中出现过的数据名称加以说明。格式如下:
数据流名:发票
说明:用作学生已付书款的证据
数据流来源:
数据流去向:
数据流组成:学生+姓名+书号+单价总和+书费合计

信息安全
(1)信息安全(security)其实是信息保密

V(verify)&V(valid)
(1)verify检验和valid有效性验证
(2)verify考虑写的代码有没有语法错误
(3)valid考虑结果有没有错误

在这里插入图片描述

沿触发和电平触发
(1)沿触发,推荐用non-blocking(实际上可以的)
(2)电平触发,推荐用blocking(实际上可以的)
(3)这样规定只是为了将non-blocking和blocking分开,方便阅读。如:
m=5;
n=4;
n<=m;
r=n;
这里non-blocking是最后执行的,所以r实际山是4。
(4)不要在多个always模块里面对同一个变量赋值,由于他们之间的顺序不确定,结果也是不确定的。
(5)setup time,hold time,clock to output,process,voltage,temperature。电压高延时低,温度低延时低
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值