精华内容
下载资源
问答
  • 软件工程导论笔记

    2020-07-29 19:46:57
    软件工程导论笔记 链接:https://pan.baidu.com/s/1MXfYrPdKkK8pUr5-F4uWGA 提取码:bs1m

    软件工程导论笔记
    链接:https://pan.baidu.com/s/1MXfYrPdKkK8pUr5-F4uWGA
    提取码:bs1m

    展开全文
  • 软件工程导论笔记1.4软件过程1.4.1瀑布模型1.4.2快速原型模型1.4.3增量模型1.4.4螺旋模型1.4.5喷泉模型1.4.6Rational统一过程(RUP)1.4.7敏捷过程与极限编程1.4.8微软过程 软件三要素:程序加数据,文档 软件工程三...

    软件工程导论笔记

    1.1软件危机

    软件危机:软件开发和维护中遇到的一系列严重问题。
    软件危机的典型表现:

    1. 软件开发的成本和进度常估计不准确
    2. 用户经常不满意已完成的软件
    3. 软件产品的质量常靠不住
    4. 软件常不可维护
    5. 没有文档
    6. 软件成本在计算机系统总成本中所占的比例逐年上升
    7. 软件开发生产效率提高的速度,跟不上计算机应用迅速普及深入的趋势。

    软件危机产生的原因:
    与软件本身特点有关

    1. 软件不同于硬件,管理和控制软件开发过程相当困难。
    2. 软件在运行过程中不会因为使用过长而被“用坏”。如果运行中发现了错误,很可能是遇到了一个在开发时期引入的、在测试阶段没能检测出来的错误。
    3. 软件不同于一般程序,它的一个显著特点是规模庞大,而且程序复杂性将随着程序规模的增加而呈指数上升。
    4. 事实上,对用户要求没有准确的认识就匆忙着手编写程序是许多软件开发工程失败的主要原因之一。
    5. 目前相当多的软件专业人员对软件开发和维护还有不少糊涂观念。在实践过程中或多或上地采用了错误的方法和技术,这可能是使软件问题发展成软件危机的主要原因。
    6. 错误的认识和做法主要表现为忽视软件需求分析的重要性,认为软件开发就是写程序并设法使之运行,轻视软件维护等。
      软件开发与维护的方法不正确有关
    7. 只重视程序而忽视软件配置其余成分的糊涂观念。
    8. 软件开发人员在定义时期没有正确全面地理解用户需求,直到测试阶段或软件交付使用后才发现“已完成的”软件不完成符合用户的需要。
    9. 严重的问题是在软件开发的不同阶段进行修改需要付出的代价是很不相同的。

    1.2软件工程

    软件工程是指导计算机软件开发和维护的一门工程学科。采用工程的概念、原理、技术和方法来开发与维护软件,把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来,以经济地开发出高质量的软件并有效地维护它,这就是软件工程。

    软件三要素:程序加数据,文档
    软件工程三要素:方法,工具,过程,

    1.4软件过程

    模型示意图要会画

    1.4.1瀑布模型

    传统瀑布模型:需求分析->规格说明->设计->编码->测试->维护
    特点
    a.阶段间具有顺序性和依赖性
    b.推迟实现:编码在步骤的后面
    c.质量保证:每个阶段都要完成文档,每个阶段结束前都要对文档进行评审
    实际瀑布模型:在后面阶段发现前面阶段的错误时,需要返回前面的阶段
    在这里插入图片描述
    优点:简单,容易使用,强迫开发人员采用规范的方法,提交的文档,验证
    缺点:开发周期长
    适用场合:需求明确,大家都做过很多遍,用户参与不多,比如编译器,系统。

    1.4.2快速原型模型

    为了解决过晚用户看到原型
    在计算机快速建立一个可以运行的程序
    阶段:快速原型-规格说明-设计-编码-综合测试-维护
    在这里插入图片描述
    与瀑布模型不同的是,最先做一个原型
    优点:简单易用,少返工
    工具:HTML,python,鲁比
    适用场合:没做过这个项目,需求不明确,用户参与多

    1.4.3增量模型

    为了缩短瀑布模型开发周期,出现了渐增模型,分成了很多模块
    每次只开发软件的一部分
    过程:需求分析->规格说明->概要设计->对构件设计,编码,集成,测试
    在这里插入图片描述优点:避免一次性投入过大
    适用:前期对用户把握不准,市场风险较大,期限要求比较严格,先开发一两个构件,发布一些简单的功能试水,例如:微信
    在这里插入图片描述

    风险更大的增量模型:
    在这里插入图片描述

    1.4.4螺旋模型

    为了体改软件的质量
    在快速原型的基础上每步骤都加了风险分析

    在这里插入图片描述

    1.4.5喷泉模型

    为了解决瀑布模型交付时间过长的问题
    与增量模型不同,它是每次都开发完整,但质量不高,通过迭代逐步完善。
    是一个典型的循环迭代的过程。
    迭代
    在这里插入图片描述

    1.4.6Rational统一过程(RUP)

    RUP是由Ration公司推出的一种完整的软件过程

    RUP总结了6条最有效的开发经验:
    迭代式开发,管理需求,使用基于构件的体系结构,可视化建模,验证软件质量,控制软件变更

    RUP开发周期:
    RUP软件开发生命周期:
    迭代四项:
    初始,精化,构建,移交

    在这里插入图片描述

    1.4.7敏捷过程与极限编程

    对传统软件过程反思,不应该过多的关注文档,应该回归软件本身
    敏捷宣言:
    1.个体和交互胜过过程和工具:个体是关注程序员的能力的提高,交互是合作
    2.可以工作的软件胜过面面俱到的文档:没有人是通过看文档学会玩手机的,软件比文档更重要
    3.客户合作胜过合同谈判:传统开发中不允许客户更改需求(需求冻结),但现在用户需求总在变化,要适用于时代的变化
    4.响应变化胜过遵循计划

    极限编程:把好的开发时间用到极致
    在这里插入图片描述
    在这里插入图片描述在这里插入图片描述
    用户故事是非形式化的。

    1.4.8微软过程

    就比较瀑布,快速原型法

    1.5软件结构图

    在这里插入图片描述

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

    2.3系统流程图

    系统流程图是概括描述物理系统的传统工具,描述数据在系统间流动的过程。
    符号:
    在这里插入图片描述例子
    在这里插入图片描述在这里插入图片描述

    2.3.3分层

    系统很大,有很多系统流程图,可以分层分模块地来描述。用高层次的系统流程图描绘总体概貌(总图),表明关键功能,然后把每个关键功能再扩展详细(子图)。

    2.4数据流图

    2.4.1符号

    基本符号

    1. 正方形在这里插入图片描述:数据的源点或终点
    2. 圆角矩形在这里插入图片描述:变换数据的处理
    3. 开口矩形在这里插入图片描述:数据存储
    4. 箭头在这里插入图片描述:数据的流动方向

    2.5数据字典

    3需求分析

    在这里插入图片描述笑死我了,先存图。
    在这里插入图片描述需求分析基本任务是准确的回答“系统要做什么”,不是怎么做。
    准则

    1. 理解并描述问题的信息域,根据这条准则应该建立数据模型。(清楚涉及到哪些数据,没有这个信息系统之前,怎么完成这件事的。)
    2. 必须定义软件完成的功能,建立功能模型。
    3. 描述作为外部事件结果的软件行为,建立行为模型。(根据一个事件,系统做出什么反应)
    4. 对信息、功能、行为的模型进行分解,用层次的方式展示细节。

    需求分析最后得到的是数据流图。

    3.1需求分析的任务

    如何建立需求?
    在这里插入图片描述

    3.1.1确定系统的要求(获取需求)

    在这里插入图片描述

    1. 功能需求
      指定系统必须提供的服务,系统必须完成的所有任务。
    2. 性能需求
      指定系统必须满足的定时约束或容量约束,包括速度(响应时间)、信息量速率、主存容量、磁盘容量、安全性等方面的要求。
    3. 可靠性和可用性要求
      可靠性:定量的指定系统的可靠性(计算器的准确率是多少,稳定长时间运行)
      可用性:量化了用户可以使用系统的程度(用户容不容易上手)
    4. 出错处理需求
      说明系统对环境错误应该怎么响应。比如它接收到从另一个系统发来的违反协议格式的消息,应该做什么。
    5. 接口需求
      描述系统与它环境通信的格式,常见的有:用户接口,硬件接口,软件接口,通信接口
    6. 约束
      描述设计和实现系统时应遵循的限制条件,比如:精度,工具和语言约束,应该使用的标准,应该使用的硬件平台。
    7. 逆向需求
      不应该做什么
    8. 潜在需求
      将来可能会提出来的需求

    3.1.2分析系统的数据要求(分析)

    数据字典:名称 编号 类型
    数据结构:用图表示数据字典

    3.1.3导出系统的逻辑模型(定义、建模)

    导出详细的逻辑模型,通常用数据流图、实体-联系图、状态转换图、数据字典和主要的处理算法描述这个逻辑模型

    3.1.4验证

    3.2结构化的分析模型

    结构化的分析是建模技术,建立的模型如下
    在这里插入图片描述

    3.3功能建模

    站在计算机的角度,输入数据,如何进行数据传递

    功能建模的思想就是用抽象模型的概念,按照软件内部数据传递、变换的关系,自顶向下逐层分解,直到找到满足功能要求的所有可实现的软件为止。功能模型用数据流图来描述。

    3.3.1数据流图

    在这里插入图片描述多个数据流之间的关系
    在这里插入图片描述

    3.3.2 环境图

    顶层数据流图,包括与哪些外部实体打交道,输入什么信息,输出什么信息。
    在这里插入图片描述举例
    招生系统

    1. 学校首先公布招生条件,考生根据自己的条件报名,之后系统进行资格审查,并给出资格审查信息;
    2. 对于资格审查合格的考生可以参加答卷,系统根据学校提供的试题及答案进行自动判卷,并给出分数及答题信息,供考生查询;
    3. 最后系统根据学校的录取分数线进行录取,并将录取信息发送给考生。

    在这里插入图片描述逐层分解直到容易实现,先将招生系统进行第一层分解
    在这里插入图片描述

    3.3.3 数据流图的分层

    在这里插入图片描述举例

    银行储蓄系统的业务流程:

    1. 储户填写的存款单或取款单由业务员键入系统;
    2. 如果是存款则系统记录存款人姓名、住址(或电话号码)、身份证号码、存款类型、存款日期、到期日期、利率、密码(可选)等信息,并印出存单给储户;
    3. 如果是取款而且开户时留有密码,则系统首先核对储户密码,若密码正确或存款时未留密码,则系统计算利息并印出利息清单给储户。

    (1)外部实体,输入,输出数据流
    外部实体:储户、业务员
    输入:如果需要储户输入密码,储户才直接与系统进行交互。储户填写的存款或取款信息通过业务员键入系统,可以将存款及取款信息抽象为事务。
    输出:存单,利息清单
    (2)环境图
    在这里插入图片描述(3)一层环境图
    在这里插入图片描述
    一层中的处理存款、处理取款,再细化
    在这里插入图片描述在这里插入图片描述

    3.4数据建模

    使用实体-关系模型(ER图)进行数据建模。
    这种技术是在较高的抽象层次(概念层)上对数据库结构进行建模的流行技术。

    3.4.1实体-关系模型:ER图

    ER图中仅包含3种相互关联的元素:数据对象(实体)、描述数据对象的属性、数据对象彼此间相互连接的关系。
    数据对象:用矩形表示,可以是外部实体、事物、角色、行为或事件、组织单位、地点或结构
    属性:对象的特质
    在这里插入图片描述
    关系
    在这里插入图片描述关联数量的表示
    在这里插入图片描述
    关系也可以有属性,用菱形表示
    在这里插入图片描述
    举例
    银行储蓄系统的ER图
    在这里插入图片描述

    3.5行为建模

    3.5.1状态转换图:状态图

    状态转换图(状态图):系统的状态及引起系统状态转换
    初态:在这里插入图片描述
    终态:在这里插入图片描述
    中间态:在这里插入图片描述

    箭头线:状态转换,线上写事件,如果没写就是内源性自发的。
    状态转换:在这里插入图片描述事件:在这里插入图片描述
    举例:
    在这里插入图片描述在这里插入图片描述

    3.6数据字典

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

    3.6.1Warnier图

    在这里插入图片描述

    3.7加工规格说明

    3.8需求规格说明

    5.1 设计

    4,5,6是重点
    可以从数据流图入手

    5.2设计原理

    模块是用一个名字就能调用的程序。
    模块化: 每个系统都是由模块组成的。每个模块完成不同的功能,组合起来就是一个项目。

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

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

    在这里插入图片描述交互耦合

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

    框架

    在这里插入图片描述
    在这里插入图片描述他会问你这个架构是什么

    架构

    在这里插入图片描述

    1. 物理结构

    物理结构图/配置图

    在这里插入图片描述

    2.逻辑架构

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

    逻辑结构图

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

    3.用例

    在这里插入图片描述在这里插入图片描述用例图是动态图,是功能模型,是站在用户的角度,用例图是
    在这里插入图片描述
    在这里插入图片描述

    用例图转化为类图

    用例图:9.4.3

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

    类的设计原则

    开闭原则

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

    替换原则

    父类能飞,子类都要能飞
    在这里插入图片描述
    在这里插入图片描述在这里插入图片描述
    在这里插入图片描述在这里插入图片描述

    依赖原则

    跟接口打交道

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

    单一职责原则

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

    接口分离原则

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

    图书馆管理系统

    1.物理系统
    在这里插入图片描述
    在这里插入图片描述在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述概要做完了
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述在这里插入图片描述时序图上面的类一定要是设计好的类,不是自己想象的

    在这里插入图片描述
    在这里插入图片描述在这里插入图片描述
    在这里插入图片描述然后设计实体类

    数据流图转化程序结构图

    例子:

    https://www.cnblogs.com/123456xu/p/5478986.html

    在这里插入图片描述

    在这里插入图片描述变换型数据流
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述例子

    在这里插入图片描述
    事务性数据流
    在这里插入图片描述
    在这里插入图片描述

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

    8.1什么是面向对象分析

    在这里插入图片描述
    在这里插入图片描述1.研究问题域
    2.考虑系统边界
    3.舍弃无用的类
    在这里插入图片描述
    4.简化

    9 面向对象方法学引论

    9.1面向对象方法学概述

    模拟现实系统的方法。
    oo=objects+class+inheritance+message
    面向对象方法学=对象+类+继承+消息
    优点:

    1. 以人类习惯的思维方法一致
      • 以对象为核心
      • 基本原理:使用现实世界的概念抽象地思考问题,自然的解决问题
      • 基本原则:按照人类习惯的思维模型建立问题域的模型
    2. 稳定性好
      根据问题领域的模型建立起来,而不是基于对系统应完成的功能的分解( 不是把自己想象成一个计算机,而是站在问题域建立起来的)
    3. 可重用性好(对象是可重用的软件成分)
    4. 较易开发大型软件产品
    5. 可维护性好

    9.2面向对象的概念

    9.2.1对象

    对象是对属性值和操作值的封装
    特点:
    2. 以数据为中心
    3. 对象是主动的
    4. 实现了数据封装
    5. 本质具有并行性:不同对象独立处理自身的数据,对象间通过发消息完成通信
    6. 模块独立性好:对象之间的耦合比较松,对其他对象依赖较少

    9.2.2类,实例,消息,方法,属性,封装,继承,多态,重载

    • 类:

    • 实例:某个特定的类所描述的一个具体的对象
      类不能实例化,只有对象才能实例化
      对象可以泛指也可以具体而实例只有一个具体

    • 消息:(就是对外公开的成员函数)
      一定有消息的调用者和实现者

    • 方法:对象所能执行的操作,也就是类中所定义的服务

    • 属性:类中定义的数据

    • 封装:把数据和实现操作的代码集中起来放在对象内部
      条件:

      1. 有一个清晰的边界(对象的名字)
      2. 有确定的接口(协议)
      3. 受保护的内部实现(封装就是信息隐藏)
    • 继承:(软件复用的方法)子类自动的共享基类中定义的数据和方法机制(ps:就是标准化偷懒hh)

      1. 传递性
      2. 当类的等级为树形结构时,类的继承是单继承(java)
      3. 派生类可以调用基类方法,在此基础上增加代码,当完全想改变原有算法,在派生类
    • 多态
      问:什么是多态?
      答:不同对象接受同一个消息,但表现出来的行为不一样。
      好处:减少信息冗余,显著提高了软件的可重用性和可扩充性

    • 重载
      不同的方法使用相同的函数名,但是方法的参数列表不同

    9.3面向对象建模

    分析
    设计
    实现
    对象模型动态模型功能模型

    9.4对象模型

    描述实体的对象,客观世界和实体的关系
    对象模型为动态模型和功能模型提供了实质性框架
    UML作为面向对象技术的标准建模语言
    使用类图建立对象模型

    9.4.1 类图的基本符号

    类图描述类与类之间的静态关系,是静态模型
    在这里插入图片描述
    1.定义类
    在这里插入图片描述
    命名准则:使用有确切含义的名词,或者名词短语

    2.定义属性
    语法:可见性 属性名:类型名 = 初值{性质串}
    +number:int = “未定”
    可见性:public+ private - protected# 没有默认的可见性
    初值:如果要加初值,得static
    性质串:就是只读,读写等等,抽象

    3.定义服务
    语法:可见性 操作名(参数表):返回值类型{性质串}
    参数表是用逗号分隔,一个参数这样写:
    参数名:类型名=默认值

    操作的属性
    在这里插入图片描述例子:
    在这里插入图片描述

    考试:给你类图,写代码,给代码写类图

    9.4.2表示关系的符号

    在这里插入图片描述

    9.4.2.1依赖

    类A使用了类B
    点画箭头线
    在这里插入图片描述使用场景
    在这里插入图片描述在ChecksumValidator类中的try—catch语句里使用了InvalidChecksumException类

    9.4.2.2关联

    1.意思:类A具有一个类B,一般作为成员变量(注意不是在成员函数中使用了这个类)
    2.形态:黑实线箭头,线上的是约束
    3.代码例子:
    在这里插入图片描述翻译:
    1.directee被指导,Dos是学生指导者的缩写,学生被导员指导
    在这里插入图片描述2.

    (1)普通关联
    在语义上有语义上的关系,用黑色实线表示
    用箭头表示方向
    *多
    1…*一个到多个
    在表示关联

    (2)关联的角色
    递归关联:自己对自己的引用
    一个人与另一个人结婚,一个人必将成为妻子或丈夫,另一个人是丈夫或妻子
    限定关联:一对多或多对多,

    一个目录里有多个文件,一个文件只能存在于多个目录中,如果是泛化的文件,可以存在多个文件种中
    关联类:引入一个关联类把多对多变成一对多
    队列这个类,就是关联类。

    9.4.2.3聚集

    类A包含一个类B,一个类的成员变量

    关联的特例
    (1)共享聚集(聚合)
    如果处于部分方的对象可同时参与多个处于整体方对象的构成,称为共享聚合。
    空心菱形
    一个课题组包含很多人,但每个人可以是另一个课题组的成员,则课题组和成员之间是共享聚合关系。

    部门包含员工
    在这里插入图片描述

    这个课程至少有6个模块,这个模块至少有一个课程

    在这里插入图片描述
    (2)组合聚集(组合)
    部分类完全隶属于整体类,整体不存在了部分也失去价值。

    在这里插入图片描述例子
    在这里插入图片描述
    1.这个画板上有9个正方形,9个正方形组合在这个板上。

    在这里插入图片描述

    9.4.2.4泛化

    也就是继承,比如“一般–特殊”,汽车–卡车,马–白马
    语法:空心三角形指向父类
    在这里插入图片描述
    举例
    在这里插入图片描述
    (1)普通泛化
    与抽象类相反的是具体类

    9.4.2.5.实现

    类A实现类B,implement
    在这里插入图片描述

    例子
    在这里插入图片描述

    9.4.3用例图

    参与者(用例使用者)和用例(一个需求,概括了功能)通过关联连接。
    在这里插入图片描述
    项目组要针对某种型号的设备开发一套调试系统。用户的基本需求是:设备调试员使用调试系统,可以实时查看设备状态和发送调试命令。设备状态信息由专用的数据采集器实时采集。
    在这里插入图片描述

    9.4.3.1用例泛化

    ddd

    9.4.3.1用例包含

    购买物品,首先要登录;追踪包裹,首先要登录
    在这里插入图片描述系统有一个参与者:读者;包含三个用例:续借、借书、检查预定,读者可以使用续借和借书功能,在此之前要检查预定。
    在这里插入图片描述

    9.4.3.2用例扩展

    特殊情况下才会发生

    购买商品,意外的形况下,需要进入日志
    在这里插入图片描述有一个参与者:读者;有两个用例:借书和拒绝借阅,读者可以使用借书功能,有特殊情况会拒绝借阅。
    在这里插入图片描述

    10.1面向对象分析的基本过程

    在这里插入图片描述

    10.2需求陈述

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

    10.3建立对象模型

    10.3.1确定类与对象

    在这里插入图片描述

    在这里插入图片描述例子
    在这里插入图片描述2.筛选
    在这里插入图片描述
    在这里插入图片描述(3)含糊
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    10.3.2确定关联

    在这里插入图片描述给描述,画类图
    举例
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    在这里插入图片描述

    在这里插入图片描述

    在这里插入图片描述

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

    10.3.3划分主题

    就是包图
    包和包之间的关系
    在这里插入图片描述

    10.3.4确定属性

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

    10.3.5识别继承关系

    在这里插入图片描述在这里插入图片描述
    10.3.6反复修改

    10.4建立动态模型

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

    在这里插入图片描述

    10.4.3.画事件跟踪图

    在这里插入图片描述

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

    10.4.4画状态图

    在这里插入图片描述

    在这里插入图片描述

    10.5 建立功能模型

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

    10.6定义服务

    在这里插入图片描述

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

    展开全文
  • 软件工程导论笔记-思维导图

    千次阅读 2019-10-13 09:03:20
    软件工程课程学习笔记——思维导图

    可行性研究

    在这里插入图片描述

    需求分析

    在这里插入图片描述

    形式化技术

    在这里插入图片描述

    总体设计

    在这里插入图片描述

    详细设计

    在这里插入图片描述

    实现

    在这里插入图片描述

    维护

    在这里插入图片描述

    展开全文
  • 第一章软件工程的概述前言正文1.软件危机 (software crisis):2....​ ~Ooops:本篇博文为观看《软件工程导论 第五版 》张海潘书籍所做的总结性笔记, 有错误请望指出? 正文 1.软件危机 (software crisis): ​

    前言:

    感谢各位大佬的无私分享,感谢各位大佬的默默帮助。

    注:
    1.参考资料:《软件工程导论》(第6版,张海潘 牟永敏 编著)
    2.电子资料下载 [ 提取码 : if42 ]
    本电子资料不得用于任何商业用途。仅仅提供学习,交流用途,本博客不承担任何相关责任)

    ~ ~ ~ Oops:本文内容来自于对《软件工程导论》(第6版,张海潘 牟永敏 编著),仅为个人学习记录,所以一下的学习观点只限于自己的知识层面。如涉及版权问题请版权方联系我。


    正文

    1.软件危机 (software crisis):

    是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。即“两低一高” 【问题:质量低、效率低、成本高。】
    ​ 软件危机也成为“软件萧条(depression)”或“软件困扰(affliction)”

    2.软件危机主要的表现形式
    1. 开发成本和进度估计不准。
    2. 用户对已完成的系统软件不满意。
    3. 软件的质量往往靠不住。
    4. 软件常常是不可维护的。
    5. 软件通常没有适合的文档资料。
    6. 软件的成本在逐年的上升。
    7. 软件开发的生产率滞后于硬件和计算机应用普及的趋势。
    3.产生软件危机的原因
    1. 与软件的本身特点有关
      1. 软件不同于硬件,是逻辑部件而不是物理部件。
        ​ 缺乏可见性,难于测试,管理和控制开发过程困难。不会由于过长时间的使用 而被“损耗”,难以维护。
      2. 软件不同于一般程序,规模庞大,而且程序复杂性随着程序规模的增加而呈指数上升。
    2. 和软件开发和维护的方法不正确有关
      1. 对软件的开发和维护有关的错误认识和做法。
        ​ 忽视软件需求分析的重要性,认为软件开发就是写程序 ,轻视软件维护
      2. 对软件开发过程与方法的知识与应用。
        ​ 软件开发要经历一个漫长的时期(编程占10-20%)。程序仅是完成软件配置的一个组成部分,软件开发方法要有利于软件维护。
    4.消除软件危机的途径
    • 对计算机软件的正确认识。
    • 认识到软件开发不是一个人的独角戏,而是有一群组织良好,管理严密,各类人员协同配合,共同完成的 工程项目。
    • 推广使用成功的软件开发技术和方法。
    • 开发和使用更好的软件开发工具。

      总之,消除软件危机,需要技术措施和必要的组织管理措施。
    5.对一个工程的理解

    ​ 大事件, 施工的过程,工程学科 。 施工过程: 分析 -> 设计 -> 实现 ->维护

    6.软件的概念
    • 定义: 软件 = 程序 + 文档 + 数据
      • 软件: 计算机程序和有关的数据和文档的完整集合。
      • 程序:计算机中可以完成某项功能的可执行指令序列。
      • 数据:程序能适当处理的信息,具有某个适用的数据结构。
      • 文档:开发,使用,维护 程序所需要的图文材料。
    7.软件工程的概念

    ​ 通俗的说: 软件工程是一门指导计算机软件开发和维护的学科
     ​  ​  ​  ​ (1)NATO定义:软件工程就是为了经济地获得可靠的且能在机器上有效地运行的软件,而建立和使用 完善的工程原理
    ​  ​  ​  ​  ​ (2)IEEE定义:①把系统的、规范的、可度量的途径应用到软件开发、运行和维护过程;②研究①中提 到的途径

    8.软件工程的本质特征

    ​  ​  ​  ​  ​ (1)软件工程关注于大型程序的构造。

    ​  ​  ​  ​  ​ (2)软件工程的中心课题是 控制软件开发过程中的复杂度。

    ​  ​  ​  ​  ​ (3)软件经常变化。

    ​ ​  ​  ​  ​ (4)开发软件的效率非常重要。

    ​  ​  ​  ​  ​ (5)和谐的合作开发是开发软件的关键。

    ​  ​  ​  ​  ​ (6)软件必须有效的支持他的用户。

    ​  ​  ​  ​  ​ (7)在软件工程领域中通常由具有一种文化背景的人替具有另一种具有文化背景的人创造产品。

    9.软件工程的基本原理

    ​  ​  ​  ​  ​ (1)用分阶段的生命周期计划进行严格管理 。
    ​  ​  ​  ​  ​ (2)坚持进行阶段评审。
    ​  ​  ​  ​  ​ (3)实行严格的产品控制。
    ​  ​  ​  ​  ​ (4)采用现代程序设计技术。
    ​  ​  ​  ​  ​ (5)结果应该能清楚的审查。
    ​  ​  ​  ​  ​ (6)开发小组的人员应该少而精。
    ​  ​  ​  ​  ​ (7)承认不断改进软件工程实践的必要性。

    10.软件工程方法学

    ​ 三个要素:1.方法2.工具3.过程。
    ​ 目前使用最广泛的软件工程方法学,分别是传统方法学和面向对象方法学

    11.软件工程的生命周期

    ​ 软件生命周期由软件定义软件开发、和运行维护三个时期组成,每个时期又可进一步划分成若干个阶段。(三个时期八个阶段) 三个时期八个阶段:
    ​  ​  ​  ​  ​ 三个时期:软件定义、软件开发、运行维护
    ​  ​  ​  ​  ​ 八个阶段:(1)问题定义 (2).可行性研究 (3).需求分析 (4).概要设计 (5).详细设计 (6).编码和单元测试 (7).综合测试 (8).软件维护

    12.软件开发模型

    (1)瀑布模型:文档驱动、线性迭代、一次交付。

    (2)快速原型:需求驱动、快速构建、演示产品。

    (3)增量模型:构件驱动、逐步构建、分批交付。

    (4)螺旋模型:风险驱动。

    (5)喷泉模型:面向对象、迭代开发。

    各种模型说明

    13.敏捷过程

    敏捷过程

    宣言:
    (1)个体和交互胜过过程和工具 (2)可以工作的软件胜过面面俱到的文档 (3)客户合作胜过合同谈判 (4)响应变化胜过遵循计划

    14.极限编程

    “极限”二字的含义是把好的开发实践运用到极致。
    极限编程的有效实践:
    (1)客户作为开发团队的成员 (2)使用用户素材 (3)短交付周期 (4)验收测试 (5)结对编程 (6)测试驱动开发 (7)集体所有 (8)持续编程 (9)可持续的开发进度 (10)开放的工作空间 (11)及时调整计划 (12)简单的设计 (13)重构 (14)使用隐喻。

    总结

    ​1.理解软件危机的概念,表现形式,原因。
    2. 理解软件工程的基本概念和基本原理,生命周期。
    3. 理解 软件到底是什么。
    4. 了解软件开发的模型。


    参考博文:

    https://blog.csdn.net/guttaoqibao/article/details/77970581

    http://www.wodefanwen.com/lhd_2lvlr7ikeb8c83h0eor6_1.html

    https://wiki.mbalib.com/wiki/%E7%80%91%E5%B8%83%E6%A8%A1%E5%9E%8B

    展开全文
  • 超详细《软件工程导论》复习笔记
  • 一、软件工程学概述 1.1 软件危机 1.1.1 定义: 计算机软件的开发和维护过程中所遇到的一系列严重问题。 1.1.2 表现: 1. 对软件开发成本和进度的估计常常很不准确 2. 用户对完成的软件系统不满意的现象经常发生 3....
  • 软件工程导论》学习笔记·

    万次阅读 多人点赞 2019-03-04 11:53:18
    第一章,软件工程导论: 软件危机:计算机软件开发维护过程中所遇到得一系列严重的问题。 软件危机的典型表现: 对软件开发成本和进度的估计常常很不准确。 用户对以完成的软件系统不满意的现象经常发生。 软件...
  • 第一章:软件工程概论 1.1软件危机 表现:轻视需求分析,认为软件工程就是写程序,轻视软件维护。 1.2软件工程 软件工程方法学三要素:过程,工具,方法。 1.3软件生命周期 软件定义 问题定义 可行性研究 需求分析 ...
  • 软件工程导论 学习笔记

    千次阅读 2020-04-28 22:50:38
    第一章、软件工程学概述 1、软件危机 (1)软件危机:是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。 软件危机包含下述两个方面的问题: <1>如何开发软件,以满足对软件日益增长的需求。 &...
  • 基于软件功能来进行分类:系统软件(与计算机硬件想配合使得计算机各个部件相互协调工作:Eg:系统软件和编译程序),支持软件(协助用户进行开发的软件。EG:rational rose 用于实现UML建模),应用软件(商业处理...
  • 文章目录题型分配其他概述章节叙述第一章 软件工程概述软件工程的定义软件工程方法学软件生命周期软件过程(模型)第二章 可行性研究数据流图(DFD)结语: 题型分配 填空题 10分 选择题 40分 大题 40 分 第...
  • 软件工程导论学习笔记 第一章 软件工程简述 总述:软件工程的诞生,为了消除软件危机 20世纪60年代后期开始认真研究消除软件危机的途径,从而逐渐形成了一门新兴的工程学科-计算机软件工程 1.1软件危机 软件危机:...
  • 软件工程导论学习笔记(1) 制作一个软件的流程 前言 软件工程的出现是因为日益庞大工程量导致制作一款软件变得越来越复杂,因此要用工程化的方法去研究它。软件工程导论只要是把过去数十年世界制作软件的合理经验...
  • 注意:请使用Mindmaster软件打开....面向用户:软件工程专业在读本科生,软件工程初学者,考研者 内容包括:概述,可行性研究,需求分析,总体设计,详细设计,软件编码,软件测试,软件维护,面向对象软件工程,UML
  • 这是本人语雀文章链接原版在此:https://www.yuque.com/docs/share/9716de18-210b-422b-a32e-088209cbfbee?# 《《软件工程导论笔记》 复习提醒:紫色字体代表必背,红色字体代表是复习重点,80%考察,蓝色字体代表...
  • 文章目录第八章 维护第九章 面向对象方法学引论功能模型用例图第十章 面向对象分析第十三章 软件项目管理工程网络 第八章 维护 软件维护的定义 :所谓软件维护就是在软件已经交付使用之后,为了改正错误或满足新的...
  • 软件工程导论学习笔记(3) 可行性研究过程 前言 上一篇讲了可行性研究的任务,就是要在尽可能短的时间内判断这个项目值不值得做。这一篇我们来具体研究可行性研究的8个步骤 1.复查系统规模和目标 明确要解决的问题...
  • 软件工程导论笔记软件工程导论笔记 1 第一章 软件工程学概述 8 1.1 软件危机 8 1.1.1 软件危机的介绍 8 1.1.2 产生软件危机的原因 8 1.1.3 消除软件危机的途径 8 1.2 软件工程 8 1.2.1 软件工程的介绍 8 ...
  • 软件工程学习笔记(2) 可行性研究的任务 前言 从这一篇开始,我们正式进入可行性研究的学习。这是第一篇,首先来研究一下可行性研究的任务。 为什么要进行可行性研究? 并不是所有的软件都值得去做,做一个软件之前...
  • 软件工程导论(第六版)】学习笔记

    千次阅读 多人点赞 2020-03-26 08:51:38
    前言: 感谢大佬们的不求回报的分享, 感谢好人们的百忙之中的帮助...【软件工程导论学习笔记】第一章:软件工程学概述 【软件工程导论学习笔记】第二章:可行性研究 End : 如果觉得有收获,就请我喝杯咖啡吧! ...
  • 张海藩《软件工程导论》课本总结、习题答案、笔记。资源来自于网络,如侵犯作者版权,请联系博主删除资源
  • 软件工程导论
  • 电子信息专业 - 考研复试笔记分享(软件工程导论-第六版 + 管理信息系统-马慧) 包括: 软件工程导论-第六版 知识点 管理信息系统-马慧 知识点 编译原理 主要知识点 计算机网络 主要知识点 数据库 知识点及常规操作
  • 软件工程导论——第一章 软件工程概述 一、软件 软件的应用普及使得软件工程作为一门学科进入学校。 1.1软件的发展历程 1949——1959独立变成服务 1969——1979软件产品诞生,并受知识产权保护 1969——1981出现企业...
  • 工程导论笔记第三章

    2020-11-22 12:53:42
    第三章 工程、技术与工程师 1.工程与技术 工程依赖技术的发展,技术是实现工程的手段。技术比工程更依赖科学的发展。也可以认为技术是建立在科学与工程间的桥梁,这也是人们总是将科学与技术统称为“科技”的原因。...
  • 软件工程导论学习笔记 第二章 可行性研究 2.1可行性研究的任务 可行性研究的目的是确认问题是否值得去解决 可行性一般从三个角度出发: (1)技术可行性 (2)经济可行性 (3)操作可行性 2.2可行性研究过程 1、复查...
  •  软件生命周期:软件定义、软件开发、软件维护(运行维护)。 ◾软件定义阶段通常可以进一步分为 3 个阶段:问题定义、可行性研究和需求分析 。 ◾软件开发阶段通常由 4 个阶段组成:总体设计、详细设计、编码...
  • 笔记】《软件工程导论-第六版》复习笔记

    千次阅读 多人点赞 2020-04-06 22:21:53
    1.概述 1.1 软件危机 1.1.1 定义 软件开发和维护过程中遇到的一系列严重问题,长期找不到解决这些问题的方法,问题逐渐积累起来,形成了尖锐的矛盾 1.1.2 产生原因 软件规模变大,结构更复杂 ...1.2 软件工程概念...
  • 适合考试期末考复习资料、考研初试复试材料
  • 软件工程导论 期末知识点复习总结

    万次阅读 多人点赞 2018-06-30 10:38:31
    2015软件工程期末复习知识点 软件是计算机程序、方法、规则、相关的文档以及运行计算机系统时所必需的数据的总和(狭义定义:软件=程序+数据+文档) 软件的特性:软件是复杂的、软件是不可见的、软件是不断变化...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,181
精华内容 872
关键字:

软件工程导论笔记