软考知识点---12软件工程基础

💡大纲

软件工程和项目管理基础、面向对象技术、统一建模语言(UML)、软件需求分析、设计、编码、测试、运行与维护

一、软件工程基础

(一)软件工程的发展

👉在软件开发早期,因为软件维护困难,产生“软件危机”,针对“软件危机”,提出了“软件工程”

(二)软件生成周期

💡软件生存周期分为可行性分析项目开发计划需求分析软件设计编码测试维护6个工作阶段

  • 可行性分析和项目开发计划:主要确定软件的开发目标及其可行性
  • 需求分析:准确的软件系统需要完成什么功能,必须做什么
  • 软件设计:确定如何实现软件系统,软件的概要设计和详细设计
  • 编码:用某种程序语言为每个模块编写程序
  • 测试:为保证软件质量,对软件的各个组成部分进行检验
  • 维护:在软件正式投入使用时,通过维护使系统满足用户的长期需求

1、成本估算

👉自顶向下估算法

  • 参考已完成项目所耗费的成本,对将要开发的软件的总成本进行推算,然后按照阶段、步骤和工作单元进行分配

👉自底向上估算法

  • 对即将开发的软件细分,分别估算每一个任务所需要的工作量,然后计算所有工作量的总和

👉差别估算法

  • 若干个已完成的类似项目与即将开发的项目进行比较,找出不同之处并估算其对成本的影响

2、风险分析

💡是对软件系统建立时的不确定性进行分析,在软件项目管理中具有决定性作用

  • 关心未来,风险
  • 关心变化,用户需求、开发技术、目标机器及其他变化
  • 选择问题,采用什么工具和方法、需要多少人力资源、质量要求程度等

3、进度管理

💡确保项目如期完成

👉安排软件开发项目进度的方式:

  • 系统最终交付日期已经确定,软件开发部门必须在规定期限内完成
  • 系统最终交付日期只给定了大致的年限,最后交付日期由软件开发部门确定

进度安排的常用图形描述方法有Gantt图(甘特图)和PERT(项目计划评审技术)图

⭕甘特图能清晰的描述除各个任务的开始和结束时间,以及任务的进展情况和并行性,但是不能很好的反映出任务之间的依赖关系

Gantt图(甘特图、横道图、条状图)

⭕PERT图(项目计划评审技术)能够很好的反映出各任务的开始时间、结束时间和所需时间以及任务之间的依赖关系,但是不能描述各任务之间的并行关系

 📑PERT图可以给出哪些任务完成后才能开始另一些任务。下图所示地PERT图中,事件6的最晚开始时间是2

A. 0        B. 3          C. 10          D. 11

🗣️解析:求出关键路径和各节点的时差,正推和反推求出最早和最晚时间

👉节点1和节点9的最早开始时间与最晚开始时间应该是相等的

👉从节点1开始顺时针到节点9求取最早开始时间

👉从节点9开始逆时针到节点6求取最晚开始时间

 4、人员管理

💡程序设计小组的组织形式

👉主程序员组:由一名主程序员、一名后备程序员,一名资料员和若干名程序员组成

👉无主程序员组:组中成员之间相互平等,工作目标和决策都由全体人员民主讨论,根据需要也可以轮流负责(朋友合作)

👉层次式程序员组:组中有一位组长,负责全面工作,他领导若干名高级程序员,每个高级程序员有领导若干名程序员(公司)

(四)软件开发工具与开发环境

1、软件开发工具

👉由需求分析工具、设计工具、编码与排错工具、测试工具等

2、软件维护工具

👉版本控制工具、文档分析工具、开发信息库工具、逆向工程工具和再工程工具

3、软件管理和软件支持工具

👉项目管理工具、配置管理工具和软件评价工具

4、软件开发环境

👉软件开发环境由软件工具集和环境集成机制构成

  • 开发环境的服务是集成的:支持多种集成机制(平台集成、数据集成、界面集成、控制集成和过程集成等)
  • 开发环境应支持小组工作方式,并为其提供配置管理
  • 环境的服务可用于支持各种软件开发活动,包括分析、设计、编程、调试、测试和文档等

5、集成开发环境

👉把支持多种软件开发方法和开发模型的软件工具集成在一起的软件开发环境

(五)软件过程能力评估

💡主要了解软件开发的成熟度模型CMMICMMI是由CMM(能力成熟度模型)发展而来的,用于评估软件开发承包商的改善软件质量的能力。

二、面向对象分析与设计

(一)面向对象基本概念:对象、抽象、封装、继承与泛化多态、接口、消息、组件、动态绑定

👉对象:对象是对现实世界中基本实体的抽象一个对象把属性和行为封装成一个整体,通常由对象名、属性和操作三部分组成

