软件工程复习提纲
第一章软件工程基本概念
1、软件危机的概念:指在计算机软件的开发和维护过程中所遇到的一系列严重问题。
2、软件危机包含两方面的问题:1)如何开发软件以满足对软件日益增长的需求;
                            2)如何维护数量不断膨胀的已有软件。
3、软件危机的原因:1)与软件本身的特点有关;2)和软件开发与维护的方法不正确有关。
4、软件危机的消除途径:解决软件危机,既要有技术措施(方法和工具),
                                    又要有必要的组织管理措施。
5、软件工程的概念:软件工程就是为了经济地获得可靠的且能在实际机器上有效地运行的软件,而
                  建立和使用完善的工程原理。
6、软件工程的基本原理:1)用分阶段的生命周期计划严格管理
                      2)坚持进行阶段评审
                      3)实行严格的产品控制
                      4)采用现代程度设计技术
                      5)结果应能清楚地审查
                      6)开发小组的人员应该少而精
                      7)承认不断改进软件实践的必要性
7、软件工程方法学(3个要素):通常把在软件生命周期全过程中使用的一整套技术方法的集合称为
                              方法学,也称为范型。三要素:方法、工具和过程。
8、软件生命周期: 从软件定义、软件开发和运行维护,直到最终被废弃,要经历一个漫长
的时期,
                  通常把软件经历的这个漫长的时期称为生命周期。
                  1)软件定义:问题定义、可行性研究和需求分析;
                  2)软件开发:总体设计、详细设计、编码和单元测试、综合测试;
                                (前两个称系统设计,后两个称系统实现)
                  3)运行维护:软件维护;
9、软件过程及其特点:为了获得高质量软件所需要完成的一系列任务的框架,它规定了完成各项任
                    务的工作步骤。
                  1)瀑布模型:a.阶段间具有顺序性和依赖性;①前一阶段的工作完成后,才
                                  能开始后一阶段的工作; ②前一阶段的输出文档是后一阶段的
                                  输入文档,前一阶段的输出文档正确,后一阶段的工作才能获
                                  得正确的结果。
                              b.推迟实现的观点;对于规模较大的软件项目来说,往往编码
                                  开始得越早最终完成开发工作所需要的时间反而越长。
                              c.质量保证的观点;①每个阶段都必须完成规定的文档。
                                  ②每个阶段结束前都要对所完成的文档进行评审,以便尽早发
                                  现问题,改正错误。
                    优点:文档驱动。
                    缺点:①需求模糊的系统可能不满足用户需求。
                            ②线性模型太理想化太单纯,不再适合现代的软件开发模式,几乎被
                            淘汰。但是“线性”是人们最容易掌握并能熟练应用的思想方法。
                  2)快速原型模型:a.快速开发工具b.循环c.低成本。
                      优点:关注满足客户需求。
                      缺点:快速原型内部结构并不重要,重要的是迅速构建原型,并迅速修改,
                            以反应客户需求。可能导致系统设计差,效率低,难于维护。一旦需
                            求确定,往往快速原型将被抛弃。
                  3)增量模型(渐增模型):
                      优点:开发早期反馈及时(分批逐步的向用户提交产品,用户可完成部分工
                            作),易于维护。
                      缺点:需要非常好的体系结构,如果体系结构不够强壮可能导致设计差,效
                            率低。 
                  4)螺旋模型:瀑布模型+快速原型+风险分析;迭代过程
                      优点:由风险驱动,支持现有软件的重用。
                      缺点:软件开发人员应该擅长寻可能的风险,准确地分析风险,否则将会
                            带来更大的风险。
                      适用范围:只适用于大规模软件项目,特别是内部项目。
                  5)喷泉模型:a.主要用于支持面向对象开发过程,支持软件复用和生存期中多
                                  项开发活动的集成。
                                b.体现了软件创建所固有的迭代和无间隙的特征,在各项开发活
                                  动,即分析、设计和编码之间不存在明显的边界。
                        优点:减少了不一致性,降低了出错的可能性。
第二章可行性研究
1、可行性研究的任务:可行性研究的目的不是解决问题,而是用最小的代价在尽可能短的时间内确
                    定问题是否能够解决,是否值得去解决。
            从四方面研究每种解法的可行性:
                    (1)技术可行性:(2) 经济可行性:(3) 操作可行性:(4)法律、社会效益可行性。
考研步骤流程图
2、可行性研究的过程:(1)复查系统规模和目标(2)研究目前正在使用的系统(3)导出新系统的高层逻
                      辑模型(4)进一步定义问题(5)导出和评价供选择的解法(6)推荐行动方针(7)
                      草拟开发计划(8)书写文档提交审查。
3、系统的流程图:(1)定义:是概括地描绘物理系统的传统工具。
                (2)基本思想:用图形符号以黑盒子形式描绘组成系统的每个部件。
    ###【【【系统流程图表达的是数据在系统各部件之间流动的情况,而不是对数据进行加工处理
                    的控制过程,是物理数据流图而不是程序流程图。】】】###
                (3)系统流程图常用符号:
4、系统的数据流图:(1)定义:是一种图形化技术,它描绘信息流和数据从输入移动到输出的过程中
                          所经受的变换。
###【【【数据流图是系统逻辑功能的图形表示,即使不是专业的计算机技术人员也容易理解它,
                      因此是分析员与用户之间极好的通信工具。】】】###
              (2)数据流图的常用符号:
             
    或              数据源点/终点

                              或              数据加工处理

                              或              数据存储(文件)
                                                (静态数据)
                                              数据流(动态数据)
                                           
                    *********例子:处理事务的功能进一步分解后的数据流图*********
                  (3)作数据流图的目的和用途:a.画数据流图的基本目的是利用它作为交流信息的
                                              工具。
                                            b.数据流图的另一个主要用途是作为分析和设计
                                              的工具。
5、数据字典的内容:是关于数据的信息的集合,也就是对数据流图中包含的所有元素的定义的集合。
                  数据字典由下列4类元素的定义组成:
                  (1)数据流(2)数据流分量(即数据元素)(3)数据存储(4)处理。