软件工程导论知识

合集下载

软件工程导论知识总结

软件工程导论知识总结

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

2. 概括的说,软件危机包括两方面问题:如何开发软件已满足日益增长的需求;如何维护数量不断膨胀的已有软件。

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

4. 产生软件危机的原因:在软件开发和维护的过程中存在这么多严重的问题,一方面与软件本身的特点有关,另一方面也和软件开发与维护的方法不正确有关。

5. 在实践过称中或多或少的采用了错误的方法和技术,这可能是使软件问题发展成软件危机的主要原因。

6. 软件不同与硬件,他是计算机系统中的逻辑部件而不是物理部件。

7. 软件不同于一般程序,他的一个显著特点是估摸庞大,而且程序复杂性将随着程序规模的增加而呈指数上升。

8. 软件本身独有的特点确实给开发和维护带来一些客观困难。

9. 对用户要求没有完整的认识就匆忙着手编写程序是软件开发功臣失败的主要原因之一。

10. 一个软件从定义、开发、使用和维护,直到最终被遗弃,要经历一个漫长的时期,通常把软件经历的这个漫长的时期称为生命周期。

11. 软件是程序、数据及相关文档的完整集合。

其中,程序是能够完成预定功能和性能的可执的指令序列;数据是使程序能够适当的处理信息的数据结构;文档是开发、使用和维护程序所需要的图文资料。

12. 软件工程是指导计算机软件开发和维护的一门工程学科。

13. 软件工程是:把系统的、规范的、可度量的途径应用与软件开发、运行和维护过程,也就是吧工程应用与软件;研究前面所提到的途径。

14. 软件工程的本质特性:软件工程关注与大型程序的构造;软件工程的中心课题是控制复杂性;软件经常变化;开发软件的效率非常重要;和谐的合作是开发软件的关键;软件必须有效地支持他的用户;在软件工程领域中通常由具有一种文化背景的人体另一种具有文化背景的人创造产品。

软件工程导论资料

软件工程导论资料

1.软件的定义软件是程序、数据及相关文档的完整集合。

2.软件危机的定义、表现、原因定义:软件危机是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。

表现:a)对软件开发成本和进度的估计常常很不准确。

b)用户对“已完成的”软件系统不满意的现象经常发生。

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

d)软件常常是不可维护的。

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

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

g)软件开发产生率提高的速度,远远跟不上计算机应用迅速普及深入的趋势。

原因:客观:与软件本身的特点有关。

主观:和软件开发与维护的方法不正确有关a)软件缺乏“可见性”b)软件缺乏“可插拔性”c)多人管理困难d)忽视软件需求分析e)忽略文档f)轻视维护3.软件工程的定义,软件工程方法学的三个要素是什么?定义:采用工程的概念、原理、技术和方法来开发与维护软件。

三要素:方法、工具和过程4.软件工程的七大原理:a)用分段的生命周期计划严格管理b)坚持进行阶段评审c)实行严格的产品控制d)采用现代程序设计技术e)结果应能清楚的审查f)开发小组的人员应该少而精g)承认不断改进软件工程实践的必要性5.软件工程生命周期有哪三大阶段八小阶段三大阶段:软件定义、软件开发、运行维护八小阶段:问题定义、可行性研究、需求分析、总体设计、详细设计、编码和单元测试、综合测试、软件维护。

6.常见的软件开发模型有哪些?各有什么特点、优缺点?瀑布模型特点:1、阶段间具有顺序行和依赖性2、推迟实现的观点3、质量保证的观点增量模型螺旋模型快速原型模型喷泉模型7.可行性研究的基本任务是在最短的时间内以最小的代价确定问题是否能够解决。

8.可行性研究的三个角度技术可行性、经济可行性、操作可行性。

9.可行性研究结束后的文档是可行性研究报告10.系统流程图表达系统的物理模型数据流图和数据字典共同描绘系统的逻辑模型11.软件开发成本估计的三个经济指标代码行技术、软件生命周期化、自动估计成本12.经济效益分析的三个经济指标纯收入、投资回收期、投资回收率13.需求分析的基本任务是准确回答系统做什么14.需求分析结束提交的文档叫软件需求规格说明书15. 需求分析的任务有哪些?确定系统的综合要求分析系统的数据要求导出系统的逻辑模型修正开发计划16.需求分析阶段,系统的综合要求需求有哪些?功能需求、性能需求、可靠性和可用性需求、出错处理需求、接口需求、约束、逆向需求、将来可能提出的要求。

软件工程导论知识点总结

软件工程导论知识点总结

软件工程导论知识点总结软件工程导论知识点总结1. 软件工程概述1.1 什么是软件工程软件工程是一门研究如何有效地开发、维护和管理软件系统的学科。

它基于工程原理和方法,将系统化的、规范化的方法应用于软件开发过程中,以提高软件的质量、可靠性和可维护性。

1.2 软件工程的重要性在当今日益发展的信息技术领域,软件已经成为各个行业和领域中不可或缺的核心组成部分。

软件工程的实践使得软件开发更加可控,能够满足用户需求,提高软件质量,降低开发和维护成本。

1.3 软件工程的原则软件工程有一些核心原则,包括适应性、可理解性、一致性、可复用性和可维护性。

这些原则帮助开发人员创建高质量的软件,并确保软件在不同环境下的可靠性和安全性。

2. 软件开发过程2.1 软件开发生命周期软件开发生命周期是指从软件概念形成到软件退役的整个过程。

常见的软件开发生命周期模型包括瀑布模型、迭代模型和敏捷模型。

2.2 瀑布模型瀑布模型是一种线性的软件开发过程模型,包括需求分析、设计、编码、测试和维护五个阶段。

每个阶段都有明确的输入和输出,下一个阶段在前一个阶段完成后开始。

2.3 迭代模型迭代模型是一种循序渐进的软件开发过程模型,将软件开发分为多个迭代周期。

每个迭代周期包括需求分析、设计、编码、测试和评审阶段。

每个迭代周期都会产生一个可执行的软件版本。

2.4 敏捷模型敏捷模型强调迭代和反馈,在软件开发过程中更加注重灵活性和适应性。

常用的敏捷开发方法包括Scrum和XP(极限编程)等。

3. 软件开发方法与工具3.1 需求工程需求工程是软件工程的关键环节,用于确定用户需求并转化为可行的软件规格说明。

需求工程包括需求获取、需求分析、需求建模和需求验证等阶段。

3.2 架构设计架构设计为软件系统提供了一个稳定的基础,确定系统各个组件之间的关系和交互方式。

常用的架构设计模式包括模块化、层次化、客户端-服务器和MVC等。

3.3 编程与测试编程是将设计转化为可执行代码的过程,而测试是验证代码是否达到预期功能的过程。

软件工程导论章节知识要点

软件工程导论章节知识要点

第一章一、名称解释1.软件2.文档3.软件工程4.软件生存周期5.软件工程过程6.软件生存周期模型7.软件开发方法8.软件工具二、填空题1.构成一个完整计算机系统的两部分是硬件与________。

2.程序设计时代的生产方式是________。

3.软件工程涉及到几个学科,它是一门_____学科。

4.软件开发划分的各阶段任务尽可能独立,同一阶段任务性质尽可能________。

5.将软件生存周期各个活动规定为依线性顺序联接的若干阶段的模型是________模型。

6.喷泉模型是一种以用户需求为动力,以_______为驱动的模型。

7.结构化方法是一种面向数据流的开发方法。

由结构化分析、_______、结构化程序设计构成。

8.软件工程研究的主要内容是软件开发管理和_______两个方面。

9.软件工具是支持软件开发人员的开发和维护活动而使用的________。

10.一个软件项目的开发中,要采用一种生存周期模型,要按照某种________,使用相应的工具来进行。

三、选择题1.软件是一种( )产品。

A.物质B.逻辑C.有形D.消耗2.软件产品的开发主要是( )。

A.复制B.再生产C.拷贝D.研制3.个体手工劳动生产方式的时代是( )。

A.程序设计B.软件生产自动化C.程序系统D.软件工程4.与计算机科学的理论研究不同,软件工程是一门( )学科。

A.理论性B.原理性C.工程性D.心理性5.软件重用的单位是( )。

A.软件模块B.性能C.系统D.功能6.软件开发费用只占整个软件系统费用的( )。

A.1/2B.1/3C.1/4D.2/37.软件开发中大约要付出( )%的工作量进行测试和排错。

A.20B.30C.40D.508.准确地解决“软件系统必须做什么”是( )阶段的任务。

A.可行性研究B.需求分析C.详细设计D.编码9.软件生存周期中最长的是( )阶段。

A.需求分析B.概要设计C.测试D.维护四、简答题1.软件产品的特性是什么?2.软件生产有几个阶段?各有何特征?3.什么是软件危机?产生的原因是什么?4.软件工程的性质、目标和内容是什么?5.软件工程面临的问题是什么?6.软件工程过程有哪些过程?7.软件生存周期有哪几个阶段?8.软件生存周期模型有哪些主要模型?9.有哪些主要软件开发方法?参考答案二填空题1.软件2.个体手工劳动3.综合性交叉4.相同5.瀑布6.对象7.结构化设计8.软件开发技术9.软件10.开发方法三、选择题1.B2.D3.A4.C5.A6.B7.C8.B9.D第二章一、名称解释1.可行性研究2.技术可行性3.经济可行性4.社会可行性5.货币时间价值6.投资回收期7.纯收入8.系统流程图二、填空题1.可行性研究的目的是用最小的代价,在尽可能短的时间内,确定________。

