软件工程笔记 第一章 概述

第一章 概述

学习目标

  • 什么是软件工程,为什么它很重要
  • 开发不同类型的软件系统可能需要不同的软件工程方法
  • 道德和职业问题对于软件工程的重要性

​ 现代社会离不开软件。软件是抽象的,因此软件工程得以简化,软件的潜能不受物理因素的限制。但由于缺乏自然约束,软件系统也容易变得极为复杂、理解困难、价格高昂。

软件失败的原因

  1. 不断增长的需求:用户需求随着系统的构建而不断改变。
  2. 期望值太低:不使用软件工程将导致实际费用高且不可靠。

1.1 专业化软件开发

​ 软件工程的目的是支持专业化的软件开发,而非个体编程。软件工程支持程序描述、设计和进化的相关技术,这些并非个体软件开发所需。

软件工程常见问题软件工程常见问题

​ 软件包括程序和所有使程序正常运行所需要的相关文档和配置信息。这是专业软件开发与业余软件开发的一个重要区别。

软件产品有两类

  1. 通用软件产品:由软件开发机构制作,在市场公开销售,可以独立使用。软件描述由软件开发机构完成。
  2. 定制软件产品:客户委托,软件承包商专门为客户开发。软件描述由客户给出,承包商按客服要求进行开发。

设计精良的软件系统具有的属性

设计精良的软件系统具有的属性

1.1.1 软件工程

​ 软件工程是一门工程学科,设计软件生产的各个方面,从最初的系统描述一直到投入使用后的系统维护。

软件工程的关键词

  1. 工程学科
  2. 软件生产的各个方面

​ 软件工程为软件设计各种情况选择最恰当的解决办法,不同的系统适合与不同的开发方,不太规范的开发适用于基于Web的系统开发,这种开发需要融合软件设计和图形设计技巧。

软件工程之所以重要的原因

  1. 个人和社会越来越多地依赖于先进的软件系统。
  2. 从长远来看,运用软件工程方法和技术去开发软件系统比单纯为个人程序项目写程序更加便宜。对于大多数类型的系统来说,绝大多数的钱都花费在软件投入使用后对软件的变更上。

​ 软件工程中系统化的方法有时叫软件过程。软件过程是指制作软件产品的一组活动及其结果。

软件过程包括4项基本活动

  1. 软件描述:客户和工程师定义所要生产的软件以及对其操作的一些约束。
  2. 软件开发:软件设计和编程实现。
  3. 软件有效性验证:软件经过检查以保证符合客户需求。
  4. 软件进化:软件随不同客户和市场需求变化而进行修改。

​ 不同类型的系统需要不同的软件开发过程。

软件工程还涉及计算机科学和系统工程

  1. 计算机科学研究的是支撑计算机和软件系统的理论和方法,而软件工程则研究软件制作中的实际问题。计算机科学理论通常更适用于相对较小的程序。对于大型的或是复杂的需要用软件解决的问题,计算机科学的经典理论不可能总是适用的。
  2. 系统工程是研究有关复杂系统的开发和进化的方方面面,此类系统中软件起着重要的作用。系统工程涉及系统部署、策略和过程设计、系统实施,也包括软件工程。系统工程人员的工作包括系统定义,定义他的总体体系结构,集成各个组件以完成整个系统,较少关注系统各组件(硬件、软件等)的工程问题。

影响软件的三个方面

  1. 异质性:市场要求软件像基于网络的分布式系统一样运行,开发新技术,只做可靠的软件,灵活应对多样性。
  2. 业务和社会的变革:随着新经济成长和新技术涌现,业务和社会快速变革,对现存软件的变更和开发新软件提出需求。技术必须在不损及系统质量前提下进化,缩短大型、复杂系统的交付时间。
  3. 安全和可信

1.1.2 软件工程的多样性

​ 软件工程是生产软件的系统化的方法,它考虑了实际成本、进度、可靠性等问题,以及软件生产者和消费者的需要。

不同类型的应用系统

  1. 独立的应用:独立运行在端系统上的应用。
  2. 以交易为基础的交互式应用:应用运行在远程端系统上,用户通过端系统访问端系统。
  3. 嵌入式控制系统:在嵌入系统中软件控制系统控制和和管理硬件设备。
  4. 批处理系统:处理大批量数据的系统。
  5. 娱乐系统:主要用于个人用户娱乐的系统。
  6. 建模和仿真系统:科学家和工程师用以模拟物理过程或环境的计算密集型的高性能并行系统。
  7. 数据采集系统:利用传感器从环境中采集数据并发送数据的系统。
  8. 集成系统:由多种软件系统构成的系统。

​ 系统类型边界是模糊的,同时也可能是交叉的,每种类型软件有不同的特征,需要不同的软件工程技术。

软件工程基本通用方法

  1. 使用有管理的和理解了的开发过程进行开发。
  2. 可依赖性和性能对所有类型的系统来说都很重要。
  3. 理解和管理系统描述和需求是很重要的。
  4. 尽可能高效地使用当前存在的资源。

1.1.3 软件工程和Web

软件组织的显著变化导致了以网络为基础的系统设计的变化

  1. 软件复用已成为构建基于Web的系统的主要技术。
  2. 指定系统的所有需求不切实际。
  3. 用户界面受到Web浏览器能力的约束。

1.2 软件工程人员的职业道德

软件工程人员需要的职业道德

  1. 保密:保守雇主或客服的机密。
  2. 工作能力:实事求是地表述自己的工作能力。
  3. 知识产权:确保雇主和客户的知识产权受到保护。
  4. 计算机滥用:不运用自己的技能滥用他人计算机。

​ ACM、IEEE(电气和电子工程师协会)、和英国计算机协会等组织颁布了职业行为准则或职业道德准则:
C:\Users\27284\AppData\Roaming\Typora\typora-user-images\image-20200413171720625.png

要点

  • 软件工程是一门涉及软件生产的各个方面的一门工程学科
  • 软件产品不仅是程序,还包括相关文档。软件产品的基本属性是可维护性、可靠性、信息安全性、效率及可接受性。
  • 软件过程包括开发软件产品过程中的所有活动。软件过程中的活动主要有:软件描述、开发、有效验证和进化。
  • 软件工程的基本概念普遍适用于所有类型的系统开发。这些基本概念包括软件过程、可靠性、信息安全性、需求以及复用。
  • 世界上是存在着许多类型的系统。每一种类型的系统的开发都需要一种与之相适应的软件工程工具和技术。几乎不存在普适的神奇的软件设计和实现技术。
  • 软件工程的基本思想适用于所有的软件系统。这些基本思想包括有管理的软件过程、软件的可依赖性和信息安全性、需求工程和软件复用。
  • 软件工程人员对软件工程行业和整个社会负有责任,不应该只关心技术问题。
  • 职业协会颁布的行为准则规定了一系列协会成员应该遵守的行为标准。
发布了5 篇原创文章 · 获赞 2 · 访问量 110

猜你喜欢

转载自blog.csdn.net/qq_43338097/article/details/105611027