一
软件 = 程序 + 数据 + 文档,软件 != 程序。
软件工程是采用工程、科学和数学的原则与方法研制、维护计算机软件的有关技术及管理方法。
软件工程三要素:过程、方法和工具。
软件工程方法分两类:传统方法和面向对象方法。
软件生存周期划分:软件定义,软件开发,软件使用与维护。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Og5edb3S-1609900251888)(C:\Users\Mt\Desktop\从0开始\图片\image-20210105102845179.png)]
软件机构并不一定要严格遵循某个软件过程,比较提倡的是软件过程不断改进。即根据开发机构或项目的特点,不断改进软件过程,使得软件开发的效率更高、成本更低、质量更好、工作更加有序。
螺旋模型:大型系统及软件的开发,需要风险分析评估。
二
可行性分析是用最小的代价、在尽可能短的时间内确定问题是否能够解决、解决方案用户是否接受、资金是否满足、社会环境和法律上是否允许。
不要花过多精力,占总成本的 5 10 %。
可行性研究的本质:进行一次简化的系统分析和设计。
软件工程项目可行性分析研究的内容主要集中在:经济、技术、法律和社会环境。
经济可行性:
-
1)货币的时间价值
用利率形式表示货币的时间价值。假设年利率为i,如果现在存入P元,则n年后可以得到的钱数为:
F=P(1+i)n
如果n年后能收入F元钱,那么这些钱的现在价值是:
P=F/(1+i)n -
2) 纯收入
= 折合现价的总收入 - 当前投资额 -
3)回收期
=6-1 + |((200000-227522)/35174)| =5.8(年)TN:累计现在值大于投资值的年
TZ:累计现在值大于投资值的现金值投资回收期是使累积的经济效益等于收回最初投资所需要的时间。
投资回收期=TN-1 + |((投资值-TZ)/出现正值年份的净现金流量)|
系统流程图和程序流程图的区别,系统流程图的部件是黑盒子,即对功能进行描述,程序流程图的部件是打开的盒子,即对程序内部算法描述。
系统流程图作用:
1)可以用系统流程图描述系统的组成元素;
2)用来描述信息在各个元素之间的流动情况。
三
软件需求是指用户对软件的功能和性能要求。
软件需求可分解为四个层次:业务需求,用户需求,功能需求,非功能需求。
获取需求的方法:
- 研究资料法
- 问卷调查
- 用户访谈
- 实地观察
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-O4g9pfEO-1609900251892)(C:\Users\Mt\Desktop\从0开始\图片\image-20210105144831299.png)]
数据流图:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-YD5TT7FP-1609900251894)(C:\Users\Mt\Desktop\从0开始\图片\image-20210105145412169.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ZLJGomRH-1609900251897)(C:\Users\Mt\Desktop\从0开始\图片\image-20210105145417621.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7LNtDAVF-1609900251904)(C:\Users\Mt\Desktop\从0开始\图片\image-20210105145425413.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-rkT0lava-1609900251906)(C:\Users\Mt\Desktop\从0开始\图片\image-20210105145432955.png)]
从问题描述中提取数据流图的四种成分。
接下来考虑处理,
最后,考虑数据流和数据存储。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-INfV93sd-1609900251909)(C:\Users\Mt\Desktop\从0开始\图片\image-20210105150125992.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-fGOyr8ED-1609900251911)(C:\Users\Mt\Desktop\从0开始\图片\image-20210105150142320.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3I5faP59-1609900251912)(C:\Users\Mt\Desktop\从0开始\图片\image-20210105150208079.png)]
数据流图详细案例:第三章60页
数据字典:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-NfeTxX7u-1609900251914)(C:\Users\Mt\Desktop\从0开始\图片\image-20210105151903871.png)]
数据源点及终点:名称,简要说明,有关的数据流。
加工处理:IPO图。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qKCGUZ7Q-1609900251916)(C:\Users\Mt\Desktop\从0开始\图片\image-20210105152051879.png)]
状态转换图:
在一张状态图中只能有一个初态,而终态则可以有多个,也可以没有。
对象的状态变化,取决于当前的状态和所接受的事件。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-BFp30Wm9-1609900251919)(C:\Users\Mt\Desktop\从0开始\图片\image-20210105152353594.png)]
软件需求规格说明书(SRS)是需求阶段的产品,它精确地阐述一个软件系统提供的功能、性能和必要的限制条件。
软件需求规格说明是系统测试、系统设计、编码和用户培训的基础 。
五
结构化设计(Structured Design,简称SD)是将结构化分析得到的数据流图映射成软件体系结构的一种设计方法。
强调模块化、自顶向下逐步求精、信息隐蔽、高内聚低耦合等设计准则。
SA(结构化方法)、SD(结构化设计)和SP(结构化程序设计)构成完整的结构化方法体系。
模块化的根据:把复杂的问题分解成许多容易解决的小问题,原来的问题也就容易解决了。
耦合度:模块同模块的联系称为块间的联系(模块的耦合度)。
内聚度:一个模块内部各成份的联系称为块内的联系(模块的内聚度)。
独立耦合:模块间没有信息传递时,属于非直接耦合
数据耦合:指两个模块彼此交换数据
控制耦合:一个模块在界面上传递一个信号(如开关值、标志量等)控制另一个模块,接收信号的模块的动作根据信号值进行调整。
特征耦合:介于数据耦合与控制耦合之间。当把整个数据结构作为参数传递而被调用的模块是需要其中一部分数据元素时。
公共耦合:两个以上的模块共同引用一个全局数据项。
内容耦合:当一个模块直接修改或操作另一个模块的数据或者直接转入另一个模块时,就发生了内容耦合。
尽量使用数据耦合,少用控制耦合,限制外部耦合和公共耦合的范围,完全不用内容耦合。
偶然内聚:模块内的各个任务没有什么有意义的联系,它们之所以能构成一个模块完全是偶然的原因。
逻辑内聚:几个逻辑上相关的功能被放在同一模块中,则称为逻辑内聚。
时间内聚:如果一个模块完成的功能必须在同一时间内执行(如系统初始化),但这些功能只是因为时间因素关联在一起,则称为时间内聚。
过程内聚:如果一个模块内部的处理成份是相关的,而且这些处理必须以特定的次序执行,则称为过程内聚。
通信内聚:如果一个模块的所有成份都操作同一数据集或生成同一数据集,则称为通信内聚。
顺序内聚:如果一个模块的各个成份和同一个功能密切相关,而且一个成份的输出作为另一个成份的输入,则称为顺序内聚。
功能内聚:模块的所有成份对于完成单一的功能都是必须的,则称为功能内聚。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-K4Cgi1Mg-1609900251921)(C:\Users\Mt\Desktop\从0开始\图片\image-20210105214855836.png)]
避免高扇出,并随着深度的增加,力求高扇入。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Gr45uP9k-1609900251922)(C:\Users\Mt\Desktop\从0开始\图片\image-20210105214958567.png)]
一个模块的扇入表示有多少模块可直接调用它,它反映了该模块的复用(reuse)程度,因此模块的扇入越大越好。
六
程序流程图:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-mb4nmfOr-1609900251924)(C:\Users\Mt\Desktop\从0开始\图片\image-20210105224854517.png)]
PAD图
盒图
判定树
九
面向对象分析方法三大模型:对象模型,动态模型,功能模型。
对象模型则定义了做事情的实体;
动态模型明确规定了什么时候(即在何种状态下接受了什么事件的触发)做;
功能模型指明了系统应该“做什么”;
面向对象建模符号采用UML图形符号。
对象模型表示静态的、结构化的系统的“数据”性质。它是对模拟客观世界实体的对象以及对象彼此间的关系的映射,描述了系统的静态结构。类图
功能模型表示变化的系统的“功能”性质,它指明了系统应该“做什么”。功能模型由一组数据流图组成。用例图
用例图的基本元素:用例、角色和关系。
交互图有两种:一种是按时间顺序反映对象之间相互关系的顺序图;另一种是集中反映各个对象之间通讯关系的协作图。
错题记录
6、通过执行对象的操作改变对象的属性,但它必须通过( B )的传递。
A、接口 B、消息 C、信息 D、操作
7、所有的对象可以成为各种对象类,每个对象类都定义了一组( D )
A、说明 B、方法 C、过程 D、类型
9、在面向对象的设计中,我们应遵循的设计准则除了模块化、抽象、低耦合、高内聚以外,还有( B )
A、 隐藏复杂性 B、 信息隐藏 C、 即存类的重用 D、 类的开发
10、在考察系统的一些涉及时序和改变的状况时,要用动态模型来表示。动态模型着重于系统的控制逻辑,它包括两个图:一个是事件追踪图,另一个是( B )
A、数据流图 B、状态图 C、系统结构图 D、时序图
14、.面向对象模型主要由以下哪些模型组成( A )
A.对象模型、动态模型、功能模型 B.对象模型、数据模型、功能模型
C. 数据模型、动态模型、功能模型 D.对象模型、动态模型、数据模型
9、软件是一种( C )。
A、 程序 B、 数据 C、 逻辑产品 D、 物理产品
6、原型化方法是一种( A )型的设计过程。
A、自外向内 B、自顶向下 C、自内向外 D、自底向上
4、软件生命周期中所花费用最多的阶段是( D )
A、详细设计 B、软件编码
型
C. 数据模型、动态模型、功能模型 D.对象模型、动态模型、数据模型
9、软件是一种( C )。
A、 程序 B、 数据 C、 逻辑产品 D、 物理产品
6、原型化方法是一种( A )型的设计过程。
A、自外向内 B、自顶向下 C、自内向外 D、自底向上
4、软件生命周期中所花费用最多的阶段是( D )
A、详细设计 B、软件编码
C、软件测试 D、软件维护