软件工程导论复习知识点

软件工程导论复习知识点

软件工程导论复习知识点一、软件:软件定义:软件=程序+文档+数据软件特点:1、具有抽象性2、没有明显的制造过程3、软件的维护比硬件的维护要复杂得多4、对计算机系统有着不同程度的依赖性5、尚未完全摆脱手工艺的开发方式6、软件本身是复杂的7、软件成本相当昂贵8、相当多的软件工作涉及到社会因素软件的发展:程序设计、程序系统、软件工程软件危机:软件危机指的是软件开发和维护过程中遇到的一系列严重问题。

软件危机的问题:如何开发软件,怎样满足对软件的日益增长的需求;如何维护数量不断膨胀的已有软件。

软件危机表现:1.开发成本难以控制,进度不可预计;2.软件系统的质量和可靠性很差,难以满意;3.软件文档相当缺乏,软件系统不可维护;4.软件开发生产率很低,软件产品供不应求。

5.软件产品成本十分昂贵。

管理科学中的方法和原理进行软件生产的管理。

用数学的方法建立软件开发中的各种模型和各种算法,如可靠性模型,说明用户需求的形式化模型等。

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

软件方法:是完成软件开发的各项任务的技术方法,回答“如何做”的问题;工具是为方法的运用提供自动的或半自动的软件支撑环境;过程是为了获得高质量的软件所需要完成的一系列任务的框架,它规定了完成各项任务的工作步骤。

包括:传统方法学面向对象方法学需要解决的问题:软件成本、软件可靠性、软件维护、软件生产率和软件复用。

基本内容:包括理论、结构、方法、工具、环境与规范等目标:以较少的投资获得易维护、易理解、可靠和高效率的软件产品。

原则:即分解、抽象和信息隐蔽、一致性和确定性原理:工程化和系统化。

