软件工程概论1

合集下载

一章节软件工程概论

一章节软件工程概论
1.3 软件生存周期(1)
一.软件生存周期的概念 1.在软件项目开发过程中一般要面临如下的问题: (1) 提出问题? (2) 有无解决问题的办法? (3) 达到的标准? (4) 问题如何解决? (5) 解决问题的具体方法? (6) 如何实现? (7) 产品的检验? (8) 产品的使用和维护等。 2.软件生存周期:从软件定义、开发、使用、维护到淘汰的全过 程。
确和正确的要求往往是不实际的。
7
1.4 软件开发的方法和技术(2)
二.渐增型 1.渐增型方法是从问题的部分需求出发,先建立一个不完全的系 统,通过测试运行该系统取得经验和信息反馈,加深对软件需 求的理解,进一步使系统扩充和完善。如此反复,直至软件人 员和用户对所设计完成的软件系统满意为止。 2.在渐增型开发下的软件是随软件开发的过程而逐渐形成的。 3.渐增型开发方法适合于知识型软件的开发,设计系统时对用户 需求的认识开始不是很清楚的,需要在开发过程中不断认识、 不断获得新的知识去丰富和完善系统。多数研究性质的试验软 件,一般采用此方法。 开发过程图解如下所示:
具” 等。
五.软件工程环境 方法与工具的结合,加上配套的软、硬件支持称为软件工程 环境。
它能支持开发者按照软件工程的方法,全面完成生存周期中的各项任 务。
如UNIX环境、Ada环境以及各种工作站。 六.软件工程管理
1.按照进度及预算完成软件计划,实现预期的经济和社会效益。 17 2.软件管理可以借助计算机来实现。
开发阶段流程图
定义软件结构 与数据结构, 确定模块功能、 调用关系接口
评审
修改
接受
确定每个 模块算法
编写程序
修改 静态检查
通过 单元测试, 集成测试, 验收测试。
源程序 清单

软件工程概论 知识点

软件工程概论 知识点

第一章软件工程概论1.1软件危机:指在计算机软件的开发和维护过程中所遇到的一系列严重问题。

表现在以下几个方面:(1)用户对开发出的软件很难满意。

(2)软件产品的质量往往靠不住。

(3)一般软件很难维护。

(4)软件生产效率很低。

(5)软件开发成本越来越大。

(6)软件成本与开发进度难以估计。

(7)软件技术的发展远远满足不了计算机应用的普及与深入的需要。

1.2.软件工程1、软件工程的定义:指导软件开发和维护的工程性学科,它以计算机科学理论和其他相关学科的理论为指导,采用工程化的概念、原理技术和方法进行软件的开发和维护,把经过时间考虑而证明是正确的管理技术和当前能够得到的最好的技术方法结合起来,以较少的代价获得高质量的软件并维护.2、软件工程的基本原理:1) 用分阶段的生命周期计划严格管理2) 坚持进行阶段评审3) 实行严格的产品控制4) 采纳现代程序设计技术5) 结果应能清楚地审查6) 开发小组的人员应少而精7) 承认不断改进软件工程实践的必要性3. 软件工程的方法学通常把在软件生命周期全过程中使用的一整套技术方法的集合称为方法学。

软件工程三个要素:工具、方法、过程。

1.3 软件生命周期A,可行性分析与开发项计划:主要确定软件的开发目标及其可行性。

B,需求分析:在确定软件开发可行的情况下,对软件需要实现的各个功能进行详细分析。

C,设计(概要设计和详细设计):主要根据需求分析的结果,对整个软件系统进行设计,如系统框架设计,数据库设计等等。

D,,编码:将软件设计的结果转换成计算机可运行的程序代码。

E,测试:在软件设计完成后要经过严密的测试,以发现软件在整个设计过程中存在的问题并加以纠正。

F,维护:在软件开发完成并投入使用后,由于多方面的原因,软件不能继续适应用户的要求.1.4软件过程1.传统瀑布模型:是一种整体开发模型,程序的物理实现集中在开发阶段的后期,用户在最后才能看到自己的产品。

2.快速原型模型:在用户不能给出完整、准确的需求说明等情况下,可以根据用户的一组基本需求,快速建造一个原型(可运行的软件),然后进行评估,进一步精化、调整原型,使其满足用户的要求,也使开发者对将要做的事情有更好的理解。

软件工程概论知识点汇总

软件工程概论知识点汇总

软件工程概论知识点汇总软件工程概论知识点汇总第一章软件工程概述1. 软件工程定义及概念2. 软件工程的历史发展3. 软件开发生命周期模型a. 瀑布模型b. 迭代模型c. 增量模型d. 螺旋模型e. 敏捷开发模型第二章需求分析与管理1. 需求工程的基本概念2. 需求获取与分析方法3. 需求规格说明书4. 需求变更与配置管理第三章软件设计与架构1. 结构化设计方法2. 面向对象设计方法3. 设计模式及应用4. 软件架构设计与选择第四章软件编码与测试1. 编码规范与风格2. 测试方法与策略3. 单元测试与集成测试4. 软件质量保证与评估第五章软件项目管理1. 软件项目组织与人力资源管理2. 软件项目计划与进度管理3. 风险管理与配置管理4. 软件项目质量管理第六章软件维护与演化1. 软件维护的类型与阶段2. 软件维护的过程与方法3. 软件重构与演化第七章软件工程的理论与方法1. 软件需求建模方法2. 软件设计原则与方法3. 软件度量与评估方法4. 软件工程的形式化方法第八章软件工程的伦理与职业道德1. 软件工程的伦理问题2. 软件工程师的职业道德要求3. 软件工程师的专业素养与发展本文档涉及附件:________本文所涉及的法律名词及注释:________1.著作权法:________保护软件的著作权,禁止未经授权的复制、修改、发布等行为。

