《软件工程与项目管理》第1章 软件工程概述
《软件工程》教学教案
《软件工程》教学教案一、第一章:软件工程概述1. 教学目标了解软件工程的定义、目的和重要性,掌握软件开发的基本过程和原则。
2. 教学内容软件工程的定义和重要性;软件开发的基本过程;软件工程的原则和方法。
3. 教学方法采用讲授法,结合案例分析,让学生了解和掌握软件工程的基本概念和原则。
4. 教学资源教材、课件、案例分析。
5. 教学评价通过课堂提问和案例分析,评估学生对软件工程的理解和应用能力。
二、第二章:软件需求分析1. 教学目标掌握软件需求分析的基本概念、方法和过程,能够运用需求分析工具进行需求收集和分析。
2. 教学内容软件需求分析的基本概念;需求分析的方法和过程;需求分析工具的使用。
3. 教学方法采用讲授法和实例分析,让学生了解和掌握需求分析的方法和过程。
4. 教学资源教材、课件、实例分析。
5. 教学评价通过课堂提问和实例分析,评估学生对需求分析的理解和应用能力。
三、第三章:软件设计1. 教学目标掌握软件设计的基本概念、方法和过程,能够运用设计工具进行软件架构和详细设计。
2. 教学内容软件设计的基本概念;设计方法和过程;设计工具的使用。
3. 教学方法采用讲授法和实例分析,让学生了解和掌握软件设计的方法和过程。
4. 教学资源教材、课件、实例分析。
5. 教学评价通过课堂提问和实例分析,评估学生对软件设计的理解和应用能力。
四、第四章:软件实现1. 教学目标掌握软件实现的基本概念、方法和过程,能够运用编程语言进行软件编码和测试。
2. 教学内容软件实现的基本概念;实现方法和过程;编程语言和测试工具的使用。
3. 教学方法采用讲授法和编程实践,让学生了解和掌握软件实现的方法和过程。
4. 教学资源教材、课件、编程环境和测试工具。
5. 教学评价通过编程实践和测试结果,评估学生对软件实现的理解和应用能力。
五、第五章:软件维护1. 教学目标掌握软件维护的基本概念、方法和过程,能够进行软件维护和优化。
2. 教学内容软件维护的基本概念;维护方法和过程;软件优化技巧。
软件工程导论复习
第1章软件工程概述1、什么是软件工程?为什么会出现软件工程?软件工程是:①把系统的、规范的、可度量的途径应用于软件开发、运行和维护过程,也就是把工程应用于软件;②研究①中提到的途径。
软件工作者在20世纪60年代后期开始认真研究消除软件危机的途径,从而逐渐形成了一门新兴的工程学科——计算机软件工程学(通常简称为软件工程)。
2、软件工程的主要目标是什么?基本目标是什么?软件工程的目标:从管理和技术两个方面开发和维护计算机软件,用低成本,开发出达标、高性能、易于移植、可靠性高的软件。
软件工程的基本目标是:优质、高产。
3、什么是软件工程方法学?软件工程的3要素(软件工程方法学的3要素)是什么?分别包含什么内容?软件工程方法学:软件生命周期全过程中使用的一整套技术方法的集合软件工程方法学包含3个要素:方法、工具和过程。
方法是完成软件开发的各项任务的技术方法,回答“怎样做”的问题;工具是为运用方法而提供的自动的或半自动的软件工程支撑环境;过程是为了获得高质量的软件所需要完成的一系列任务的框架,它规定了完成各项任务的工作步骤。
目前使用得最广泛的软件工程方法学,分别是传统方法学和面向对象方法学。
4、什么是软件过程?什么是软件周期?常见软件生命周期模型(课件中的前5类)的特点有哪些?软件过程:它是为了获得高质量软件所需要完成的一系列任务的框架,它规定了完成各项任务的工作步骤。
软件生命周期:由软件定义、软件开发和运行维护(也称之为软件维护)3个时期组成①瀑布模型定义:传统软件工程方法学的软件过程,基本上可以用瀑布模型来描述。
瀑布模型的特点:1.阶段间具有顺序性和依赖性;2.推迟实现的观点;3.质量保证的观点。
瀑布模型的成功在很大程序上是由于它基本上是一种文档驱动的模型。
瀑布模型的主要优点:a.可强迫开发人员采用规范的技术方法;b.严格地规定了每个阶段必须提交的文档;c.每个阶段结束前必须正式进行严格的技术审查和管理复审。
《软件工程》教学教案
《软件工程》
配套教学教案第1章软件工程概述
第2章可行性研究与软件工程开发计划
圆圈中的字母代表各项子任务的开始或结束事件的编号,箭头上方的数字表示完成各项子任务所需的周数。
要求:
(1)标出每个事件的最早时刻、最迟时刻与机动时间。
估算完成该工程项目总共需要多
第3章需求分析
第4章概要设计
第5章详细设计
第6章软件实现
第7章软件维护
第8章面向对象方法、UML及应用
第9章 WebApp软件工程
第10章软件重用和再工程
第11章软件工程管理
第12章实例——网上商品竞拍系统。
软件工程中的迭代开发方法
迭代开发流程
需求收集
收集和整理用户需求和期望
设计
制定软件架构和功能设计
测试
检测和修复软件缺陷
实施
编码和实现设计方案
迭代开发工具
01
02
03
04
需求管理工具
自动化测试工具
版本控制工具
用于跟踪和管理项目需求
提高软件质量和效率
协调团队开发和代码管理
结尾
迭代开发方法在软件工程领域具有重要意义,通过持 续的迭代和改进,能够更好地满足用户需求,提高软 件质量和开发效率。
●05
第五章 水平和垂直开发方法
水平开发方法
水平开发是一种迭代开发方法,强调不同技术领域之 间的协同合作,以提高软件整体性能和质量。其核心 理念是跨技术领域合作、知识共享和团队协作。水平 开发能够整合不同技术领域的专业知识和技能,提高 软件系统的一体化性能和用户体验。有利于减少技术 壁垒、加速项目进程、提高软件质量和可维护性。
软件工程中的迭代开发方法
制作人: 时间:2024年X月
目 录
第1章 软件工程概述 第2章 迭代开发方法概述 第3章 敏捷开发方法 第4章 精益开发方法 第5章 水平和垂直开发方法
第6章 迭代开发实践与总结
●01
第一章 软件工程概述
软件工程定义
软件工程是指将系统化、规范化、可度量化的方法应 用于软件的开发、维护和运行的过程。软件工程的目 标是提高软件开发的质量、效率和可靠性。软件工程 包括软件开发的整个生命周期,从需求分析到设计、 编码、测试、部署和维护。
流程图
展示流程中的每个步骤
精益看板
帮助团队追踪工作进度
泳道图
协助识别各部门之间的职责
精益开发实践
软件工程中的软件通用编码标准
02
促进软件工程领域的发展和进步,推动行业朝着更高效和可持续的方向发展
03
感谢
支持
共同努力
推动发展
合作
感谢各位的聆听和支持,让我 们共同努力,推动编码标准的 落地和实践
希望大家共同努力,将编码标 准贯穿于软件工程的整个开发 过程
共同促进软件工程领域的发展 和进步,不断提升行业的水平 和质量
●06
第六章 总结与展望
编码标准的重要性总结
编码标准是软件工程中的重要一环, 能够提高代码的质量、可读性和可维 护性。它是每个开发团队必须遵守的 规范,有助于减少错误、提高开发效 率,以及促进团队协作。
未来发展趋势
持续更新和完善
随着软件开发不断 发展,编码标准需 要与时俱进,以适 应新技术和新需求
软件生命周期
需求分析
明确软件需要解决 的问题
编码
将设计转化为源代 码
设计
制定软件的整体架 构和功能
测试
验证软件功能的正 确性
软件工程的原则
用户参与
确保软件符合用户 需求
灵活性
适应需求和变化
迭代开发
循序渐进,不断完 善
重用性
利用已有组件和代 码
软件工程中的挑战
需求变化
01
采用敏捷开发,灵活应对变化
编码标准的重要性
编码标准能够提高团队合作的效率、减少代码错误、增强代码可 读性和降低维护成本。
常见的编码标准
Google编码风格指 南
提供了代码规范和 最佳实践
PEP 8 Python编码 规范
为Python语言提 供了编码指导
Airbnb JavaScript 编码规范
专注于JavaScript 编码规范
第1章 软件工程学概述
Robert Martin Arie van Bennekun Alistair Cockburn Ward Cunningham Martin Fowler
31
软件过程:敏捷开发
开发原则
尽早地、持续地交付有价值的软件来使客户满意。
即使到了开发后期,也欢迎改变需求。敏捷过程利用变化来为客户创造 竞争优势。 经常交付可工作的软件,其时间间隔可以是几周到几个月。 开发期间,业务人员和开发人员必须天天在一起工作。 最有效果的、最有效率的传递信息的方法,就是面对面的交谈。 首要的进度度量标准是工作的软件。 简单是根本的 ……
2013-7-16
重构:建造产品的过程中不断地调整设计 上海大学计算机学院
33
各种生命周期模型的比较
第1章 软件工程学概述
软件危机
软件工程
软件生命周期
软件过程
2013-7-16
上海大学计算机学院
1
软件危机
软件发展的四个阶段
1. 1950’s~1960’s中
规模较小,个体开发
2. 1960’s中~1970’中
软件作坊,产品软件 “软件危机” 出现,“软件工程” 学科诞生(1968年)
3. 1970’中 ~1980’s
方法
2013-7-16
上海大学计算机学院
10
软件工程
传统方法学
也称为生命周期方法学或结构化范型
采用结构化技术(结构化分析、设计和实现) 结构化范型要么面向行为,要么面向数据
面向对象方法学
把数据和行为看成同等重要,以数据为主线, 把数据和对数据的操作紧密地结合
4个要点
面向对象方法=对象+类+继承+用消息通信
第一次作业答案
第一章《软件工程概述》作业答案一、名词解释1.软件软件是计算机程序以及开发、使用和维护程序所需要的所有文档。
软件是包括程序、数据及其相关文档的完整集合。
2.软件危机软件生产的进度、数量、质量、成本满足不了社会对软件的需求量和希望的现象,称为“软件危机”。
软件工程IEEE[IEE93]:软件工程是将系统的、规范的、可度量的工程化方法应用于软件开发、运行和维护的全过程及上述方法的研究。
4.软件生存周期软件生存周期是指一个软件从提出开发要求开始直到不再使用(报废)为止的整个时期。
5.软件过程模型软件过程指为获得高质量软件所需要完成的一系列任务以及完成这些任务的工作步骤。
过程还规定了运用的方法的顺序、应该交付的文档资料、为保证软件质量和协调变化所需要采取的管理措施、任务完成的标志等。
软件过程模型也叫软件生存期模型、软件工程范型,是软件过程的一种抽象表示。
二、填空题1、在信息处理和计算机领域内,一般认为软件是程序、数据和文档的集合。
2、软件生产的发展经历了程序设计时代、程序系统时代和软件工程时代,各时代的生产方式分别是个体、作方式和工程化。
3、软件生存周期的8个阶段分别是问题定义、可行性研究、需求分析、概要设计、详细设计、编码与模块测试、综合测试、维护。
4、软件工程是利用工程化的原理和方法来进行开发、维护和管理软件的一门学科。
5、描述软件开发过程中各种活动如何执行的模型称为软件过程模型。
6、瀑布模型不适应需求可变的软件开发,只有到最后才能见到整个软件系统。
7、软件产品的生产主要是研制,软件产品的成本主要体现在人力成本上。
8、软件工程面临的问题有软件费用、可靠性、可维护性、生产率。
三、单项选择题1、软件文档是( C )。
A.程序B.工具C.文书和资料D.数据2、软件是一种( B )性工业产品A.理论B.知识(或逻辑)C.消耗D.体力3、与计算机科学的理论研究不同,软件工程是一门( B )的学科。
A.理论性 B.工程性 C.原理性 D.心理性4、软件工程与计算机科学的性质不同,软件工程着重于( B )A.理论研究 B.建造软件系统 C.原理探讨 D.原理的理论5、软件工程学科出现的直接原因是( C )。
软件工程习题与答案
第1章概述(习题和参考答案)[推断题]1. 由于今日个人计算机不断发展壮大,人们不再接受软件团队的开发方式。
(×)2. 由于软件是产品,因此可以应用其他工程制品所用的技术进行生产。
(×)3. 购买大多数计算机系统所需的硬件比软件更昂贵。
(×)4. 大多数软件产品在其生命周期中不须要增加功能。
(×)5. 大多数软件系统是不简洁变更的,除非它们在设计时考虑了变更。
(√)6. 一般来说,软件只有在其行为和设计者的目标一样的状况下才能成功。
(×)[选择题]1. ()因素促使计算机系统越来越困难。
(D)A. 计算机内存和存储容量上的巨大增长B. 外部输入/输出选项的更加多样性C. 计算机体系结构方面的深刻变更D. 以上全部选项2. 下面的()不再是现代软件工程师关注的问题。
(A)A. 为什么计算机硬件的成本这么高?B. 为什么软件须要很长时间才能完成?C. 为什么开发一个软件的成本这么高?D. 为什么不能在产品发布前去除软件错误?3. 软件会慢慢退化而不会磨损,其缘由在于()。
(C)A. 软件通常暴露在恶劣的环境下B. 软件错误通常发生在运用之后C. 不断的变更使组件接口之间引起错误D. 软件备件很难订购4. 大多数软件照旧是定制开发的,其缘由在于()。
(C)A. 软件组件重用是特别普遍的B. 可重用的组件太昂贵而无法运用C. 软件在不运用其他组件的状况下很简洁构造出来D. 商业组件在许多应用领域中可以得到5. 下面的()说法是正确的。
(C)A. 软件危机在20世纪70年头末期全面爆发B. 当前先进的软件工程方法已经解决了软件危机的问题C. 软件危机是指在计算机软件的开发和维护过程中遇到的一系列严峻问题D. 软件危机是指在软件产品中存在一系列的质量问题6. 软件工程的基本目标是()。
(B)A. 消退软件固有的困难性B. 开发高质量的软件C. 努力发挥开发人员的创建性潜能D. 更好地维护正在运用的软件产品7. ()是将系统化的、规范的、可定量的方法应用于软件的开发、运行和维护的过程,它包括方法、工具和过程三个要素。
软件工程项目作业
第一章软件工程概述名词解释1、软件危机“软件危机”是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。
概括来说,软件危机包含两方面的问题:一是如何开发软件,以满足不断增长、日趋复杂的需求;二是如何维护规模不断膨胀的软件产品。
2、软件工程软件工程是一门综合性的交叉学科,它涉及哲学、计算机科学、工程科学、管理科学、数学等各学科的知识。
3、软件生命周期软件生命周期是指一个软件从提出开发要求开始,直到该软件报废为止的整个时期,通常分为可行性分析、需求分析、概要设计、详细设计、编码、测试和维护7个阶段。
简答题1、软件生命周期包括哪几个阶段?各阶段的主要任务是什么?软件生命周期包括可行性分析、需求分析、概要设计、详细设计、编码、测试和维护7个阶段。
①可行性分析主要任务:这一步骤必须回答的问题是“将要开发的软件系统是做什么的?在经济、技术和操作上是否可行?”具体来说,需要考虑的问题有:该软件项目的性质是什么,它是数据处理问题还是实时控制问题,它是科学计算问题还是人工智能问题等,以及该问题是否有行得通的解决办法,若有解决问题的办法,则需要多少费用,资源(包括硬件、软件和人员)及时间。
②需求分析主要任务:这一阶段主要解决系统“做什么”的问题。
客户了解他们所面对的问题,知道必须做什么,但是通常不能完整,准确地表达出来,也不知道怎样用计算机解决这些问题。
二软件开发人员虽然知道怎样用软件完成人们提出的各种功能要求,但是对客户的具体业务和需求不完全清楚,这是需求分析阶段的困难所在。
③概要设计主要任务:这一阶段主要解决系统“怎么做”的问题。
具体来说,开发人员要把确定的各项功能需求转换成相应的软件体系结构,在该结构中,每个成分都是意义明确的模块,即每个模块都和某些功能需求相对应。
因此,概要设计的核心内容就是设计软件的结构,弄清该结构由哪些模块构成,每个模块的功能是什么,这些模块之间的层次结构是怎样的。
同事,还要设计该应用系统的总体数据结构和数据库结构,即应用系统要存储什么数据,这些数据是什么样结构吗,它们之间有什么关系等。
软件工程习题答案
软件⼯程习题答案第1章软件⼯程概述参考答案⼀. 选择题1. B2. A3. B4. B5. D6. B7. D8. A9. D⼆. 填空题1. 设计编码测试2. 软件费⽤可靠性可维护性可重⽤性及⽣产率等3. 计算机软件开发和维护4. 分解抽象和信息隐蔽⼀致性确定性5. 软件的总⽬标待开发软件的需求6. ⼆三7. 计划阶段开发阶段维护阶段8. 软件需求明确9. 制定计划风险分析开发实施⽤户评估三. 名词解释1. 软件的定义如下:在运⾏中能提供所希望的功能和性能的指令集,使程序能正确运⾏的数据结构,描述程序研制过程和⽅法所⽤的⽂档。
2. 软件⼯程是指导计算机软件开发和维护的⼀门学科。
3. 软件危机指的是软件开发和维护过程中遇到的⼀系列严重问题。
4. 就是从提出软件产品开始,直到该软件产品被淘汰的全过程。
5. 瀑布模型⼜称⽣存周期模型,由B.M.Boehm提出,是软件⼯程的基础模型。
其核⼼思想是按⼯序将问题化简,将功能的实现与设计分开,便于分⼯协作。
6. 螺旋模型将瀑布模型与演化模型结合起来,并且加⼊两种模型均忽略了的风险分析,弥补了两者的不⾜。
四. 简答题1. 软件既是知识产品,⼜是与汽车,建筑物⼀样的⼯业产品,此外,软件还具有类似艺术,学术那样的知识性创造和特点,软件的特点如下:软件是⼀种逻辑实体,⽽不是具体的物理实体,因⽽它具有抽象性;软件是通过⼈们的智⼒活动,把知识与技术转化成信息的⼀种产品,是在研制、开发中被创造出来的;在软件的运⾏和使⽤期间,没有硬件那样的机械磨损、⽼化问题;软件的开发和运⾏经常受到计算机系统的限制,对计算机系统有着不同程度的依赖关系;软件的开发尚未完全摆脱⼿⼯的开发⽅式;软件的开发费⽤越来越⾼,成本相当昂贵;软件的开发是⼀个复杂的过程,因⽽管理是软件开发过程中必不可少的內容。
2. 软件危机主要表现如下:产品不符合⽤户的实际需要;软件开发⽣产率提⾼的速度远远不能满⾜客观需要,软件的⽣产率远远低于硬件⽣产率和计算机应⽤的增长速度,使⼈们不能充分利⽤现代计算机硬件提供的巨⼤潜⼒;软件产品的质量差;对软件开发成本和进度的估计常常不准确;软件的可维护性差;软件⽂档资料通常既不完整也不合格;软件的价格昂贵,软件成本在计算机系统总成本中所占的⽐例逐年上升。
软件工程概述
第1章 软件工程概述
二、软件危机
20世纪60年代末70年代初,西方工业发达国 家经历了一场“软件危机”。这场软件危机表现 在:一方面软件十分复杂,价格昂贵,供需差日 益增大,另一方面软件开发时又常常受挫,质量 差,指定的进度表和完成日期很少能按时实现, 研制过程很难管理,即软件的研制往往失去控制。 我们称软件开发和维护过程中所中遇到的这一系 列严重问题为软件危机。
1.2 软件的发展和软件危机
一、计算机系统的发展历程 第一代(20世纪60年代中期以前):程序设计阶段。 第二代(从20世纪60年代中期到70年代中期):程
序系统阶段——“软件工程” 学科诞生。 第三代(从20世70年代中期到80年代中期):软
件工程阶段。 第四代(从20世纪80年代中期至今):软件产业在
第1章 软件工程概述
二、软件开发模型
1.瀑布模型:将软件生存周期的各项活动规定为依 照固定顺序连接的若干阶段工作,形如瀑布流水, 最终得到软件产品。
如同任何其他事物一样,软件也有一个孕育、诞生、成长、成熟、衰亡的生存过程,一般称之为计算机软件的生存期。
第1章 第1章
软软软件件件工工程程概概工述述 程下的定义为:软件工程是开发、运
行、维护和修复软件的系统方法,其中“软
件”的定义为:计算机程序、方法、规则、
相关的文档资料以及在计事机上运行时所必
第1章 软件工程概述
(2)可行性研究:任务是为前一阶段提出的问 题寻求一种至数种在技术上可行、且在经济上有 较高效益的解决方案。
第1章 软件工程概述
2.软件开发时期
(1)需求分析:弄清用户对软件系统的全部需求, 主要是确定目标系统必须具备哪些功能。
软件工程ppt课件
常州大学信息科学与工程学院 卢 莹
(1)使用先进的开发技术(方法和工具)
l 推广使用成功的技术和方法,并且研究探索更好更有 效的技术和方法。
l开发和使用更好的软件工具(软件工程支撑环境)
(2)对软件开发过程和产品进行严格的管理
l软件开发应该是一种组织良好、管理严密、各类人员 协同配合、共同完成的工程项目
任务的框架,它规定了完成各项任务的工作 步骤
莹
(3)使用最广泛的软件工程方法学:
①传统方法学(生命周期方法、结构化方法): ●从时间角度对软件问题进行分解,将软件开发维护
过程划分成若干阶段。 ②面向对象方法学:
●面向对象方法学的出发点和基本原则: 尽量模拟人类习惯的思维方式,使开发软件的方法与 过程尽可能接近人类认识世界解决问题的方法与过程, 使问题空间与实现空间在结构上尽可能一致。
如何消除软件危机
软件工程概论教程
常州大学信息科学与工程学院 卢 莹
软件工程概论教程
常州大学信息科学与工程学院 卢 莹
(2)软件发展的四个阶段: ①60年代中期以前(程序设计阶段):
●软件开发环境个体化; ●没有系统化的软件开发和管理方法; ●软件即程序、无文档; ●软件规模小、生产率低。
②60年代中期到70年代中期(程序系统阶段):
●“软件作坊”出现,广泛使用产品软件; ●缺乏系统化的软件开发和管理方法; ●软件规模稍大;程序有说明书、无开发文档
软件工程概论教程
常州大学信息科学与工程学院 卢 莹
1.2.1 软件工程的内容 1.2.2 软件工程的基本原理 1.2.3 软件工程包含的领域
软件工程概论教程
常州大学信息科学与工程学院 卢 莹
(1)软件工程定义:
软件工程中的需求管理与优先级划分
制作人: 时间:2024年X月
目录
第1章 软件工程概述 第2章 需求管理 第3章 需求优先级划分 第4章 需求跟踪与变更控制 第5章 需求工程中的质量管理 第6章 总结与展望
●01
第1章 软件工程概述
软件工程的定义
工程原则
方法
工具
软件工程是应用工程原则的过 程
软件工程是应用工程方法的过 程
误
定期对软件质量进行检查评估 及时发现和解决问题
团队培训和交流
定期培训团队成员提升技能 促进团队之间的交流和协作
质量管理的持续改进
质量管理的持续改进是软件工程中的 重要环节,通过不断优化流程、学习 借鉴经验、定期检查评估和团队培训 交流,可以持续提高软件质量和开发 效率。
●06
第六章 总结与展望
软件工程是应用工程工具的过 程
提高软件质量
01
品质保证
降低开发成本
02
成本控制
缩短开发周期
03
时间优化
软件工程的重要性
软件工程的发展历程
软件危机
危机感知
概念成熟
行业规范
软件工程确立
概念 定位
软件工程的基本原则
软件工程的基本原则包括可靠性、可 维护性、可重用性、高效性、可扩展 性,这些原则是指导软件开发和维护 过程的重要准则。
●02
第2章 需求管理
需求管理的定义
需求管理
在软件开发过程中 对需求进行识别、 分析、规范和管理
的过程
需求获取
需求获取包括需求调研、需求分析、 需求确认等环节。通过深入了解用户 需求,确保需求的准确性与完整性。
需求分析与规范
需求分析
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
• 详细设计 详细设计阶段就是对每个模块要完成的功能具体描述 为精确的、结构化的过程描述,即该模块的控制结构 是怎样的,先做什么,后做什么,有什么样的条件判 定,有哪些重复处理等,然后用相应的工具把这些控 制结构表示出来。
• 编码 编码阶段就是把每个模块的控制结构转换成计算机可 接受的程序代码,即用种某特定程序设计语言编写的 “源程序清单”。编写出的程序应该结构好、清晰易 读,并与设计一致。
1.1.4 软件危机的提出
• 1968年,北大西洋公约组织的计算机科学家在联邦德国召 开国际会议,第一次讨论了“软件危机”问题。 • “软件危机”是指在计算机软件的开发和维护过程中所遇 到的一系列严重问题,这类问题不仅仅是“不能正常运行 的软件”才具有的,实际上几乎所有软件都不同程度地存 在这类问题。 • 概括来说,软件危机包含两方面的问题:一是如何开发软 件,以满足不断增长、日趋复杂的需求;二是如何维护规 模不断膨胀的软件产品。 • 这次会议同时提出了解决“软件危机”的途径,即采用工 程化的思想来管理软件开发的过程,并正式提出“软件工 程”一词,从此一门新兴的工程学科—软件工程—应运而 生。
美国宇航局的软件系统一览表 年 份
1963
软 件
水星计划系统
指 令 条 数
200万条 400万条 1000万条 4000万条
1967
1973 1979
双子星座计划系统
阿波罗计划系统 哥伦比亚航天飞机系统
图1-1 计算机系统中软硬件成本所占比例的变化
1.1.2 软件生产的发展
• 程序设计时期(约为20世纪50~60年代) • 程序系统时期(约为20世纪60~70年代) • 软件工程时期(20世纪70年代以后)
• 概要设计 这一阶段主要解决的是系统“怎么做”的问题。具体 来说,开发人员要把确定的各项功能需求转换成相应 的软件体系结构,在该结构中,每个成分都是意义明 确的模块,即每个模块都和某些功能需求相对应。因 此,概要设计的核心内容就是设计软件的结构,弄清 该结构由哪些模块构成,每个模块的功能是什么,这 些模块之间的层次结构是怎样的。同时,还要设计该 应用系统的总体数据结构和数据库结构,即应用系统 要存储什么数据,这些数据是什么样的结构,它们之 间有什么关系等。
1.4 软件开发方法
.1 结构化开发方法
• 1978年,E.Yourdon和L.L.Constan-tine提出 • SASD(Structured Analysis and Structured Design)方法,也可称为面向功能的软件开发 方法,或面向数据流的软件开发方法 • 结构化开发方法的指导思想是自顶向下、逐步 求精,基本原则是功能分解与抽象,它由结构 化分析、结构化设计和结构化程序设计构成
1.4.2 面向数据结构的开发方法
• 以数据结构为驱动的 • 以1975年M.A.Jackson提出的Jackson方法和1974年 J.D.Warnier提出的Warnier方法最有代表性 • 主要思想是:一个问题的数据结构与处理该问题数据 结构的控制结构有着惊人的相似之处,根据这一思想, 从目标系统的输入、输出数据结构入手,导出程序框 架结构,再补充其他细节,就可以得到完整的程序结 构图 • 对输入、输出数据结构明确的中小型系统特别有效
1.3 软件生命周期
1.3.1 软件生命周期的定义
• • • • • • •
可行性分析 需求分析 概要设计 详细设计 编码 测试 维护
• 可行性分析 在项目进入具体开发之前,首先需要进行的步骤是可 行性分析。这一步骤必须回答的问题是“将要开发的 软件系统是做什么的?在经济上、技术上和操作上是 否可行?”,具体来说,需要考虑的问题有:该软件 项目的性质是什么、它是数据处理问题还是实时控制 问题、它是科学计算问题还是人工智能问题等,以及 该问题是否有行得通的解决办法,若有解决问题的办 法,则需要多少费用、多少资源(包括硬件、软件和 人员)、多少时间。
时 期 特 点 软件的含义 主要程序设计语言 软件使用者 软件规模 开发软件需要的人力 软件开发涉及的工作
程序设计 程序 汇编语言、机器语言 程序员本人 小型 个人 编码
程序系统 程序及规格说明书 高级语言 少数用户 中型 开发小组 设计、编码、测试
软件工程 程序、文档、数据 高级语言、各种开 发工具 市场用户 大型 开发小组及大中型软 件开发机构 软件生命周期的各个 阶段
瀑布模型的特点十分明显: • 软件生存周期的顺序性 • 尽可能推迟软件的编码 • 强调文档
瀑布模型的主要问题: • 各个阶段的划分完全固定,阶段之间产生大量 的文档,极大地增加了工作量。 • 由于开发模型是线性的,用户只有等到整个过 程的末期才能见到开发成果,从而增加了开发 的风险。 • 早期的错误可能要等到开发后期的测试阶段才 能发现,进而带来严重的后果。
1.2 软件工程
1.2.1 软件工程的定义
• 软件工程是导软件开发和维护的一门工程学科。 它采用工程的概念、原理、技术和方法,把经 过时间检验而证明是正确的管理技术和当前能 够得到的最好的技术方法结合起来,用于开发 和维护软件。 • 软件工程是一门综合性的交叉学科,它涉及哲 学、计算机科学、工程科学、管理科学、数学 及应用领域知识。
1.2.3 软件工程的作用
(1)从软件企业的专业人才来讲,其作用体现在以下几个方面: • 高层管理人员利用软件工程的理论和方法来管理整个公司。 • 中层项目经理和软件工程师:利用软件工程的理论和方法,来管 理项目组的软件开发。 • 软件蓝领工人利用软件工程的理论和方法来实现软件的开发。 • 软件营销人员利用软件工程的理论和方法与客户进行沟通,以赢 得客户的信任。 • 软件实施和维护人员:利用软件工程的理论和方法,来实现软件 的功能、性能与接口的实施和维护。 • 软件售前人员利用软件工程的理论和方法,来提高投标成功的把 握。
2.软件的分类 1)按软件功能 • 系统软件 • 支撑软件 • 应用软件
2)按软件规模 • 微型软件 • 小型软件 • 中型软件 • 大型软件 • 甚大型软件 • 极大型软件
3. 软件的特点 • • • • • 软件是一种逻辑实体,而不是物理实体。 软件的生产过程是开发,而不是制造。 软件不存在磨损、老化现象。 软件的开发和运行常常受到计算机系统的限制。 软件是复杂的。
1.1.3 软件开发面临的主要问题
• • • • • • •
西方计算机科学家在20世纪60—70年代总结了软件开发 和维护过程中遇到的一系列严重问题,表现为以下几方面: 对软件开发成本和进度的估计常常不准确,开发成本超出 预算,实际进度相比预定计划一再拖延。 用户对“已完成”系统不满意的现象时有发生。 软件质量常常不可靠,“缺陷”和“补丁”不断。 软件的可维护程度非常低。 软件通常没有相应的文档资料。 软件成本不断提高。 软件开发生产率的提高赶不上硬件的发展和人们需求的增 长。
1.5 软件开发模型
1.5.1 瀑布模型
瀑布模型是由温斯顿•罗伊斯(Winston Royce) 在1970年提出的,其核心思想是按工序将问题 简化,将功能的实现与设计分开,便于分工协 作,即采用结构化的分析与设计方法将逻辑实 现与物理实现分开。瀑布模型将软件生命周期 划分为软件计划、需求分析和定义、软件设计、 软件实现、软件测试、软件运行和维护6个阶 段,并规定了它们自上而下、相互衔接的固定 次序
软件工程与项目管理
学时:40学时
第1章 软件工程概述
• 掌握:软件危机、软件工程、软件生命周期、 软件开发方法、软件开发模型、软件工具及支 撑环境的相关概念。
1.1 软件危机
1.1.1 软件
1.软件的定义 软件是计算机系统中与硬件相互依存的一部 分,它是包括程序、数据及相关文档的完整集 合。其中, • 程序是指按事先设计的功能和性能要求执行的 指令序列; • 数据是指使程序能正常操纵信息的数据结构; • 文档是指与程序开发、维护和使用有关的图文 资料。
2.软件的分类 1)按软件功能 • 系统软件 • 支撑软件 • 应用软件
1.2.2 软件工程的内容和目标
软件工程的三个要素 • 软件工程方法 • 软件工具 • 软件工程的过程
软件工程的目标 • 付出较低的开发成本 • 达到要求的软件功能 • 取得较好的软件性能 • 开发的软件易于移植 • 需要较低的维护费用 • 能按时完成开发工作,及时交付使用
• 测试 软件测试阶段的主要任务是发现和排除错误,也就是 对软件系统进行从上到下的全面的测试和检验,看它 是否符合软件总体设计方案规定的功能和要求。测试 分为模块测试、集成测试、确认测试。模块测试是查 找各模块在功能和结构上存在的问题。集成测试是将 各模块按一定顺序组装起来进行的测试,主要是查找 各模块之间的接口问题。确认测试是按需求说明书对 软件的功能逐项进行测试,以确定软件功能是否符合 用户的需求,开发的软件是否合格,能否交付用户使 用。
• 维护 软件维护是软件生存周期中时间最长的阶段。己交付 的软件正式投入使用后便进入了软件维护阶段,它可 以持续几年甚至几十年。在软件运行过程中,可能由 于各方面的原因需要对其进行修改,如运行中发现了 软件隐含的错误而需要修改,为了适应变化了的软件 运行环境而需要做适当地变更,也可能是因为用户业 务发生变化而需要扩充和增强软件的功能等。
• 需求分析 这一阶段主要要解决的是系统“做什么”的问题。用 户了解他们所面对的问题,知道必须做什么,但是通 常不能完整地、准确地表达出来,也不知道怎样用计 算机解决他们的问题。而软件开发人员虽然知道怎样 用软件完成人们提出的各种功能要求,但是,对用户 的具体业务和需求不完全清楚,这是需求分析阶段的 困难所在。
• 可行性分析 在项目进入具体开发之前,首先需要进行的步骤是可 行性分析。这一步骤必须回答的问题是“将要开发的 软件系统是做什么的?在经济上、技术上和操作上是 否可行?”,具体来说,需要考虑的问题有:该软件 项目的性质是什么、它是数据处理问题还是实时控制 问题、它是科学计算问题还是人工智能问题等,以及 该问题是否有行得通的解决办法,若有解决问题的办 法,则需要多少费用、多少资源(包括硬件、软件和 人员)、多少时间。