软件过程:软件过程是把输入转化为输出的一组彼此相关的资源和活动从软件开发的观点看,它就是使用适当的资源(包括人员、硬软件工具、时间等,为开发软件进行的一组开发活动,在过程结束时将输入(用户要求转化为输出(软件产品。

软件工程过程包含四种基本的过程活动:Plan 软件规格说明:规定软件的功能及其运行的限制Do 软件开发:产生满足规格说明的软件Check 软件确认:确认软件能够完成客户提出的要求Action 软件演进:为满足客户的变更要求,软件必须在使用的过程中演进软件工程的基本原理:强调使用生存周期方法学、强调使用结构分析与结构设计任务软件工程的目标:生产具有正确性、可用性以及开销合宜的产品1、付出较低的开发成本2、达到要求的软件功能3、取得较好的软件性能4、开发的软件易于移植5、需要较低的维护费用6、能按时完成开发7、及时交付使用三、软件生命周期:生命周期基本流程:问题定义→可行性研究→需求分析→总体设计(概要设计→详细设计→编码和单元测试→综合测试→软件维护。

软件工程导论 复习资料

软件工程导论 复习资料

名词解释:1.软件生命周期模型软件生存周期模型:是描述软件开发过程中各种活动如何执行的模型。

软件生存周期主要模型:瀑布模型、增量模型、螺旋模型、喷泉模型、变换模型和基于知识的模型等2. 模块独立性模块独立性指每个模块只完成系统要求的独立的子功能,并且与其他模块的联系最少且接口简单。

模块独立的概念是模块化、抽象、信息隐蔽和局部化概念的直接结果。

3.软件的可维护性软件可维护性指软件能够被理解、校正、适应及增强功能的容易程度。

4. 软件工程软件工程指用科学知识和技术原理来定义、开发、维护软件的一门学科。

或者说,软件工程就是运用工程学的基本原理和方法来组织管理软件的生产、研究、开发、管理、维护的过程、方法和技术。

5.数据字典字据字典:简称DD,就是用来定义数据流图中的各个成分具体含义的,它以一种准确的\无二义性的说明方式为系统的分析\设计及维护提供了有关元素的一致的定义和详细的描述。

6、静态测试静态测试是采用人工检测和计算机辅助静态分析的方法对程序进行检测。

7、面向对象:面向对象OO=类+对象+继承+通信8、需求分析需求分析是指:开发人员要准确理解用户的要求,进行细致的调查分析,将用户非形式的需求陈述转化为完整的需求定义,再由需求定义转换到相应的形式主义功能规约(需求规格说明)的过程。

9、软件危机软件危机(Software Crisis) 是计算机软件在它的开发和维护过程中所遇到的一系列严重问题。

概括地说,主要包含两方面的问题:如何开发软件,怎样满足对软件日益增长的需求;如何维护数量不断膨胀的已有软件。

10、软件生存周期软件生存周期:一个软件从提出开发要求开始直到该软件报废为止的整个时期。

软件生存周期包括:可行性分析和项目开发计划、需求分析、概要设计、详细设计、编码、测试、维护等。

简答:1.软件生存周期有哪几个阶段?①可行性研究②需求分析③总体设计④详细设计⑤编码⑥测试⑦维护2.白盒测试法有哪些逻辑覆盖标准?①语句覆盖②判定覆盖③条件覆盖④判定/条件覆盖⑤条件组合覆盖⑥点覆盖、边覆盖、路径覆盖3.软件的维护有哪4种类型?①校正性维护②适应性维护③完善性维护④预防性维护。

软件工程导论第一章

软件工程导论第一章
软件工程的发展
软件工程的发展经历了多个阶段,从早期的手工作坊式开发到结构化方法、面 向对象方法,再到现在的敏捷开发方法和DevOps等,不断推动着软件产业的快 速发展。
软件工程的研究对象与范围
研究对象
软件工程的研究对象包括软件开发过程中的各种技术、方法、工具和管理等方面 ,旨在提高软件开发的效率和质量,降低开发成本。
研究范围
软件工程的研究范围涵盖了软件开发的各个阶段,包括需求分析、设计、编码、 测试和维护等,同时也涉及到软件项目管理、软件质量保证和软件测试等方面。
软件工程的重要性
提高软件质量
通过采用先进的软件工程方法和工具,可以显著提高软件的质量,减 少软件中的缺陷和错误,提高软件的稳定性和可靠性。
降低开发成本
针对软件的最小可测试单元进行测试,确保每个单元的功能正 确无误。
将多个单元组合在一起进行测试,验证它们之间的接口和功能 是否正常。
对整个软件系统进行全面的测试,包括功能测试、性能测试、 安全测试等,确保软件满足需求和设计要求。
记录和管理测试过程中发现的缺陷,跟踪缺陷的修复进度和结 果,确保软件质量得到持续改进。
软件开发模型介绍
瀑布模型
瀑布模型是一种线性的软件开发模型,按照固定的顺序进行开发,每个阶段都有明确的输入和输出。它的优点是易于 理解和管理,但缺点是缺乏灵活性,难以应对需求变更。
螺旋模型
螺旋模型是一种迭代式的软件开发模型,强调风险分析和控制。它在每个迭代周期中都包括需求定义、风险分析、工 程实现和评审等步骤,适用于大型、复杂的软件项目。
将软件划分为独立的模块,降低 模块间的耦合度,提高代码的可 重用性和可维护性。
02
版本控制工具
使用版本控制工具(如Git)管理 代码,记录代码的变更历史,方 便团队协作和代码回溯。

软件工程导论重点内容

软件工程导论重点内容

第一章软件工程概述重点掌握的内容:软件和软件工程的基本概念一.什么是软件1.满足功能要求和性能的指令或计算机程序集合;2.处理信息的数据结构;3.描述程序功能以及程序如何操作和使用所要求的文档;软件的特点:软件是一种逻辑实体,而不是具体的物理实体,因而它具有抽象性;软件是通过人们的智力活动,把知识与技术转换成信息的一种产品,是在研制、开发中被创造出来的在软件运行和使用的期间,没有硬件那样的机械磨损、老化问题软件的开发和运行经常受到计算机系统的限制,对计算机系统有着不同程度的依赖性软件的开发至今尚未完全摆脱手工的开发方式软件的开发费用越来越高,成本相当昂贵;二.软件危机以及产生软件危机的原因1.软件开发生产率提高的速度,远远跟不上计算机迅速普及的趋势;软件产品“供不应求”;2.软件成本在计算机系统总成本中所占的比例逐年上升;3.软件开发人员和用户之间的信息交流往往很不充分,用户对“已完成的”的软件系统不满足的现象经常发生;4.软件产品的质量不容易保证;5.软件产品常常是不可维护的;6.软件产品的重用性差,同样的软件多次重复开发;7.软件通常没有适当的文档资料;产生软件危机的原因可归结为两个重要的方面:软件生产本身存在的复杂性;软件开发所使用的方法和技术;三、软件危机1、软件危机定义:软件危机是指在计算机软件的开发和维护过程中所遇到的一系列严重问题;2、软件危机的两个主要问题:如何开发软件,以满足对软件日益增长的需求;如何维护数量不断膨胀的已有软件;3、软件危机的典型表现:1对软件开发成本和进度的估计常常很不准确;2用户对“已完成的”软件系统不满意的现象经常发生;3软件产品的质量往往靠不住;4软件常常是不可维护的;5软件通常没有适当的文档资料;6软件成本在计算机系统总成本中所占的比例逐年上升;7软件开发生产率提高的速度,远远跟不上计算机应用迅速普及深入的趋势;软件工程1、软件工程定义:软件工程是指导计算机软件开发和维护的一门工程学科;采用工程的概念、原理、技术和方法来开发与维护软件,把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来,以经济地、高效的开发出高质量的软件并有效地维护它,这就是软件工程;软件工程准则可以概括为7条基本原则:用分阶段的生命周期计划严格管理;坚持进行阶段评审实行严格的产品控制采用现代程序设计技术应能清楚地审查结果合理安排软件开发小组的人员承认不断改进软件工程实践的必要性3、软件工程方法学,三要素:方法、工具和过程4、软件生命周期概念、三时期,八阶段软件生命周期由软件定义、软件开发和运行维护也称为软件维护3个时期组成;软件定义时期通常进一步划分成3个阶段,即问题定义、可行性研究和需求分析;软件开发时期分为4阶段:总体设计、详细设计、编码和单元测试、综合测试五、软件开发模型:软件开发模型是跨越整个软件生存周期的系统开发、运作、维护实施的全部工作和任务的结构框架;1瀑布模型采用结构化的分析与设计方法,将逻辑实现与物理实现分开;特点阶段的顺序性和依赖性规范化推迟实现的观点系统化质量保证阶段评审存在问题不适合需求模糊的系统需求的迷糊性和不确定性适用于操作系统、编译系统、数据库管理系统等系统软件的开发快速原型模型:所谓快速原型是快速建立起来的可以在计算机上运行的程序,它所能完成的功能往往是最终产品能完成的功能的一个子集;快速原型模型的第一步是快速建立一个能反映用户主要需求的原型系统,让用户在计算机上试用它,通过实践来了解目标系统的概貌3增量模型:是瀑布模型的顺序特征与快速原型法德迭代特征相结合的产物;这种模型把软件看成一系列相互联系的增量,在看法过程的各次迭代中,每次完成其中的一个增量;4喷泉模型5微软过程六、思考:你认为“软件就是程序”这一个观点正确吗如果不正确,请批驳之;1.请从以下几个方面结合自己的经验实例加以论述;软件就是程序的观点是不正确的,因为软件等于程序加文档加数据;1文档是软件的一个非常重要的组成部分,在软件的开发过程中起着非常重要的作用;2在软件开发的每一个阶段都应有相应的文档;它是开发人员与用户以及开发人员与项目管理人员之间交流的媒介3文档是软件在不同阶段的表现形式;4程序与文档必须一致,文档才有价值;5文档质量直接决定软件质量的高低;6文档也是软件测试和维护的依据;在没有文档或文档不全的情况下对大型软件进行测试与维护是不可思议的事情;7文档是软件可重用的依据;2、有人说:软件开发时,一个错误发现得越晚,为改正它所付出的代价就越大;对否请解释你的回答;答:对,第二章可行性研究重点掌握的内容:可行性研究的系统流程图一般内容:可行性研究的任务和步骤,成本效益分析一、可行使研究:1、可行性研究的任务:是用最小的代价在尽可能短的时间内确定问题是否能够解决;一般来说,应从经济可行性、技术可行性、运行可行性、法律可行性和开发方案等方面研究可行性可行性研究的目的:在明确了所要研究问题定义之后,分析员应该在明确目标系统所有限制和约束的前提下,去确定该问题是否值得去解决;或就是用最小代价在尽可能短的时间内确定问题是否能够解决;2、可行性研究过程:1)复查系统规模和目标2)研究目前正在使用的系统3)导出新系统的高层逻辑模型4)进一步定义问题5)导出和评价供选择的解法6)推荐行动方针7)草拟开发计划8)书写文档提交审查3、系统流程图的定义和作用:可行性研究对现有系统做概括的物理模型描述,如用图形工具表示则更加直观简洁;系统流程图是描绘物理系统的传统工具,它的基本思想是用图形符号以黑盒子形式描绘系统里面的每个部件程序、文件、数据库、表格、人工过程等;系统流程图表达的是部件的信息流程,而不是对信息进行加工处理的控制过程;在可行性研究过程中,利用系统流程图来描述所建议系统的物理模型;4、数据流程图的定义和作用:数据流程图有两个特征:抽象性和概括性;抽象性指的是数据流程图把具体的组织机构、工作场所、物质流都去掉,只剩下信息和数据存储、流动、使用以及加工情况;概括性则是指数据流程图把系统对各种业务的处理过程联系起来考虑,形成一个总体5、数据流程图的组成元素数据流图可以用来抽象地表示系统或软件;它从信息传递和加工的角度,以图形的方式刻画数据流从输入到输出的移动变换过程,同时可以按自顶向下、逐步分解的方法表示内容不断增加的数据流和功能细节;因此,数据流图既提供了功能建模的机制,也提供了信息流建模的机制,从而可以建立起系统或软件的功能模型;6、数据流程图的组成:外部实体外部实体是指系统之外的人或单位,它们和本系统有信息传递关系数据流,处理、数据存储;如何绘制数据流程图1识别系统的输入和输出,画出顶层图2画系统内部的数据流、加工与文件,画出一级细化图3加工的进一步分解,画出二级细化图4其它注意事项7、数据流程图的注意点1每个处理都必须有流入的数据流和流出的数据流,如果没有,是错误的;数据守恒2每个数据存储应该有流入的数据流和流出的数据流,如果缺了一种,是Warning的;缺两种就错了;3、数据流只能在处理与处理、数据存储或者外部实体之间流动;、数据存储到数据存储、外部实提到外部实体、外部实提到数据存储之间的数据流都是错误的;4、一个处理可以细分成多个子处理,分成若干个层次均匀分解5、良好命名系统流程图与数据流程图有什么区别答:1系统流程图描述系统物理模型的工具,数据流程图描述系统逻辑模型的工具;2系统流程图从系统功能的角度抽象的描述系统的各个部分及其相互之间信息流动的情况;3数据流程图从数据传送和加工的角度抽象的描述信息在系统中的流动和数据处理的工作状况;三、数据流图:1、组成符号:4中基本图形符号正方形、圆角矩形、开口矩形2、数据流图的基本要点是描绘“做什么”,而不是考虑“怎么做”;3、一套分层的的数据流图由顶层、底层、和中间层组成;4、画分层数据流图基本原则与注意事项:a.自外向内,自顶向下,逐层细化,完善求精;b.保持父图与子图的平衡;也就是说,父图中某加工的输入数据流中的数据必须与它的子图的输入数据流在数量和名字上相同;c.保持数据守恒;也就是说,一个加工所有输出数据流中的数据必须能从该加工的输入数据流中直接获得,或者是通过该加工能产生的数据;d.加工细节隐藏;根据抽象原则,在画父图时,只需画出加工和加工之间的关系,而不必画出各个加工内部的细节;e.简化加工间关系;在数据流图中,加工间的数据流越少,各加工就越相对独立,所以应尽量减少加工间输入输出数据流的数目;f.均匀分解;应该使一个数据流中的各个加工分解层次大致相同;g.适当地为数据流、加工、文件、源/宿命名,名字应反映该成分的实际意义,避免空洞的名字;h.忽略枝节;应集中精力于主要的数据流,而暂不考虑一些例外情况、出错处理等枝节性问题;i.表现的是数据流而不是控制流;j.每个加工必须既有输入数据流,又有输出数据流.在整套数据流图中,每个文件必须既有读文件的数据流又有写文件的数据流,但在某一张子图中可能只有读没有写或者只有写没有读;小结:一个软件系统,其数据流图往往有多层;如果父图有N个加工Process,则父图允许有0~N张子图,但是每张子图只能对应一张父图;在一张DFD图中,任意两个加工之间可以有0条或多条名字互不相同的数据流;在画数据流图时,应该注意父图和子图的平衡,即父图中某加工的输入输出数据流必须与其输入输出流在数量和名字上相同;DFD信息流大致可分为两类:交换流和事务流;9、数据字典1.数据字典是在数据流程图的基础上,对数据流程图中的各个元素进行详细的定义与描述,起到对数据流程图进行补充说明的作用;2.数据字典的内容包括:数据流、数据流分量即数据元素、数据存贮、处理逻辑和外部实体;3.数据字典的作用是什么对用户来讲,数据字典为他们提供了数据的明确定义;对系统分析员来讲,数据字典帮助他们比较容易修改已建立的系统逻辑模型;数据字典的实现:P4910、成本效益分析:成本/效益分析的目的是要从经济角度分析开发一个特定的新系统是否可行,从而帮助使用部门负责人正确地做出是否投资与这项开发工程的决定;几种度量效益的方法:货币的时间价值、投资回收期、纯收入第三章需求分析一、重点掌握的内容那:需求分析的方法和面向数据流的分析方法二、一般掌握的内容:需求分析的任务和原则三知识点:1、为什么要做需求分析可行性分析研究阶段已经粗略的描述了用户的需求,甚至还提出了一些可行的方案,但是,许多细节被忽略了,在最终目标系统中是不能忽略、遗漏任何一个微小细节的,所以,可行性研究不能代替需求分析;2、需求分析的方法:需求分析方法由对软件的数据域和功能域的系统分析过程及其表示方法组成,它定义了表示系统逻辑视图和物理视图的方式,大多数的需求分析方法是由数据驱动的,也就是说,这些方法提供了一种表示数据域的机制,分析员根据这种表示,确定软件功能及其特性,最终建立一个待开发软件的抽象模型,即目标系统的逻辑模型;3、需求分析的任务:它的基本任务是准确地回答“系统必须做什么”这个问题;需求分析所要做的工作是深入描述软件的共能和性能,确定软件设计的限制和软件同其它系统元素的接口细节,定义软件的其它有效性需求;需求分析的任务不是确定系统如何完成它的工作,而是确定系统必须完成哪些工作,也就是对目标系统提出完整、准确、清晰、具体的要求;其实现步骤如下图所示:一般说来需求分析阶段的任务包括下述几方面:1)确定对系统的综合需求对系统的综合需求主要有:系统功能需求、系统性能需求、可靠性和可用性需求、错处理需求、接口需求、约束、逆向需求、将来可能提出的需求:2)分析系统的数据需求就是在理解当前系统“怎样做”的基础上,抽取其“做什么”的本质,明确目标系统要“做什么”,可以导出系统的详细的逻辑模型;具体做法:首先确定目标系统与当前系统的逻辑差别;然后将变化部分看作是新的处理步骤,对功能图一般为数据流图及对象图进行调整;最后有外及里对变化的部分进行分析,推断其结构,获得目标系统的逻辑模型;通常用数据流图、数字字典和主要的处理算法描述这个逻辑模型;3)导出系统的逻辑模型4)修正系统开发计划在经过需求分析阶段的工作,分析员对目标系统有了更深入更具体的认识,因此可以对系统的成本和进度做出更准确地估计,在此基础上应该对开发计划进行修正;5开发原型系统:使用原型系统的主要目的是,使用户通过实践获得关于未来的系统将怎样为他们工作的更直接更具体的概念,从而可以更准确地提出他们的要求;4、需求分析的步骤:1调查研究2分析与综合3书写文档4需求分析评审5、需求分析的原则:1、必须能够表达和理解问题的数据域和功能域2、按自顶向下、逐层分解问题3、要给出系统的逻辑视图和物理视图6、软件需求的验证:需求分析阶段的工作结果是开发软件系统的重要基础,大量统计数字表明,软件系统中15%的错误起源于错误的需求;为了提高软件质量,确保软件开发成功,降低软件开发成本,一旦对目标系统提出一组要求之后,必须严格验证这些需求的正确性;一般说来,应该从下述4个方面进行验证:1一致性所有需求必须是一致的,任何一条需求不能和其他需求互相矛盾;2完整性需求必须是完整的,规格说明书应该包括用户需要的每一个功能或性能;3现实性指定的需求应该是用现有的硬件技术和软件技术基本上可以实现的;对硬件技术的进步可以做些预测,对软件技术的进步则很难做出预测,只能从现有技术水平出发判断需求的现实性;4有效性必须证明需求是正确有效的,确实能解决用户面对的问题;7、状态转换图:指明了作为外部事件结果的系统行为;为此,状态转换图描绘了系统的各种行为模式称为“状态”和在不同状态间转换的方式;状态转换图是行为建模的基础;思考:利用DFD图进行需求分析:在结构化分析方法中,用以表达系统内数据的运动情况的工具有A;供选择的答案:A.数据流图B.数据词典C.结构化英语D.判定表与判定树在结构化分析方法中用状态―迁移图表达系统或对象的行为;在状态―迁移图中,由一个状态和一个事件所决定的下一状态可能会有A个;供选择的答案:多个D.不确定五、总体设计概要设计重点掌握的内容:概要设计的过程和方法一般掌握的内容:概要设计的文档和评审考核知识点:一、总体设计:1、总体设计的目的:总体设计的基本目的就是回答“概括地说,系统应该如何实现”这个问题,因此,总体设计又称为概要设计或初步设计;1、面向结构设计SD2、面向对象设计OOD2、总体设计的任务:1系统分析员审查软件计划、软件需求分析提供的文档、提出最佳推荐方案,用系统流程图,组成物理元素清单,成本效益分析,系统的进度计划,供专家沈顶峰,审定后进入设计2去顶模块结构,划分功能模块,将软件功能需求分配给所划分的最小单元模块;确定模块之间的联系,确定数据结构、文件结构、数据库模式,确定测试方法与策略;3编写概要设计说明书,用户手册,测试计划,选用相关的软件工具来描述软件结构,结构图是经常使用的软件描述工具;选择分解功能与划分模块的设计原则,例如模块划分独立性原则,信息隐蔽原则等3、总体设计过程通常由两个主要阶段组成:系统设计阶段,确定系统的具体实现方案;结构设计阶段,确定软件结构;4、典型的总体设计过程包括下述9个步骤:1、设想功选择的方案2、选取合理的方案3、推荐最佳方案4、功能分解5、设计软件6、设计数据库7制定测试计划8、书写文档:系统说明、用户手册、测试计划、详细的实现计划、数据库设计结果;9、审查和复审二、设计原理分析模块化,在模块化程序设计中,按功能划分模块的原则是,模块化和软件成本关系:模块具有输入和输出参数传递、功能、内部数据结构局部变量和程序代码四个特性1、模块化:就是把程序划分成独立命名且可独立访问的模块,每个模块完成一个子功能,把这些模块集成起来构成一个整体,可以完成指定的功能满足用户的需求.2、模块化的根据:把复杂的问题分解成许多容易解决的小问题,原来的问题也就容易解决了. 模块化和软件成本关系:根据总成本曲线,每个程序都相应地有一个最适当的模块数目M,,使得系统的开发成本最小.3、模块设计的准则:1改进软件结构,提高模块独立性:在对初步模块进行合并、分解和移动的分析、精化过程中力求提高模块的内聚,降低藕合;2模块大小要适中:大约50行语句的代码,过大的模块应分解以提高理解性和可维护性;过小的模块,合并到上级模块中;3软件结构图的深度、宽度、扇入和扇出要适当;一般模块的调用个数不要超过5个;4尽量降低模块接口的复杂程度;5设计单入口、单出口的模块;6模块的作用域应在控制域之内;4、抽象的概念:抽出事务的本质特性而暂时不考虑它们的细节.5、信息隐蔽:模块中所包括的信息不允许其它不需这些信息的模块调用信息局部化:是把一些关系密切的软件元素物理地放得彼此靠近6、什么是模块独立性答:模块独立性概括了把软件划分为模块时要遵守的准则,也是判断模块构造是不是合理的标准;7、模块独立性:是软件系统中每个模块只涉及软件要求的具体子功能,而和软件系统中的其它的模块接口是简单的;模块独立的概念是模块化、抽象、信息隐蔽和局部化概念的直接结果;8、为什么模块的独立性很重要答:1有效的模块化的软件比较容易开发出来2独立的模块比较容易测试和维护;总之,模块独立是好设计的关键,而设计又是决定软件质量的关键环节;9、衡量模块独立的两个标准是什么它们各表示什么含义10、答:衡量模块的独立性的标准是两个定性的度量标准:耦合性和内聚性;1耦合性;也称块间联系;指软件系统结构中各模块间相互联系紧密程度的一种度量;模块之间联系越紧密,其耦合性就越强,模块的独立性则越差;模块间耦合高低取决于模块间接口的复杂性、调用的方式及传递的信息;2内聚性;又称块内联系;指模块的功能强度的度量,即一个模块内部各个元素彼此结合的紧密程度的度量;若一个模块内各元素语句之间、程序段之间联系得越紧密,则它的内聚性就越高;耦合性与内聚性是模块独立性的两个定性标准,将软件系统划分模块时,尽量做到高内聚低耦合,提高模块的独立性,为设计高质量的软件结构奠定基础;模块的高内聚、低耦合的原则称为模块独立原则,也称为模块设计的原则;10、启发规则:1)改进软件结构提高模块独立性2)模块规模应该适中3)深度、宽度、扇出、、和扇入都应适当深度表示软件结构中控制的层数,它往往能粗略地标志一个系统的大小和复杂程度;宽度是软件结构内同一个层次上的模块总数的最大值;一般来说,宽度越大系统越复杂;对宽度影响最大的因素是模块的扇出;一个模块的扇入是指直接调用该模块的上级模块的个数;一个模块的扇出是指该模块直接调用的下级模块的个数;设计原则:低扇出、高扇入;4)模块的作用域应该在控制域内5)力争降低模块接口的复杂程度6)设计单入口和单出口的模块7)模块功能应该可以预测三、概要设计的方法:1、面向数据流的设计方法把信息流映射成软件结构,信息流的类型决定了映射的方法;面向数据流的设计要解决的任务,就是上述需求分析的基础上,将DFD图映射为软件系统的结构;2、数据流图的类型:交换型结构和事务型结构交换型结构:由3部分组成,传入路径,变换中心,输出路径系统的传入流经过变换中心的处理,变换为系统的传出流;事务型结构:有至少一条接受路径,一个事务中心与若干条动作路径组成;当外部信息沿着接受路径进入系统后,经过事务中心获得某个特定值,就能据此启动某一条动作路径的操作;四、结构化设计1、结构化设计方法:是一种面向数据流的设计方法,中心任务就是把用DFD图表示的系统分析模型转换为软件结构的设计模型,确定软件的体系结构域接口;2、结构化方法的步骤:1复审DFD图,必要时刻再次进行修改或细化:2鉴别DFD图所表示的软件系统的结构特征,确定它所代表的软件结构是属于变换型还是事务型;3按照SD方法规定的一组规则,吧DFD图转换为初始的SC图;变换型DFD图初始SC图事务型DFD图初始SC图3、结构设计的优化规则:1对模块分割、合并和变动调用关系的指导规则:以提高模块独立性为首要标准,除此之外,适当考虑模块的大小;2保持高扇/入低扇出原则3作用域/控制域规则:作用域不要超出控制域的范围;软件系统的判定,其位置离受它控制的模块越近越好;六、详细设计重点掌握的内容:详细设计的任务和方法一般掌握的内容:详细设计的原则和详细设计的规格与评审。

