1.什么是软件危机?
①计算机软件维护和开发遇到的一系列严重问题。
②典型表现:对软件开发成本和进度的估计常常很不准确、软件产品的质量往往是靠不住、软件常常是不可维护、开发生产率提高的速度远跟不上计算机应用普及的需求……
③造成软件危机的原因:
④如何解决软件危机
既要有技术措施,又要有必要的组织管理措施。
2.什么是软件工程?
①软件工程是利用科学知识和技术原理来定义、开发和维护软件的一门学科
②软件工程是1 把系统的、规范的、可度量的途径应用于软件开发、运行和维护过程,也就是把工程应用于软件;2研究1中提到的途径
③目标是:付出较低的开发成本、取得良好的性能、达到预期的效果……
④软工内容:软工包括开发技术和开发管理两方面内容
3.软件工程方法学
①三要素:1.方法(指的是开发方法)2.工具(支持方法的工具)3.过程(管理过程)
②软件过程:完成高质量软件开发中的一系列操作,为了获得高质量软件所需要完成的一系列任务的框架,规定了完成一系列任务的框架
③方法学:在软件生命周期过程中使用的一整套技术方法的集合。
④使用最广泛的方法学:传统方法学(又称为生命周期方法学/结构化方法学)、面向对象方法学
结构方法学:把软件生命周期的全过程一次划分为若干个阶段,然后顺序地完成每个阶段的任务。强调自顶向下顺序完成软件开发的任务。结构化方法学中有三种基本控制结构:1.顺序2.选择3.循环。
面向对象方法学: 尽量模拟人类习惯的思维方式去开发。
补充:面向对象三大特征:1.封装(把数据和方法放在一个类里封装起来)2.继承(子类继承父类,通过关键词extends)3.多态(相同类型的变量调用同一个方法时呈现出不同的行为特征。Ps:一个细节问题要注意:只有方法才有多态,实例变量不存在多态)
4.软件生命周期
①生命周期划分为三个时期八个阶段:
软件定义时期:问题定义、可行性研究
软件开发时期:需求分析、总体设计、详细设计、编码和单元测试、综合测试
软件运行维护时期:运行维护
②软件生命周期中常见的模型有:瀑布模型、快速原型模型、增量模型、螺旋模型、喷泉模型、Rational统一过程、敏捷过程、微软过程等等
③用于面向对象的软件开发:喷泉模型。因为喷泉模型在整个开发过程中都使用“对象”这个概念,很容易实现各个开发步骤的反复迭代(求精)和逐步深化,因此喷泉模型很好实现了面向对象开发的无缝和迭代特性
④模型介绍
瀑布模型
快速原型模型
快速原型模型是快速建立起来的可以再计算机上运行的程序,它所能完成的功能往往是最终产品能完成的功能的一个子集。他可以让用户快速试用原型系统并给出意见
增量模型
增量模型也称渐增模型。使用增量模型开发软件时,把软件产品作为一系列的增量构件来设计、编码、集成和测试。每个构件由多个相互作用的模块构成,并且能够完成特定的功能
使用增量模型时,第一个增量构件往往实现软件的基本需求,提供最核心的功能
把软件产品分解成增量构件时,唯一必须遵守的约束条件是,当把新构件集成到现有构件中时,所形成的产品必须是可测试的
螺旋模型
可以理解为每个阶段增加了风险分析的快速原型模型。在进行下一阶段的原型开发时,首先进行风险分析。主要适用于内部开发的大规模软件项目,随着过程的进展演化,开发者和用户能够更好的识别和对待每一个演化级别上的风险;随着迭代次数的增加,工作量加大,软件开发成本增加
5.可行性研究
①目的:用最小的代价、在尽可能短的时间内确定问题是否能被解决
②可行性研究的工具:
- 系统流程图:系统流程图是概括的描绘物理系统的传统工具,表达的是数据在系统各部件之间流动的状况
- 数据流图(DFD):描绘信息流和数据从输入移动到输出的过程中经受的变换。
- 数据字典:是关于数据的信息的集合,是对数据流图中包含的所有元素的定义的集合。它主要由数据流描述、加工描述和文件描述三部分组成.(1)数据流;(2)数据流分量(即数据元素);(3)数据存储;(4)处理。
- 数据字典与数据流图的关系:数据流图和数据字典共同构成系统的逻辑模型,没有数据字典数据流图就不严格,然而没有数据流图数据字典也难于发挥作用
③可行性研究的任务
先分析和澄清问题定义,导出系统的逻辑模型;
然后从系统逻辑模型出发,探索若干种可供选择的主要解法;
对每种解法都研究它的可行性,至少应该从以下三个方面研究每种解法的可行性
- a.技术可行性。对要开发项目的功能、 性能和限制条件进行分析, 确定在现有的资源条件下,技术风险有多大,项目是否能实现,这些即为技术可行性研究的内容。这里的资源包括已有的或可以搞到的硬件、软件资源,现有技术人员的技术水平和已有的工作基础。
- b.经济可行性。进行开发成本的估算以及了解取得效益的评估, 确定要开发的项目是否值得投资开发,这些即为经济可行性研究的内容对于大多数系统,一般衡量经济上是否合算,应考虑一个“底线”,经济可行性研究范围较广,包括成本—效益分析, 长期公司经营策略, 开发所需的成本和资源,潜在的市场前景。
- c.操作可行性。有时还要研究社会可行性问题,研究要开发的项目是否存在任何侵犯、妨碍等责任问题。社会可行性所涉及的范围也比较广,它包括合同、责任、 侵权和其他一些技术人员常常不了解的陷阱等。
其他方面:法律可行性、运行可能性
④可行性研究方法
首先分析问题,试探性的导出问题的各种解,然后进行各种分析和比较,选择和推荐可行的解决方案。采用系统流程图描述物理数据流;运用数据流图并结合数据字典构建系统的逻辑模型。可行性研究的结果产生可行性研究报告