搜索
查看
编辑修改
首页
UNITY
NODEJS
PYTHON
AI
GIT
PHP
GO
CEF3
JAVA
HTML
CSS
搜索
Monodyee
这个屌丝很懒,什么也没留下!
关注作者
热门标签
jquery
HTML
CSS
PHP
ASP
PYTHON
GO
AI
C
C++
C#
PHOTOSHOP
UNITY
iOS
android
vue
xml
爬虫
SEO
LINUX
WINDOWS
JAVA
MFC
CEF3
CAD
NODEJS
GIT
Pyppeteer
article
热门文章
1
Stable Diffusion 安装教程_stable diffusion·中 python安装在哪里
2
Stable Diffusion 模型分享:Inkpunk Diffusion(动漫、墨水朋克)
3
【git】TortoiseGit图标不显示 及 文件夹中.git文件夹不显示_tortoisegit文件夹没有图标
4
Github 上传、下载过慢的解决方案_githubdesktop上传慢
5
探秘DataV:可视化神器,数据洞察新体验
6
# 我实践:搭建轻量git服务器的两个方案
7
Python 使用轻量级 Flask 框架搭建 Web 服务器详细教程(基础篇)_flask搭建web服务器
8
ELK日志采集系统搭建
9
科研难点:三线表的制作与调整
10
信息系统项目管理师证书有什么用?_信息系统管理工程中级有什么用
当前位置:
article
> 正文
吉林大学软件工程1~2
作者:Monodyee | 2024-05-20 02:16:06
赞
踩
吉林大学软件工程1~2
第一章
软件与软件危机
软件:程序、数据、文档
对软件的质量控制,必须着重在
软件开发
方面下功夫
软件没有机械磨损、老化问题,由
退化
问题,软件退化缘于
修改
软件出故障:无法用备用零件替换来解决,是因为
设计开发过程中存在错误
软件危机:开发、维护
软件危机原因:一方面是由于
软件本身
的特点,另一方面是由于
软件开发与维护的方法
不正确(软件需求分析的重要性)
软件工程
NATO
最先提出软件工程概念
软件工程是指导计算机软件
开发和维护
的一门工程学科(与软件危机对应)
软件工程方法学:
方法、工具和过程
传统方法学VS面向对象方法学:
传统方法学
优点:通过将
软件生命周期划分
成若干个阶段降低了整个软件开发过程的困难程度; 每个阶段结束前的
严格审查
保证了软件的质量,提高了软件的可维护性。
缺点:当软件规模庞大,或者对软件的
需求是模糊
的或会随时间而变化的时候,使用传统方法学开发软件往往不成功,而且维护起来仍然很困难。 原因:把原本密切相关的
数据和操作
人为地分离成了两个独立的部分,增加了软件开发与维护的难度。
面向对象方法学
要点:把对象作为
融合了数据及在数据上的操作行为
的统一的软件构件; 把所有对象都划分成
类
; 按照父类与子类的关系,把若干个相关类组成一个类层次结构,位于下层的类
继承
了上层中某类的特点; 对象彼此间仅能通过
发送消息
互相联系。
优点:降低了软件产品的
复杂性
;提高了软件的
可理解性
;简化了软件的
开发和维护
工作;促进了
软件重用
软件生命周期
软件生命周期由
软件定义、软件开发和运行维护
3个时期组成
软件定义:问题定义、可行性研究、需求分析
总体设计阶段:设计出实现目标系统的
几种可能的方案
,权衡利弊推荐一最佳方案
详细设计阶段:设计出程序的详细规格说明
编码和单元测试阶段
综合测试:集成测试/验收测试/现场测试/平行运行
改正性维护,适应性维护,完善性维护,预防性维护
第二章
软件过程1
瀑布模型:具有顺序性和依赖性,推迟实现,质量保证(文档)
优点:可强迫开发人员采用
规范
的方法(例如,结构化技术);严格地规定了每个阶段必须提交的
文档;
要求每个阶段交出的所有产品都必须经过
质量
保证小组的仔细验证;瀑布模型的成功在很大程度上是由于它基本上是一种文档驱动的模型
文档驱动
缺点:要求用户
不经过实践
就提出完整准确的需求,在许多情况下都是不切实际的;仅仅通过写在纸上的
静态的规格说明
,很难全面正确地认识动态的软件产品;将本来非线性的软件开发过程人为地加以
线性化
,不符合实际中的软件开发情况;软件开发耗时长,可运行版本要等到
项目后期才能得到
,一旦在后期发现错误,付出的代价将是巨大的。
“由文档驱动”
的这个事实也是瀑布模型的一个主要缺点,这可能导致最终开发出的软件产品不能真正满足用户的需要
V模型:强调
测试活动
与分析和设计之间的关联,
活动驱动
优点:把瀑布模型中一些
隐含的迭代过程
明确出来,使
抽象等级
的概念也更明显
缺点:对软件开发过程过于简单、理想化的抽象,对需求变化的适应性差。
原型/快速原型模型:
不带反馈环
,线性顺序进行,有助于
需求
的定义和确认,可以考虑
结合瀑布模型
(瀑布模型在工程实践上有反馈环)
,二者互补性强,原型不可能像最终产品一样面面俱到
软件过程2
阶段式开发(演化模型)---尽快得到使用版本:渐增式开发,迭代式开发(
螺旋式开发
)
增量模型:增量构件;第一个增量构件往往实现软件的基本需求,提供
最核心的功能
优点:适用于人
员配备不充裕
、不能在软件项目期限之前实现一个完全版本的软件的情况; 能有计划地
管理技术风险
; 每个增量都发布了一个高质量的可操作的版本,用户能在较短时间内使用上
部分功能
; 逐步增加产品功能可以使
用户
有较充裕的时间学习和适应新产品,减少一个全新的软件可能给客户带来的冲击。
缺点:软件体系结构必须是开放的,使得每个新的增量构件能够无缝地集成到现有的软件体系结构中,
增加了设计阶段的投入
; 本身具有矛盾性,一方面要求开发人员把软件看作一个
整体
,另一方面要求开发人员把软件看作
构件序列
,且构件间彼此独立。需要开发人员协调这一矛盾。
螺旋模型:使用
原型
及其他方法来尽量降低风险。可以把螺旋模型看作在每个阶段之前都增加了
风险分析过程
的
快速原型模型
。(制定计划,风险分析,实施工程,客户评估)
优点:螺旋模型是对瀑布模型的发展,并由客
户对阶段性产品做出评审
,这对保证软件产品质量十分有利; 由于引入风险分析等活动,
测试活动
的确定性增强了; 螺旋模型最外层代表维护,
开发与维护
采用同样方式,使维护得到与开发同样的重视。
缺点:主要适合
内部开发
,否则风险分析必须在签订合同前完成,或者争取客户的最大理解; 只适合大型软件项目的开发,否则,每个阶段的
风险分析
将占用很大一部分资源,增加成本; 对开发人员的
风险分析能力
是极大的考验,否则,模型将退化到瀑布模型,甚至更糟。
喷泉模型:
面向对象,迭代和无缝
,为避免使用喷泉模型开发软件时开发过程过于无序,应该把一个
线形过程作为总目标
; 面向对象范型本身要求经常对开发活动进行
迭代或求精
软件过程RUP
迭代式开发,管理需求,使用基于构件的体系结构,可视化建模(UML),验证软件质量(质量评估),控制软件变更
核心工作流:业务建模、需求、分析与设计、实现、测试、部署:生成目标系统的可运行版本,移交给用户、配置与变更管理:跟踪维护开发过程中Artifacts的完整性和一致性、项目管理:提供项目管理框架,为软件开发项目制定计划、人员配备、执行和监控等方面的使用准则,并为风险管理提供框架、环境:软件开发环境,包括过程管理和工具支持
工作阶段:
Inception(先启):生命周期
目标
里程碑
Elaboration(精化):生命周期
架构
里程碑
Construction(构建):初始
可操作性能
里程碑
Transition(移交):产品
发布
里程碑
整个项目开发过程由
多个迭代
过程组成。 每次迭代
只考虑一部分系统需求
。 每个迭代都是
风险驱动
的。 每个迭代都可以看作是一个“
小型的瀑布模型
”过程:以一个交付版本结束,其结果是一个
增量
,增加一些新的功能。每次迭代以
不同的重点
和强度访问核心工作流。
与螺旋模型相比
相似:重复一系列组成系统生命周期的循环
差异: RUP给出了每个阶段内的若干次迭代过程完成后交付的增量的具体要求,即
四个阶段的里程碑
;
RUP详细阐述了不同阶段的不同迭代过程经历的九大核心工作流程中活动内容的
重点和强度不同;
RUP提供了对每次迭代过程中不同核心工作流程活动的
并行化支持
优点:用于指导
需求不明确、不稳定
的项目开发时具有更强的可操作性。
用例及用例驱动;用例是捕获需求的有效方法,用例驱动整个RUP过程;以
架构
为中心;在面向对象的分析设计中采用UML进行可视化建模;面向对象的设计与构件实现
优点:
用例
驱动、以
架构
为中心、
迭代和增量
; 具有
二维
迭代性,有利于降低风险、
适应需求变化
; 是可
配置
的,具有通用性;
缺点:在理想的项目开发环境下软件过程的一种
完美模式
; 未给出具体的
剪裁、扩充
等配置实施的方法准则。
敏捷过程
强调
适应
而非预测变化,以
人
为中心
价值观
:个体和交互 胜过 过程和工具;可以工作的软件 胜过 面面俱到的文档;客户合作 胜过 合同谈判;响应变化 胜过 遵循计划
敏捷开发方法是一组轻量级开发方法的总称,包括很多具体的开发过程和方法。
极限编程
是敏捷过程中最富盛名的一个。
极限编程有效实践:客户作为开发团队的成员,使用
用户素材,
短交付周期(每两周完成一次迭代),验收测试,
结对编程
,
测试驱动开发
,集体所有(程序代码属于整个开发小组,每个成员都有修改代码的权利,都对全部代码负责)
持续集成(一日内多次集成,不断回归测试),可持续的开发速度(周工作时间不超过40小时,连续加班不超过两周),开放的工作空间,计划游戏,简单的设计,重构,使用隐喻(隐喻是把整个系统联系在一起的全局视图,描述系统如何运做,如何把新功能加入到系统中)
敏捷过程的特点(与RUP比较)
生命周期
RUP:二维
敏捷过程:一维(更快速、更敏捷+可持续性)
人员
RUP:RUP中个体的职责是按照“角色”明确分工的,未给出个体间的地位关系
敏捷过程:敏捷过程中各成员个体相互的地位关系是平等的,职责是共同的;个体间的首要协作交互方式为面对面的交谈
方法
敏捷过程:响应变化,使用UML,采用用例驱动方法和动态满足需求方法,设计阶段选择以架构为中心和简单化两种之一来实施
产品
RUP:文档+模型
敏捷过程:模型>文档
持续集成、持续交付与持续部署
微软过程
软件生命周期:
构思阶段——前景/范围认可里程碑
确定
项目前景和项目范围
两个项目目标 动态满足需求——先
基线化
、后冻结
计划阶段——项目计划认可里程碑
以产品特性及其优先级指导整个项目
开发阶段——范围完成里程碑
代码优化:算法优化、高信度计算
源代码管理:建立源代码的管理库
每日编译生成
稳定阶段——发布就绪认可里程碑
零缺陷管理
手工测试与自动测试结合
内部测试与外部测试结合
部署阶段——部署完成里程碑
相对RUP,微软过程可视为RUP的一个精简配置版本;相对敏捷过程,微软过程是它的一个扩充版本,扩充了其每个生命周期内的各阶段的具体运作流程。
角色划分(相互关系
对等
):
产品管理角色:对外的用户需求管理职能
程序管理角色:项目组内部的综合管理职能
开发角色
测试角色
用户体验角色
发布管理角色
角色合并原则:项目组内的
开发人员
不能兼任其他角色,不要试图合并两个有
明显利益冲突
或制约关系的角色
均衡三角形关系:进度、资源、功能与性能
声明:
本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:
https://www.wpsshop.cn/w/Monodyee/article/detail/595624
推荐阅读
article
软件工程
-
UML
画图_
软件工程
类图
...
目录1.
UML
简介2. 静态模型图2.1
类图
2.2对象图2.3 组件图2.4 包图2.5 部署图3. 动态模型图3....
赞
踩
article
软件工程
---
习题六_
软件工程
程序
流程图
例题...
习题六_
软件工程
程序
流程图
例题
软件工程
程序
流程图
例题 4. 图6...
赞
踩
article
【
软件工程
】
软件工程
系统
设计
—
—
详细
设计
(
过程
设计
)_
软件工程
系统
设计
案例...
软件工程
系统
设计
—
—
详细
设计
(
过程
设计
),主要对
设计
阶段的
详细
设计
做流程和方法的总结,主要针对程序流程图、N-S盒图、P...
赞
踩
article
[架构之路-245]:目标
系统
-
设计
方法
-
软件
工程
-
软件
开发
模型
(
流程
):
瀑布
模型
、V模...
开发
过程的
流程
化组织和管理。
软件
开发
模型
指的是
软件
开发
过程中,按照一定的规律或模式组织和执行各个
开发
活动的
方法
论或框架或...
赞
踩
article
软件工程
毕业论文
文献引用 中英文文献整合_[
4
] 陈玲
,
夏汛. 利用
mybatis
的
动态sql实...
[1] 初旭:计算机
软件工程
管理与
应用
解析[J].中国管理信息化,2013(5).[2] 孙书青:计算机
软件工程
管理与应...
赞
踩
article
软考
-
软件工程
...
软件工程
的内软件开发生命周期::包括可行性研究和详细需求分析过程,任务是确定软件开发工程必须完成的总目标,具体可分成问题...
赞
踩
article
二、
软件工程
——
Modeling
_
软件工程
毕设英文
参考文献
...
1.
_
软件工程
毕设英文
参考文献
软件工程
毕设英文
参考文献
目录 1.Undestan...
赞
踩
相关标签
uml
软件工程
详细设计
程序流程图
N-S盒图
PAD图
架构
IT
管理
devops
运维
开发语言