软件工程导论(整理)

软件工程导论(整理)

一、软件危机与软件工程1、软件危机软件危机是指在计算机软件的开发和维护过程中所遇到的一系列严重问题.(正常、不正常运行软件都具有这种问题)2、软件危机的原因1)软件本身特点造成;程序规模庞大;程序复杂性随着程序规模的增加而呈指数上升。

2)软件开发与维护的方法不正确。

主要表现:(a)忽视软件需求分析;(b)认为软件开发就是写程序并使之运行;(c)轻视软件维护;3、解决软件危机的途径:1、组织管理:软件开发不是某种个体劳动的神秘技巧,软件开发应该是一种组织良好、管理严密、各类人员协同配合、共同完成的工程项目。

2、方法:应该推广使用在实践中总结出来的开发软件的成功的技术和方法,并且研究探索更好更有效的技术和方法,尽快消除在计算机系统早期发展阶段形成的一些错误概念和做法。

3、工具:应该开发和使用更好的软件工具。

在软件开发的每个阶段都有许多繁琐重复的工作需要做,在适当的软件工具辅助下,开发人员可以把这类工作做得既快又好.4、软件工程包括哪7条基本原理?1. 用分阶段的生命周期计划严格管理;2。

坚持进行阶段评审;3. 实行严格的产品控制;4. 采用现代程序设计技术;5. 结果能清楚地审查;6. 开发小组的人员应该少而精;7。

