1、软件的特点
1)软件是一种逻辑实体,而不是具体的物理实体,因而它具有抽象性。
2)软件的生产与硬件不同,它没有明显的制造过程。
3)在软件的运行和使用期间,不会出现硬件中所出现的机械磨损和老化问题。然而它存在退化问题,必须要对其进行多次修改和维护。
4)计算机的开发与运行常常受到计算机系统的制约。
5)软件的开发至今尚未完全摆脱人工的开发方式。
6)软件本身是复杂的。
7)软件成本相当昂贵。
8)相当多的软件工作涉及社会因素。
2、工程化思想
3、软件工程定义
软件工程以关注质量为目标,其中过程、方法和工具是软件工程的三要素。
4、软件开发方法
1.结构化方法▲
2.面向数据结构方法
3.面向对象方法▲
4.形式化方法
5、软件生命周期
1.可行性研究
2.需求分析
3.软件设计
4.编码
5.软件测试
6.软件维护
6、软件过程模型
1)瀑布模型▲
2)快速原型模型
3)增量模型
4)螺旋模型
5)喷泉模型
7、敏捷宣言(务必记住)
1)个体与交互高于过程和工具
2)可运行软件高于详尽的文档
3)与客户协作高于合同(契约)谈判
4)对变更及时相应高于遵循计划
8、可行性研究过程
1.明确系统目标
2.分析研究先行系统
3.设计新系统的高层逻辑模型
4.获得并比较可行的方案
5.撰写可行性研究报告
9、可行性研究的分析内容
可行性研究需要从多个方面进行评估,主要包括战略可行性、操作可行性、计划可行性、技术可行性、社会可行性、市场可行性、经济可行性、和风险可行性等。
战略可行性研究主要从整体的角度考虑项目是否可行。
操作可行性研究主要考虑系统是否能够真正解决问题。
计划可行性研究主要估计项目完成所需时间。
技术可行性研究主要考虑项目使用技术的成熟程度。
社会可行性研究主要考虑项目是否满足所需项目设计者的利益。
市场可行性研究主要包括研究市场的发展历史与发展趋势。
经济可行性研究主要是把系统开发和运行所需要的承担与得到的效益进行比较,进行成本效益分析。
风险可行性研究主要是考虑项目在实施过程中可能遇到的各种风险因素,以及每种风险因素可能出现的概率和出现后造成的影响程度。
10、需求分析的步骤
1.需求获取
2.分析建模
3.需求描述
4.需求验证
11、数据流图(DFD)
功能建模的思想就是用抽象模型的概念,按照软件内部数据传递和变换的关系,自顶向下逐层分解,直到找到满足功能要求的可实现的软件为止。功能模型用数据流图来描述。
数据流图(简称DFD图)就是采用图形方式来表达系统的逻辑功能、数据在系统内部的逻辑流向和逻辑变换过程,是结构化系统分析方法的主要表达工具及用于表示软件模型的一种图示方法。
12、软件设计的原则
第1条:抽象化
第2条:逐步求精
第3条:模块化
第4条:模块独立
第5条:信息隐藏
第6条:复用性设计
第7条:灵活性设计
13、面向对象分析与设计
设计阶段的任务是及时把分析阶段得到的需求转变成符合各项要求的系统实现方案
面向对象的需求分析和面向对象的设计活动是一个反复迭代的过程
13.1面向对象设计的过程
1)建立软件体系结构环境图
2)软件体系结构设计
3)对各个子系统进行设计
4)对象设计及优化
13.2面向对象设计的启发原则
1)设计结果应该清晰易懂
2)类的等级深度应该适当
3)要尽量设计简单的类
4)使用简单的协议
5)使用简单的参数
6)把设计的变动减至最小
14、面向对象分析过程
首先要找到系统的操作者,即用例的参与者
可以把参与者执行的每一个系统功能都看作一个用例
确定了系统的所有用例之后,就可以开始识别目标系统中的对象和类了
确定了系统的类和对象之后就可以分析类之间的关系了
明确了对象、类和类之间的层次关系之后,需要进一步识别出对象之间的动态交互行为,即系统响应外部事件或操作的工作过程。
14.1面向对象分析原则
1)定义有实际意义的对象
2)模型的描述要规范、准确
3)共享性
4)封装性
15、建立对象模型的活动
1.划分主题
2.确定类与对象
3.确定属性
4.确定服务
16、模块独立性的结论
高内聚低耦合
17、面向对象设计的原则
1)模块化
2)抽象化
3)信息隐藏
4)低耦合
5)高内聚
6)复用性
18、SOLD
19、分辨低级语言、高级语言
20、测试 用例 黑盒 等价类 白盒
21、简述α测试和β测试的区别
α测试是用户在开发环境下的测试,或者是开发公司组织内部人员模拟各类用户行为,对即将面市的软件产品进行的测试,它是由开发人员或测试人员进行的测试,在α测试中主要是对使用的功能和任务进行确认,测试的内容由用户需求说明书决定。
α测试是试图发现软件产品的错误的测试,它的关键在于尽可能的逼真的模拟实际运行环境和用户对软件产品的操作,并尽最大努力涵盖所有可能的用户操作方式。
β测试由最终用户实施,通常开发(或其他非最终用户)组织对其的管理很少或不进行管理。β测试是所有验收测试策略中最主观的:测试员负责创建自己的环境,选择数据,并决定要研究的功能、特性或任务、采用的方法完全由测试员决定。