2.商标法:________保护软件的商标权,禁止他人未经授权使用相同或相似的商标。

3.专利法:________保护软件的发明专利权,禁止他人未经授权使用相同或相似的发明。

4.合同法:________规定软件开发过程中的合同签订与履行等事项。

软件工程概论课后习题答案

软件工程概论课后习题答案

软件工程概论课后习题答案软件工程概论郑人杰等版第1章软件与软件工程的概念1.1 举出你所知道的应用软件的例子。

办公软件、嬉戏软件、财务软件、银行软件、人事管理软件、工资管理软件、学籍管理软件等。

1.2 认为“软件就是程序,软件开发就是编程序。

”这种观点是否正确?为什么?认为“软件就是程序,软件开发就是编程序。

”这种观点是错误的。

首先,软件是计算机系统中与硬件互相依存的另一部分,它是包括程序,数据及其相关文档的完整集合,程序只是软件的组成部分之一;第二,在软件开发中,编程只是软件开发过程的一个阶段。

1.3 假如将软件开发比作高楼大厦的建筑,可以将软件的设计比作什么?可以将软件的设计比作建造设计,软件设计的成绩相当于建造设计的设计图纸。

1.4 什么是软件危机?它有哪些典型表现?为什么会浮现软件危机?软件危机:软件危机是指在计算机软件的开发和维护过程中所碰到的一系列严峻问题。

典型表现:(1)对软件开发成本和进度的估量经常很不精确。

(2)用户对“已完成的”软件系统不惬意的现象常常发生。

(3)软件产品的质量往往靠不住。

(4)软件经常是不行维护的。

(5)软件通常没有适当的文档资料。

(6)软件成本在计算机系统总成本中所占的比例逐年升高。

(7)软件开发生产率提高的速度,既跟不上硬件的进展速度,也远远跟不上计算机应用快速普及深化的趋势。

产生软件危机的缘由:除了软件本身的特点,其缘由主要有以下几个方面:(1) 缺乏软件开发的阅历和有关软件开发数据的堆积,使得开发工作方案很难制定。

(2) 软件人员与用户的沟通存在障碍,使得猎取的需求不充分或存在错误。

(3) 软件开发过程不规范。

如,没有真正了解用户的需求就开头编程序。

(4) 随着软件规模的增大,其复杂性往往会呈指数级上升。

需要无数人分工配合,不仅涉及技术问题,更重要的是必需有科学严格的管理。

(5) 缺少有效的软件评测手段,提交给用户的软件的质量不能彻低保证。

1.5 什么是软件工程?软件工程是指导计算机软件开发和维护的工程学科。

1软件工程概论

1软件工程概论

软件工程1、软件危机:软件危机是指在计算机软件的开发和维护过程中遇到的一系列严重问题。

包含两方面的问题:(1)如何开发软件,以满足对软件日益增长的需求;(2)如何维护数量不断膨胀的已有软件。

2、软件危机的主要表现:(1)对软件开发成本和进度的估计经常很不准确;(2)用户对“已完成的”软件系统不满意的现象经常发生;(3)软件产品的质量往往靠不住;(4)软件常常是不可维护的;(5)软件通常没有适当的文档资料;(6)软件成本在计算机系统总成本中所占的比例逐年上升;(7)软件开发生产率提高的速度,远远跟不上计算机应用迅速普及深入的趋势。

3、产生软件危机的原因(1)从软件特点上看,软件是逻辑部件,不是物理部件;(2)软件是很大的程序,复杂且有很多技术问题,但缺少严格而科学的管理;(3)软件的参与人员多且成分复杂(需求人员,开发人员,用户,维护人员等);(4)在软件实践过程中或多或少的采用的错误的(但当时无法知晓的)方法和技术(这是主要原因)4、消除软件危机的途径(1)首先应该对计算机软件有一个正确的认识;(2)更重要的是,必须充分认识到软件开发不是某种个体劳动的神秘技巧,而应该是一种组织良好、管理严密、各类人员协同配合、共同完成的工程项目;(3)应该推广使用在实践中总结出来的开发软件的成功的技术和方法,并且研究探索更好更有效的技术和方法,尽快消除在计算机系统早期发展阶段形成的一些错误概念和做法;(4)应该开发和使用更好的软件工具总之,为了解决软件危机,既要有技术措施(方法和工具),又要有必要的组织管理措施。

5、软件工程:软件工程是从管理和技术两方面研究如何更好地开发和维护计算机软件的一门新兴学科。

(1)1968年NATO会议:软件工程就是为了经济地获得可靠的且能在实际机器上有效地运行的软件,而建立和使用完善的工程原理。

(2)1993IEEE定义:软件工程是①把系统的、规范的、可度量的途径应用于软件开发、运行和维护过程,也就是把工程应用于软件;②研究①中提到的途径。

第1章-软件工程学概述1-1

第1章-软件工程学概述1-1