承认不断改进软件工程实践的必要性。

5、软件开发流程?1)、问题定义2)、可行性研究3)、需求分析4)、总体设计5)、详细设计6)、编码和单元测试7)、综合测试8)、软件维护6、软件开发模型瀑布模型、快速原型模型、增量模型、螺旋模型、喷泉模型、rational统一过程、敏捷过程与极限编程、微软过程二、可行性研究1.系统流程图系统流程图是概括地描绘物理系统的传统工具,它的基本思想是用图形符号以黑盒子形式描绘系统里面的每个部件(程序、文件、数据库、表格、人工过程等),表达信息在各个部件之间流动的情况。

2.数据流图数据流图描绘系统的逻辑模型,图中没有任何具体的物理元素,只是描绘信息在系统中流动和处理的情况。

软件工程导论知识点

软件工程导论知识点

软件工程导论知识点软件工程导论一、各章知识点1、统一建模语言(UML):是一种面向对象的建模语言,它是运用统一的,标准化的标记和定义实现对软件系统进行面向对象的描述和建模2、封装从字面上理解,所谓封装就是把某个事物包起来,使外界不知道该事物的具体内容。

封装也就是信息隐藏,通过封装对外界隐藏了对象的实现细节。

3、软件维护性的过程分为四类:改正性维护;适应性维护;完善性维护;预防性维护4、白盒、黑盒测试的概念如果知道产品的内部工作过程,可以通过测试来检验产品内部动作是否按照规格说明书的规定正常进行。

这种测试叫做白盒测试,也叫结构测试。

如果已经知道了产品应该具有的功能,可以通过测试来检验是否每个功能都能正常使用,这种测试叫做黑盒测试,也叫功能测试。

5、继承:继承是指能够直接获得已有的性质和特征,而不必重复定义它们继承分单继承(树型结构)和多重继承(网状结构)6、软件生命周期以及各阶段的任务(3个时期,9个阶段)概括的说,软件生命周期由软件定义,软件开发和运行维护3个时期组成,通常把前两个时期再一步划分成若干个阶段。

软件定义时期:问题定义;可行性研究;需求分析三个阶段软件开发时期:总体设计;详细设计;编码和单元测试;综合测试五个阶段软件定义时期的任务是:确定软件开发工程的总目标;研究该项目的可行性;分析确定客户对软件产品的需求估算完成该项目所需的资源和成本,并且制定工程进度表软件开发时期的任务是:具体设计和实现在前一个时期定义的软件运行维护时期的任务是:通过对已交付使用的软件做必要的修改,使软件持久地满足客户的需求7、需求/概要/详细设计阶段是干什么的?需求分析阶段的基本任务是确定软件必须”做什么”,使用的概念主题是”功能”概要设计阶段的任务是确定“怎样做“,使用的概念是”模块“详细设计阶段的任务就是把解法具体化,即回答“应该怎样具体地实现这个系统”使用的概念是“数据结构“和”算法“8、软件生命周期中时间花费做多的是维护阶段软件生命周期中最重要的是系统分析9、软件的开发模型。

软件工程导论(整理版)

软件工程导论(整理版)

SA——结构化分析方法可行性研究:可行性研究实质上是要进行一次大大压缩简化了的系统分析和设计的过程,也就是在较高层次上以较抽象的方式进行的系统分析和设计的过程;技术可行性:对待开发的系统进行功能、性能和限制条件的分析,确定在现有的资源条件下,技术风险有多大,系统能否实现;经济可行性:这个系统的经济效益能超过它的开发成本吗?社会可行性:实用性怎样5. 耦合性:耦合是指一个模块与其它模块之间的联系,又称为块间联系,是模块之间相对独立性的度量;6. 内聚性:内聚是指模块内部各个成分之间的关系,又称为块内联系,是模块功能相对强度的度量;7. 模块的控制范围:一个模块的控制范围是指该模块本身及其所属的(直接或间接调用的)所有模块的集合;8. 模块的作用范围:受该模块内一个判定影响的所有模块的集合;9. 软件结构:软件结构图;10.模块:在软件中,通常把用一个名字就可以调用的一段程序称为模块;1. 编码:所谓编码就是把软件设计结果翻译成用某种程序设计语言书写的程序;2. 程序设计风格:所谓程序设计风格是指书写源程序的习惯、程序代码的逻辑结构与习惯的编程技术。

从软件工程要求出发,程序设计风格应包括以下要素:①源程序文档化②数据说明③语句构造④输入输出●白盒测试技术:逻辑覆盖和基本路径覆盖●黑盒测试技术:等价类划分、边界测试、错误推测、因果图●软件测试步骤:单元测试、集成测试和确认测试1. 校正性维护:满足用户对已开发产品的性能与运行环境不断提高的要求,进而达到延长软件寿命的目的;2.适应性维护:对程序使用期间发现的程序错误进行诊断和改正的过程,配合变化了的环境进行修改软件的活动;3. 完善性维护:满足用户在使用过程中提出增加新的功能或修改已有功能的建议而进行的工作;4. 预防性维护:为了改善未来的可维护性或可靠性而修改软件的工作。

5. 软件可维护性:维护人员理解、改正、改动或改进这个软件的难易程度。

6. 软件维护的副作用:(1)编码副作用。

软件工程导论知识点总结

软件工程导论知识点总结

软件工程导论知识点总结一、软件工程概述软件工程是将系统化、规范化、可度量化的方法应用于软件的开发、运行和维护的过程。

软件工程包括软件开发过程、软件工具和方法以及软件质量管理等方面。

二、软件生命周期模型1. 瀑布模型:依次完成需求分析、设计、编码、测试和维护等阶段。

2. 增量模型:将整个项目分为多个增量,逐步完成。

3. 螺旋模型:在瀑布模型基础上增加风险评估环节,不断迭代。

4. 原型模型:快速构建原型,反复修改完善。

5. 敏捷开发:注重快速响应变化,通过迭代交付高质量的软件。

三、需求分析需求分析是指对用户需求进行详细的调查和分析,并将其转换为可实现的系统规格说明。

主要包括功能性需求和非功能性需求两个方面。

四、设计1. 结构设计:确定系统各个组成部分之间的关系。

