目录

软件工程导论

软件工程导论

一、软件的发展分成四个阶段

1.程序设计阶段:软件生产个体化,自给自足 2.程序系统阶段:产品软件(软件开发组织开发,称为软件作坊,规模小,落后),产生软件危机,提出软件工程 3.软件工程阶段:软件危机得到缓解,新的挑战(微处理器出现、网络发展) 4.第四阶段:软件架构发展—》集中主机(数据无法共享)—》客户机/服务器(二层)(胖客户端,瘦服务器)—》数据服务器、应用服务器、客户端(三层)—》浏览器/服务器 软件危机 :计算机软件开发和维护中出现严重问题。 1、开发时间和预计成本难以估计 2、用户对已交付的软件不满意 3、软件产品的质量靠不住 4、软件的可维护性差 5、软件没有适当的文档和资料 产生软件危机的原因: 一方面与软件本身的特点有关,另一方面和软件开发与维护的方法不正确有关。 1993年IEEE对软件工程的定义 把系统化、规范胡、可度量的途径应用于软件开发、运行和维护过程中;研究其实现途径。 软件工程内容: 1.软件开发方法学 软件开发过程 软件工具和软件工程环境 2.软件工程管理学 软件管理学 软件经济学 软件心理学

二、软件生存周期

软件从产生、发展到成熟、直至衰亡为止。 组成:软件定义、软件开发、软件维护 阶段: 1、可行性研究和计划 关键任务:解决问题是什么?解决办法?粗略计划 问题定义报告:问题性质、工程目标、工程规模 可行性报告:经济、技术、社会操作可行性 项目开发计划:粗略 2、需求分析 关键任务: 目标系统需要做什么? 完整、准确、清晰、具体 需求规格说明书(用户会拿着这个文档来验收) 目标系统需求 3、总体设计 关键任务: 怎样实现目标系统? 根据需求设计方案;分系统间方案;设计软件按结构等。 总体设计说明书: 记录总体设计结果 4.详细设计 关键任务: 该怎样具体实现系统? 设计每个模块的算法和数据结构。 详细设计说明书: 用适当表达工具表达算法和数据结构。 5.实现 关键任务: 选择语言、工具翻译详细设计结果、测试模块。 实现阶段文档: 程序清单、单元测试报告。 6.集成测试 关键任务: 将经过单元测试模块组装起来进行测试; 通过测试使软件达到预定要求 测试报告: 测试计划、测试方案、测试结果。 7.确认测试 用户按照需求规格说明书进行测试 测试报告:方案和结果 8.使用与维护 关键任务: 通过必要维护活动是系统持久满足用户要求。 维护类型: 改正性维护:软件运行过程中发现错误,进行维护。 适应性维护:软件运行软硬件环境变化,进行的维护。 完善性维护:用户要求改进或扩充软件,进行维护。 预防性维护:为将来的维护作准备。 实际开发中会形成不同的生存周期模型,又称过程模型。

三、软件过程模型

