软件工程(一)

1、什么是软件工程?目前有哪几种主要的软件工程方法?
概括地说,软件工程是指导计算机软件开发和维护的一门工程学科,采用工程的概念、原理、技术、和方法来开发与维护软件,把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来,以经济地开发出高质量的软件并有效地维护它,这就是软件工程。它涉及程序设计语言、数据库、软件开发工具、系统平台、标准、设计模式等方面。
主要有传统方法也称为经典软件工程方法或生命周期方法或结构化范型和面向对象方法。
2、软件的生命周期?
软件生命周期又称为软件生存周期或系统开发生命周期,是软件的产生直到报废的生命周期。软件生存周期包括:
(1)问题定义:弄清“用户需要计算机解决什么样的问题”,提出“系统目标和范围的说明”,提交用户审查和确认。
(2)可行性分析:把待开发系统的目标以明确的语言描述出来,并从经济、技术、法律等多个方面进行可行性分析。
(3)需求分析:弄清用户对软件系统的全部需求,编写需求规格说明书和初步的用户手册,提交评审。
(4)维护:改正性维护(由于开发测试的不彻底,不完全),适应性维护(适应环境变化),完善性维护(使用过程中提出的一些建设性意见),预防性维护(改善软件系统的可维护性和可靠性)。
3、软件过程
软件生命周期所涉及的一系列相关过程,是指一套关于项目的阶段、状态、方法、技术和开发、维护软件的人员以及相关Artifacts(计划、文档、模型、编码、测试、手册等)组成。包含基本过程类、支持过程类、组织过程类。
(1)基本过程类包括获取过程、供应过程、开发过程、运作过程、维护过程和管理过程。
(2)支持过程类包括文档过程、配置管理过程、质量保证过程、验证过程、确认过程、联合评审过程、审计过程以及问题解决过程。
(3)组织过程类包括基础设施过程、改进过程、培训过程。
4、软件需求分析的任务是什么?有哪些主要步骤?
需求分析的基本任务是深入描述软件的功能和性能、确定软件设计的约束和软件同其它系统元素的接口细节、定义软件的其他有效性需求,总之,需求分析的任务就是借助于当前系统的逻辑模型导出目标系统的逻辑模型,解决目标系统的“做什么”的问题。
主要步骤:
1>问题识别
(1)功能需求:明确所开发的软件必须具备什么样的功能。
(2)性能需求:明确待开发的软件的技术性能指标。
(3)环境需求:明确软件运行时所需要的软、硬件的要求。
(4)用户界面需求:明确人机交互方式、输入输出数据格式。
2>分析与综合,导出软件的逻辑模型
分析人员对获取的需求,进行一致性的分析检查,在分析、综合中逐步细化软件功能,划分成各个子功能。用图文结合的形式,建立起新系统的逻辑模型。
3>编写文档
(1)编写“需求规格说明书”,把双方共同的理解与分析结果用规范的方式描述出来,作为今后各项工作的基础。
(2)编写初步用户使用手册,着重反映被开发软件的用户功能界面和用户使用的具体要求,用户手册能强制分析人员从用户使用的观点考虑软件。
(3)编写确认测试计划,作为今后确认和验收的依据。
(4)修改完善软件开发计划。在需求分析阶段对待开发的系统有了更进一步的了解,所以能更准确地估计开发成本、进度及资源要求,因此对原计划要进行适当修正。
5、软件工程模型
常见软件工程模型如下:
(1)瀑布模型:将软件生命周期中的各个活动规定为线性连接的模型,包括需求分析、设计、编码、测试、运行与维护,由前至后、相互衔接的固定顺序,如同瀑布流水逐级下落。

瀑布模型是以文档作为驱动、适合于软件需求很明确的软件项目的模型。
(2)V模型:
瀑布模型的一个变体,提供了一种验证确认活动应用于早期软件工程工作中的方法。

瀑布模型的优点:(1)容易理解,管理成本低;(2)强调开发的阶段性早期计划及需求调查和产品测试。
瀑布模型的缺点:(1)客户必须能够完整、正确和清晰地表达他们的需要;(2)开始2个或3个阶段,很难评估真正的进度;(3)项目结束时,出现大量的集成和测试工作;(4)需求或设计中的错误往往只有到了项目后期才能够被发现,对于项目风险的控制能力较弱,从而导致项目常常延期完成,开发费用超出预算。
(3)增量模型
融合了瀑布模型的基本成分和原型实现的迭代特征,它假设可以将需求分段为一系列增量产品,每一增量可以分别开发。