2. 数据设计:确定数据结构及其组织方式。

3. 接口设计:定义各个组成部分之间的接口。

4. 过程设计:定义系统中各个过程的执行方式。

五、编码编码是将设计好的系统规格说明转换为计算机可执行的程序代码,主要包括选择编程语言、编写代码、调试和测试等环节。

六、测试测试是对软件进行验证和确认,主要包括单元测试、集成测试、系统测试和验收测试等环节。

七、维护维护是指在软件交付后,对软件进行修改和更新以满足用户需求或修复缺陷。

维护包括预防性维护、适应性维护和完善性维护等方面。

八、软件质量管理软件质量管理是指通过各种手段确保软件产品满足用户需求,并具有可靠性、可用性、安全性等特点。

主要包括质量计划制定、质量保证控制和质量评估等环节。

九、常见开发模式1. 面向对象开发模式:采用面向对象的思想进行开发。

2. 组件化开发模式:将系统划分为多个组件进行开发。

3. 服务化开发模式:将系统划分为多个服务进行开发。

4. 微服务架构:将系统划分为多个微服务进行独立部署和运行。

十、常用工具和技术1. UML:统一建模语言,用于软件建模和设计。

2. IDE:集成开发环境,用于编码、调试和测试等环节。

软件工程导论

软件工程导论

1、What is software?计算机程序和相关的文档,如需求、设计模型和用户手册。

软件产品可能是为特定客户或开发市场。

通用的产品:它是一种软件。

这些都是独立的系统,是由一个开发组织,在公开市场上卖给任何客户能够购买。

定制产品:这些系统由一个特定客户委托。

一个软件承包商发展尤其是电子客户的软件2、What is software engineering?软件工程是一个工程学科,涉及软件生产的各个方面。

3、What is a software process?软件过程活动参与生产和发展的软件系统。

通用的活动:规范了系统应该做什么和它的发展限制;设计和开发-生产的软件系统;验证,检查软件是客户想要的东西;进化——改变软件以应对不断变化的需求。

4、What are software engineering methods?结构化方法,软件开发,包括系统模型、符号、规则、设计建议和过程指导。

模型描述-描述图形模型应该产生;规则,约束应用于系统模型;建议好的设计实践;过程指导,什么样活动5、What is a software process model?软件过程的一个简化的或抽象表示,从特定的角度提出的。

通用流程模型描述软件过程的组织。

包括:瀑布模型,迭代/进化发展,基于组件的软件工程。

基于组件的软件工程系统从现有的组件组装。

6、五个通用过程框架的活动(five generic process framework activities)是什么?沟通、计划、建模、建设、部署Communication, Planning, Modeling, Construction, Deployment7、什么是用例和分析类?什么是actor(What is use case?Ayalize classes actor)用例用于表示系统所提供的服务,它定义了系统是如何被参与者所使用的,它描述的是参与者为了使用系统所提供的某一完整功能而与系统之间发生的一段对话。

软件工程导论简答题

软件工程导论简答题

1.软件工程旳七条基本原理是什么?答:软件工程旳七条基本原理是:用分阶段旳是旳生存周期计划严格管理;坚持进行阶段评审;严格实行旳产品控制;采用现代程序技术;成果应能清晰地审查;开发小组旳组员应当少而精;承认不停改善软件工程旳必要性。

2.良好旳编码风格应具有哪些条件?答:应具有如下条件:(1)使用原则旳控制构造;(2)有限制地使用GOTO语句;(3)源程序旳文档化(应具有如下内容)①故意义旳变量名称——“匈牙利命名规则”。

②合适旳注释——“注释规范”。

③原则旳书写格式:——用分层缩进旳写法显示嵌套构造旳层次(锯齿形风格);——在注释段旳周围加上边框;——在注释段与程序段、以及不一样程序段之间插入空行;——每行只写一条语句;——书写体现式时,合适使用空格或圆括号等作隔离符。

(4)满足运行工程学旳输入输出风格。

3.简述文档在软件工程中旳作用。

答:(1) 提高软件开发过程旳能见度(2) 提高开发效率(3) 作为开发人员阶段工作成果和结束标志(4) 记录开发过程旳有关信息便于使用与维护;(5) 提供软件运行、维护和培训有关资料;(6) 便于顾客理解软件功能、性能。

4.可行性研究包括哪几方面旳内容?答:(1)经济可行性:与否有经济效益,多长时间可以收回成本;(2)技术可行性:既有技术能否实现本系统,既有技术人员能否胜任,开发系统旳资源能否满足;(3)运行可行性:系统操作在顾客内部行得通吗?(4)法律可行性:新系统开发与否会侵犯他人、集体或国家利益,与否违反国家法律。

5.构造化旳需求分析描述工具有哪些?答:有数据流图(DFD)、数据字典(DD)、鉴定表、鉴定树、构造化语言(PDL)、层次方框图、Warnier图、IPO图、控制流图(CFD)、控制阐明(CSPEC)、状态转换图(STD)和实体—关系图(E—R)等。

6.一般面向对象分析建模旳工具(图形)有哪些?答:用例图、类/对象图、对象关系图、实体—关系图(E—R)、事件轨迹图(时序图)和状态转换图(STD)等7.UML统一建模语言有哪几种图形?用例图、类图、对象图、构件(组件)图、布署(配置)图、状态图、活动图、次序(时序)图、合作(协作)图等九种图。

软件工程导论知识点总结(整理)

软件工程导论知识点总结(整理)

《软件工程导论》课后习题答案第一章软件工程概论1.什么是软件危机?软件危机是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。

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

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

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

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

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

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

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

2.为什么会产生软件危机?(1)开发人员方面,对软件产品缺乏正确认识,没有真正理解软件产品是一个完整的配置组成。

造成开发中制定计划盲目、编程草率,不考虑维护工作的必要性。

(2)软件本身方面,对于计算机系统来说,软件是逻辑部件,软件开发过程没有统一的、公认的方法论和规范指导,造成软件维护困难。

(3)尤其是随着软件规模越来越大,复杂程度越来越高,原有软件开发方式效率不高、质量不能保证、成本过高、研制周期不易估计、维护困难等一系列问题更为突出,技术的发展已经远远不能适应社会需求。

3.怎样克服软件危机?(1)充分吸收和借鉴人类长期以来从事各种工程项目中积累的行之有效的有效原理、概念、技术与方法,特别是吸取几十年来人类从事计算机硬件研究和开发的经验教训。

在开发软件的过程中努力作到良好的组织,严格的管理,相互友好的协作。

(2)推广在实践中总结出来的开发软件的成功的技术和方法,并研究更好、更有效的技术和方法,尽快克服在计算机系统早期发展阶段形成的一些错误概念和作法。

(3)根据不同的应用领域,开发更好的软件工具并使用这些工具。

将软件开发各个阶段使用的软件工具集合成一个整体,形成一个很好的软件开发支环环境。

总之为了解决软件危机,既要有技术措施(方法和工具),又要有必要的组织管理措施。

4.构成软件项目的最终产品:应用程序、系统程序、面向用户的文档资料和面向开发者的文档资料。

5.什么是软件生存周期?软件生存周期是指从软件定义、开发、使用、维护到淘汰的全过程。

(完整版)软件工程导论知识点概要

(完整版)软件工程导论知识点概要

1.1软件危机软件危机的表现软件危机是指在计算机软件的开发、使用和维护过程中遇到的一系列严重问题。

1)成本难以估计、成本高。

2)软件开发进度估计不准确,项目延期比比皆是。

3)软件质量得不到保证(功能和性能)。

4)用户对“已完成的”软件系统不满意的现象经常发生。

5)维护非常困难(多样性、复杂性、副作用)。

6)软件通常没有适当的文档。

7)软件产品供不应求,跟不上计算机普及速度。

产生软件危机的原因(1)与软件本身的特点有关(逻辑复杂,成本高,风险大,难于维护)。

(2)与软件开发与维护的方法不正确有关:软件≠程序(软件是程序、数据及相关文档的完整集合)急于求成=拔苗助长(软件从定义、开发、使用和维护、废弃要经历一个漫长的生命周期)各自为阵无方法学(应要组织良好、管理严密、各类人员协作共同完成的工程项目)1.2软件工程定义软件工程是应用计算机科学、数学、心理学及管理科学等原理开发软件的工程。

它借鉴传统工程的原则、方法,以提高质量、降低成本和提高效率为目的。

软件工程包括技术和管理两方面的内容,是技术与管理紧密结合所形成的工程学科。

软件工程的特性:1. 软件工程关注于大型程序的构造(传统的程序设计技术和工具是支持小型程序设计的)2. 软件工程的中心课题是控制复杂性(问题分解)3. 软件经常变化(考虑将来要发生的变化)4. 开发软件的效率非常重要(寻求更好、更有效的工具)5. 和谐地合作是开发软件的关键(运用标准和规程)6. 软件必须有效地支持它的用户(软件要服务于用户)7. 在软件工程领域中通常是由具有一种文化背景的人替具有另一种文化背景的人创造产品软件工程的7条基本原理1.用分阶段的生命周期计划严格管理2.坚持进行阶段评审3.实行严格的产品控制4.采用现代程序设计技术5.结果应能清楚地审查6.开发小组的人员应该少而精7.承认不断改进软件工程实践的必要性软件工程方法学通常把在软件生命周期全过程中使用的一整套技术方法的集合称为方法学(methodology),也称为范型(paradigm)。

