软件工程导论

简介: 软件工程导论

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


1.程序设计阶段:软件生产个体化,自给自足

2.程序系统阶段:产品软件(软件开发组织开发,称为软件作坊,规模小,落后),产生软件危机,提出软件工程

3.软件工程阶段:软件危机得到缓解,新的挑战(微处理器出现、网络发展)

4.第四阶段:软件架构发展—》集中主机(数据无法共享)—》客户机/服务器(二层)(胖客户端,瘦服务器)—》数据服务器、应用服务器、客户端(三层)—》浏览器/服务器

软件危机:计算机软件开发和维护中出现严重问题。

1、开发时间和预计成本难以估计

2、用户对已交付的软件不满意

3、软件产品的质量靠不住

4、软件的可维护性差

5、软件没有适当的文档和资料

产生软件危机的原因:

一方面与软件本身的特点有关,另一方面和软件开发与维护的方法不正确有关。

1993年IEEE对软件工程的定义

把系统化、规范胡、可度量的途径应用于软件开发、运行和维护过程中;研究其实现途径。

软件工程内容:

1.软件开发方法学

软件开发过程

软件工具和软件工程环境

2.软件工程管理学

软件管理学

软件经济学

软件心理学

二、软件生存周期


软件从产生、发展到成熟、直至衰亡为止。

组成:软件定义、软件开发、软件维护


阶段:

1、可行性研究和计划

关键任务:解决问题是什么?解决办法?粗略计划

问题定义报告:问题性质、工程目标、工程规模

可行性报告:经济、技术、社会操作可行性

项目开发计划:粗略


2、需求分析

关键任务:

目标系统需要做什么?

完整、准确、清晰、具体

需求规格说明书(用户会拿着这个文档来验收)

目标系统需求


3、总体设计

关键任务:

怎样实现目标系统?

根据需求设计方案;分系统间方案;设计软件按结构等。

总体设计说明书:

记录总体设计结果


4.详细设计

关键任务:

该怎样具体实现系统?

设计每个模块的算法和数据结构。

详细设计说明书:

用适当表达工具表达算法和数据结构。


5.实现

关键任务:

选择语言、工具翻译详细设计结果、测试模块。


实现阶段文档:

程序清单、单元测试报告。


6.集成测试

关键任务:

将经过单元测试模块组装起来进行测试;

通过测试使软件达到预定要求


测试报告:

测试计划、测试方案、测试结果。


7.确认测试

用户按照需求规格说明书进行测试

测试报告:方案和结果


8.使用与维护

关键任务:

通过必要维护活动是系统持久满足用户要求。

维护类型:

改正性维护:软件运行过程中发现错误,进行维护。

适应性维护:软件运行软硬件环境变化,进行的维护。

完善性维护:用户要求改进或扩充软件,进行维护。

预防性维护:为将来的维护作准备。


实际开发中会形成不同的生存周期模型,又称过程模型。

三、软件过程模型


常用模型

image.png

1.瀑布模型

image.png

特点:

1.阶段具有顺序性和依赖性

前一阶段结束后一阶段开始,前一个阶段输出文档,后一个阶段输入文档。


2.推迟实现观点

瀑布模型在编码前设置系统分析、系统设计,推迟程序物理实现,保证前期工作扎实。


前期工作做充分了,再编码,编码尽量放在后面。


3.质量保证观点

瀑布模型每阶段坚持两个重要做法:

一是每阶段都必须完成完整、准确的文档。软件开发时人员间通信、运行时期维护的重要依据。

二是每阶段结束前对文档评审。

待反馈环的瀑布模型图

image.png

优点:提高软件质量、降低维护成本,缓解软件危机。

缺点:只能自上而下,上一阶段的错误无法修改。模型缺乏灵活性,无法解决需求不明确问题。用户不经过实践提出完整准确需求不切实际。

2.快速原型模型

快速建立反映用户主要需求的原型系统,反复由用户评价修正需求,开发出最终产品。

说人话:先快速做一个基础版本系统,给用户挑毛病,再改正。

image.png

优点:

确定需求上优于瀑布模型(通过原型与用户交互);

