【软件工程软件及其特点】

软件工程软件及其特点

软件

软件的概念

软件(Software)是指在计算机系统的支持下,能够完成特定功能与性能的程序(Program)、数据(Data)和相关文档(Document)

软件的特点

表现形式

开发范式

需求变化

复杂性

系统缺陷

软件的组成

从开发者角度看:

  • 可执行部分

•     程序

  • 不可执行部分

•     数据

•     文档

生命周期

软件从提出开发开始到最终灭亡所经历的时期

不同阶段具有不同的特征

需求分析->软件设计->编码实现->软件测试->部署运行->使用维护

  • 需求分析:软件需求是什么
  • 软件设计:如何造出软件
  • 编码实现:编写程序代码
  • 软件测试:软件是否缺陷
  • 部署运行:部署软件运行

分类

应用软件

  • 特定应用领域的专用软件

•     提供更为便捷、快速、高效的服务

系统软件

  • 为应用软件的运行提供基础设施和服务

•     作为应用软件的运行环境

支撑软件

  • 辅助软件开发和运维

•     提高软件开发效率和质量

开源软件

开源软件实践

何为闭源软件

  • 软件代码不对用户开放的一类软件,购买软件时只提供可运行软件或服务,没有提供源代码
  • 无法掌握软件内部实现情况(如是否存在安全漏洞和恶意代码),也无法对软件进行修改和完善,极大影响了开发者的创新自由

开源软件

  • 一种源代码可以自由获取和传播的计算机软件,其拥有者通过开源许可证赋予被许可人对软件进行使用、修改和传播

托管平台和社区

托管服务

  • 创建软件仓库
  • 支持协同开发
  • 软件质量保证

代表性托管平台

  • Github
  • SourceForge
  • Gitee

开源许可证

声明获得开源代码后拥有的权利,界定对别人的开源作品进行何种操作、何种操作是被禁止的,规范开源软件的使用要求和约束

  • 宽松式开源许可证
  • Copyleft式开源许可证

软件质量

软件质量是指软件满足给定需求的程度,他是产品的生命线

软件质量要素

正确性

  • 软件满足规格说明和用户要求的程度,即在预定环境下能正确地完成预期功能和非功能需求的程度。

可靠性

  • 在规定条件下、限定时间范围内,软件系统完成预期功能、不引起系统故障的能力。

健壮性

  • 在计算环境发生故障、输入无效数据或操作错误等意外情况下,软件仍能做出适当响应的程度。

有效性

  • 软件利用计算资源和存储资源以实现其功能的能力。

安全性

  • 包括系统安全(Safety)和信息安全(Security),系统安全是指软件能及时有效避免给人员、设施、环境、经济等造成损害,信息安全是指软件能有效防控各类的非法获取、传播和使用

可维护性

  • 是否易于对其进行修改以更正错误、增强功能、适应新运行环境

可以移植性

  • 把软件从一种运行环境转移到另一种运行环境下运行的难易程度

可重用性

  • 软件模块、构件、设计方案等在其他软件开发中被再次使用程度

可理解性

  • 软件开发者或用户理解该软件系统的容易程度

可信性

  • 采取有效措施确认软件满足人们的要求和期望

持续性

  • 面对各种突发异常事件,仍能提供令人满意的服务的能力

可用性

  • 使用和操作软件系统难以程度

互操作性

  • 软件系统与其他的系统进行交换信息、协同工作的能力

可信软件的基本要求

安全性

  • 以抗击攻击,保护业务和数据的机密性、完整性和可用性

韧性

  • (Resilience)以确保系统受攻击时仍能保持良好的运行状态,具有快速恢复的能力

隐私性

  • (Privacy)以保护用户的数据及其隐私

可靠性和可用性

  • 以确保软件产品长期无故障运行,具备快速恢复和自我管理的能力,提供可预期的、一致的服务。

软件特征的变化

地位

深入到社会、经济、生活的方方面面,无处不在

作为一种创新的工具,深刻地改变各个行业和领域,创新问题解决模式和方式,影响人们日常学习、生活和工作

软件是实现行业和领域进行信息化融合和改造,实现创新性发展的使能技术和重要利器

软件已经成为人类社会的关键性基础设施

运行环境

从前端的PC终端、可穿戴设备、智能手机到后端的云中心、高性能计算中心

从孤立、独立、局域和可控的计算环境到分布、开放、动态、难控、无处不在计算环境

形态

不是单一系统,而是系统之系统

不仅是社会技术系统,还是一种生态系统

不是同构系统,而是异构、多样的系统联盟

不在封闭环境,而在开放环境中

不是封闭系统,而是动态适应系统

复杂性

软件形态-社会技术系统

  • 由人、社会组织、物理设备、过程等要素共同组成和相互作用的人机物共生系统
  • 软件系统无法单独存在,需与物理、社会系统交互作用

软件形态-系统子系统

  • 由一组面向任务、服务于不同对象的子系统构成
  • 每个子系统可独立运作并能提供相对独立功能
  • 整个系统通过各独立系统间交互来实现全局任务

软件形态-分布式异构系统

  • 拥有大量形式多样、地理或者逻辑上是分布的,分散部署在互联网上的软件实体
  • 软件实体的分布性是必须的,因为越来越多的应用本身就是分布的,软件实体的分布性有助于提高软件系统的可靠性和安全性
  • 构成软件系统的软件实体通常是异构的,异构性是一种必然

软件形态-动态演化系统

  • 系统的边界和需求的不确定性和持续演变性
  • 动态开放的特点

•     软件系统需要根据外部环境的变化而不断地调整自身,包括系统的体系结构和交互协作等等,而表现出持续演化的特点

  • 系统的运维和系统的运行需要交织在一起

软件形态-系统联盟

  • 大规模复杂信息技术系统是由大量相对独立、自我控制和管理的系统组装而成—系统联盟

软件形态-生态系统

  • “运行”生态

•     软件的运行需要依靠“生态”的支撑

•     从计算和物理设备、社会系统到OS和运行环境

  • “演化”生态

•     软件的演化基于特定的“生态”支撑

•     从最初的“源头”到最新“版本”

  • “人员”生态

•     涉及到大量、开放的介入人员

•     使用者、开发者、运维者等

软件的规模和复杂性意味着要采用行之有效的方法——工程方法

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值