软件工程导论知识点

软件工程导论知识点

软件生存期的阶段划分:(1)可行性研究与计划;(2)需求分析;(3)总体设计;(4)详细设计(5)实现(6)集成测试(7)确认测试(8)使用和维护软件=程序+文档+数据产生软件危机的原因:软件本身特点(客观):逻辑部件:管理和控制软件开发过程相当困难,较难维护;规模庞大:代码长度不正比程序复杂程度;软件开发与维护的方法不正确(主观):没有认识到软件的生命周期;软件开发不同阶段进行修改需要付出的代价差别很大;软件产品=程序+每个阶段的文档资料。

消除软件危机的途径:对计算机软件有一个正确的认识(软件≠程序);技术措施:推广使用在实践中总结出来的开发软件的成功技术和方法;开发和使用更好的软件工具等;管理措施:必须充分认识到软件开发不是某种个体劳动的神秘技巧,而应该是一种组织良好、管理严密、各类人员协同配合、共同完成的工程项目。

软件发展的4大趋势:流水线生产、网络化、服务化与全球化。

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

”软件工程具有下述的本质特性:1.软件工程关注于大型程序的构造2. 软件工程的中心课题是控制复杂性3. 软件经常变化4. 开发软件的效率非常重要5. 和谐地合作是开发软件的关键6. 软件必须有效地支持它的用户7. 在软件工程领域中是由具有一种文化背景的人替具有另一种文化背景的人。

软件工程的基本原理;1用分阶段的生命周期计划严格管理:2坚持进行阶段评审3实行严格的产品控制4采用现代程序设计技术5结果应能清楚地审查6开发小组的人员应少而精7承认不断改进软件工程实践的必要性软件工程三个要素:方法、工具、过程软件工程方法学,分别是传统方法学和面向对象方法学。

传统方法学:把软件生命周期的全过程依次划分为若干个阶段,然后顺序地完成每个阶段的任务面向对象方法:是一种以数据为主线,把数据和对数据的操作紧密地结合起来的方法面向对象方法学具有下述4个要点:(1)把对象(object)作为融合了数据及在数据上的操作行为的统一的软件构件。

软件工程导论知识点

软件工程导论知识点

软件生存期的阶段划分:(1)可行性研究与计划;(2)需求分析;(3)总体设计;(4)详细设计(5)实现(6)集成测试(7)确认测试(8)使用和维护软件=程序+文档+数据产生软件危机的原因:软件本身特点(客观):逻辑部件:管理和控制软件开发过程相当困难,较难维护;规模庞大:代码长度不正比程序复杂程度;软件开发与维护的方法不正确(主观):没有认识到软件的生命周期;软件开发不同阶段进行修改需要付出的代价差别很大;软件产品=程序+每个阶段的文档资料。

消除软件危机的途径:对计算机软件有一个正确的认识(软件≠程序);技术措施:推广使用在实践中总结出来的开发软件的成功技术和方法;开发和使用更好的软件工具等;管理措施:必须充分认识到软件开发不是某种个体劳动的神秘技巧,而应该是一种组织良好、管理严密、各类人员协同配合、共同完成的工程项目。

软件发展的4大趋势:流水线生产、网络化、服务化与全球化。

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

”软件工程具有下述的本质特性:1.软件工程关注于大型程序的构造2. 软件工程的中心课题是控制复杂性3. 软件经常变化4. 开发软件的效率非常重要5. 和谐地合作是开发软件的关键6. 软件必须有效地支持它的用户7. 在软件工程领域中是由具有一种文化背景的人替具有另一种文化背景的人。

软件工程的基本原理;1用分阶段的生命周期计划严格管理:2坚持进行阶段评审3实行严格的产品控制4采用现代程序设计技术5结果应能清楚地审查6开发小组的人员应少而精7承认不断改进软件工程实践的必要性软件工程三个要素:方法、工具、过程软件工程方法学,分别是传统方法学和面向对象方法学。

传统方法学:把软件生命周期的全过程依次划分为若干个阶段,然后顺序地完成每个阶段的任务面向对象方法:是一种以数据为主线,把数据和对数据的操作紧密地结合起来的方法面向对象方法学具有下述4个要点:(1)把对象(object)作为融合了数据及在数据上的操作行为的统一的软件构件。

软件工程导论资料

软件工程导论资料

•软件工程是:①将系统化的、严格约束的、可量化的方法应用于软件的开发、运行和维护,即将工程化应用于软件;②在①中所述方法的研究软件工程过程包括:开发过程、运作过程、维护过程、管理过程、支持过程、获取过程、供应过程、剪裁过程等CMM(Capability Maturity Model)即能力成熟度模型,是美国卡内基梅隆大学软件工程研究所(SEI)在美国国防部资助下于二十世纪八十年代末建立的,用于评价软件机构的软件过程能力成熟度的模型。

•典型的软件过程模型有:–瀑布模型(waterfall model)–演化模型(evolutionary model)–增量模型(incremental model)–原型模型(prototyping model)–螺旋模型(spiral model)–喷泉模型(water fountain model)–基于构件的开发模型(component-based development model)–形式方法模型(formal methods model)•是瀑布模型和演化模型的结合,并增加了风险分析•螺旋模型沿着螺线旋转,在四个象限上分别表达四个方面的活动,即:–制定计划:确定软件目标,选定实施方案,弄清项目开发的限制条件–风险分析:评价所选的方案,识别风险,消除风险–工程实施:实施软件开发,验证工作产品–客户评估:评价开发工作,提出修正建议•喷泉模型是一种支持面向对象开发的模型•体现迭代和无间隙特征–迭代:各开发活动常常重复工作多次,相关的功能在每次迭代中随之加入演进的系统–无间隙:开发活动之间不存在明显的边界•所谓基于计算机的系统是指:通过处理信息来完成某些预定义目标而组织在一起的元素的集合•组成基于计算机系统的元素主要有:软件、硬件、人员、数据库、文档和规程•本书将软件需求工程细分为:需求获取、需求分析与协商、系统建模、需求规约、需求验证和需求管理六个阶段。

•常用的分析方法:–面向数据流的结构化分析方法(SA)–面向数据结构的分析方法–面向对象的分析方法(OOA)•需求管理是一组用于帮助项目组在项目进展中的任何时候去标识、控制和跟踪需求的活动•需求跟踪有两种方式,正向跟踪与逆向跟踪–正向跟踪:以用户需求为切入点,检查《需求规约》中的每个需求是否都能在后继工作产品中找到对应点–逆向跟踪:检查设计文档、代码、测试用况等工作产品是否都能在《需求规约》中找到出处•软件设计是把软件需求变换成软件表示的过程,它主要包含两个阶段:软件体系结构设计阶段和部件级设计•使用一种设计方法,软件分析模型中通过数据、功能和行为模型所展示的软件需求的信息被传送给设计阶段,产生数据/类设计、体系结构设计、接口设计、部件级设计软件设计的原则:抽象化与逐步求精;•软件设计中主要抽象手段有:过程抽象和数据抽象模块化;信息隐藏;功能独立;•功能独立性可以由两项指标来衡量:内聚度与耦合度软件体系结构关注系统的一个或多个结构,包含软件构件、这些构件的对外可见的性质以及它们之间的关系•常见的软件体系结构–单主机结构–C/S(Client/Server)结构–B/S(Browser/Server)结构常用体系结构风格:数据为中心的体系结构数据流风格的体系结构调用和返回风格的体系结构面向对象风格的体系结构层次式风格的体系结构在这里要了解几个概念:–程序结构的深度:程序结构的层次数称为结构的深度。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

