软件工程学习笔记(一)


前言——软件无处不在

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

一、软件的定义

软件 = = =程序 + + +数据 + + +文档

  • 程序:计算机可以接受的一系列指令,运行时可以提供所要求的功能和性能。
  • 数据:使得程序能够适当地操作信息的数据结构。
  • 文档:描述程序的研制过程、方法和使用的图文资料。

二、软件的本质特征

1.复杂性

(1)一个软件会包含许多函数,而这些函数之间又会存在许多的函数调用

以Linux为例
以Linux为例

(2)软件运行基于的服务器众多,其联系错综复杂

在这里插入图片描述

2.一致性

  • 软件不能独立存在,需要依附于一定的环境(如硬件、网络以及其他软件)
  • 软件必须遵从人为的惯例并适应已有的技术和系统
  • 软件需要随接口不同而改变,随时间推移而变化,而这些变化是不同人设计的结果

3.可变性

  • 人们总是认为软件是容易修改的,但忽视了修改所带来的副作用
  • 不断的修改最终导致了软件的退化,从而结束其生命周期
    失效率与实践的关系

4.不可见性

  • 软件是一种“看不见、摸不着”的逻辑实体,不具有空间的形体特征
  • 开发人员可以直接看到程序代码,但是源代码并不是软件本身
  • 软件是以机器代码的形式运行,但是开发人员无法看到源代码是如何执行的
    在这里插入图片描述
    软件所具有的复杂性、一致性、可变性、不可见性等特性,使得软件开发
    过程变得难以控制,开发团队如同在焦油坑中挣扎的巨兽。

三、软件工程的产生与发展

1.软件开发面临的挑战

(1)客户不满意

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

(2)风险与成本问题

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

(3)无力管理团队

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

(4)项目过程失控

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

2.软件工程的诞生和发展

1968年,北大西洋公约组织(NATO)召开国际会议, 提出“软件工程 ”概念和术语。

在这里插入图片描述


四、软件工程的基本概念

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

1.什么是软件工程?

软件工程是

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

软件工程的目标——创造足够好的软件:

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

2.软件工程的基本要素

(1)过程:支持软件开发各个环节的控制和管理

在这里插入图片描述
在这里插入图片描述

(2)方法:完成软件开发任务的技术手段

在这里插入图片描述

(3)工具:为软件开发方法提供自动的或半自动的软件支撑环境

在这里插入图片描述

3.软件开发的基本策略

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

(1)软件复用

软件复用是利用将已有的软件制品,直接组装或者合理修改形成新的软件系统,从而 提高开发效率和产品质量,降低维护成本。

(2)分而治之

软件工程是一项解决问题的工程活动,通过对问题进行研究分析,将一个复杂问题分 解成可以理解并能够处理的若干小问题,然后再逐个解决。

在这里插入图片描述

(3)逐步演进

软件更像一个活着的植物,其生长是一个逐步有序的过程。软件开发应该遵循软件的 客观规律,不断进行迭代式增量开发,最终交付符合客户价值的产品。

在这里插入图片描述

(4)优化折中

软件工程师应当把优化当成一种责任,不断改进和提升软件质量;但是优化是一个多 目标的最优决策,在不可能使所有目标都得到优化时,需要进行折中实现整体最优。

以该问题为例:

在编写C程序代码时,对文件的访问是影响程序速度的一个重要因素,那么如何提高文件的访问速度呢?

在这里插入图片描述


总结

以上就是第一次软件工程学习的内容,其中包含了软件的定义,软件的本质特征。对于开发软件所需要的工具和总体开发流程的管理也有了一定的了解。
这也是我第一次用Markdown编辑器写博客,本来以为之前学习过怎么使用Typora,对于CSDN的编辑器应该是能熟练掌握轻松上手才对,没想到还是有许多不顺利和需要学习的地方的,而且即使基本的操作学会了,能把一篇文章编辑得绘声绘色能让人有看下去的意愿而不只是将一堆文字放在一起也需要多多练习。

请添加图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值