• 软件用后不磨损
• 随着时间的推移,应用程序
的某些部分可能会变得不再 相关(例如,需求改变时), 而需要修改
• 但是,没有备件的概念
1.1、软件的定义
硬件和软件故障率曲线
由于副作用造成 故障率的提高 原来的软件已经面目全非了!
故障率

磨损后
生命初期
修改
硬件的故障率曲线 实际曲线
软件故障率的理想曲线
1.2、软件危机
软件危机案例
3 . 软件产品的质量靠不住 [案例]:
ARIANE 5 火箭 1996 年6 月,耗资70 亿美元,发射
本章内容
1.1、软件的定义 1.2、软件危机 1.3、软件工程 1.4、软件生存期 1.5、软件过程
1.2、软件危机
软件危机
Crisis!
“软件危机”(Software crisis) 的出现是由于软件的规模越来越大,复杂 度不断增加,软件需求量增大。而软件开 发过程是一种高密集度的脑力劳动,软件 开发的模式及技术不能适应软件发展的需 要。致使大量质量低劣的软件涌向市场, 有的花费大量人力财力,而在开发过程中 就夭折。
时间
1.1、软件的定义
硬件和软件故障率曲线的比较
软件不会用坏(wear out).
软件会退化( deteriorate)!
1.1、软件的定义
软件的特点-7
要求

软件产品不允许误差
软件产品的高质量取决于好的设计( High quality is achieved through) 依赖于人(Depend on people) 需要对产品进行构造(Require the construction of a “product”)

第一章软件工程概论

第一章软件工程概论

第⼀章软件⼯程概论第⼀章⼀、体系结构的发展(1)主机结构(2)F/S结构(⽂件-服务器结构)(3)C/S结构(客户-服务器结构)(4)B/S结构(浏览器结构)⼆、开发环境(1)单⾏命令式调式器(如DEBUG)(2)多⾏代码编辑器(如EDIT编辑器)(3)集成开发环境三、软件的概念软件是计算机系统中与硬件相互依存的另⼀部份,它是包括程序、数据及其相关⽂档的完整集合。

可以理解为:软件=程序+数据+⽂档四、软件的特点1.软件具有抽象特征2.软件具有⽆明显制造过程的特征3.软件⽆备件的特征4.⼿⼯制作特征5.成本⾼昂特征五、软件的分类(1)按软件功能进⾏划分:1系统软件 2⽀撑软件 3应⽤软件2.按软件规模进⾏划分六、软件危机指什么在软件开发和维护中所产⽣的⼀系列严重的问题。

⼀是如何开发软件,满⾜⽤户对软件的需求;⼆是如何维护数量众多的已有软件。

七、解决软件危机的途径(1)加强软件开发过程的管理(2)推⼴使⽤开发软件的成功技术与⽅法(3)开发和使⽤好的软件⼯具,建⽴良好的软件⼯程⽀持环境。

⼋、软件⼯程的⽬标1.付出较低的开发成本2.实现要求的功能3.取得较好的软件性能4.开发的软件易于移植5.需要的维护费⽤较低6.能按时完成开发⼯作,及时交付使⽤。

九、软件⽣存周期及其⼯作任务软件从定义、开发、使⽤和维护,直到最终被废弃,要经历⼀个漫长的时期,通过称为软件⽣命(⽣存)周期。

⼯作任务1.计划时期:主要任务是调查和分析:调查⽤户需求,分析新系统的主要⽬标,分析开发该系统的可⾏性。

细分为问题定义和可⾏性研究两个阶段。

可⾏性研究分为技术可⾏性和经济可⾏性。

2.开发时期:完成设计和实现两⼤任务,设计包括需求分析和软件设计,实现阶段包括编码和测试。

从重要性和⼯作量上看,设计要重于实现。

分为四个阶段:(1)需求分析(2)软件设计(3)编码(4)测试3.运⾏维护阶段:发现错误、⼯作变化、增加功能等需要的软件升级⼯作。

⼗、软件开发模型分类1.瀑布模型传统的⽣命周期⽅法学通常被命名为“瀑布模型”,包括:问题定义、可⾏性研究、需求分析、总体设计、详细设计、编码和单元测试、综合测试、软件维护。

第1章软件工程学概述

第1章软件工程学概述
36
(3)软件经常变化 (4)开发软件的效率非常重要 (5.) 和谐地合作是开发软件的关键 (6.) 软件必须有效地支持它的用户 开发软件的目的就是支持用户的工作,满足 用户对软件的需求 (7. )在软件工程领域中通常由具有一种文 化背景的人替具有另一种文化背景的人创 造产品
37
软件工程的研究内容
软件是计算机系统中与硬件(hardware)相互依存 的另一部分,与硬件合为一体完成系统功能。 软件定义包括如下几点: (1)功能和性能的指令集(即程序); (2)程序能正常操纵信息的数据结构(即相关数 据); (3)与程序开发维护和使用有关的各种图文数据 (即说明文档)。
16
软件=程序+数据+相关文档
软件的发展主要经历了以下3个发展阶段:
第一阶段(20世纪50年代初期至20世纪60年 代中期) 特点:(1)称为程序设计阶段 (2)软件生产以个体化为主 (3)编写程序的工具只有低级语言 (4)软件规模小,几乎没有系统化的 标准可循
11
(5)软件由软件使用者自己开发和编写,适 合个人应用 (6)没有“软件”概念,对于程序有关的文 档的重要性认识不足,开发主要围绕硬件 进行 (7)工程规模小,使用工具单一,开发者之 间没有明确分工 第二阶段(20世纪60年代中期至70年代末期) 称程序系统阶段
7
ENIAC诞生于二战时期,最初是作为辅助炮兵计 算炮弹轨迹的工具,在盟军登陆西欧前一年开始 制造,但直到1945年停火时还没完成。在冷战初 期军方就发现了ENIAC的大量用途,它的17468 根真空管被用来测试氢弹的早期设计的可行性。 这台计算机每秒能执行5000条指令,在当时的情 况下它的运算速度比电动式计算机快1000倍。当 然,现在iPhone 6每秒能响应250亿条指令。

