什么是软件工程?

软件工程一直以来都缺乏一个统一的定义。

IEEE给出的定义是:软件工程是:1.将系统化的、严格约束的、可质量化的方法应用于软件的开发、运行和维护,即将工程化应用于软件;2.在1中所述方法的研究。

比较认可的一种定义是:软件工程是研究和应用如何以系统性的、规范化的、可定量的过程化方法去开发和维护软件,以及如何把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来。

什么是软件开发方法(或软件开发过程)?

软件开发方法找不到统一的定义,但是我们说极限编程(ExtremeProgramming,简称XP)、水晶(Crystal)方法、动态系统开发方法(DSDM)、Scrum、基于体系结构的软件开发、自适应软件开发(ASD)都是一种软件开发方法。这些方法都涉及了整个软件生命周期,都有相应的原则和方法论。

所以可以将软件开发方法定义为:一套应用于整个软件生命周期的方法论,它对软件生命周期(三个阶段:软件定义、软件开发、软件运行与维护)的活动作出了具体的描述和表示。软件开发方法应该是软件工程的一个产物或者说是软件工程的具体方法的集合。

什么是软件开发模型?

软件开发模型是软件开发实际过程的抽象与概括,它包括构成软件过程的各种活动,是对软件开发过程各阶段之间关系的一个描述、约束和表示。软件开发模型为软件开发过程提供原则和方法,为软件工程管理提供里程碑和进度表。

我们常见的软件开发基本模型有:瀑布模型(传统瀑布模型、迭代的瀑布模型、V模型)、原型模型(快速原型模型、演化模型或原型进化模型)、增量模型、螺旋模型、迭代模型等。

另外还有一些其他模型,例如:喷泉模型、敏捷模型、基于体系结构的开发模型,基于可重用构件的模型、基于面向对象的模型、基于第四代技术的模型、快速应用开发(RAD)模型等。这些模型都可以归结为基本模型中的一类,例如喷泉模型就是迭代模型的一种,敏捷模型是演化模型的一种,基于体系结构的开发模型是迭代模型的一种,基于可重用构件的模型只是强调了可重用组件在开发过程中的应用,开发过程可以是基本模型中的任何一种,基于面向对象的模型是面向对象技术在基本模型中的应用,快速应用开发(RAD)模型是增量模型的一种。

软件开发模型可以做以下归类:(没有任何参考,个人总结)

序号

基本模型

扩展模型

基本特征

1

瀑布模型

传统瀑布模型、迭代的瀑布模型、V模型

各个阶段的划分完全固定,阶段之间产生大量的文档,适用于需求明确的工程项目

2

原型模型

快速原型模型、演化模型或原型进化模型、敏捷模型

快速构建原型,频繁与客户沟通,开发阶段不断迭代,适用于需求不明确、变化快的工程项目

3

增量模型

快速应用开发(RAD)模型

整体上按照瀑布模型的流程实施,实际创建中将软件系统按功能分解为许多增量构件,适用于需求明确且可模块化的工程项目

4

螺旋模型

引入风险分析,每一个周期都包括需求定义、风险分析、工程实现和评审4个阶段,周期性迭代,适用于庞大、复杂并具有高风险的工程项目

5

迭代模型

喷泉模型、基于体系结构的开发模型

各个开发阶段基本固定,各阶段内部迭代、阶段之间迭代、整个流程迭代(演化),有明确的里程碑

软件开发方法与软件开发模型的关系?(没有任何参考,个人总结)

软件开发方法是软件开发模型的实际运用,是开发方法在软件开发实际过程的详细描述和具体规约。每个软件开发方法中都含有相应的软件开发模型,在软件开发方法中总能找到对应的基本开发模型。每个软件开发方法都有自己的侧重点、价值目标、规范和流程,直接面向适用的开发团队,甚至约束到人员职责、工作时间和协作内容。

例如敏捷开发中的极限编程,可以对应到演化模型(原型进化模型),适合小型开发团队。它对团队的参与者作出了规定,强调从简单做起、寻求反馈、勇于实事求是,主要目标在于降低因需求变更而带来的成本。极限编程技术以沟通、简单、反馈、勇气和尊重为价值标准,提倡团队协作和结对编程,每周40小时工作制。

后面软件开发方法的讨论都从相应的开发模型入手,以软件开发周期为基线展开,最后讨论该方法的特征、适用的团队。通过讨论理清利用该方法组织开发的流程及其注意事项。

