type
status
date
slug
summary
tags
category
icon
password

1.1 软件的概念与特点

  • 软件的概念
  • 软件=程序+数据+文档
    • 程序:按事先设计的功能性能需求执行的指令序列
    • 数据:是程序能正常操纵的信息的数据结构
    • 文档:与程序开发维护(从开发者角度)和使用(从用户角度)有关的图文材料
注意:只有程序是可执行部分
  • 软件的特征
      1. 软件是开发的或者是工程化的,而不是制造的(只有商品是需要制造的,但是软件只要开发出来就只需要更新而不需要重复制造了)
      1. 软件生产是简单拷贝,而不是重复开发(也就是生产软件的时候是把开发好的软件拷贝给用户,而不是像一般的商品一样生产的时候每一个都要重新开发一次)
      1. 软件产品易于多次修改,且总是要求修改(软件修改起来就是改改代码来符合用户的需求还有修复bug,而且这些修改是必要的)
      1. 软件开发的环境对产品影响较大(开发环境姑且就认为是电脑上的开发环境。软件在某一个系统下开发很有可能出现另一个系统不兼容的情况)
      1. 软件开发的时间和工作量难以估计(因为可能有人摆烂。但是普通的商品流水线生产速度就是能估计的)
      1. 软件开发进度难以客观衡量(就没办法说明白现在软件开发到什么步骤了)
      1. 软件的测试非常困难(自己想想debug多难)
      1. 软件不会磨损和老化,但会退化(软件不像不同的产品一样)
      1. 软件维护不是简单更换元器件,变更容易产生新的问题(普通商品坏了换一个就好了,但是软件如果要往上加东西就可能出现不兼容等问题)
  • 记忆:从5-9就是软件的开发过程了,5是说软件开发前不好估计时间和工作量;6是说开发过程中不好评估进度;7是说软件的测试;8是说软件的使用过程中可能出现的问题;9是说软件发布之后的维护
  • 软件的双重作用
    • 一方面是一种产品(对于一些使用性质的产品,如qq,王者等)
      • 提供计算能力
      • 产生、管理、获取、修改、显示或传输信息
    • 另一方面是开发其他软件产品的工具(如IDEA等)
      • 支持或直接提供系统所需的功能
      • 控制其他程序(如操作系统)
      • 改善通信(如网络软件)
      • 帮助开发其它软件(如软件开发工具,vscode等)
      • 其它功能
  • 软件的分类(按软件功能)
    • 系统软件(管理功能,如操作系统)
    • 支撑软件(支撑操作功能,如文本编辑软件就是支撑了文本编辑的功能)
    • 应用软件(使用功能,如数据处理软件)
  • 软件的分类(按服务对象)
    • 项目软件(生产出来的产品不是为了投入市场的)
    • 产品软件(生产出来的软件产品是为了投入市场的)
  • 软件开发的发展(逐渐变大)
    • 个体化
    • 作坊化
    • 工程化
    • 产业化
  • 为什么软件发展如此之快?
    • 计算需求:软件必须适应新的计算环境或技术
    • 业务需求:软件必须改善,以实现新的业务需求
    • 嵌入需求:软件必须扩展,以满足和新一代系统或数据库之间的互操作性(扩展应该就是嵌入其他软件的意思吧)
    • 架构需求:软件必须重新设计,使其在新的网络环境是可用的

1.2 软件危机

  • 软件危机的定义
    • 在计算机软件的开发和维护过程中所遇到的一系列严重问题(这些问题使得效率和质量下降),如项目超出预算,软件运行效率低,软件不符合要求等。现在的软件危机有:软件成本日益增加(可能导致项目超出预算),软件技术进步落后于需求增长(可能导致软件的运行效率低)
  • 出现软件危机的原因
    • 客观:软件本身特点
      • 逻辑部件复杂
      • 规模庞大
    • 主观:不正确的开发方法
      • 忽视需求分析
      • 错误认为:软件开发=程序编写
      • 轻视软件维护
  • 消除软件危机的途径——软件工程(也就是软件工程化开发)
    • 对计算机软件有一个正确的认识:软件≠程序
    • 认识到软件开发应该是一种组织良好、管理严密、各类人员协同配合、共同完成的工程项目。
    • 推广使用在实践中总结出来的开发软件的成功技术和方法。
    • 开发和使用更好的软件工具

1.3 软件工程概念与发展过程

1.4 软件工程知识体系

  • 软件工程的作用:将一个复杂的软件开发问题拆解开使其简单化(当然也可以写上面的解决软件危机)
  • 软件工程的定义
  • IEEE计算机协会将软件工程定义为:
    • 应用系统化的、学科化的、定量的方法,来开发、运行和维护软件,即,将工程应用到软件
    • 对(1)中各种方法的研究
  • 软件工程的目标:软件工程的目标是在给定的时间和预算内,按照用户的需求,开发易修改、高效、可靠、可维护、适应力强、可移动、可重用的软件
  • 软件工程的三要素(具体的内容没必要背吧,能写出来一点就好了):
    • 工具:为软件工程的过程方法提供自动化或半自动化的工具支持(集成的软件工程工具加上人的因素就构成了软件工程环境)
    • 方法:软件工程方法是完成软件工程项目的技术手段(分为结构化方法和面向对象方法)
    • 过程:过程贯穿软件开发的各个环节,在各环节之间建立里程碑(开发者在不同的过程中进行评估,而计技术人员就生成软件工程产品)
  • 软件工程发展的四个重要阶段
    • 传统的软件工程
    • 对象工程
    • 过程工程
    • 构件工程
  • 软件工程的七个原则(应该不会考这么阴间吧)
      1. 使用阶段性生命周期计划的管理
      1. 进行连续的验证
      1. 保证严格的产品控制
      1. 使用现代编程工具与工程实践
      1. 保持清晰的责任分配
      1. 用更好更少的人
      1. 保持过程改进

1.4 软件工程知识体系

  • 软件工程的五个阶段
    • 软件需求
    • 软件设计
    • 软件构建
    • 软件测试
    • 软件维护
  • 软件工程与计算机科学的区别
    • 计算机科学:着重于理论研究和计算机能力的培养
    • 软件工程:在计算机科学的基础上还需要考虑客户的问题和需求,是解决问题的工具和技术

1.5 软件工程师的特质与职业道德

  • 软件工程师的特质(这真不能考吧,看看得了)
      1. 个人责任感
      1. 敏锐的眼光
      1. 坦诚的态度
      1. 高抗压能力
      1. 高度的公平感
      1. 注重细节
      1. 务实的态度
 
 
Paper2PX4
Loading...
Noah
Noah
永远年轻,永远热泪盈眶
公告
❗❗复习笔记问题❗❗
由于兼容性问题
导入md文件可能导致了一些格式错误
🌹如发现格式错误,请联系我~🌹
🌹如博客内容有误也欢迎指出~🌹