软件工程概论

软件工程概论
20/151
功能性语言 functional language
功能性语言用来书写软件功能规约(functional specification)
软件功能规约是软件功能的严格而完整的陈述。 通常它只刻画软件系统“做什么”的外部功能, 而不涉及系统“如何做”的内部算法。
典型的功能性语言有广谱语言、Z语言。
• 软件生存周期大体可分为如下几个活动:计算机系统 工程、需求分析、设计、编码、测试、运行和维护
36/151
• 计算机系统工程
➢ 计算机系统包括计算机硬件、软件、使用计算机 系统的人、数据库、文档、规程等系统元素。
➢ 计算机系统工程的任务:
❖确定待开发软件的总体要求和范围,以及它与其它计 算机系统元素之间的关系
➢ 硬件向巨型机和微型机二个方向发展,出现了计算机网络, 软件方面提出了软件工程,出现了“计算机辅助软件工程” (CASE)
➢ 计算机的应用领域渗透到各个业务领域,出现了嵌入式应用, 其特点是受制于它所嵌入的宿主系统
➢ 开发方式逐步由个体合作方式转向工程方式 ➢ 软件工程方面的研究主要包括软件开发模型、软件开发方法
• 按用户要求分:过程式语言和非过程式语言 过程式语言(procedural language)是通过指明一列可
执行的运算及运算次序来描述计算过程的程序设计语言。 如FORTRAN、COBOL、C等。
非过程式语言(nonprocedural language )是不显式 指明处理过程细节的程序设计语言。在这种语言中尽量引 进各种抽象度较高的非过程性描述手段,以期做到在程序 中增加“做什么”的描述成分,减少“如何做”的细节描 述。如第四代语言(4GL)、函数式语言、逻辑式语言。
需求定义语言 功能性语言 设计性语言 实现性语言(即程序设计语言) 文档语言

第1章-软件工程概论

第1章-软件工程概论
软件生存期模型是跨越整个生存期的系 统开发、运作和维护所实施的全部过程、 统开发、运作和维护所实施的全部过程、 活动和任务的结构框架 活动和任务的结构框架
瀑布模型 演化模型 原型模型 螺旋模型 增量模型 喷泉模型
软件工程是一门交叉学科
软件工程的主要研究内容
软件开发技术: 软件开发技术:软件开发方法学
软件开发过程 软件工具和软件工程环境
软件工程管理: 软件工程管理:软件管理学
软件经济学 软件心理 软件工程所包含的内容不是一成不变的, 软件工程所包含的内容不是一成不变的, 随着人们对软件系统的研制开发和生产的理解。 随着人们对软件系统的研制开发和生产的理解。 应用发展的眼光看待它。 应用发展的眼光看待它。
运行/ 运行/维护
改正性维护 运行中发现了软 件中的错误需要修正 适应性维护 为了适应变化了 的软件工作环境, 的软件工作环境,需做适当变 更 完善性维护 为了增强软件的 功能需做变更
软件工作的范围
只考虑 编写程序
扩展到
涉及整个 软件生存 周期
软件生存期模型(软件过程) 软件生存期模型(软件过程)
软件工程方法学
传统方法学 面向对象方法学
重点) 软件生存期 life cycle(重点 重点
软件有一个孕育、诞生、成长、 软件有一个孕育、诞生、成长、 成熟、衰亡的生存过程。 成熟、衰亡的生存过程。这个 过程即为计算机软件的生存期 软件生存期的六个步骤, 软件生存期的六个步骤,即可 行性研究与计划、需求分析、 行性研究与计划、需求分析、 总体设计、详细设计、实现、 总体设计、详细设计、实现、 测试及 测试及使用维护
软件是计算机系统中与硬件相互依存的 软件是计算机系统中与硬件相互依存的 另一部分,它是包括程序, 另一部分,它是包括程序,数据及其相 关文档的完整集合。 关文档的完整集合。

第1章 软件工程概述

第1章 软件工程概述

因而软件成本相当昂贵;
(6)相当多的软件开发涉及到社会因素。
2017/10/26 第4页 软件工程
3、软件的分类:
(1)按功能分类 a、系统软件:支持计算机系统各个部件、相关的软件
和数据协调、高效地工作的软件。如:OS、DBMS、
DRIVER、COMMUNICATION-SYSTEM。 b、支撑软件:协助用户开发软件的工具性软件,文本 编辑软件。如:PSL/PSA(问题描述语言、问题描述分析 器)、图形软件包、预编译程序、静态分析程序。
是批处理还是人机交互,信息存储是采用文件系统还是数据库?),方案的级
别有:低、中、高等级,每种方案都用系统流程图或其它工具加以描述。推荐 一种方案。最后确定一种方案。 (4)完成的任务:可能的解法(每种解法的系统流程图和成本效益分析),推 荐的系统结构(层次图或结构图)。 总体设计结束的标志是提交总体设计说明书、数据库或数据结构说明书和 集成测试计划等文件。
软件工程
2017/10/26
第1页
软件工程
第一章 软件工程概述
软件 软件危机 软件工程
2017/10/26
第2页
软件工程
1.1 软
1、什么叫软件?