👉:一组相似对象的集合称为类。一个类所包含的方法和数据描述了一组对象的共同属性和行为。类是对象之上的抽象,对象是类的实体化(实例),对类的属性赋予不同的值即可得到类的对象实例

👉继承和泛化:子类继承父类的相关特性,将已有类的共同特性抽象化为一个上层的类称为泛化(广泛化)

👉多态对不同的对象做同样的操作可能会有差异,从而产生完全不同的结果。多态分为4类,参数多态和包含多态称为通用多态过载多态和强制多态称为特定的多态

👉动态绑定:一个把过程调用和响应调用需要执行的代码加一结合的过程称为绑定绑定在编译时进行的称为静态绑定;根据接收对象的具体情况将请求的操作与实现的方法进行连接称为动态绑定,它是与类的继承以及多态相联系的

👉消息:对象之间进行通信

(二)面向对象

👉面向对象方法的基本思想是从现实世界中客观存在的事物出发来构造软件系统

  • 把软件系统中涉及事物的特征抽象地描述成类,由类建立的对象作为系统的基本构成单位,它们的属性和方法描述了客观存在的事物的静态特征和动态特征
  • 对象之间的继承关系、聚集关系、消息和关联反映了问题域中事物之间实际存在的各种关系

👉面向对象分析的目标是建立待开发软件系统的模型,其描述了表示某个特定应用领域中的对象、对象间的结果关系和通信关系,反映了现实世界强加给软件系统的各种规则和约束条件。

👉面向对象设计是根据系统构造蓝图在特定的环境中实现系统。面向对象分析和设计的方法:统一建模语言(UML)

三、 UML统一建模语言

(一)UML概述

1、UML由三个要素构成

  • UML的基本构造块
  • 支配这些构造块如何放置在一起的规则
  • 运用于整个语言的一些公共机制

2、UML的词汇表包含三种构造块

  • 事物、关系和图
  • 事物是对模型中具有代表性成分的抽象
  • 关系描述了事物之间的联系,把事物结合在一起
  • 聚集了相关的事物

3、UML 2.0提供了13种图,分为以下两大类 

👉结构图静态图)

  • 类图、对象图、包图、组合结构图、组件图(构件图)、部署图;

👉行为图(动态图)

  • 用例图、顺序图(序列图)、协作图(通信图)、状态图、活动图、交互概览图(交互图)、定时图

👉主要了解其中的用例图、类图、对象图、顺序图、活动图、状态图、通信图、构件图

 ⭕用例图

  • 用例图是指由参与者、用例、边界以及它们之间的关系构成的用于描述系统功能的视图
  • 描述角色(参与者)以及角色与用例之间的连接关系
  • 说明是谁要使用系统,以及他们使用该系统可以做些什么
  • 一个用例图包含了多个模型元素,如系统、参与者和用例,并且显示了这些元素之间的各种关系,如包含、扩展、泛化、关联和依赖
新闻业务用例图

类图 

  • 类图显示了模型的静态结构,描述系统中的类,以及各个类之间的关系的静态视图
  • 类图表示类、接口和它们之间的协作关系

对象图 

  • 它描述的是对象之间的关系

顺序(序列)图 

  • 是用来显示参与者如何以一系列顺序的步骤与系统的对象交互的模型
  • 顺序图可以用来展示对象之间是如何进行交互的
  • 顺序图将显示的重点放在消息序列上,即强调消息是如何在对象之间被发送和接收的

活动 

  • 阐明了业务用例实现的工作流程,用来显示参与者如何以一系列顺序的步骤与系统的对象交互的模型

带泳道的活动图

状态  

  • 状态图描述类的对象所有可能的状态,以及事件发生时状态的转移条件,是描述一个实体基于事件反应的动态行为,可以捕获对象、子系统和系统的生命周期

  • 状态图是对类图的补充

 

通信  

  • 协作图(通信图)作为一个结构事物用于表达静态结构和动态行为的概念组合,表达不同事物相互协作完成一个复杂功能

  • 和序列图相似,显示对象间的动态合作关系

  • 可以看成是类图和顺序图的交集

  • 协作图建模对象或者角色,以及它们彼此之间是如何通信的

  • 如果强调时间和顺序,则使用序列图;如果强调上下级关系,则选择协作图;这两种图合称为交互图

 

构建   

  • 主要用于描述代码构件的物理结构以及各种软件构件之间的依赖关系

  • 建模软件的组件及其相互之间的关系用这些图由构件标记符和构件之间的关系构成

 📢欢迎点赞 👍 收藏 ⭐留言 📝 如有错误敬请指正!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

盾山狂热粉

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值