使用增量模型,第1个增量往往是核心的产品。客户对每个增量的使用和评估都作为下一个增量发布的新特征和功能,这个过程在每一个增量发布后不断重复,直到产生了最终的完善产品。增量模型强调每一个增量均发布一个可操作的产品。
增量模型的优点:(1)容易理解,管理成本低;(2)强调开发的阶段性早期计划及需求调查和产品测试;(3)第一个可交付版本所需要的成本和时间很少;(4)开发由增量表示的小系统所承担的风险不大;(5)减少用户需求的变更;(6)运行增量投资,即在项目开始时,可以仅对一个或两个增量投资。
增量模型的缺点:(1)如果没有对用户的变更需求进行规划,那么产生的初始增量可能会造成后来增量的不稳定;(2)如果需求不想早期思考的那样稳定和完整,那么一些增量就可能需要重新开发,重新发布;(3)管理发生的成本、进度和配置的复杂性可能会超出组织的能力。
(4)演化模型:
是迭代的过程,软件开发人员能逐步开发出更完整的软件版本,适用于软件需求缺乏准确认识的情况,典型的演化模型有原型模型和螺旋模型。
1>演化模型之原型模型:是预期系统的一个可执行版本,反映了系统性的一个选定的子集,一个原型不必满足目标软件的所有约束,目的是能快速、低成本地构建原型。

原型模型开始于沟通,其目的是定义软件的总体目标,标识需求,然后快速制定原型开发的计划,确定原型的目标和范围,采用快速射击的方式对其进行建模,并构建原型。
根据原型的目的,可分为三种:(1)探索型原型:目的是弄清目标的要求,确定所希望的特性,并探讨多种方案的可行性;(2)实验型原型:目的是验证方案或算法的合理性,是在大规模开发和实现前,用于考查方案是否合适、规格说明是否可靠等;(3)演化型模型:目的是将原型作为目标系统的一部分,通过对原型的多次改进,逐步将原型演化成最终的目标系统。
**2>演化型模型之螺旋模型:**将瀑布模型与演化模型结合起来,加入了两种模型均忽略的风险分析,弥补了这两种模型的不足。螺旋模型将开发过程分为几个螺旋周期,每个螺旋周期大致和瀑布模型相符合:

螺旋模型强调风险分析,使得开发人员和用户对每个演化层出现的风险有所了解,从而做出应有的反应。因此,该模型特别适用于庞大、复杂并且具有高风险的系统。
(5)喷泉模型
一种以用户需求为动力,以对象作为驱动的模型,适合于面向对象的开发方法。它克服了瀑布模型不支持软件重用和多项开发活动集成的局限性,喷泉模型使开发过程具有迭代性和无间隙性。

有点:提高软件项目的开发效率,节省开发时间。
缺点:开发阶段是重叠的,开发过程中需要大量的开发人员,不利于项目的管理。需要严格的管理文档,使得审核的难度加大。
6、简述结构化分析、设计的要点:
结构化分析方法适合于数据处理类型软件的需求分析。其要点是“自顶向下”地开发系统由整体到个组成部分,由表及里,由抽象到具体,逐步求精。
(1)模块化(2)有顶向下,逐步求精(3)上层模块分解为下层模块,有三种不同的结构形式,即顺序结构,选择结构和循环结构。