(1)广义软件:相对于有形物理实体,把技术条件、管理法
规以及人员素质等无形因素称为软件。 (2)计算机软件:是与计算机硬件相对应的计算机组成部分, 包括程序、数据及其相关文档的完整集合。 Boehm:“软件是程序以及开发、使用和维护程序所需的所有
2017/10/26
第6页
软件工程
(4)按功能软件服务对象分类 a、项目软件:受特定客户委托由一个或多个软件 开发机构在合同的约束下开发出来的软件。 b、产品软件:提供给市场的商品。

软件工程概论

软件工程概论

软件演化策略与方法
组件化演化
将软件拆分为独立可复用的组件进行演 化。
VS
服务化演化
将软件功能以服务的形式提供,实现灵活 组合和扩展。
软件演化策略与方法
重构
改进软件内部结构而不改变其外部行为。
代码优化
提高代码质量和性能。
软件演化策略与方法
模块化设计
将软件划分为独立的功能模块,便于维护和 扩展。
自动化测试
04
自动化测试工具介绍
Selenium
用于Web应用的自动化测试工具,支 持多种浏览器和操作系统。
JUnit
用于Java程序的单元测试工具,可以 与其他测试框架集成使用。
Appium
用于移动应用的自动化测试工具,支 持iOS和Android平台。
TestNG
一个功能强大的Java测试框架,支持 多种测试类型(如单元测试、集成测 试、端到端测试等)。
手工测试与自动化测试
手工测试是由测试人员手动执行测试用例;自动化测试则是使用自 动化工具来执行测试用例。
黑盒测试技术
等价类划分
将输入数据划分为若干个等价类,每个等价类中的数据在 程序中的处理方式是相同的,从而减少测试用例的数量。
边界值分析
针对输入或输出的边界条件进行测试,因为边界条件往往 是容易出现错误的地方。
软件质量不达标,存在缺陷和错误。
软件危机表现 软件开发成本超出预算。 软件维护困难,难以适应需求变化。
软件工程目标与方法
软件工程目标 实现软件的工业化生产,提高软件生产率。 降低软件开发和维护成本,提高软件质量。
软件工程目标与方法
提高软件开发过程的可见性和可控性。
软件工程方法
瀑布模型:按照需求分析、设计、编码、测试和维护的顺序逐步进行软件开发,每个阶段都有明确的输 入和输出。

第1章软件工程概论

第1章软件工程概论

听取用 户意见
建立/修改 原型
用户测试 运行原型
原型模型
1.5.3 RAD模型
快速应用开发 (RAD)是一个瀑布式的软件开发 模型,强调开发周期要短。RAD模型是瀑布模型的 一个“高速”变种,通过使用基于构件的建造方法 获得了快速开发。如果对需求理解得很好,且约束 了项目范围,RAD过程能使一个开发组在很短时间 内创建出“功能完善的系统”。
版本。该模型又可细分为增量模型、螺旋模
型、构件组装模型和并发开发模型。
增量模型
系统/信 息 工程 分析 设计
增量1
编码 调试 第1个增量的 发布 编码 调试 第2个增量的 发布 编码 调试 第3个增量的 发布 编码 调试 第4个增量的 发布
增量2 分析
设计
增量3 分析
设计
增量4 分析
设计
calendar time 增量模型
( 4 )企业信息化程度和计算机应用水平低, 导致无法准确描述需求。--企业 (5) 一把手对信息管理的重视程度不够。-企业 ( 6 )缺乏相互沟通,业务描述的详尽程度不 能达到具备生活常识的人能够轻易理解。 -企业、软件
产生软件危机的原因(微观)
(1)软件的规模比较庞大,其开发和维护相当困难; (2)开发人员虽然有经验,但还存在着不少错误观 点,没有实行工程化的方法; (3)不能与用户及时沟通,不能了解用户的实际需 要; (4)没有统一的软件质量管理规范; (5)不能根据环境的变化而随时对产品进行改正。
(1)缺乏总体考虑,没有软件工程学概念或系 统工程思想。--软件 (2)对业务了解支离破碎,需求分析不准。-软件 (3)企业依赖激情指挥,企业管理标准化、规 范化、科学化程度不高,导致不能成功地应 用 “死板”的软件,它依赖于业务的“科学 化”、“条理化”、“程序化” --企业

软件工程软件工程概论

