《软件工程》复习

前几天在忙碌考试
停更了几天
以下是我在复习阶段整理的资料以及一些个人总结


自己个人总结

第一章

  • (1)什么是计算软件?
    计算机软件是由专业人员开发并长期维护的软件产品。完整的软件产品包括在各种不同容量和体系结构的计算机上执行的程序,运行过程中产生的各种结果,以及硬复制和电子表格等各种形式的软件文档。

  • (2)软件危机
    在软件开发过程中,出现一些不能按期完成,产品质量的不到保证,工作效率低和经费超支的现象
    主要是对软件产品认识不足以及对软件开发的内在规律理解偏差
    启示:深刻认识到软件特性以及软件产品开发的内在规律
    软件产品是复杂的人造系统,具有复杂性,难以处理

  • 人月神话----生产力与人数不成正比
    简而言之:就是一个人干十个月并不等于十个人干一个月,不能以人月作为衡量一项工作的规模,Brooks法则:像进度落后的项目中增加人手,只会使进度更加落后,往往忽略了团队规模的沟通成本,沟通成本包括培训和相互交流,培训成本往往呈线性增长,而相互交流成本更加多,盲目添加人手只会拖累项目开发就像用汽油灭火一样。

  • 没有银弹?
    所谓的没有银弹是指没有任何一项技术或方法可使软体工程的生产力在十年内提高十倍。
      真正好的项目,需要便捷的开发技术。但没有一种技术能彻底的舍弃了人的存在。

  • (3)什么是软件工程?
    软件工程就是借鉴传统工程的原则与方法,以提供质量、降低成本为目的指导计算机软件开发与维护的工程学科。

  • (4)常见的软件开发方法
    结构化方法,面向数据结构方法、面向对象方法、形式化方法

软件工程三要素:过程、方法、工具

第二章

软件的诞生和生命周期是一个过程,称为软件过程
过程定义了运行方法的顺序,应当交付的文档资料,为保证软件质量和协调所需要采取的管理措施,以及标志软件开发各个阶段任务完成的里程碑
使用生命周期模型简洁地描述软件过程

  • (1)软件生命周期
    从设计改产品的构想开始,到软件需求的确定、软件设计、软件实现、产品测试与验收、投入使用以及产品版本的不断更新,到最终该产品被市场淘汰的全过程
  • (2)快速模型
    快速建立一个能反映用户主要需求的原型系统,通过实践来了解目标系统的概貌,不断根据用户需求来修改原型系统,直到满足用户需求
    快速模型不但包含了迭代模型的思想,而且包含了瀑布模型的思想
  • (3)增量模型
    把待开发的软件系统模块化,每个模块作为一个增量组块,从而进行分析、设计、编码、测试。
    宏观上时增量模型微观上瀑布模型,也体现了迭代的思想,每增加一个模块,就进行一次迭代,进行一次瀑布模型
  • (4)螺旋模型
    将瀑布模型与快速快速原型模型结合起来,同时增加了一个风险分析
  • (5)喷泉模型
    是一种过程模型,支持面向对象开发,在面向对象的方法中,分析模型和设计模型采用相同的的符号标示体系,各个阶段之间没有明显的界限,常常重复,迭代,相关对象在每次迭代随之加入渐进的软件成分

第三章、可行性与需求分析

  • 这道是一道经典例题
    《软件工程》复习_第1张图片

  • 小张失败原因:
    不完整的需求
    缺少用户反馈
    缺乏资源
    不切实际的期望
    缺乏主管支持
    变化的需求规格说明
    缺少计划
    系统不再使用

问题一:我分析主要有如下两方面的可能原因:
1、 小丁在进行项目进dao度计划安排时,可能没有考虑春节法定假日的情 况,在工作安排上存在严重不合理;
2、 小丁对项目的监控力度不够,如果真有进度延误的问题,那么这个 问题应该在春节放假前(或更早)被发现。
问题二:小丁可以采用如下的措施来保证项目整体进度不被拖延: 1、 在编码阶段和测试阶段适当增加资源或安排适当加班,将这两个阶段的工期适当缩短些(建议最好不要通过增加设计人员的办法来缩短 设计工期;
2、 将试运行时间往后挪一点(因为从目前的计划来看,试运行的截止 时间和系统验收时间中间有一周的可“活动”时间),因此可以在这 方面也做一点文章。

  • (1)需求分析阶段
    软件需求规格说明书主要描述软件部分的需求,简称SRS(Software Requirement Specification),它站在开发者的角度,对开发系统的业务模型、功能模型、数据模型、行为模型等内容进行描述。经过严格的评审后,它将作为概要设计和详细设计的基线

需求分析:结构化分析以及面向对象分析

第四章结构化分析

结构化分析方法是一种面向数据流的需求分析方法,数据建模定义了数据的属性和关系,操作数据的处理建模表明当数据在系统中流动时处理如何转换数据。

  • 实体-联系图:用于数据对象描述,即数据建模,描述数据字典中数据之间的关系;
  • 数据流图:用于处理规格说明,即功能建模,描述系统的输入数据流如何经过一系列的加工变换逐步变换成系统的输出数据流;
  • ·状态转换图:用于控制规格说明,即行为建模,描述系统接收哪些外部事件,以及在外部事件的作用下的状态迁移情况;
  • ·数据字典:是模型的核心,包含了软件使用和产生所有数据的描述
    《软件工程》复习_第2张图片

第五章 面向对象方法与UML

  • (1)什么是面向对象
    把数据和操作封装在一起,形成对象。对象是构成软件系统的基本构件
    就是把事物的属性和操作组成一个整体,从问题域中的客观存在的事物出发来识别对象并建立由这些对象所构成的系统。

    按照人们认识客观世界的系统思维方式,采取基于对象的概念建立模型,模拟客观世界分析、设计和实现软件的方法,通过面向对象的理念是计算机软件系统能与现实世界中的系统一 一对应。

  • (2)UML
    UML是一种标准的图形化建模语言,它是面向对象分析与设计的一种标准表示,同时UML不是一种程序设计语言,但用UML描述的模型可以和各种编程语言联系

  • 两道经典例题
    《软件工程》复习_第3张图片

什么是形式化方法?

形式化方法是基于 数学的特种技术,适合于软件和硬件系统的描述、开发和验证。将形式化方法用于软件和硬件设计,是期望能够像其它工程学科一样,使用适当的数学分析以提高设计的可靠性和 鲁棒性。但是,由于采用形式化方法的成本高意味着它们通常只用于开发注重安全性的高度整合的系统。

(7)软件设计

  • 模块化就是把系统或程序划分为独立命名并且可以独立访问的模块,每个模块完成一个特定的子功能。模块集成起来可以构成一个整体,完成特定的功能,进而满足用户需求

  • 为什么说“高内聚、低耦合”的设计有利于提高系统的独立性?
    耦合是对于各个模块之间互连程度的度量。不同模块之间互相依赖的越紧密则耦合程度越高,为了体格模块独立性,应该尽量降低模块之间的耦合程度;而模块的内聚是指模块内部各个元素之间彼此的紧密程度。内聚和耦合往往密切相关,模块的高内聚通常意味着低耦合

  • 请简述软件设计与需求分析的关系。
    软件设计就是吧需求规格说明书里归纳的需求转换为可行的解决方案并把解决方案反映到设计说明书里。简单的说,需求分析就是回答软件系统能“做什么”的问题,而软件设计就是要解决“怎么做”的问题


详细概念以及例题可自行查阅

  • 《软件工程理论与实践》吕云翔编著

你可能感兴趣的:(《软件工程》课程作业,软件工程)