提供学习手段,通过开发原型和演示原型对开发者和使用者了解系统都有积极作用;

有的软件原型可以成为最终产品的一部分。


缺点:

快速建立的系统结构加连续修改可能导致产品质量低下原型系统的内部结构可能不好。


需求不确定的软件适合快速原型模型。

3.增量模型

又称渐增模型,开发软件时将软件产品作一系列增量构件设计、编码、集成和测试。

区别于瀑布和快速原型模型:

瀑布和快速原型模型是一次把满足所有需求产品提交给用户。

增量模型是分批向用户提交产品。

从详细设计阶段,各个构件并行工作。

image.png

优点:

较短时间向用户提交可完成有用工作产品;

用户有充裕时间学习适应产品;

软件结构必须开放,方便向现有产品加入新构件。

缺点:

做到第三个优点比较困难。

风险更大的增量模型

image.png

所有构件并行

最终能否融合成一个系统?就成了一个问题。一般不推荐。除非技术特别成熟,时间特别赶。

4.螺旋模型

加入风险分析,常指导大型软件项目。

软件风险:

超期、超预算、行业竞争等。

笛卡尔坐标四象限表达四方面活动:

image.png

循环往复,小规模到大规模

image.png

优点:

大型软件开发项目有较好的风险控制。

缺点:

1.续约风险评估经验

2.契约开发指定过程模型和开发产品

普及不如前述模型

5.喷泉模型

特点:面向对象方法的生存周期模型,体现迭代和无缝特性。

迭代:

求精,系统某部分常被重复工作多次,相关功能在每次迭代中逐渐加入演进系统。

无缝:

分析、设计编码各阶段间不存在明显边界。

image.png

优点:

无缝,可同步开发,提高开发效率,节省开发时间,适应面向对象软件。

缺点:

可能随时加各种信息、需求与材料,需严格管理文档,审核的难度加大。

6.Rational统一过程

二维生命周期模型

image.png

优点:

不断的版本发布成为一种团队日常工作的真正驱动力;将发现问题、指定方案和解决过程集成到下一次迭代;

迭代开发,降低风险;

更好地安排产品开发的辅助过程

7.微软过程

image.png

image.png

优点:

及时解决问题;

不确定因素方便变更;

缩短上市周期;

缺点:

缺乏理论支持

四、结构化分析概述


image.png

核心思想:

1.分解花间问题

2.物理和逻辑分开

3.进行数据和逻辑抽象


具体步骤:

1.发现需求

方法:

1.与用户交谈,准备若干个问题

2.参观用户的用作流程,观察用户的操作

3.向用户群体发调查问卷

4.与同行、专家交谈,听取他们的意见;

5.分析已经存在的同类软件产品;

6.上网查找资料;

7.从行业标准、规则中提取需求;


2.求精

对初步需求反复求精多次细化


3.建模

image.png

建立模型,用图形符号和组织规则书面描述事物。

三大模型:数据模型、功能模型、行为模型


数据模型(E-R图)

组成:

1.数据对象:软件必须理解的符合信息表示,有一系列不同性质或属性的事物。

2.属性:定义数据对象性质。学生对象,学号、姓名、班级。

3.关系:对象彼此间相互连接方式,也称联系。

教师和学生间存在“教”的联系。

分为三类,1:1、1:N、M:N。


实体—关系图

E-R图用简单符号表达分析员对问题域理解,作为用户和分析员有效交流工具。

image.png

image.png

image.png

E-R图写得好后期可以转化为数据库的表。

数据流图:描绘系统逻辑模型,图中没有具体的物理元素,只描绘信息在系统中流动处理情况。是非常好通信工具和软件设计出发点。

数据流图符号

image.png

image.png

image.png

image.png

简单数据流图例子

image.png

数据流附加符号

image.png

例子

image.png

4.规格说明

书写软件需求规格说明,作为分析阶段最终成果。

5.复审