软件工程软件工程概论
• 方法是完成软件开发的各• 项任务的技术方法,为 软件开发提供 “如何做” 的技术。
• 工具是为运用方法而提供的自动的或半自动的软 件工程的支撑环境;
• 过程是为了获得高质量的软件所需要完成的一系 列任务的框架,它规定了完成各项任务的工作步 骤。
• 目前使用最广泛的软件工程方法学,分别是传统 方法学和面向对象方法学。
运行维护
• 通过各种必要的维护活• 动使软件系统持久地满 足用户的需要,通常有4类:
• 改正性维护:运行中发现了软件中的错误需要 修正。
• 适应性维护:为了适应变化了的软件工作环境 ,需做适当变更。
• 完善性维护:为了增强软件的功能需做变更。 • 预防性维护,即修改软件为将来的维护活动预
先做准备。
软件的特点之二
• 软件的开发和运行常受到计算机系统的限 • 制,对计算机系统有着不同程度的依赖性 。
• 开发工作的劳动强度决定了软件开发需要 有效的软件开发工具或软件开发环境。软 件的开发至今尚未完全摆脱手工操作的开 发方式。
• 软件本身是复杂的,因为 • 实际问题的复杂性; • 程序逻辑结构的复杂性。
早期的软件系统多以此作• 为首选设计标准。
B/S结构,即Browser/Server(浏览器/服务器)结构,是随着Internet 技术的兴起,对C/S结构的一种变化或者改进的结构。在这种结 构下,用户界面完全通过WWW浏览器实现,一部分事务逻辑在 前端实现,但是主要事务逻辑在服务器端实现,一种新的软件系
• 质量保证的观点 1. 每个阶段都必须完成规定的文档,没有交出 合格的文档就是没有完成该阶段的任务。 2. 每个阶段结束前都要对所完成的文档进行评 审,以便尽早发现问题,改正错误。
2. 快速原型模型

软件工程概论3篇

软件工程概论3篇

软件工程概论
第一篇:软件工程概论简介
软件工程是一门涵盖软件开发全过程的学科,是将工程学应用于软件开发的过程。

它主要依靠不断变化和改进的软件过程模型,来实现软件开发,从而提供更加可靠、高质量、易于维护的软件。

首先,软件开发的重要性是显而易见的。

软件在现代社会中扮演着至关重要的角色,此外,软件的功能和质量越来越受到人们的关注,这更加强调了软件工程的重要性。

软件开发过程的复杂性也越来越明显,需要更加科学、系统的方法来管理和控制。

其次,软件工程涉及到的过程包括了软件需求分析、设计、编码、测试等方面。

针对不同的任务需求和开发阶段,软件工程采用了多种软件开发模型和方法,如:瀑布模型、原型模型、敏捷开发等。

每种开发模型都有优点和缺点,开发人员需要进行合适的选择和应用。

最后,软件工程也需要不断的更新和升级,以适应时代快速发展的需求。

软件工程领域近年来出现了很多新兴技术和方法,如云计算、大数据、DevOps等,这导致软件开发的方式和方法也在不断地变化和改进。

因此,软件工程不仅是一门学科,更是一门不断进步和发展的学科。

总之,软件工程是一个旨在提高软件开发效率和质量的科学方法。

随着时代的不断变化和发展,软件工程也在不断地更新和改进。

它已经成为现代科技领域中不可或缺的一部分。

《软件工程概论》郑人杰版课件 第1章 软件与软件工程介绍

《软件工程概论》郑人杰版课件  第1章 软件与软件工程介绍

1.4 软件生存期
➢ 概要设计 – 概括地回答“怎样实现目标系统?”。 – 设计程序的体系结构,也就是确定程序由哪些 模块组成以及模块间的关系。 – 提交的文档是概要设计说明书。
➢ 详细设计 – 回答“应该怎样具体地实现这个系统”。 – 详细地设计每个模块,确定实现模块功能所需 要的算法和数据结构。 – 提交的文档是软件的详细设计说明书。
(4) 质量特性:目前还无法得到完全没有缺陷的软 件产品 。
1.1 软件的概念、特性和分类
(5) 生产特性:与硬件或传统的制造业产品的生产完 全不同,软件一旦设计开发出来,如果需要提供 多个用户,它的复制十分简单,其成本也极为有 限。
(6) 管理特性:由于上述的几个特点,使得软件的 开发管理显得更为重要,也更为独特 。
(9) 废弃特性: 与硬件不同,软件并不是由于被“用 坏”而被废弃的 。
(10) 应用特性:软件的应用极为广泛,如今它已渗 入国民经济和国防的各个领域,现已成为信息产 业、先进制造业和现代服务业的核心,占据了无 可取代的地位。
1.1 软件的概念、特性和分类
• 软件的分类
(1) 系统软件
• 操作系统 • 数据库管理系统 • 设备驱动程序 • 通信和网络处理程序等
1.4 软件生存期
• 软件定义时期
确定总目标和可行性; 导出策略和系统功能; 估计资源和成本; 制定工程进度表
分为三个阶段
➢ 问题定义 ➢ 可行性研究 ➢ 需求分析
1.4 软件生存期
• 问题定义
关键问题是:“要解决的问题是什么”。 提交的内容为关于问题性质、工程目标和工程 规模的书面报告。
• 可行性研究
算机资源的有效性; • 可维护性是指当环境改变或软件运行发生故障时,为了使
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

第1章软件与软件工程的概念1.软件的概念?软件是计算机系统中与硬件相互依存的另一部分,软件包括程序、数据及其相关文档的完整集合。

2.软件的特性?(1)形态特性(2)智力特性(3)开发特性(4)质量特性(5)生产特性(6)管理特性(7)环境特性(8)维护特性(9)废弃特性(10)应用特性。

3.按照软件作用,一般可以将软件做如下分类?(1)系统软件(2)应用软件(3)支撑软件(4)可复用软件。

4.什么是软件危机?主要表现在哪些方面?软件开发技术的进步未能满足发展的要求。

在软件开发中遇到的问题找不到解决的办法,问题积累起来,形态尖锐的矛盾,导致了软件危机。

表现方面:(1) 用户对开发出的软件很难满意(2) 软件产品的质量往往靠不住(3) 一般软件很难维护(4) 软件生产效率很低(5) 软件开发成本越来越大。

