软件工程复习小结(一)


前言

临近期末,就来总结一下软件工程这一门的知识点,大都是本人自己认为的重点所以仅供参考


一、软件工程概述

1.软件危机

指在计算机软件开发和维护过程中所遇到的一系列的严重问题。包含两个方面:如何开发软件,以满足对软件日益增长的需求;如何维护数量不断膨胀的已有软件。

2.软件工程

指导计算机开发和维护的一门工程学科。将系统化、严格约束的、可量化的方法应用于软件开发、运行和维护,即工程化应用于软件。

3.软件生命周期的8个阶段及其任务

软件产品的生命周期是指从设计该产品的构想开始,到软件需求的确定、软件设计、软件实现、产品测试与验收、投入使用以及产品版本的不断更新,到最终该产品被市场淘汰的全过程。6个阶段是计算机系统工程,需求分析,设计,编码,测试,运行和维护。

问题定义

回答“要解决的问题是什么?”通过对客户的访问调查,系统分析员扼要地写出关于问题性质、工程目标和工程规模的书面报告,经过讨论和必要的修改之后这份报告应该得到客户的确认;

可行性研究

回答“对于上一阶段所确定的问题有行得通的办法吗?”任务是研究问题的范围,搜索这个问题是否值得去解,是否有可行的解决方法;

需求分析

确定“为了解决这个问题,目标系统必须做什么”,主要是确定目标系统必须具备哪些功能。任务有用正式文档准确记录对目标系统的需求(规格说明书);

总体设计(概要设计)

回答“概括的说,应该怎样实现目标系统?”解决问题的策略及目标系统中应包含的程序,和确定程序由哪些模块组成以及模块间的关系;

详细设计(模块设计)

把解法具体化,设计出程序的详细规格说明,回答“应该怎样具体地实现这个系统”;

编码和单元测试

任务是写出正确的容易理解、容易维护的程序模块;

综合测试

任务是通过各种类型的测试(及相应的调试)使软件达到预定的要求;

软件维护

任务是通过各种必要的维护活动使系统持久地满足用户的需要。有四类维护活动:改正性维护,适应性维护,完善性维护,预防性维护。

二、软件过程

1.瀑布模型

​​​​瀑布模型是一种线性的开发模型,具有不可回潮性。开发人员必须等前一阶段的任务完成后,才能开始进行后一阶段的工作,并且前一阶段的输出往往就是后一阶段的输入。

瀑布模型的优点是过程模型简单,执行容易;缺点是无法适应变更,瀑布模型适应于具有以下特征的软件开发项目。

1.在软件开发的过程中,需求不发生或发生很少变化,并且开发人员可以一次性获取到全部需求。否则,由于瀑布模型较差的可回性,在后续阶段中需求经常性的变更需要付出高昂的代价。

2.软件开发人员具有丰富的经验,对软件应用领域很熟悉。

3.软件项目的风险较低。瀑布模型不具有完善的风险控制机制。

2.快速模型

快速原型的本质是“快速”。开发人员应该尽可能的建造出原型系统,以加速软件开发过程,节约软件开发成本。原型系统内部结构并不重要,重要的是,必须迅速的构建原型然后根据用户意见不断修改原型。

3.增量模型

增量模型是把待开发的软件系统模块化,将每个模块作为一个增量组件,从而分批次地分析、设计、编码和测试这些增量组件。(递增式的开发过程)特点是将待开发的系统模块化和组件化。

4.螺旋模型

适用于:风险较大的、支持需求不明确、特别是大型软件系统的开发;支持面向过程、面向对象等多种软件开发方法;是一种具有广阔前景的模型。

5.喷泉模型

在面向对象的方法中,分析模型和设计模型采用相同的符号标示体系,各阶段之间没有明显的界限,而且常常重复、送代地进行。喷泉模型主要适用于面向对象的软件项目的开发。

6.基于构件的开发模型

基于组件的开发模型充分体现了软件复用的思想,降低了开发成本和风险,并加快了产品开发。

7.统一软件开发过程模型

统一软件开发过程(RUP)模型是基于UML(统一建模语言)的一种面向对象软件开发模型它解决了螺旋模型的可操作性问题,采用送代和增量递进的开发策略,并以用例驱动为特点,集中了多个软件开发模型的优点。RUP模型是迭代模型的一种。