软件工程与软件开发模型、软件开发方法相关推荐

  1. 软件测试(概念Ⅱ) · 开发模型 · 软件的生命周期 · 瀑布模型 · 螺旋模型 · 增量模型 · 迭代模型 · 敏捷模型 · scrum · 软件测试模型之 V 模型 W 模型

    一.开发模型的由来 二.软件的生命周期 三.瀑布模型(Waterfall Model) 四.螺旋模型(Spiral Model) 五.增量模型(Incremental Model) 六.迭代模型(Ra ...

  2. java开发模型_java开发模型MVC

    常见的三种开发模型: 1. Model1:JSP+JavaBean 2. Model2:MVC 3.Model2+三层架构 今天就重点学习一下Model2+三层架构的编程思想.三层架构主要包括:表现层 ...

  3. lammps软件_Lammps模型构建的方法之一:组合模型构建

    对于Lammps初学者,建模的方法主要有以下几种:1.在Lammps中自行建模,适合金属等简单的模型,如果遇到聚合物就比较麻烦了:2.通过第三方软件建模,例如:Matlab.Python.VMD.Ma ...

  4. 【软考点点】软件开发模型

    软件开发模型是软考上午题中必考的一个知识点.给出一定的条件,让我们判断属于哪一种开发模型.     典型的软件过程模型有瀑布模型.增量模型.演化模型(原型模型.螺旋模型).喷泉模型.基于构件的开发模型 ...

  5. 软件工程—绪论软件工程2(软件工程过程、软件生存周期、软件生存周期模型)

    1.2软件工程过程和软件生存周期 1.2.1软件工程过程     软件工程过程规定了获取.供应.开发.操作和维护软件时,要实施的过程.活动和任务.其目的是为各种人员提供一个公共的框架,以便用相同的语言 ...

  6. 软件开发方法和开发模型的比较

    我搞不清软件开发方法和开发模型这两个概念. 书本上这两部分都放在<软件工程>这一章节里,但是是分开介绍的,并没有阐明二者之间的关系,比较割裂.我尝试在互联网上找找资料,但都非常少.这里先把 ...

  7. 测试学习打卡第一天——测试与开发模型基本介绍

    一.测试与开发模型 测试的工作流程 开发模型 测试模型 开发和测试的关系 测试的工作流程: 需求分析 阅读需求文档(产品文档 产品详细设计说明书 分析需求的点 参与需求评审 快速熟悉项目) 制定测试计 ...

  8. 软件设计师备考笔记(十)软件工程(开发模型、结构化设计、软件测试)

    目录 软件开发模型 信息系统开发方法 需求分类 结构化设计 软件测试 软件开发模型 瀑布模型 历史 盛极一时,但被淘汰:有重大缺陷,会导致项目失败(延期.超支.做不下去) 注意事项:每个阶段(绿框)末 ...

  9. 软件工程,开发模型,软件开发流程

    软件工程 (Software Engineering,简称为SE)是一门研究用工程化方法构建和维护有效的.实用的和高质量的软件的学科.它涉及到程序设计语言,数据库,软件开发工具,系统平台,标准,设计模 ...

最新文章

  1. H5多媒体(用面向对象的方法控制视频、音频播放、暂停、延时暂停)
  2. Linux 主机被入侵后的处理案例
  3. C:\Users\22981\Desktop (拒绝访问。)
  4. java构造一个水果类_Java基础入门之Object类、匿名内部类、构造方法的继承解析...
  5. Scala学习04——Scala方法与函数
  6. NMEA0183格式GPS数据详解
  7. led屏背后线路安装图解_弱电工程LED屏安装工程施工方案
  8. 【Memcached】分布式内存对象缓存系统
  9. Visual Studio系列创建工程占用空间大的解决办法
  10. uni-app实现文件管理器(Android)
  11. A Benchmark and Simulator for UAV Tracking(论文翻译)
  12. python程序基础网课答案_知到Python程序设计基础网课答案
  13. 容灾备份概念及实现方式
  14. 一场官司,终于让人们看清了苹果
  15. 〖ChatGPT实践指南 - 零基础扫盲篇⑧〗- OpenAI 的 模型(Model) 介绍
  16. 拼音首字母缩写在线翻译源码
  17. 练习题 William's Colored Pencils
  18. 你的语言模型有没有“无法预测的词”?
  19. 解决:在python+selenium账号脚本登陆时,使用qq账号密码登陆百度账号出现的问题
  20. switchresx卸载_SwitchResX for Mac使用过程启动问题解答

热门文章

  1. 图书管理系统(I/O)
  2. 阿里云ECS安装MySql数据库
  3. 计算机网络自顶向下方法华为路由器配置OSPFv3路由协议实现端到端的通信
  4. css气泡图片上下浮动
  5. OCR手写数字识别什么软件好用?介绍一种
  6. 新中大连接服务器文件,新中大软件服务器地址修改
  7. 零基础程序员自学编程有这 6 种方法,你的自学方法是合理的么?
  8. Scratch软件编程等级考试二级——20191221
  9. java 锯齿_java 生产文字图片边缘有锯齿状
  10. 「首席架构师推荐」一系列很棒的的浏览器端JavaScript库资源