(6) 软件成本与开发进度难以估计(7)软件技术的发展远远满足不了计算机应用的普及与深入的需要。

5.除了软件本身的特点,软件危机发生的原因主要有以下几个方面?(1)缺乏软件开发的经验和有关软件开发数据的积累(2)软件人员与用户的交流存在障碍(3)软件开发过程不规范(4)随着软件规模的增大,其复杂性会呈指数级升高(5)缺少有效的软件评测手段,提交用户的软件质量差。

6.什么是软件工程?它目标和内容是什么?软件工程:就是用科学的知识工程和技术原理来定义,开发,维护软件的一门学科。

目标:付出较低开发成本;达到要求的功能;取得较好的性能;开发的软件易于移植;只需较低的维护费用;能按时完成开发任务,及时交付使用;开发的软件可靠性高。

内容:研究内容包括开发技术和开发管理两个方面。

开发技术主要研究:软件开发方法,开发过程,开发工具和环境。

开发管理主要研究:软件管理学,软件经济学,软件心理学。

7.概括地说,软件生存期由软件定义、软件开发和运行维护三个时期组成,每个时期又可划分为若干个阶段(1)定义时期的主要任务是解决“做什么”的问题。

它通常又被分为三个阶段,问题定义、可行性研究和需求分析(2)开发时期的主要任务是解决“如何做”的问题。

通常由概要设计、详细设计、编码和测试四个阶段组成(3)维护时期的主要任务是使软件持久地满足用户的需要。

通常有四类维护活动:改正性维护,也就是诊断和改正在使用过程中发现的软件错误;适应性维护,即修改软件为将来的维护活动预先做准备;完善性维护,即根据用户的要求改进或扩充软件使它更完善;预防性维护,即修改软件为将来的维护活动预先做准备。

8.什么是软件生存周期模型?有哪些主要模型?生存周期模型:描述软件开发过程中各种活动如何执行的模型。

对软件开发提供强有力的支持,为开发过程中的活动提供统一的政策保证,为参与开发的人员提供帮助和指导,是软件生存周期模型化技术的基础,也是建立软件开发环境的核心。

主要有:瀑布模型,增量模型,螺旋模型,喷泉模型,基于知识的模型,变换模型。

9.什么是软件生存周期?它有哪几个活动?软件生存周期:一个软件从提出开发要求开始直到该软件报废为止的整个时期。

包括:可行性分析和项目开发计划,需求分析,概要设计,详细设计,编码,测试,维护。

10.瀑布模型的特点如下?(1)阶段具有顺序性和依赖性(2)推迟实现的观点(3)质量保证的观点。

11.瀑布模型的优点是?(1)可强迫开发人员采用规范化的方法(2)严格地规定了每个阶段必须提交的文档(3)要求每个阶段交出的所有产品都必须是经过验证的。

12.瀑布模型的缺点是?(1)由于瀑布模型几乎完全依赖于书面的规格说明,很可能导致最终开发出的软件产品不能真正满足用户的需要(2)瀑布模型只用于开始时需求已确定的情况。

13.快速原型模型的优点是?(1)有助于满足用户真实需求(2)原型系统已经通过与用户的交互而得到验证,据此产生的规格说明文档能够正确地描述用户需求(3)软件产品的开发基本上是按线性顺序进行(4)因为规格说明文档正确地描述了用户需求(5)开发人员通过建立原型系统已经学到了许多东西(6)快速原型的本质是“快速”。

14.增量模型的优点是?(1)能够在较短的时间内向用户提交一些有用的工作产品(2)逐步增加产品的功能可以使用户有较充裕的时间学习和适应新产品(3)项目失败的风险较低(4)优先级最高的服务首先交付,然后再将其他增量构件逐次集成进来。

15.螺旋模型的优点是?(1)对可选方案和约束条件的强调有利于已有软件的重用,也有助于把软件质量作为软件开发一个重要目标(2)减少了过多测试或测试不足所带来的风险(3)在螺旋模型中,维护只是模型的另一个周期。

16.螺旋模型的缺点是:?螺旋模型是风险驱动的,因此要求软件开发人员必须具有丰富的风险评估经验和这方面的专门知识,否则将出现真正的风险:当项目实际上正在走向灾难时,开发人员可能还以为一切正常。

17.螺旋线上的每个循环可划分为四个象限,分别表达了四个方面的活动?(1)目标设定—定义在该阶段的目标,弄清对过程和产品的限制条件,制定详细的管理计划,识别项目风险,可能还要计划与这些风险有关的对策(2)风险会计与弱化—针对每个风险进行详细分析,设想弱化风险的步骤(3)开发与验证—评价风险之后选择系统开发模型(4)计划—评价开发工作,确定是否继续进行螺旋线的下一个的循环。

18在统一过程中有5个核心工作流,即需求、分析、设计、实现和测试工作流;统一过程有4个阶段,分别是初始阶段、细化、构造阶段和移交阶段。

19.SWEBOK指南的目标是?(1)促使软件工程本体知识成为世界范围的知识(2)澄清软件工程与其他相关学科(3)反映软件工程学科内容的特征(4)确定软件工程本体知识的各个专题(5)为相应的课程和职业资格认证材料的编写奠定基础。

20.软件工程知识体系指南的内容?SWEBOK指南将软件工程知识体系划分为10个知识域,分为两类过程。