三、可行性研究及分析

1.可行性研究评估方面

1.技术可行性:技术的成熟程度;技术的发展趋势和前景;技术选择的限制条件;
2.经济可行性:考虑成本和效益;
3.操作可行性:系统安装后,有足够的人力资源来运行系统;抵触情绪。

2.需求分析

需求分析的步骤:

需求获取

访谈、问卷调查、实地操作、原型系统

分析建模

对待开发系统建立各种角度的模型有助于人们更好的理解问题

需求描述:

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

需求验证

需求分析阶段的工作成果是后续软件开发的重要基础,为了提高软件开发的质量,降低软件开发的成本,必须对需求的正确性进行严格的验证,确保需求的一致性、完整性、现实性、有效性。确保设计与实现过程中的需求可回性,并进行需求变更管理。

需求分析常用方法:

功能分解方法

功能分解方法是将一个系统看成是由若干功能模块组成的,每个功能又可分解为若干子功能及接口,子功能再继续分解,即功能、子功能和功能接口成为了功能分解方法的3个要素。功能分解方法采用的是自顶向下、逐步求精的理念。

结构化分析方法

结构化分析方法是一种从问题空间到某种表示的映射方法,其逻辑模型由数据流图和数据词典构成并表示它是一种面向数据流的需求分析方法。它主要适用于数据处理领域问题。

信息建模方法

从一个建模角度出发,模型要抓住事物的最重要的方面而简化。常用工具是E-R图,它的基本要素是实体、属性、关系。

面向对象分析方法

面向对象的分析方法的关键是识别问题域内的对象,分析它们之间的关系,并建立3类模型,它们分别是描述系统静态结构的对象模型,描述系统控制结构的动态模型,描述系统计算结构的功能模型其中,对象模型是最基本、最核心、最重要的。面向对象主要考虑类或对象、结构与连接、继承和封装、消息通信,只表示面向对象的分析中几项最重要特征。类的对象是对问题域中事物的完整映射,包括事物的数据特征(即属性)和行为特征(即服务)。

四.结构化分析

1.分析用到的工具

加工规格说明用结构化语言、判定树、判定表。除了所用的数据流图、E-R图、状态图、数据字典和加工规格说明(结构化语言、判定表和判定树),盒图(N-S),PAD图(问题分析图)外,在结构化的分析中,有时还会用到层次方框图、Warnier图和IPO图这3种图形工具。

2.分析方法

总体设计——面向数据流的分析方法——变换型数据流,事务型数据流
详细设计——面向数据结构的设计方法——Jackson方法
在这里插入图片描述

Jackson方法把数据结构分为三类:顺序型结构,选择型结构,循环型结构。

任何程序总可以用三种结构化构成元素来设计和实现.
顺序:任何算法规约中的核心处理步骤。
条件:允许根据逻辑情况选择处理的方式.
重复:提供了循环

过程设计工具可以分为以下三类:
图形设计符号:程序流程图、N-S图、PAD图等

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

表格设计符号:判定表等
程序设计语言:PD L等

五、软件设计

1、原则

模块化

模块规模适中;提高模块独立性,降低模块间的耦合度;提高模块的内聚度;加强模块的保护性。

抽象

抽象在软件开发过程中起看非常重要的作用。一个庞大、复杂的系统可以先用一些宏观的概念构造和理解,然后再逐层地用一些较微观的概念去解释上层的宏观概念,直到最底层的元素。

逐步求精

信息隐藏

信息隐藏:一个模块内包含的信息(过程和数据)对于不需要这些信息的
模块来说,是不能访问的隐藏)。这一原理的目的,是为了提高模块的独立性,当修改或维护模块时防止把一个模块的错误扩散到其他模块中去

复用性设计

软件复用就是将已有的软件成分用于构造新的软件系统。可以被复用的软件成分一般称作可复用构件,无论对可复用构件原封不动地使用还是作适当的修改后再使用,只要是用来构造新软件,则都可称作复用。但是如果是在一个系统中多次使用一个相同的软件成分,则不称作复用而称作共享;对一个软件进行修改,使它运行于新的软硬件平台也不称作复用,而称作软件移值

灵活性设计

灵活性设计,简而言之就是软件在面对需求修改时的随机应变能力可以体现在修改程序代码的工程量等方面。

2、耦合

