1.1软件工程概述

软件工程概述

什么是软件?

软件 = 程序 + 数据 + 文档

程序按事先设计的功能和性能需求执行的指令序列

数据是程序能正常操纵信息的数据结构

文档与程序开发、维护和使用有关的图文材料

。程序是指一系列按照事先设定的功能和性能需求执行的指令序列;数据是程序能正常操纵信息的数据结构;文档是与程序开发、维护和使用有关的图文资料。

三者之中,程序是软件的可执行部分,而数据与文档是不可执行部分,他们三者之间共同协作才能构成一个完整的软件。

特征

第一,软件是由人来开发或者工程化的,并不像桌子椅子一样用机器能制造出来;

第二,软件的生产,可以只是计算机上的一个简单的复制粘贴过程;

第三,软件产品更易于被多次修改,而你买的茶杯想从方的变成圆的则没那么容易;

第四,软件开发的环境对产品影响较大,因为开发者在开发过程中易于受到各种环境因素干扰,而生产线上的家具则不管周边噪音再大出来的也是同样的东西;

第五,软件开发的时间和工作量难以估计,而不像生成机器的速率那样容易度量;

第六,与工业产品不同,软件的开发进度几乎没有客观衡量标准;

第七,软件的测试非常困难,测试一辆自行车能不能骑,总是比从成千上万行代码中找错误容易得多;

第八,软件不会磨损和老化,哪怕用上十年八年,也不会像轮胎一样需要报废,只要你不嫌弃就可以一直用下去;

第九,与家具家电的售后维护不同,软件维护不是简单的更换元器件,由于代码之间更为复杂的逻辑结构,变更容易产生新的问题。

软件双重作用

软件它是一种产品,为用户提供计算能力,产生、管理、获取、修改、显示或传输信息,比如我们经常用到的word、excel、photoshop等等。

另一方面也是开发工具,用于开发其他软件产品,支持或直接提供系统所需的功能、控制其他程序、改善通信、帮助开发其它软件等,比如windows操作系统、苹各类编程语言的集成开发环境等等。

软件的分类(按软件功能)

按照软件的功能,可以将软件分为三类。

类别 包含 举例
系统软件 操作系统、数据库管理系统、设备驱动程序、通信处理程序等 windows、oracle等等;
支撑软件 文本编辑程序、文件格式化程序、磁盘或磁带间数据传输的程序、程序库系统、支持需求分析、设计、实现、测试和支持管理的软件 word、pqmagic、rational rose
应用软件 商业数据处理软件、工程与科学计算软件、计算机辅助设计/制造软件、系统仿真软件、智能产品嵌入软件、医疗/制药软件、事务管理/办公自动化软件、计算机辅助教学软件 如MATLAB、AutoCAD、腾讯QQ

软件的分类(按服务对象)

两类

项目软件的服务对象:来自于一个具体项目范围内的客户集合,比如某高校的教务管理系统;

产品软件的服务对象:客户数量庞大,如各类互联网软件,它们的目标服务对象都是全国乃至全世界的网民。

软件的发展阶段

四个阶段。

个体化发展阶段:软件往往只是为解决某个实际问题而专门编写的程序,开发者即使用者。

作坊式发展阶段:早期软件作坊缺乏组织管理,程序编写结合了一定的说明。

工程化发展阶段:软件公司化运作,更加产品化、系列化、标准化、工程化,文档被引入软件的内涵。

产业化特点:市场更加广阔,品类更加丰富,产品生态链愈加完整

软件规模越来越大

知名的谷歌软件迄今已包含了20亿行代码。

所以可以想象这样的软件产品的设计开发与维护难度,不是普通的工业产品所能比拟的。

为什么软件发展如此之快?

1、计算需求,软件必须不断的发展以适应新的计算环境或者技术的变化,比如从单机计算到现在的云计算;

2、业务需求,软件必须不断改善以实现新的业务需求,比如从小微企业单机OA软件到集团互联网OA软件;

3、嵌入需求,软件必须不断扩展,以满足和新一代系统或数据库之间的互操作性,比如从access单机数据库到HBASE云数据库;

4、架构需求,软件必须重新设计以使其在新的网络环境中是可用的,比如从互联网软件再到移动互联网软件等。

posted @   Dinesaw  阅读(580)  评论(0编辑  收藏  举报
编辑推荐:
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
阅读排行:
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】
点击右上角即可分享
微信分享提示