一类是开发与维护过程,包括软件需求、软件设计、软件构造、软件测试和软件维护;另一类是支持和组织过程,包括软件配置管理、软件工程管理、软件工程过程、软件工程工具与方法、软件质量。

21.软件产品的特性是什么?⑴是一种逻辑产品,与物质产品有很大的区别⑵软件产品的生产主要是研制,生产成本主要在开发和研制,开发研制完成后,通过复制就产生了大量软件产品⑶软件产品不会用坏,不存在磨损,消耗⑷生产主要是脑力劳动,还末完全摆脱手工开发方式,大部分产品是"定做"的⑸开发软件的费用不断增加,致使生产成本相当昂贵。

22.软件生产有几个阶段?各有何特征?⑴程序设计时代:这个阶段生产方式是个体劳动,使用的生产工具是机器语言,汇编语言⑵程序系统时代:这个阶段生产方式是小集团合作生产,使用的生产工具是高级语言,开发方法仍依靠个人技巧,但开始提出结构化方法⑶软件工程时代:这个阶段生产方式是工程化的生产,使用数据库﹑开发工具﹑开发环境﹑网络﹑分布式﹑面向对象技术来开发软件。

23.软件工程面临的问题是什么?软件工程需要解决的问题:软件的费用,可靠性,可维护性,软件生产率和软件的重用。

24.什么是使用早已软件开发方法?有哪些主要方法?定义好的技术集及符号表示习惯来组织软件生产的过程。

通过使用成功的软件开发方法,在规定的投资和时间内,开发出符合用户需求的高质量的软件。

主要有:结构化方法,J ACKSON方法,维也纳开发方法﹙VDM﹚,面向对象开发方法。

25.快速原型的分类、特点及使用策略?分类:探索型、实验型、进化型特点:尽快向用户提供一个可在计算机上运行的目标系统的模型,以便使用户和开发者在目标系统应该“做什么”这个问题上尽可能快地达成共识。

使用策略:废弃策略和追加策略。

26.软件工程的目标?付出较低开发成本;达到要求的功能;取得较好的性能;开发的软件易于移植;只需较低的维护费用;能按时完成开发任务,及时交付使用;开发的软件可靠性高。

第2章软件工程方法与工具1.软件工程的三种要素是什么?各自作用是什么?软件工程方法学包含3个要素:方法、工具和过程。

(1)软件工程方法(method)为建造软件提供技术上的解决方法(2)工具为方法的运用提供自动的或半自动的软件支撑环境(3)过程是为了获得高质量的软件所需要完成的一系列任务的框架,它规定了完成各项任务的工作步骤。

2.形式化方法的主要特点是?(1)软件需求规格说明被细化为用数学记号表达的详细的形式化规格说明(2)设计、实现和单元测试等开发过程由一个变换开发过程代替。

3.类是具有相同操作功能和相同的数据格式的对象的集合与抽象。

4.封装是利用抽象数据类型将数据和基于数据的操作封装在一起。

5.消息是一个对象向另一个对象传递的信息,有4类消息?(1)发送对象请求接收对象服务(2)发送对象激活接收对象(3)发送对象询问接收对象(4)发送对象仅传送信息给接收对象。

6.面向对象的软件开发方法?(1)Booth方法(2)Rumbaugh方法(3)Coad和Yourdon方法(4)Jackbson方法(5)Wirfs-Brock方法。

7.UML的特点?(1)统一标准(2)面向对象(3)可视化,表达能力强大(4)独立于过程(5)容易掌握使用(6)与编程语言的关系。

8.软件工具的概念?软件工具是指能支持软件生存周期中某一阶段的需要而使用的软件工具。

9.软件工具的分类?软件工具按软件过程的活动来进行分类:(1)支持软件开发过程的工具。

主要有需求分析工具、设计工具、编码工具、排错工具、测试工具等(2)支持软件维护过程的工具。

主要有版本工具、文档分析工具、信息库开发工具、逆向工程工具、再工程工具等(3)支持软件管理过程和支持的工具,主要有项目管理工具、配置管理工具、软件评价工具等。

10.软件开发过程中的常用软件工具有哪些?(1)需求分析工具(按所采用的系统开发方法,分为:结构化图形工具箱,面向对象模型化工具及分析工具)(2)设计工具(对应于概要设计活动和详细设计活动,分为概要设计工具和详细设计工具)(3)编码工具与排错工具(4)测试工具(分为程序单元测试工具、组装测试工具和系统测试工具)。

11.Rose的特点?(1)Rose支持三层结构方案(2)Rose产品为大型软件工程提供了可塑性和柔韧性极强的解决方案(3)ROSE支持UML、OOSE及OMT(4)支持大型复杂项目(5)与多种开发环境无缝集成。

12.Rose的系统主菜单窗口分为7个区域?系统主菜单、标准工具栏、图形工具栏、浏览器窗口、文档窗口、应用窗口和日志窗口。

13.可行性研究有哪些步骤?⑴确定项目规模和目标;⑵研究正在运行的系统⑶建立新系统的高层逻辑模型⑷导出和评价各种方案⑸推荐可行方案⑹编写可行性研究报告。

14.可行性研究过程包括哪些?(1)复查系统规模和目标(2)研究目前正在使用的系统(3)导出新系统的高层逻辑模型(4)进一步定义问题(5)导出和评价供选择的解法(6)推荐行动方针(7)草拟开发计划(8)书写文档提交审查。

相关文档
最新文档