作业
二、软件生命周期可分为哪几个阶段?请详 述各个阶段应完成的基本任务以及该任务应 由公司中的什么岗位的人来完成。
– 在软件开发的过程中,若能推迟暴露其 中的错误,则为修复和改正错误所花费 的代价就会降低。 – 只要我们写出了程序并使其正常运行, 我们的工作就结束了。
– 我们拥有一套讲述如何开发软件的书籍, 书中充满了标准与示例,可以帮助我们 解决软件开发中遇到的任何问题。 – 在项目计划发生延迟的情况下,增加更 多的程序员一定会加快进度。
软件工程的定义
概括地说,软件工程是指导计算机软件开 发与维护的工程学科。它采用工程的概念、 原理、技术和方法来开发与维护软件,把经 过时间考验而证明是正确的管理技术和目前 能够得到的最有效的技术与方法结合起来, 以经济地开发出高质量的软件并有效地维护 它,这就是软件工程。
举例:晨后综合症的解决
– 文档是软件产品的一部分,没有文档的软
件就不称其为软件。 – 一个成功的项目唯一提交的就是运行程序。
如何消除软件危机
充分认识到软件开发不是某种个体劳动的 神秘技巧,而应该是一种组织良好、管理严 密、各类人员协同配合共同完成的工程项目。
充分吸取和借鉴人类长期以来从事各种工 程项目所积累的行之有效的原理、概念、技 术和方法,特别要吸取几十年来人类从事计 算机软硬件研究和开发的经验教训。
3、需求分析 – 对目标系统提出完整、准确、清晰、具体的要求 – 具备用户的专业知识和较好的软件开发能力 – 系统分析师 4、概要设计 – 解决“怎样实现目标系统?” – 实现一个目标系统,通常有几种方案,比较每种 方案的优缺点,确定一种。 – 一个程序由若干个规模适中的模块按合理的层次 结构组织成,所以要确定程序的体系结构,有哪 些模块组成及模块间的关系。 – 系统设计师,高级程序员
8、软件维护 –通常有四类维护活动:改正性维护,也就是诊断 和改正在使用过程中发现的软件错误;适应性维 护,即修改软件以适应环境的变化。完善性维护, 即根据用户的要求改进或扩充软件使它更完善; 预防性维护,即修改软件为将来的维护活动预先 做准备。 – 每一项维护活动都应该经过提出(维护)要求, 分析要求,提出方案,审批方案,确定计划,修 改软件设计,修改程序,测试程序,复查验收等 一系列步骤,实质上是经历了一次压缩和简化了 的软件定义和开发的全过程。 – 修改多个bugs后,推出下一个版本(升级版、补 丁包) 国家标准《计算机软件开发规程》也把软件生命周期 分成8个阶段。略有差异P15
什么是软件

这里讨论的软件是几十人、上百人、上千人合作完 成的软件,如Windows操作系统。

开发软件不等于编写程序 – 开发软件应该完成的工作远远多于编写程序应该 完成的工作
软件=程序 + 数据 + 文档

什么是软件危机
软件危机的最突出的爆发: – 60年代美国IBM公司开发IBM360机的操作 系统,化了5000人年的工作量,完成时间 一再推迟,结果却不理想。
参考书目
1、《软件工程》 张海藩 人民邮电出版社 2、《敏捷开发方法—原则、模式与实践》 Robert C. Martin著 清华大学出版社 3、《人月神话》 弗雷德里克· 布鲁克斯著 清 华大学出版社
本节课内容
1、什么是软件 2、软件危机 3、软件开发中常见的某些观点辨析 4、如何消除软件危机 5、软件工程的定义 6、举例说明软件工程是技术和管理的结合 7、软件生命周期 8、软件工程的基本原理 参考书: – 《软件工程》1.1 、1.2.1、 2.1、1.2.2
– 项目负责人Brook后来对整个过程反思,总 结经验和教训,写成了《人月神话》,被 称为程序员的“圣经”。进度的估计常常很不准确。 – 实际成本比估计成本高出几倍甚至十几倍,实际 进度比预期进度拖延几个月甚至几年的现象并不 罕见。 用户对“已完成的”软件系统不满意甚至拒绝接受的 现象经常发生。 软件产品的质量往往靠不住。 软件常常是不可维护的。 – 很多程序中的错误都非常难以改正。
软件通常没有适当的文档资料。 – 缺乏必要的文档资料或者文档资料不合格, 必然给软件开发和维护带来许多严重的困 难和问题。 软件开发生产率提高的速度,既跟不上硬件 的发展速度,也远远跟不上计算机应用迅速 普及的趋势。
关于软件开发,常见的一些观点,我们看看 是否正确: – “有一个对目标的概括描述就足以着手编 写程序了,许多细节可以在以后再补充。” – “所谓软件开发就是编写程序并设法使它 运行。” – “用户对软件的要求不断变化,然而软件 是柔软而灵活的,可以轻易地改动。” – “软件投入生产性运行以后需要的维护工 作并不多,而且维护是一种很容易做的简 单工作。”
3. 实行严格的产品控制 基线配置管理 4. 采用现代程序设计技术 结构化分析(SA)技术、结构化设计(SD)技 术、结构化程序设计(SP)技术,面向对象分 析和设计技术。 实践表明,采用先进的技术不仅可以提高 软件开发和维护的效率,而且可以提高软件 产品的质量。 5. 结果应该能够清楚地审查 依据开发项目的总目标和完成期限,规定 开发小组的责任、产品标准及完成日期,使 结果能够清楚地审查
软件生命周期
概括地说,软件生命周期由软件定义、软 件开发和运行维护三个时期组成,每个时期 又可进一步划分成若干个阶段。
软件生命周期的各个阶段
1、问题定义 – 解决“问题是什么?” – 通过调研,提出关于问题性质、工程目标和工程 规模的书面报告,用户对这份报告确认 – 公司中对应的岗位:售前、市场部 2、可行性研究 – 问题是否有行的通的解决办法? – 从技术、经济、社会因素(如法律)等方面分析 可行性 – 专家、系统分析师、经验丰富的程序员
软件工程的基本原理
1.用分阶段的生命周期计划严格管理 把软件生命周期划分成若干个阶段,并相应地制 定出切实可行的计划,然后严格地按照计划对软件 的开发与维护工作进行管理 2. 坚持进行阶段评审 软件的质量保证工作不能等到编码阶段结束之后 再进行。原因: 第一,大部分错误是在编码之前造成的,例如,根 据Boehm等人的统计,设计错误占软件错误的 63%,而编码错误仅占37%; 第二,错误发现与改正得越晚,改正错误所需付出 的代价也越高
软件工程导论
孙旭光 E-MAIL:sunxuguang@ QQ:1938495 MSN:sd_xgsun@
如何学习好课程
网络是知识的重要来源 – 清华、北大等名校的讲课视频 – 国家级、部级精品课程 – 卡内基梅隆、麻省理工、加州伯克利等世界顶级 大学的开放课件和视频 面对面的交流,直截了当的交流思想、学习知识 – 学会如何提问 学习的是解决问题的方法 – 8个相同的球中有1个球质量偏轻,用天平称两次 找出轻的球? – 传统思维:三次,二叉树==》两次,三叉树
基线:已经通过了正式复审的中间产品,它 可以作为进一步开发的基础,并且只有通过 正式的变化控制过程才能改变它。
在软件配置项变成基线前,可以迅速而非正 式的修改它。一旦建立了基线后,虽然也可 以实现变化,但是必须应用特定的正式的过 程来评估、实现和验证每个变化。
“晨后综合症”的解决中,第一步是采用的 技术手段,第二步是采用管理的手段。
6. 开发小组的人员应该少而精 素质高的人员的开发效率比素质低的人员 的开发效率可能高几倍至几十倍,而且素质 高的人员所开发的软件中的错误明显少于素 质低的人员所开发的软件中的错误。 随着开发小组人员数目的增加,为了交流 信息、讨论问题而造成的通信开销也急剧增 加。当开发小组人数为N时,可能的通信路径 有N(N-1)/2条。 7. 承认不断改进软件工程实践的必要性 软件工程随着技术的进步而不断的发展


推广使用在实践中总结出来的开发软件的成功的技 术和方法,并且研究探索更好更有效的技术和方法, 尽快消除在计算机系统早期发展阶段形成的一些错误 概念和做法。


开发和使用更好的软件工具。
总之,为了消除软件危机,既要有技术措施(方法 和工具),又要有必要的组织管理措施。软件工程正 是从管理和技术两方面研究如何更好地开发和维护计 算机软件的一门新兴学科。
软件测试开始的时间
例子1:网站开发已经结束,测试人员提出 意见:该网站服务对象不明确,无法吸引用 户,战略上有失误。——可行性分析、需求 分析 例子2:网站开发已经结束,测试人员提出 意见:某地方设计不好,应像**网站那 样。——设计 例子3:网站开发已经结束,测试人员提出 意见:某功能无法使用。——编码
5、详细设计 – 详细设计每个模块,确定实现模块功能所需要的 算法和数据结构。 – 高级程序员,经验丰富的程序员
6、编码和单元测试 – 写出正确的容易理解、容易维护的程序模块。 – 程序员,软件工人 7、综合测试 – 包括集成测试和验收测试 – 公司对应的岗位:软件测试人员、质量保证(QA) 人员
作业
一、下列有关软件开发的某些观点,判断是否正确, 并解析说明原因: – “有一个对目标的概括描述就足以着手编写程序 了,许多细节可以在以后再补充。” – “用户对软件的要求不断变化,然而软件是柔软 而灵活的,可以轻易地改动。” – “软件投入生产性运行以后需要的维护工作并不 多,而且维护是一种很容易做的简单工作。” – 不完善的系统定义往往是导致软件项目失败的主 要原因。 – 只有质量差的软件产品才需要维护。
“晨后综合症”: 工作了一整天,终于完成了某项工作后回家, 不料第二天早晨一来却发现那项功能不再工 作了。原因是什么呢?因为有人比你走的更 晚,并且更改了你所依赖的某些东西!
解决第一步(技术):设计出良 好的结构
解决第二步(管理):阶段评审 和基线配置管理
每开发完一个或几个模块后,公司中的QA对 其进行技术复审(复审软件的设计是否符合 要求)和软件测试(选用合适的数据,检查 预期结果和实际结果是否相符)。 通过后,将软件配置(软件、文档、数据) 进行管理。
相关文档
最新文档