type
status
date
slug
summary
tags
category
icon
password
1.1 软件的概念与特点
- 软件的概念
- 软件=程序+数据+文档
- 程序:按事先设计的功能和性能需求执行的指令序列
- 数据:是程序能正常操纵的信息的数据结构
- 文档:与程序开发、维护(从开发者角度)和使用(从用户角度)有关的图文材料
注意:只有程序是可执行部分
- 软件的特征
- 软件是开发的或者是工程化的,而不是制造的(只有商品是需要制造的,但是软件只要开发出来就只需要更新而不需要重复制造了)
- 软件生产是简单拷贝,而不是重复开发(也就是生产软件的时候是把开发好的软件拷贝给用户,而不是像一般的商品一样生产的时候每一个都要重新开发一次)
- 软件产品易于多次修改,且总是要求修改(软件修改起来就是改改代码来符合用户的需求还有修复bug,而且这些修改是必要的)
- 软件开发的环境对产品影响较大(开发环境姑且就认为是电脑上的开发环境。软件在某一个系统下开发很有可能出现另一个系统不兼容的情况)
- 软件开发的时间和工作量难以估计(因为可能有人摆烂。但是普通的商品流水线生产速度就是能估计的)
- 软件开发进度难以客观衡量(就没办法说明白现在软件开发到什么步骤了)
- 软件的测试非常困难(自己想想debug多难)
- 软件不会磨损和老化,但会退化(软件不像不同的产品一样)
- 软件维护不是简单更换元器件,变更容易产生新的问题(普通商品坏了换一个就好了,但是软件如果要往上加东西就可能出现不兼容等问题)
- 记忆:从5-9就是软件的开发过程了,5是说软件开发前不好估计时间和工作量;6是说开发过程中不好评估进度;7是说软件的测试;8是说软件的使用过程中可能出现的问题;9是说软件发布之后的维护
- 软件的双重作用
- 一方面是一种产品(对于一些使用性质的产品,如qq,王者等)
- 提供计算能力
- 产生、管理、获取、修改、显示或传输信息
- 另一方面是开发其他软件产品的工具(如IDEA等)
- 支持或直接提供系统所需的功能
- 控制其他程序(如操作系统)
- 改善通信(如网络软件)
- 帮助开发其它软件(如软件开发工具,vscode等)
- 其它功能
- 软件的分类(按软件功能)
- 系统软件(管理功能,如操作系统)
- 支撑软件(支撑操作功能,如文本编辑软件就是支撑了文本编辑的功能)
- 应用软件(使用功能,如数据处理软件)
- 软件的分类(按服务对象)
- 项目软件(生产出来的产品不是为了投入市场的)
- 产品软件(生产出来的软件产品是为了投入市场的)
- 软件开发的发展(逐渐变大)
- 个体化
- 作坊化
- 工程化
- 产业化
- 为什么软件发展如此之快?
- 计算需求:软件必须适应新的计算环境或技术
- 业务需求:软件必须改善,以实现新的业务需求
- 嵌入需求:软件必须扩展,以满足和新一代系统或数据库之间的互操作性(扩展应该就是嵌入其他软件的意思吧)
- 架构需求:软件必须重新设计,使其在新的网络环境是可用的
1.2 软件危机
- 软件危机的定义
- 在计算机软件的开发和维护过程中所遇到的一系列严重问题(这些问题使得效率和质量下降),如项目超出预算,软件运行效率低,软件不符合要求等。现在的软件危机有:软件成本日益增加(可能导致项目超出预算),软件技术进步落后于需求增长(可能导致软件的运行效率低)
- 出现软件危机的原因
- 客观:软件本身特点
- 逻辑部件复杂
- 规模庞大
- 主观:不正确的开发方法
- 忽视需求分析
- 错误认为:软件开发=程序编写
- 轻视软件维护
- 消除软件危机的途径——软件工程(也就是软件工程化开发)
- 对计算机软件有一个正确的认识:软件≠程序
- 认识到软件开发应该是一种组织良好、管理严密、各类人员协同配合、共同完成的工程项目。
- 推广使用在实践中总结出来的开发软件的成功技术和方法。
- 开发和使用更好的软件工具
1.3 软件工程概念与发展过程
1.4 软件工程知识体系
- 软件工程的作用:将一个复杂的软件开发问题拆解开使其简单化(当然也可以写上面的解决软件危机)
- 软件工程的定义
- IEEE计算机协会将软件工程定义为:
- 应用系统化的、学科化的、定量的方法,来开发、运行和维护软件,即,将工程应用到软件
- 对(1)中各种方法的研究
- 软件工程的目标:软件工程的目标是在给定的时间和预算内,按照用户的需求,开发易修改、高效、可靠、可维护、适应力强、可移动、可重用的软件
- 软件工程的三要素(具体的内容没必要背吧,能写出来一点就好了):
- 工具:为软件工程的过程和方法提供自动化或半自动化的工具支持(集成的软件工程工具加上人的因素就构成了软件工程环境)
- 方法:软件工程方法是完成软件工程项目的技术手段(分为结构化方法和面向对象方法)
- 过程:过程贯穿软件开发的各个环节,在各环节之间建立里程碑(开发者在不同的过程中进行评估,而计技术人员就生成软件工程产品)
- 软件工程发展的四个重要阶段
- 传统的软件工程
- 对象工程
- 过程工程
- 构件工程
- 软件工程的七个原则(应该不会考这么阴间吧)
- 使用阶段性生命周期计划的管理
- 进行连续的验证
- 保证严格的产品控制
- 使用现代编程工具与工程实践
- 保持清晰的责任分配
- 用更好更少的人
- 保持过程改进
1.4 软件工程知识体系
- 软件工程的五个阶段
- 软件需求
- 软件设计
- 软件构建
- 软件测试
- 软件维护
- 软件工程与计算机科学的区别
- 计算机科学:着重于理论研究和计算机能力的培养
- 软件工程:在计算机科学的基础上还需要考虑客户的问题和需求,是解决问题的工具和技术
1.5 软件工程师的特质与职业道德
- 软件工程师的特质(这真不能考吧,看看得了)
- 个人责任感
- 敏锐的眼光
- 坦诚的态度
- 高抗压能力
- 高度的公平感
- 注重细节
- 务实的态度
- 作者:Noah
- 链接:https://imnoah.top/article/SoftwareEn/Chapter1
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。