《软件工程》第一章——初始软件工程

软件工程关注于以工程化方法解决软件开发中的复杂性、一致性和可变性问题。它强调软件是程序、数据和文档的结合,并探讨了软件的不可见性。软件开发面临质量、成本和客户满意度的挑战,因此需要过程管理、合适的方法和工具。软件工程的目标是创建高效、可靠且易于维护的软件。它提倡软件复用、分而治之的策略以及逐步演进的开发模式。此外,良好的软件工程实践包括对团队管理、风险控制和成本估算的关注。

1.1 软件无处不在

软件是软件工程的研究对象,也是软件工程的产品形态于客观存在。
工程是理论知识应用于实践的科学,其目的是经济有效地解决实际问题。

→软件工程是为了解决开发成本效益和软件质量的问题而产生的,倡导以工程的原理、原则和方法进行软件的开发,用系统的、可控的和有效的方式构建高质量的软件产品。

1.2 软件的本质特性

1.2.1 软件的定义

软件 = 程序 + 数据 + 文档

程序:计算机可以接受的一系列指令,运行时可以提供所要求的功能和性能。

数据:使得程序能够适当地操作信息的数据结构。

文档:描述程序的研制过程、方法和使用的图文资料。

1.2.2 软件的本质特性

软件更像是嵌入式的数字化知识,这种知识载体的特征带来一些怎样的影响呢?

软件具有复杂性一致性可变性不可见性固有的内在特征软件开发困难的根本原因

  • 复杂性

在这里插入图片描述

这种复杂性会给软件开发管理和质量保证带来很多困难。
  • 一致性

    1.软件不能独立存在,需要依附于一定的环境(如硬件、网络以及其他软件)

    2.软件必须遵从人为的惯例并适应已有的技术和系统。

    3.软件需要随接口不同而改变,随时间推移而变化,而这些变化是不同人设计的结果。

在这里插入图片描述

  • 可变性
    在这里插入图片描述

软件只要是在使用,就会一直在变,而这个改变是随需而变。

在这里插入图片描述
虽然由于修改软件会造成失效率的提高,但是,修改会给软件本身带来了生命力。成功的软件都是会发生演化的。

  • 不可见性

    1.软件是一种“看不见、摸不着”的逻辑实体,不具有空间的形体特征。

    2.开发人员可以直接看到程序代码,但是源代码并不是软件本身。

    3.软件是以机器代码的形式运行,但是开发人员无法看到源代码是任何人运行。

1.3 软件工程的产生与发展(软件开发面临的问题)

错误多、性能低、不可靠、不安全等质量问题

1.3.1软件开发失败的案例

  • 1.ARIANE 5 火箭
    在这里插入图片描述

  • 2.Window Vista 系统
    在这里插入图片描述

  • 12306网络购票系统
    在这里插入图片描述

1.3.2 软件开发面临的挑战

  • 客户不满意
    1.交付的许多功能不是客户需要的
    2.交付的日期没有保障3.
    3.客户使用时发现许多Bug

  • 项目过程失控
    1.客户需求变化频繁,无力应对
    2.无法预见软件的交付质量
    3.对流程盲目遵从,忽视客户业务价值

  • 风险与成本问题
    1.开发团队专注技术,忽视风险
    2.无能力预测成本,导致预算超支

  • 无力管理团队
    1.无法评估开发人员能力及工作进度
    2.困扰于如何提升团队的能力与效率

1.4 软件工程的基本概念和内涵

1.4.1工程的含义

工程是将理论和知识应用于实践的科学,以便经济有效地解决问题。

1.4.2 软件工程的含义及目标

软件工程是

  1. 将系统性的、规范化的、可定量的方法应用于软件的开发、运行和维护,即工程化应用到软件上;
  2. 对1.中所述的方法的研究

软件工程的目标——创造“足够好”的软件。

1.较低的开发成本
2.按时完成开发任务并及时交付
3.实现客户要求的功能
4.具有良好性能、可靠性、可扩展性、可移植性等
5.软件维护费用低

1.4.3 软件工程的基本要素

  • 过程:
    支持软件开发各个环节的控制和管理
    在这里插入图片描述

  • 方法:
    完成软件开发任务的技术手段
    在这里插入图片描述

  • 工具:
    在这里插入图片描述

1.4.4 软件开发的基本策略

  • 软件复用(不只是代码复用)
    构造一个新的系统不必从零做起,直接复用已有的构件进行组装
    构件是经过反复使用验证的,由其组成的新系统具有较高的质量
  • 分而治之
    将一个复杂的问题分解成若干个简单的问题,如何逐个解决
    来源于人们生活与工作的经验,完全适合于技术领域
  • 逐步演进
    软件开发是自底向上逐步有序的生长过程
    小步快跑:每走完一步再调整并为下一步确定方向,直到终点
  • 优化折中
    优化:优化软件的各个质量特性,如运行速度、资源利用、用户体验
    折中:通过协调各个质量特性,实现整体质量的最优

1.4.5软件工程学科发展

在这里插入图片描述

1.5 软件质量实现(工程化的原则)

暂无

1.6 业界人士谈软件工程

1.6.1 软件工程在企业中的实际应用

1.6.2 优秀工程师应该具备的素质和能力

  1. 代码阅读和理解以及书写代码的能力
  2. 一个极强的责任心和对整个软件产业的敬畏之心
  3. 职业的道德
  4. 协同的能力

测试题

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

徐贤俊

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值