考研复试—软件工程(一)相关推荐

  1. 考研复试——软件工程笔记归纳+思维导图

    考研复试的软件工程重点归纳 原文记录在我的幕布https://mubu.com/doc/3C3pXXIGg0上 里面查看观感更好 思维导图在最后,较为庞大.同样推荐到链接里面查看.点击查看思维导图即可 ...

  2. 计算机考研复试-软件工程

    软件工程 1.软件工程三要素 方法,工具,过程. 2.软件开发过程模型 瀑布模型: 将软件生命周期各项活动规定为一次线性连接的若干阶段的模型. 适用于需求全面稳定的项目. V模型: 瀑布模型的变体,提 ...

  3. 计算机考研复试——软件工程篇

    更多复试科目见此目录 所有科目资料的打印版和md原始文件可从此链接下载 1.什么是软件工程?目前有哪几种主要的软件工程方法? ​ 概括地说,软件工程是指导计算机软件开发和维护的一门工程学科.采用工程的 ...

  4. 软件工程考研复试速成 - 知识点精炼 - 背诵版

    针对于考研复试 软件工程 的面试问答,一般都是抽查重点的概念问题,所以本文对软件工程知识点进行重点的精炼,力求节省准研究生们的复习时间.   写这篇博客也是因为小编也在准备复试,对学习的网课进行笔记梳 ...

  5. 2023最新广西大学计算机电子信息考研复试之计算机网络和软件工程 828数据结构与程序设计上岸冲刺复试宝典(复试版/复试资料)

    2023最新广西大学计算机电子信息考研复试之计算机网络和软件工程 828数据结构与程序设计上岸冲刺复试宝典(复试版/复试资料) 适用专业:计算机科学与技术(学硕) 计算机技术(专硕).人工智能(专硕) ...

  6. 东北大学计算机考研复试时软件工程的一些总结(一)

    东北大学计算机考研复试时软件工程的一些总结(一) 第一章 软件工程概述 第二章 软件开发过程和活动 第一章 软件工程概述 1.1 软件开发有哪些特点? 难以描述性.缺乏可见性.复杂性.变化性.风险性. ...

  7. 海南大学软件工程考研复试经验分享

    近期初试考试结束,由于不少同学咨询我考研复试应该如何准备?我自己考研复试成绩是5/120,排名前五,获得新生入学一等奖学金.下面我也想把自己的经验分享给大家,希望可以帮助到大家. 其实我是个人情况是属 ...

  8. 浙江大学计算机研究生分数线初试单科学科,2016年浙江大学计算机考研复试分数线_浙江大学考研分数线...

    成绩查询的时间越来越近了,来看看历年的分数线来估算一下自己是准备复试还是准备调剂吧,小编为大家整理了2016年浙江大学计算机考研复试分数线赶紧来看看.小编还为大家精心准备了浙江大学2016年计算机考研 ...

  9. 中传计算机应用研究生分数线,2018中国传媒大学考研复试分数线(含2016-2018年)...

    原标题:2018中国传媒大学考研复试分数线(含2016-2018年) 2018中国传媒大学考研复试分数线(含2016-2018年) 1.2018中国传媒大学考研复试分数线 报考专业代码 报考专业名称 ...

最新文章

  1. 为什么有人会觉得灵魂无处安放
  2. 央视曝徐梦桃夺冠黑科技:竟然还有个虚拟教练???
  3. 如何将网站升级为HTTPS协议?
  4. 【Python应用】Python+Kepler.gl轻松制作酷炫路径动画
  5. opencv 眼睛识别 linux,用opencv测试人脸识别眨眼练习及问题
  6. Spring Boot 学习之旅
  7. Java EE调度程序
  8. MVC 之var与dynamic
  9. vue自定义组件,插槽,自定义事件
  10. MySQL5.7 编译安装
  11. 在C#中利用Keep-Alive处理Socket网络异常断开的方法 (转)
  12. Spring Cloud学习笔记---雪崩来啦有豪猪
  13. java数据库编程入门
  14. BP神经网络原理和算法推导流程(吴恩达机器学习)
  15. 基于用户的协同过滤推荐算法的实现--以电影推荐为例
  16. 前端——阿里图标的使用详解
  17. Java学习日记(一)
  18. vue项目如何集成金格WebOffice2015
  19. 爪哇国新游记之十五----泛型动态数组类
  20. Pthon中的输出函数

热门文章

  1. Web页面显示随机签名
  2. 计算机图形学基础徐文鹏知识点,计算机图形学基础(OpenGL版)
  3. 华硕k5555l拆解图解_华硕ZenBook UX501笔记本拆机全过程图解
  4. linux查看主板最大内存容量,Linux 查看内存插槽数、最大容量的方法
  5. Ubuntu查看内存槽的数目及内存信息
  6. 软件定义的网络--改头换面的改造?
  7. 南京2级计算机成绩查询,南京审计大学教务管理系统登录入口、成绩查询网上选课查分...
  8. 使用BGP机房有以下优势:
  9. ibm服务器日志文件提取,IBM服务器日志搜集方法
  10. Flash鼠绘入门第六课:青翠竹子绘制过程-Flash鼠绘青翠竹子1