常用模型 https://i-blog.csdnimg.cn/blog_migrate/f8b43afd38a61643657f7f3166effd25.png 1.瀑布模型 https://i-blog.csdnimg.cn/blog_migrate/15ce0bd2f1ccd8fa632dc344a229fc52.png 特点: 1.阶段具有顺序性和依赖性 前一阶段结束后一阶段开始,前一个阶段输出文档,后一个阶段输入文档。 2.推迟实现观点 瀑布模型在编码前设置系统分析、系统设计,推迟程序物理实现,保证前期工作扎实。 前期工作做充分了,再编码,编码尽量放在后面。 3.质量保证观点 瀑布模型每阶段坚持两个重要做法: 一是每阶段都必须完成完整、准确的文档。软件开发时人员间通信、运行时期维护的重要依据。 二是每阶段结束前对文档评审。 待反馈环的瀑布模型图 https://i-blog.csdnimg.cn/blog_migrate/7283d6dc62ba85bb2837c38b942d3164.png 优点:提高软件质量、降低维护成本,缓解软件危机。 缺点:只能自上而下,上一阶段的错误无法修改。模型缺乏灵活性,无法解决需求不明确问题。用户不经过实践提出完整准确需求不切实际。 2.快速原型模型 快速建立反映用户主要需求的原型系统,反复由用户评价修正需求,开发出最终产品。 说人话:先快速做一个基础版本系统,给用户挑毛病,再改正。 https://i-blog.csdnimg.cn/blog_migrate/0346146723c4fb30b3a587f37765d14a.png 优点: 确定需求上优于瀑布模型(通过原型与用户交互); 提供学习手段,通过开发原型和演示原型对开发者和使用者了解系统都有积极作用; 有的软件原型可以成为最终产品的一部分。 缺点: 快速建立的系统结构加连续修改可能导致产品质量低下原型系统的内部结构可能不好。 需求不确定的软件适合快速原型模型。 3.增量模型 又称渐增模型,开发软件时将软件产品作一系列增量构件设计、编码、集成和测试。 区别于瀑布和快速原型模型: 瀑布和快速原型模型是一次把满足所有需求产品提交给用户。 增量模型是分批向用户提交产品。 从详细设计阶段,各个构件并行工作。 https://i-blog.csdnimg.cn/blog_migrate/1015010f5188144e9fdb1f4bb27abe72.png 优点: 较短时间向用户提交可完成有用工作产品; 用户有充裕时间学习适应产品; 软件结构必须开放,方便向现有产品加入新构件。 缺点: 做到第三个优点比较困难。 风险更大的增量模型 https://i-blog.csdnimg.cn/blog_migrate/13ecb20022e4b5671b72205fe143852b.png 所有构件并行 最终能否融合成一个系统?就成了一个问题。一般不推荐。除非技术特别成熟,时间特别赶。 4.螺旋模型 加入风险分析,常指导大型软件项目。 软件风险: 超期、超预算、行业竞争等。 笛卡尔坐标四象限表达四方面活动: https://i-blog.csdnimg.cn/blog_migrate/20315efb95a74decc30a2bfd5d5658be.png 循环往复,小规模到大规模 https://i-blog.csdnimg.cn/blog_migrate/4dea71b5ffc89131da61f14acf16619c.png 优点: 大型软件开发项目有较好的风险控制。 缺点: 1.续约风险评估经验 2.契约开发指定过程模型和开发产品 普及不如前述模型 5.喷泉模型 特点:面向对象方法的生存周期模型,体现迭代和无缝特性。 迭代: 求精,系统某部分常被重复工作多次,相关功能在每次迭代中逐渐加入演进系统。 无缝: 分析、设计编码各阶段间不存在明显边界。 https://i-blog.csdnimg.cn/blog_migrate/55f661209f1df1b954a3087191827256.png 优点: 无缝,可同步开发,提高开发效率,节省开发时间,适应面向对象软件。 缺点: 可能随时加各种信息、需求与材料,需严格管理文档,审核的难度加大。 6.Rational统一过程 二维生命周期模型 https://i-blog.csdnimg.cn/blog_migrate/7f7cd3aa4ac4372dc760fd38efd6d63c.png 优点: 不断的版本发布成为一种团队日常工作的真正驱动力;将发现问题、指定方案和解决过程集成到下一次迭代; 迭代开发,降低风险; 更好地安排产品开发的辅助过程 7.微软过程 https://i-blog.csdnimg.cn/blog_migrate/01a5d96d36140e7f1c5cdb48dec9a05c.png https://i-blog.csdnimg.cn/blog_migrate/298f28bfbd72b760f51e467ac927bb49.png 优点: 及时解决问题; 不确定因素方便变更; 缩短上市周期; 缺点: 缺乏理论支持

四、结构化分析概述 在这里插入图片描述

核心思想: 1.分解花间问题 2.物理和逻辑分开 3.进行数据和逻辑抽象 具体步骤: 1.发现需求 方法: 1.与用户交谈,准备若干个问题 2.参观用户的用作流程,观察用户的操作 3.向用户群体发调查问卷 4.与同行、专家交谈,听取他们的意见; 5.分析已经存在的同类软件产品; 6.上网查找资料; 7.从行业标准、规则中提取需求; 2.求精 对初步需求反复求精多次细化 3.建模 https://i-blog.csdnimg.cn/blog_migrate/585a78e8d168167a6067f3879bc0889c.png 建立模型,用图形符号和组织规则书面描述事物。 三大模型:数据模型、功能模型、行为模型 数据模型(E-R图) 组成: 1.数据对象:软件必须理解的符合信息表示,有一系列不同性质或属性的事物。 2.属性:定义数据对象性质。学生对象,学号、姓名、班级。 3.关系:对象彼此间相互连接方式,也称联系。 教师和学生间存在“教”的联系。 分为三类,1:1、1:N、M:N。 实体—关系图 E-R图用简单符号表达分析员对问题域理解,作为用户和分析员有效交流工具。 https://i-blog.csdnimg.cn/blog_migrate/3fe9bbe0d4e1c7b96848c5b261d0159e.png https://i-blog.csdnimg.cn/blog_migrate/591664cc6ab30520692b1b0290decd38.png https://i-blog.csdnimg.cn/blog_migrate/e9cfbb0317e718c10a8f7e69eff53546.png E-R图写得好后期可以转化为数据库的表。 数据流图:描绘系统逻辑模型,图中没有具体的物理元素,只描绘信息在系统中流动处理情况。是非常好通信工具和软件设计出发点。 数据流图符号 https://i-blog.csdnimg.cn/blog_migrate/b2df9f56d8437033f6c5751387f86b4f.png https://i-blog.csdnimg.cn/blog_migrate/32ce0478eeedcecebe39df6dd4779b78.png https://i-blog.csdnimg.cn/blog_migrate/b5973e37f87193938d1d43c8071b3c87.png https://i-blog.csdnimg.cn/blog_migrate/2ed4efc1d989caf37b6c67f597fc53bf.png 简单数据流图例子 https://i-blog.csdnimg.cn/blog_migrate/b058166d65e4bb4d7d373d66e1add73e.png 数据流附加符号 https://i-blog.csdnimg.cn/blog_migrate/3a02cd81e83b6939538e97a34483ca63.png 例子 https://i-blog.csdnimg.cn/blog_migrate/6fd7cc3db10b728f07ad9370227aea9d.png 4.规格说明 书写软件需求规格说明,作为分析阶段最终成果。 5.复审