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

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

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

一、软件

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

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)软件演化:系统投入使用后对其进行改进,以适应不断变化的需求。完全从头开发的系统很少,将软件系统的开发和维护看成是一个连续过程更有意义。
将以上六个活动进行结合:瀑布模型
瀑布模型的开发阶段严格按照线性方式进行,每一个阶段具有相关的里程碑和交付产品,且需要确认和验证。
在这里插入图片描述
瀑布模型缺点:一步改后面所有步骤都要改。
软件有强烈的迭代性,在创作设计过程中经常会返回去重新改动,尤其是需求分析阶段很容易发生改动。因此可以将需求定义与分析、软件设计部分原型化,让需求商对原型提出建议。
阶段性开发:一阶段一阶段修改,每次增加新的,修改起来也比较方便(增量模型、迭代模型)。对于安全性要求较高的程序可以用数学建模的方法,采用形式化的数学方法描述系统,并利用一系列转换将形式化的需求规格说明变为可交付使用的系统(可转换模型),对数学要求较高。在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
序   前言   第1篇面向过程的软件工程   第1章软件危机、 软件工程   11软件工程的发展史   111程序设计时代   112程序系统时代   113软件工程时代   12软件危机主要表现形式   13产生软件危机的原因及解决途径   131产生软件危机的原因   132解决软件危机的途径   14软件软件工程   141软件   142软件工程   15软件质量   16软件的生存周期及开发模型   161软件生存周期   162软件开发模型   17习题   第2章可行性研究   21可行性研究的目的与任务   22可行性研究的步骤   23系统流程图   231系统流程图的符号   232系统流程图示例   24成本-效益分析   241货币的时间价值   242投资回收期   243纯收入   25可行性研究报告的主要内容   26习题   第3章软件需求分析   31需求分析的任务和步骤   311需求分析的任务   312需求分析的步骤   32需求获取的常用方法   321常规的需求获取方法   322快速建立软件原型来获取需求   33需求分析的方法   331功能分解方法   332结构化分析方法   333信息建模方法   334面向对象的分析   34结构化分析方法   341自顶向下逐层分解的分析策略   342结构化分析描述工具   343数据流图   344数据字典   345加工逻辑的描述   35需求分析图形工具   351层次方框图   352Warnier图   353IPO图   36SA 方法的应用   37习题   第4章软件总体设计   41软件总体设计的目标和任务   42软件设计的概念和原理   421模块和模块化   422抽象   423信息隐蔽和局部化   424模块独立性及其度量   43软件结构设计准则   44软件结构设计的图形工具   441软件结构图   442层次图   443HIPO图   45结构化设计方法   451数据流图的类型   452结构化设计方法的步骤   453变换型分析设计   454事务型分析设计   46习题   第5章软件详细设计   51详细设计的目的与任务   52结构化程序设计   53详细设计工具   531程序流程图   532NS图   533PAD图   534过程设计语言   54习题   第6章软件编码   61程序设计语言的分类   611基础语言   612结构化语言   613面向对象的语言   62程序设计语言的选择   63程序设计风格   631程序内部文档   632数据说明   633语句构造   634输入/输出   635效率   64习题   第7章软件测试   71软件测试的目标   72软件测试的原则   73软件测试方法   731静态测试与动态测试   732黑盒测试法与白盒测试法   74软件测试用例的设计   741白盒技术   742黑盒技术   75软件测试过程   751单元测试   752集成测试   753确认测试   754系统测试   76调试   761调试的目的   762调试技术   77习题   第8章软件维护   81软件维护的分类   82软件维护的特点   821结构化维护与非结构化维护   822维护的代价   823软件维护中存在的问题   83软件可维护性   831软件可维护性的定义   832软件可维护性的度量   833提高软件可维护性的方法   84维护的副作用   85软件工程   851软件工程与逆向工程的概念   852实施软件工程的原因   853软件工程技术   86习题   第2篇UML与面向对象的软件工程   第9章UML简介   91UML概述   911UML的组成   912UML的特点和用途   913UML的模型视图简介   92UML软件开发工具简介   921Rational Rose   922Visio简介   93习题   第10章面向对象的概念   101面向对象的方法学   1011面向对象建模   1012面向对象的方法与传统软件方法的比较   102对象与类及其UML表示   1021对象   1022类与实例   1023对象属性与操作   1024对象类的关联   103聚集、 组合、 继承和多态   1031聚集与组合   1032抽象与继承   1033多态   104习题   第11章对象设计模式   111对象设计模式概念   1111历史背景   1112对象设计模式   1113设计模式的分类   112几种典型的对象设计模式及应用   1121行为型模式中的职责键模式及应用   1122结构型模式中的外观模式及应用   1123创建型模式中的抽象工厂模式及应用   113对象类的高级概念   1131抽象类、 参数对象类、型与实现对象类   1132接口   1133版型   114组件、 包和结点   1141组件   1142包和包图   1143结点   115习题   第12章面向对象的软件开发过程   121RUP概述   1211RUP的历史   1212RUP的特色   122RUP软件开发生命周期和建模   1221RUP软件开发的生命周期   1222RUP的动态结构   1223RUP的静态结构   1224RUP的建模   123面向对象软件开发过程的案例分析   1231系统需求   1232系统的静态结构模型   1233顺序图和协作图   1234状态图和活动图   1235组件图和部署图   124习题   第13章软件开发工具Rose   131Rose的用例图与类图   1311用例图   1312类图   132Rose的交互图与状态机图   1321交互图   1322状态机图   133包、 组件图与部署图   1331包   1332组件图   1333部署图   134Rose的代码生成和逆向工程   1341代码生成   1342逆向工程   135Rose应用举例   136习题   第14章Rose及其应用   141Rose的主要功能   142Rose的使用   1421Rose主菜单窗口   1422模型与工作方式的组织   143教学管理系统的分析与设计   1431系统需求分析   1432系统问题领域分析   1433静态结构模型的建立   1434动态行为模型的建立   1435物理模型的建立   144UML类图与VB代码的转换   1441VB代码生成属性   1442Rose模型—VB代码的生成   1443VB代码的逆向工程   145UML类图与Java代码的转换   1451UML类图—Java代码的生成   1452Java代码的逆向工程   146习题   第15章面向对象的软件体系结构   151软件体系结构概述   152流程处理与客户机/服务器体系结构   1521流程处理   1522客户机/服务器体系结构   153三层和多层体系结构   1531三层体系结构   1532浏览器/服务器体系结构风格   1533多层体系结构   1534团聚与串行   154公共对象请求代理体系结构   155基于层次消息总线的体系结构风格   156异构结构风格   157习题   第16章软件工程新技术   161软件复用技术   1611软件复用概念及分类   1612软件复用的关键技术和复用粒度   162中间件技术   1621中间件概念及特点   1622中间件的分类   163组件技术   1631组件与组件化   1632组件模型及描述语言   1633组件的检索与组装   164计算机辅助软件工程技术   1641CASE的基本概念   1642CASE工具与集成CASE环境   165软件产品线技术   1651软件产品线基本概念   1652软件产品线方法   1653北大青鸟工程   166软件过程与标准化   1661软件过程及其改进   1662ISO 9000标准   1663软件能力成熟度模型   167习题   第3篇软件工程实验   第17章软件工程实验大纲   171面向过程的软件工程实验   1711实验1图书馆图书管理系统的可行性分析   1712实验2图书馆图书管理系统的项目开发计划   1713实验3图书馆图书管理系统的需求分析   1714实验4图书馆图书管理系统的总体设计   1715实验5图书馆图书管理系统的详细设计及编码实现   1716实验6图书馆图书管理系统的系统测试   1717实验7图书馆图书管理系统用户手册的撰写   1718实验8图书馆图书管理系统项目开发总结报告的撰写   172面向对象的软件工程实验   1721实验1浏览器系统的可行性分析   1722实验2浏览器系统的项目开发计划   1723实验3浏览器系统的需求分析   1724实验4浏览器系统的体系结构设计   1725实验5采用面向对象方法进行浏览器系统的详细设计   1726实验6利用Rational Rose正向工程功能完成编码的实验   1727实验7利用Rational Rose逆向工程完成修改设计的实验   1728实验8浏览器系统的测试   1729实验9浏览器系统用户手册的撰写   17210实验10浏览器系统项目开发总结报告的撰写   附录   附录AUML图总结   附录BUML中定义的常用版型、 约束和标记   附录CGOF给出的软件设计模式

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值