相关文章
|
2月前
|
机器学习/深度学习 自然语言处理 搜索推荐
大模型应用:电商智能推荐:基于本地大模型的冷启动智能推荐系统实例.61
本文介绍基于Qwen1.5-1.8B-Chat轻量大模型的电商智能推荐系统,解决冷启动、模糊意图理解与可解释性差等痛点;通过语义特征增强、个性化意图解析及自然语言推荐理由生成,提升准确性与用户体验,代码开源、易于中小团队落地。
322 13
|
域名解析 SQL 网络协议
Hexo 个人博客快速部署到Gitee&Coding详细教程
Hexo 个人博客快速部署到Gitee&Coding详细教程
1530 0
Hexo 个人博客快速部署到Gitee&Coding详细教程
|
6月前
|
缓存 Linux 开发者
Windows 下手动下载安装配置 uv
UV 是专为 Windows 打造的轻量命令行包管理器,仅需 uv.exe 和 uvx.exe 两个文件,无需 WSL 或管理员权限。支持一键安装、卸载、多版本切换 Python 等工具,内置依赖解析与缓存管理,搭配国内镜像更高效。绿色无残留,开发者友好,真正实现 Linux 般丝滑体验。
6797 3
|
5月前
|
人工智能 监控 小程序
交友小程序上线/APP搭建开发流程/基本功能解析 可搭配1V1音视频
产品设计聚焦功能架构规划,涵盖用户系统、匹配推荐、即时通讯与动态社区四大模块,结合AI与人工审核机制,构建安全、高效的社交平台,支持多场景互动与内容管理。
218 0
|
5月前
|
监控 JavaScript Java
Serverless冷启动优化
Serverless冷启动是影响性能的关键瓶颈,尤其在实时交互场景中。本文从冷启动原理出发,系统解析语言选型、镜像优化、预热策略、实例复用、内存配置等十大维度,结合API服务实战案例与成本控制技巧,提供可落地的优化方案。通过精简依赖、合理预热、动态调优,企业可在性能提升与成本间实现平衡,充分发挥Serverless降本增效优势。(238字)
390 0
|
数据采集 Web App开发 测试技术
如何避免反爬虫程序检测到爬虫行为?
这段内容介绍了几种避免被反爬虫程序检测的方法:通过调整请求频率并遵循网站规则来模拟自然访问;通过设置合理的User-Agent和其他请求头信息来伪装请求;利用代理IP和分布式架构来管理IP地址;以及采用Selenium等工具模拟人类的浏览行为,如随机点击和滚动页面,使爬虫行为更加逼真。这些技巧有助于降低被目标网站识别的风险。
|
存储 Java 开发者
Java 中 Set 类型的使用方法
【10月更文挑战第30天】Java中的`Set`类型提供了丰富的操作方法来处理不重复的元素集合,开发者可以根据具体的需求选择合适的`Set`实现类,并灵活运用各种方法来实现对集合的操作和处理。
848 113
|
安全 Go 开发者
代码之美:Go语言并发编程的优雅实现与案例分析
【10月更文挑战第28天】Go语言自2009年发布以来,凭借简洁的语法、高效的性能和原生的并发支持,赢得了众多开发者的青睐。本文通过两个案例,分别展示了如何使用goroutine和channel实现并发下载网页和构建并发Web服务器,深入探讨了Go语言并发编程的优雅实现。
339 2
|
人工智能 安全 测试技术
MetaLlama大模型
LLaMA 是一组基础语言模型,参数范围从 7B 到 65B,在大量公开数据上训练而成,性能优异。Llama 2 为 LLaMA 的升级版,参数规模扩大至 70 亿至 700 亿,特别优化了对话功能。Code Llama 基于 Llama 2 开发,专注于代码生成,提供不同参数规模的模型。这些模型可在多种平台上运行,包括官方 API、第三方封装库如 llama.cpp 和 ollama,以及通过 Hugging Face 的 transformers 库使用。此外,还提供了详细的模型申请及使用指南,便于开发者快速上手。相关链接包括 Meta 官方页面和 GitHub 仓库。
MetaLlama大模型
|
Java Maven Android开发
【Azure Developer】VS Code打包Java maven Project 遇见 BUILD FAILURE
Unknown lifecycle phase "lean". You must specify a valid lifecycle phase or a goal in the format <plugin-prefix>:<goal> or <plugin-group-id>:<plugin-artifact-id>[:<plugin-version>]:<goal>
655 5

热门文章

最新文章