软件工程 学习笔记

发布于:2022-12-10 ⋅ 阅读:(565) ⋅ 点赞:(0)

第一章

软件定义

软件 = 程序 + 数据 + 文档

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

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

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

软件特性

复杂性、一致性、可变性、不可见性 等

复杂性

软件规模越大,服务器等规模就越复杂,阿里云等云计算平台甚至有几百万台服务器分布在全国各地 

一致性

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

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

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

可变性

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

不可见性

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

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

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

工程含义

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

实例:

大规模的设计和建造

复杂问题与目标分解

团队协作和过程控制

软件工程的定义:

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

目标:

较低的开发成本

按时完成开发任务并及时交付

实现客户要求的功能

具有良好性能、可靠性、可扩展性、可移植性等

软件维护费用低

基本要素

过程、工具、方案

基本策略

软件复用

构造一个新的系统不必从零做起,直接复用已有的构件进行组装构件是经过反复使用验证的,由其组成的新系统具有较高的质量

分而治之

将一个复杂的问题分解成若干个简单的问题,如何逐个解决来源于人们生活与工作的经验,完全适合于技术领域

逐步演进

软件开发是自底向上逐步有序的生长过程小步快跑:每走完一步再调整并为下一步确定方向,直到终点

优化折中

优化:优化软件的各个质量特性,如运行速度、资源利用、用户体验。

折中:通过协调各个质量特性,实现整体质量的最优

第二章

工程师所需能力

  1. 分析问题和解决问题的能力
  2. 人际沟通及交流能力
  3. 软件工程知识和技能
  4. 应用领域有关知识
  5. 书面语言组织和表达能力

目标

识别错误假设

确保一致性

提升依从

减少彼此误解

提高支持速度和效率

提升客户满意度

撰写优质的需求文档

需求定义

需求是对外可见的系统特征

需求,是人们要解决的某个问题或达到某种目的的需要。是系统或其组成部分为满足某种书面规定(合同,标准,规范等)所要具备的能力。

需求将作为系统开发,测试,验收,提交的正式文档依据

需求管理三任务

  • 学习——需求获取
  • 剪枝——需求优选
  • 文档化——撰写需求规格说明书

需求内容

需求是系统为满足客户期望的目标而完成的行为

需求要体现出对问题领域的清晰理解

给出系统的使用场景和上下文

软件需求规格说明

是具有一定法律效力的合同文档

清楚的描述软件在什么情况下,需要做什么,以及不能做什么

以输入/输出、输入到输出之间的转换方式来描述功能性需求

描述经过干系人磋商达成共识的非功能性需求

一般参考需求定义模板,覆盖标准模板中定义的所有条目

作为后续的软件评估依据和变更的基准

需求文档的组织形式

文档需要有逻辑组织结构【例如:参照IEEE的模板】
典型的组织形式包括

按系统能够响应的各种外部环境情况来组织

按系统特征来组织

按系统的响应方式来组织

按所管理的外部数据对象来组织

按用户类型来组织

按软件的工作模式来组织

按子系统的划分来组织

软件需求规格说明SRS的风格

 总结

软件过程

过程是一组将输入转化为输出的相互关联或相互作用的活动

过程方法

过程方法是系统地识别和管理组织内使用的过程,保证更有效地获得期望的结果

软件开发

软件过程模型

软件过程模型就是对软件过程的抽象描述

瀑布模型

 原型化模型

 可转换模型

本文含有隐藏内容,请 开通VIP 后查看