软件工程导论 清华大学 刘强老师 课程笔记(一)

编程入门 行业动态 更新时间:2024-10-10 13:17:53

软件工程导论 <a href=https://www.elefans.com/category/jswz/34/1757004.html style=清华大学 刘强老师 课程笔记(一)"/>

软件工程导论 清华大学 刘强老师 课程笔记(一)

(本文为刘强老师软导课程笔记,许多内容刘老师课件中也有,这里仅作知识分享)

软件工程导论——第一章 软件工程概述

一、软件

软件的应用普及使得软件工程作为一门学科进入学校。

1.1软件的发展历程

1949——1959独立变成服务
1969——1979软件产品诞生,并受知识产权保护
1969——1981出现企业供应商,这时候计算机仍未普及,公司集体共有
1961——1994微软发明PC机,计算机出现于大众市场
1994——今天 网络给计算机带来了更大的价值

1.2软件开发挑战

1.2.1软件创新的挑战

1)客户需求的满足
2)软件风险、成本、进度
3)科学团队管理

1.2.2软件的本质特性

1)复杂性
2)演化性(随硬件、需求等去不断改变)

3)不可见性(功能点检查)

1.2.3软件危机

随着软件大规模的出现,原先软件开发过程中的陋习逐渐暴露出来,进度延误、成本超支、交付质量差、维护性差等问题积小成大,成为整个行业的通病。

1.2.4软件开发问题解决途径(“软件工程”诞生)

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

二、软件工程的基本概念

2.1系统的本质

eg:人的呼吸系统;铁路交通系统
1)有基本的组成
2)界限划分明确
3)系统组成元素
4)系统的变化过程

2.2工程的方法

工程是大规模的程序,因此更加注重方法规范
工程的特点:
1)需要平衡与决策
2)需要度量与验证
3)训练有素的过程
4)团队协作与角色分工
5)系统地运用工具
6)工程原则、标准和实践
7)重用设计和设计制品

2.3什么是软件工程

软件工程是 ① 将系统性的、规范化的、可定量的方法应用于软件的开发、运行和维护,即工程化应用到软件上;② 对①中所述方法的研究。
1)软件工程是一项建模活动,通过建模、画图等方法降低问题的复杂性
2)软件工程是一项解决问题的工程活动,它对复杂问题进行划分与整合,使得庞大问题变成若干的小问题。
3)软件工程是一项受软件工程原理指导的活动。工程原理:

(1)提出问题,对问题进行描述
(2)提出可以选择的解决方案
(3)用于指导决策的准则
(4)做出的决策

2.4软件工程方法

面向服务:在应用表现层次上将软件构件化,即应用业务过程由服务组成,而服务由构件组装而成。
面向构件:寻求比类的粒度更大的且易于复用的构件,期望实现软件的再工程 。
面向对象:以类为基本程序单元,对象是类的实例化,对象之间以消息传递为基本手段。
面向过程:以算法作为基本构造单元,强调自顶向下的功能分解,将功能和数据进行一定程度的分离。

软件工程过程周期:

2.5软件工程与计算机的区别

计算机科学偏科学研究:用于发现规律与理论方法(追求科学理论的准确性)
软件工程:应用计算机的理论结合工程的方法去发明创造未存在的事物(追求产品的商业价值)刘老师举了一个很好的例子:商人想让你买的不是本来就想买的东西,而是你之前未打算购买的东西。
亚马逊平台买尿布推荐啤酒链接的事例就是一种商业价值的提升,他追求的不是预测的精准度而是商业价值的实现。可见大数据不仅可以面向计算机领域实现准确预测,也可以面向软件应用方向。
深度学习就是典型的工业界方法,它没有严格的算法,而是大规模的算、训练实现很好的效果。

三、软件的质量属性

3.1什么是好的软件

软件质量:功能要求;缺陷要少;好运维;好重用;可按期完成

3.2McCall质量模型:

四、软件过程模型

将任务划分为一个个子活动,一活动为节点进行任务划分。
软件过程是为了获得高质量软件而实施的一系列活动,它定义了工作任务、项目里程碑、交付物和质量保证点。

1)问题定义:人们通过开展技术探索和市场调查等活动,研究系统的可行性和可能的解决方案,确定待开发系统的总体目标和范围。
2)需求开发:在可行性研究之后,分析、整理和提炼所收集到的客户需求,建立完整的需求分析模型,编写软件需求规格说明。
3)软件设计:根据需求规格说明,确定软件体系结构,进一步设计每个系统部件的实现算法、数据结构及其接口等。
4)软件实现:概括地说是将软件设计转换成程序代码,这是一个复杂而迭代的过程,要求根据设计模型进行程序设计以及正确而高效地编写和测试代码。
5)软件测试:检查和验证所开发的系统是否符合客户期望,包括单元测试、子系统测试、集成测试和验收测试等。
6)软件演化:系统投入使用后对其进行改进,以适应不断变化的需求。完全从头开发的系统很少,将软件系统的开发和维护看成是一个连续过程更有意义。
将以上六个活动进行结合:瀑布模型
瀑布模型的开发阶段严格按照线性方式进行,每一个阶段具有相关的里程碑和交付产品,且需要确认和验证。

瀑布模型缺点:一步改后面所有步骤都要改。
软件有强烈的迭代性,在创作设计过程中经常会返回去重新改动,尤其是需求分析阶段很容易发生改动。因此可以将需求定义与分析、软件设计部分原型化,让需求商对原型提出建议。
阶段性开发:一阶段一阶段修改,每次增加新的,修改起来也比较方便(增量模型、迭代模型)。对于安全性要求较高的程序可以用数学建模的方法,采用形式化的数学方法描述系统,并利用一系列转换将形式化的需求规格说明变为可交付使用的系统(可转换模型),对数学要求较高。

更多推荐

软件工程导论 清华大学 刘强老师 课程笔记(一)

本文发布于:2024-03-10 06:59:11,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1727295.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:清华大学   软件工程   导论   老师   课程

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!