耦合是模块之间相互连接的紧密程度的度量。耦合强弱取决于模块间接口的复杂程度、进入或访问一个模块的点以及通过接口的数据。模块之间的连接越紧密,联系越多,耦合性就越高、而其模块独立性就越弱。通常希望一个软件系统具有较低的耦合性
耦合的类型:非直接耦合,数据耦合,标记耦合,控制耦合,外部耦合,公共耦合,内容耦合。

3、内聚

内聚是一个模块内各个元素彼此结合的紧密程度的度量。模块内聚性高,就意味着模块内部各个元素是为了完成一个功能而存在.内聚和耦合是密切相关的,模块内的高内聚往往意味着模块间的松耦合

内聚的类型:偶然内聚,逻辑内聚,时间内聚,过程内聚,通信内聚,顺序内聚,功能内聚

六、面向对象方法与UML

1、基本概念

对象

是指现实世界中各种各样的实体,类是对象的抽象,对象是类的实例。

消息

是指对象间相互联系和相互作用的方式。

类的特性

继承

是不同抽象级别类之间的关系。子类可以继承父类的所有内部状态和运动规律。

封装

是把数据和实现操作的代码集中起来放在内部。对象之间不用过多的了解对方内部的具体状态或运动规律,只需要通过调用接口来进行消息传递就可以了。

多态

是指同名的方法(操作)在不同的类中具有不同的运动规律。

重载

是指类的同名方法在给其传递不同参数时具有不同的运动规律。

现实世界中不同对象间的相互联系和相互作用构成了不同的系统,不同系统间的相互联系和相互作用构成了更庞大的系统。

2、UML简述

统一建模语言(Unified Modeling Language,UML)是一种通用的可视化建模语言,可以用来描述、可视化、构造和文档化软件密集型系统的各种工作。是目前最流行的面向对象建模语言。

UML特点

 统一标准
 面向对象
 可视化,表达能力强大
 独立于过程
 容易掌握使用
 与编程语言的关系

UML图形

在这里插入图片描述
UML的静态建模机制包括用例图、类图、包图。

静态建模机制
用例图

在这里插入图片描述
用例之间的关系有三种:
1.包含关系
在这里插入图片描述
2.扩展关系
在这里插入图片描述
3.泛化关系
用例之间的泛化关系描述用例的一般与特殊关系,不同的子用例代表了父用例的不同实现。
在这里插入图片描述

类与对象图

类图使用类和对象描述系统的结构,展示了系统中类的静态结构,即类与类之间的相互关系。
对象图是类图的实例,它展示了系统在某一时刻的快照。对象图使用与类图相同的符号,只是在对象名下面加上下划线。

类与类之间的关系有关联、依赖、泛化和实现等
在这里插入图片描述
重数就是关联链的条数,即1对1,1对N,N对N。
1.关联
1.1多元关联
在这里插入图片描述
1.2聚合和组合
在这里插入图片描述
1.3关联类
在这里插入图片描述
2.依赖
依赖关系表示的是两个元素之间语义上的连接关系。
在这里插入图片描述
3.泛化
泛化关系描述类的一般-特殊关系,是更一般描述与更特殊描述之间的一种分类学关系。
4.实现
子类与父类关系是泛化,类与接口关系是实现

包图

在这里插入图片描述

动态建模机制

UML的动态建模机制包括顺序图、协作图、状态图和活动图。

顺序图

在这里插入图片描述

协作图

如果重在时间或顺序,那么选择顺序图;如果重在上下文,那么选择协作图。
在这里插入图片描述

状态图

在这里插入图片描述

描述物理架构的机制
构件图

构件图(Component Diagrams)展现了一组构件的类型、内部结构和它们之间的依赖关系。构件又称组件,是系统中可重用的模块封装成为可替换的物理单元。是一个系统或子系统中独立的封装单位,提供一个或多个接口,是系统高层的可重用部件。

在这里插入图片描述

部署图

部署图(Deployment diagram)描述了系统硬件和软件物理配置情
况和系统体系结构,显示系统运行时刻的结构。
一个系统模型只有一个部署图。
部署图可以显示计算节点的拓扑结构和通信路径、结点上运行的软构件等

在这里插入图片描述

总结

以上就是今天的小结,个别地方需要自己查找资料,仅仅是提出这个概念,未来还很遥远,我们都在路上。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值