软件工程杂七杂八

一、基础概念

1.什么是软件工程?

软件工程是将系统化的、规范化的、可定量的方法应用于软件的开发、运行和维护
即工程化应用到软件上;以及对软件工程中所述方法的研究

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

软件工程的三大类基础知识领域:
计算机基础、数学基础、工程基础

软件工程的生命周期:
软件需求、软件设计、软件构建、软件测试、软件维护

软件工程的三要素:
过程:支持软件开发各个环节的控制和管理
方法:完成软件开发任务的技术手段
工具:为软件开发方法提供自动的或半自动的软件支撑环境=
软件工程过程是指在生命周期内,为了实现特定目标而进行的一系列相关活动
包括:问题定义、需求开发、软件设计、软件构造、软件测试
软件工程方法包括软件开发方法、软件度量方法、软件管理方法和软件环境方法

软件开发的基本策略:软件复用、分而治之、逐步演进、优化折中

2.什么是软件?

软件=程序+数据+文档+服务
程序:计算机可以接受的一系列指令,运行时可以提供所要求的功能和性能
数据:使得程序能适当地操作信息的数据结构
文档:描述程序的研制过程、方法和使用的图文资料
软件是逻辑产品,而不是物理产品,所以软件具有和硬件完全不同的特性

高质量的软件产品:
做了用户想要它做的事情
正确有效地使用计算机资源
易于用户学习和使用
设计良好、代码良好且易于测试和维护
高质量的设计、有效的测试、规范的编码

商业环境下的软件质量:质量、成本、效率
理想的质量目标不是零缺陷,而是恰好让广大用户满意

软件的生命周期是软件从功能确定、设计到开发成功投入使用,并在使用中不断地修改、增补和完善,直到被新的需要所代替而停止使用该软件的全过程
需求分析和定义
系统(架构)设计
程序(详细/过程)设计
写程序(编码/实施)
测试:单元、集成、系统
系统交付(部署)
维护
在这里插入图片描述

在这里插入图片描述

软件过程:是为获得软件产品,在软件工具支持下由软件工程师完成的一系列软件工程活动
软件过程≠软件工程,软件过程是软件工程的子集

瀑布模型:
以预测性为原则
以文档驱动开发过程
以过程控制控制为核心
线性
缺乏灵活性
适合于用户需求明确、完整、无重大变化的软件项目开发

增量模型:
以组件为单位

螺旋模型:
增量模型+风险评估
螺旋模型把开发过程分为指定计划、风险评估、实施工程和客户评估4种活动
风险驱动
迭代

喷泉模型:
面向对象开发过程
以对象作为驱动的模型

RUP统一过程模型:
风险驱动
基于迭代
RUP重复一系列周期,每个周期由一个交付给用户的产品结束
每个周期划分为初始、细化、构造和移交四个阶段,每个阶段围绕着九个核心工作流分别迭代
九个核心工作流:六个核心过程工作流、三个核心支持工作流

敏捷方法:
以人为本
以代码为核心

SCRUM开发方法模型:
在这里插入图片描述
一个Sprint是一个 1-4周的迭代
Sprint的长度一旦确定,将保持不变
Sprint的产出是完成的、可用的、潜在可发布的产品增量
需求在一个Sprint内是不允许变化的
分析、设计、开发、测试

极限编程XP:
以编码为核心
XP把软件开发过程重新定义为聆听、测试、编码、设计的迭代循环过程
RUP面向管理层面,XP面向实施层面。两者是相辅相成、互相补充的

3.软件的特性

复杂性
易变性
不可见性:源代码可见,软件不可见
服从性/一致性:依附于一定的环境
非连续性

4.软件危机

在计算机软件的开发和维护中所遇到的一系列严重问题

二、项目计划阶段

这里只记了一个可行性研究。

可行性研究

可行性研究的目的不是解决问题,而是确定问题是否值得去解决
在这里插入图片描述
可行性研究报告是可行性研究阶段的输出文档
可行性研究的结论一般有三种:可行、基本可行、不可行

三、需求分析

1.软件需求

软件需求是人们要解决的某个问题或达到某种目的的需要,需求将作为系统开发、测试、验收、提交的正式文档依据
软件人员要能够准确理解用户的要求,进行细致的调查分析,将用户非形式化的需求陈述转化为完整的需求定义,再由需求定义转化为相应形式的需求规格说明

软件需求的层次:业务需求、用户需求、系统需求、功能需求、也包括非功能需求,所有的用户需求必须与业务需求一致,功能需求必须满足用户需求

需求工程包括了需求开发和需求管理
软件需求工程主要分为以下过程:需求获取、分析建模、文档编写、需求验证、需求变更

2.需求建模技术

结构化分析建模(SA):又分为面向数据建模和面向数据流建模
面向对象分析建模(OOA)

3.UML统一建模语言

面向对象
独立于软件开发过程

UML的组成:模型、视图、图
图:
在这里插入图片描述
在这里插入图片描述
视图:
用例视图
逻辑视图
并发视图
组件视图
配置视图
在这里插入图片描述
模型:
在这里插入图片描述

UML的目标是以面向对象图的方式来描述任何类型的系统
UML模型可作为测试阶段的依据,系统通常需要经过单元测试、集成测试、系统测试和验收测试
不同的测试小组使用不同的UML图作为测试依据:
单元测试使用类图和类规格说明
继承测试使用部件图和协作图
验收测试使用用例图来验证系统的行为

4.用例图

在软件项目开发中,用例图是业务调研后,最先用来和用户交流讨论的重要的UML图
用例图是显示一组用例、参与者以及它们之间关系的图
用例图描述的是系统该有哪些功能,而不是怎么实现
用户角度
在这里插入图片描述
在这里插入图片描述
用例图中有以下几种关系:
①用例与参与者之间:
关联关系
②参与者之间:
泛化关系:描述多个参与者之间的公共行为、特殊与一般
依赖关系:可以不用,弱联系
③用例之间:
包含关系:一个用例作为另一个用例必需的部分被使用,基本用例的执行依赖于包含用例的执行,父指子
在这里插入图片描述
扩展关系:如果特定条件发生,扩展用例的行为才被执行、子指父
在这里插入图片描述
泛化关系:一个用例可以被特别列举为一个或多个子用例、类与对象、子指父
在这里插入图片描述

四、面向对象方法学引论

1.软件开发方法

面向过程:传统开发方法或结构化开发方法,该方法采用结构化技术(结构化分析、结构化设计、结构化编程、结构化测试)来完成软件开发的各项任务
面向对象:起源于面向对象程序设计
面向组件:面向架构
面向服务:采用服务请求方式

2.结构化软件工程方法

在这里插入图片描述

3.面向对象软件工程方法

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

面向对象建模:
用面向对象方法开发软件,通常需要建立3种模型:
描述系统功能的功能模型、描述系统数据结构的对象模型、描述系统控制结构的动态模型

活动图:
是UML中描述系统动态行为的图之一,是描述系统或业务的一序列活动构成的控制流。它描述了系统从一种活动转换到另一种活动的整个过程,在本质上是一种流程图
按照活动图表示的信息不同,将活动图分为:简单活动图、标识泳道的活动图、标识对象流的活动图、复合活动图
活动图用于对系统的动态行为建模
在这里插入图片描述
待续~

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

so.far_away

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

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

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

打赏作者

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

抵扣说明:

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

余额充值