软件工程学习笔记
- 格式:doc
- 大小:88.50 KB
- 文档页数:52
软件工程概论1、软件危机1)、软件工程的目的:倡导以工程的原理、原则和方法进行软件开发,以解决当时出现的软件危机。
2)、软件危机:指在计算机软件开发和维护过程中所遇到的一系列问题。
A 、如何开发软件以满足对软件日益增长的需求。
B 、如何维护数量不断增长的已有软件。
3)、软件危机的主要表现形式A 、软件开发成本高,研制进度无法准确估计,用户不满意。
B 、软件产品的可靠性得不到保证。
C 、软件产品难以维护。
D 、软件发展跟不上硬件的发展和用户的要求,硬件成本逐年下降,软件成本越来越昂贵。
2、软件工程概念1)、软件:计算机系统中的程序及其文档。
程序是计算任务的处理对象和处理规则的描述;文档是为了便于理解程序所需的阐明性资料。
细言之,软件有三层含义:A 、个体含义:即指计算机系统中的程序及其文档。
B 、整体含义:即指在特定计算机系统中所有上述个体含义下的软件的总称。
C 、学科含义:即指在研究、开发、维护以及使用前述含义下的软件所涉及的理论、方法、技术所构成的学科。
2)、工程:将理论和所学的知识应用于实践的科学。
3)、软件工程:应用计算机科学、数学及管理科学等原理,开发软件的工程。
它借鉴传统工程的原则、方法,以提高质量,降低成本为目的。
其中,计算机科学、数学用于构造模型与算法,工程科学用于制定规范、设计范型、评估成本及确定权衡,管理科学用于计划、资源、质量、成本等管理。
3、软件工程框架(参见附图软件工程框架示意图)1)、软件工程目标:生产具有正确性、可用性和开销合宜的产品。
A 、正确性:是指软件产品达到预期功能的程度。
B 、可用性:是指软件基本结构、实现以及文档为用户可用的程度。
C 、开销合宜:是指软件开发、运行的整个开销满足用户要求的程度。
2) 、软件开发活动:生产一个最终满足需求且达到工程目标的软件产品所需要的活动。
软件开发的基本活动包括:需求、设计、实现、确认、和支持。
A 、需求:就是定义问题。
B 、设计:在需求的基础上,给出被建系统的软件设计方案。
读书笔记《现代软件工程:高效构建软件》作者:[Your Name]1. 前言在现今信息时代,软件工程的重要性愈发凸显。
如何高效构建软件成为了每个软件工程师和开发团队必须面对的挑战。
通过阅读《现代软件工程:高效构建软件》这本书,我深刻认识到了高效构建软件的重要性,并从中汲取了许多宝贵的经验和知识。
以下是我对这本书的读书笔记,希望能与大家共享我的学习心得。
2. 书中深度评估《现代软件工程:高效构建软件》一书从软件工程的基本概念出发,深入探讨了软件构建的全过程。
作者从简到繁地介绍了软件工程的背景和发展历程,使我对软件工程的发展有了更清晰的认识。
随后,书中详细评估了软件构建中的需求分析、设计、开发、测试和维护等关键环节,使我对软件构建的流程和方法有了全面的了解。
值得一提的是,书中对现代软件工程中常用的敏捷开发和DevOps等方法和工具进行了深入剖析,让我受益良多。
3. 文章撰写在撰写本文之前,我仔细阅读了作者对于现代软件工程的深度评估,并针对这些内容进行了整理和思考。
接下来,我将结合书中观点和个人理解,以及我对高效构建软件的认识,撰写下面的文章。
4. 高效构建软件的重要性在当今竞争激烈的市场环境下,高效构建软件显得尤为重要。
高效构建软件可以缩短产品上线时间,满足市场需求;另高效构建软件可以提高软件质量,提升用户体验。
软件工程师和开发团队需要不断探索高效构建软件的方法和工具,不断提升自身的技能和水平。
5. 个人观点个人而言,我认为高效构建软件不仅仅是一种技术,更是一种态度和方法论。
在实际工作中,我们要注重团队协作,倡导敏捷开发,注重测试,关注用户反馈,不断迭代和优化。
只有这样,我们才能真正做到高效构建软件,为用户创造更大的价值。
6. 总结通过对《现代软件工程:高效构建软件》的深度评估和个人思考,我对高效构建软件有了更加全面、深刻和灵活的理解。
相信在今后的工作中,我会将书中的知识和经验融入实际工作中,不断提升自己的软件工程能力,为团队和项目创造更大的价值。
软件工程读书笔记【篇一:软件工程读书笔记】1.软件危机在计算机软件的开发和维护过程中所遇到的一系列严重问题。
2.软件危机的表现–软件成本日益增长–开发进度难以控制–软件质量差–软件维护困难–软件开发速度跟不上计算机发展速度3.软件危机的原因–技术原因? 软件规模越来越大? 软件复杂度越来越高–管理原因? 软件开发缺乏正确的理论指导,过分依靠个人技巧和创造性? 对用户需求没有完整准确的认识,就匆忙着手编写程序4.软件工程1) 将系统化、规范化、可量化的工程原则和方法,应用于软件的开发、运行和维护。
2) 对1)中方法的理论研究。
5.生命周期软件生命周期由软件定义、软件开发和运行维护三个时期组成,每个时期又可进一步划分成若干个阶段,每个阶段有各自的任务。
?????? 问题定义可行性分析需求分析概要设计详细设计编码和单元测试? 综合测试? 维护6.软件过程生命周期模型规定了把生命周期划分成哪些阶段及各个阶段的执行顺序,因此,也称为过程模型。
7.瀑布模型:? 阶段间具有顺序性和依赖性?? 推迟实现的观点质量保证的观点,文档驱动优点:文档驱动的规范坏,每个阶段的仔细验证。
缺点:通过文档与客户沟通,最终产品可能不能真正满足客户需求。
8.快速原型模型:? 快速建立起可以运行的程序,其功能往往是最终产品功能的子集。
特点:通过原型系统获取客户要求,一旦需求确定,原型将被抛弃。
9.增量模型:? 把软件产品作为一系列增量构件来设计、编码、集成和测试。
优点:能在最早的时间把最新的功能提交给客户;减少客户对全新软件的冲击。
缺点:开发困难,设计阶段必需有一个好的体系结构10.螺旋模型:? 在每个阶段之前都增加了风险分析过程的快速原型模型。
优点:对可选方案和约束条件的强调有利于已有软件的重用;减少了过多测试或测试不足带来的风险;维护只是一个周期;风险驱动。
11.瀑布模型:面向对象迭代无缝可行性分析1. 可行性分析任务? 技术可行性? 经济可行性? 操作可行性? 法律可行性2. 可行性分析过程???????3.复查系统规模和目标研究目前正在使用的系统导出新系统的高层逻辑模型进一步定义问题导出和评价供选择的解法推荐行动方针草拟开发计划 ? 书写文档提交审查系统流程图–概括描绘物理系统的传统工具–用图形符号,以黑盒子形式描述组成系统的每个部件–程序、文档、数据库、人工过程3. 数据流图(dfd)描绘信息流和数据从输入移动到输出的过程中所经受的变换。
软件工程知识点第一章软件工程概述一、软件的定义和特性(P2—P3)定义:软件=程序+数据+文档程序:按照事先设计的功能和性能要求执行的指令或语句序列数据:程序能正常操纵信息的数据结构文档:描述程序操作和使用的文档特性:(1)软件是一种逻辑实体,具有抽象性,不是一般的物理实体;(2)软件的成产与硬件存在某些相同点,但有根本上的不同,软件开发是人的智力的高度发挥,而不是传统意义上的制造,它更依赖于开发人员的素质,智力,人员和组合,合作和管理;(3)软件维护与硬件维修有着本质的差别,软件维护没有硬件维护那样有可替换的标准零件;(4)软件在运行和使用期间没有硬件那样的机械磨损,老化问题,但存在退化问题;(5)基于构件的开发方法由于其自身的特点越来越受到人们的重视,这些技术可以减少开发时间、提高质量,并提高复用水平。
* 掌握P4图1-2(b)软件失效率曲线二、计算机软件的发展经历了几个阶段?各有何特征?(P1—P2)共经历了四个阶段特征:第一阶段——程序规模小且主要采用个体工作方式,开发的系统大多采用批处理技术第二阶段——引入人机交互的概念,实时系统出现,产生了第一代数据库管理系统,程序编制采用了合作的工作方式,出现了早期的软件危机第三阶段——分布式系统出现,嵌入式系统得到广泛应用,低成本硬件第四阶段——强大的桌面系统和计算机网络迅速发展时期,面向对象技术得到广泛应用,人工智能技术和专家系统开始应用于软件。
三、什么是软件危机?其产生的原因是什么?定义:软件危机是指由于落后的软件生产方式无法满足迅速增长的计算机软件应用需求,从而导致软件开发与维护过程中出现一系列严重问题的现象。
(P4)原因:(P5)(1)用户对软件需求的描述不准确、不全面,甚至有错误,以及在开发过程中,不断提出或者修改需求;(2)用户和开发人员对软件需求的理解存在差异,导致所开发的软件产品和用户需求不一致;(3)大型软件项目需要组织一定的人力共同完成,各类人员的信息交流不及时、不准确,有时还可能产生误解,软件开发人员对大型软件缺少开发经验,管理人员缺少相应的管理经验;(4)软件开发人员不能有、独立自主的处理大型软件的全部关系和各个分支,因此容易产生疏漏和错误;(5)开发技术落后,缺乏有效的方法学和工具方面的支持,过分依赖程序设计人员在软件开发过程中的技巧和创造性,加剧软件产品的个性化(6)软件产品的特殊性和人类智力的局限性,导致人们无法处理“复杂问题”,因为软件是逻辑产品,软件开发进展情况较难衡量、软件开发质量难以评价、管理和控制软件开发过程相当困难。
软件工程专业书籍读书笔记800字在阅读人教版的软件工程相关书籍后,我对软件工程这个领域有了更深入的认识。
软件工程是一门研究用工程化方法构建和维护有效的、实用的和高质量的软件的学科。
它不仅仅是编写代码,更涉及到从软件项目的需求分析、设计、编码、测试到维护的整个生命周期。
在需求分析阶段,我深刻体会到准确获取用户需求的重要性。
这就如同建造一座大楼之前要精确地知道使用者的需求一样,软件开发者需要通过各种手段,如与用户沟通、问卷调查、市场调研等方式,去挖掘隐藏在用户背后的真正需求。
如果这个环节出现偏差,那么后续的所有工作可能都会偏离正确的方向,导致最终开发出来的软件无法满足用户的期望。
软件设计阶段则像是建筑的蓝图设计。
书中介绍了多种设计方法,如结构化设计和面向对象设计。
结构化设计注重将系统分解为模块,各模块之间有着明确的层次关系和接口定义。
而面向对象设计则以对象为核心,将数据和操作封装在一起,通过对象之间的交互来实现系统功能。
这两种设计方法各有优劣,在实际项目中需要根据项目的特点进行选择。
编码阶段是将设计转化为实际可运行的代码。
编码不仅仅是机械地按照设计文档敲代码,还需要遵循一定的编码规范。
良好的编码规范有助于提高代码的可读性、可维护性和可扩展性。
这就像写文章要有一定的语法规则一样,大家都遵循相同的规范,才能方便团队成员之间的协作和代码的交接。
测试是软件工程中不可或缺的一环。
它就像对产品进行质量检验,包括单元测试、集成测试、系统测试等不同层次的测试。
通过测试可以发现软件中的错误和缺陷,及时进行修复,确保软件的质量。
维护阶段是软件生命周期中持续时间最长的一个阶段。
软件在使用过程中会不断面临新的需求和问题,需要进行修改和完善。
这就要求软件具有良好的可维护性,而这又与前面各个阶段的工作息息相关。
软件工程这本书让我认识到,软件开发是一个系统的、严谨的工程,每个环节都紧密相连,只有各个环节都做好,才能开发出高质量的软件。
1.软件是计算机系统内中与硬件相互依存的另一部分,是包含程序、数据及其相关文档的完整集合,即软件=程序+数据+相关文档。
2.软件按照功能可划分为:系统软件、支持软件、应用软件。
按照规模划分:微型软件、小型软件、中型软件、大型软件和超级软件。
3.软件危机:对软件开发成本的估计不准确,造成开发成本超出预算;开发进度不能保证,交付时间一再拖延;“已完成”的软件不能满足用户需求;软件产品质量没有保证,运算结果出错、操作死机等现象屡屡发生;软件没有适当的文档资料,或文档与最终交付的软件产品不相符,软件的可维护程度非常低;软件开发生产率赶不上硬件的发展和人们需求的增长。
4.软件工程的层次化结构:工具层,方法层,过程、技术层,质量保证层。
5.软件工程是用工程、科学和数学的原则与方法研制、维护计算机软件的有关技术和管理方法。
6.实现软件开发工程化、系统化的方法是软件生命周期法,主要划分为软件项目的准备阶段、开发阶段和运行维护阶段。
软件项目的准备阶段的主要任务是调查和分析:调查用户需求,分析软件系统项目的主要目标和开发该系统的可行性。
开发阶段:①需求分析②软件设计(概要设计、详细设计)③编码④测试运行维护阶段:改正性维护、适应性维护、完善性维护、预防性维护。
7.软件项目的开发模型:瀑布模型、原型模型、螺旋模型。
8.面向对象(对象:是现实世界中个体或者事物的抽象表示,是它的属性和相关操作的统一封装实体。
类、继承、消息)面向对象=对象+类+继承+消息9.需求分析的任务是将用户的需求转变为软件的功能和性能的描述。
软件从外部可以看作黑盒子(功能)计算机所处理的数据域描述为数据内容(数据项)、数据结构(数据线的组织形势)和数据流(数据通过系统的变化方式)。
10.软件的物理模型要给出处理功能和数据结构的实际表示形式,逻辑模型是设备类型和数据结构的存储方式。
11.需求分析步骤:调查研究,获取需求、分析建模,提炼需求、编写需求说明,描述需求、分析评审,验证需求。
1.软件危机的概念,内容,原因及消除的途径;软件危机的概念:软件危机是指在计算机软件的开发和维护过程中遇到的一系列严重问题。
概括地说,软件危机包含两方面问题:如何开发软件,以满足对软件日益增长的需求;如何维护数量不断膨胀的已有软件。
软件危机产生的原因:软件本身的复杂性、难衡量的特点;2.软件开发与维护的方法不正确。
消除软件危机的途径:(1)对计算机软件应当有一个正确的认识;(2)应当有组织、有计划、通过严格的管理手段进行软件的开发;(3)及时总结软件开发的成功技术和方法并加以推广;(4)开发和使用更好的软件工具;总之,为了解决软件危机,既要有技术措施,又要有必要的组织管理措施。
2.软件工程的定义,基本原理;定义:软件工程是指导计算机软件开发和维护的一门工程学科。
基本原理:软件工程的7条基本原理:(1)用分阶段的生命周期计划严格管理(2)坚持进行阶段评审(3)实行严格的产品控制(4)采用现代程序设计技术(5)结果应能清楚地审查(6)开发小组的人员应该少而精(7)承认不断改进软件工程实践的必要性3.软件工程方法学的基本概念、内容;基本概念:把在软件生命周期全过程中使用的一整套开发和管理技术方法的集合成为软件工程方法学,也称为范型。
软件工程方法学包含3个要素:方法、工具和过程。
内容:目前使用得最广泛地软件工程方法学,分别是传统方法学和面向对象方法学。
传统方法学也称为生命周期方法学或结构化范型。
4.软件生命周期的具体内容,每一个阶段的任务是什么?结合具体的工程例子来理解做软件项目主要分那几个个阶段。
①问题定义:确定要求解决的问题是什么②可行性研究:决定该问题是否存在一个可行的解决办法③需求分析:深入了解用户的要求,在要开发的目标系统必须做什么问题和用户取得完全一致的看法。
④概要设计:概括回答怎样实现目标系统。
概要设计又叫逻辑设计、总体设计、高层设计。
⑤详细设计:把解法具体化,设计出程序的详细规格说明。
详细设计也叫模块设计、底层设计。
软件工程(简要知识点)软件生命周 期:软件定义 软件开发问题定义(确定题目) 可行性研究 需求分析 概要设计 系统设计 详细设计系统实现编码和单元测试 综合测试运行维护:主要任务是使软件持久地满足用户的需要一、. 软件过程五个模型对比(瀑布模型、快速原型、增量、螺旋、喷泉模型) 二、可行性研究: 1、任务:用最小的代价在尽可能短的时间内确定问题是否能够解决。
2、四个方面:技术、经济、操作可行性、法律 3、数据流图四种成分:1、源点/终点 2、处理 3、数据存储 4、数据流 三、需求分析: 1、任务:确定系统必须完成哪些工作,对目标系统提出完整、清晰、具体的要 求。
2、结构化方法就是面向数据流自顶向下逐步求精进行需求分析的方法。
3、实体联系图:1、数据对象 2、属性 3、联系(1:1、1:N、M:N) 四、总体设计: 1.任务:回答“概括的说,系统应该如何实现”,用比较抽象概括的方式确定系 统如何完成预定的任务,也就是说应该确定系统的物理配置方案,并且进而确定 组成系统的每个程序结构。
2. 系统设计阶段(确定系统具体实施方案)、结构设计阶段(确定软件结构) 3.模块独立:内聚和耦合 4. 耦合表示一个软件结构内各个模块之间的互连程度,应尽量选用松散耦合的 系统5. 内聚 (Cohesion): 一个模块内各元素结合的紧密程度6.面向数据流的设计方法:变换流和事务流 五、详细设计: 1.任务:确定应该怎样具体的实现所要求的系统,也就是说经过这个阶段的设计 工作应该得出对目标系统的精确描述,从而在编码阶段可以把这个描述直接翻译 成用某种程序设计语言书写的程序。
2.过程设计的工具(程序流程图、盒图、PAD 图、判定表、判定树) 七、测试: 1、单元测试:又称模块测试。
每个程序模块完成一个相对独立的子功能,所以 可以对该模块进行单独的测试。
由于每个模块都有清晰定义的功能,所以通常 比较容易设计相应的测试方案,以检验每个模块的正确性。
1.软件危机的概念,内容,原因及消除的途径;软件危机的概念:软件危机是指在计算机软件的开发和维护过程中遇到的一系列严重问题;概括地说,软件危机包含两方面问题:如何开发软件,以满足对软件日益增长的需求;如何维护数量不断膨胀的已有软件;软件危机产生的原因:软件本身的复杂性、难衡量的特点;2.软件开发与维护的方法不正确;消除软件危机的途径:1对计算机软件应当有一个正确的认识;2应当有组织、有计划、通过严格的管理手段进行软件的开发;3及时总结软件开发的成功技术和方法并加以推广;4开发和使用更好的软件工具;总之,为了解决软件危机,既要有技术措施,又要有必要的组织管理措施;2.软件工程的定义,基本原理;定义:软件工程是指导计算机软件开发和维护的一门工程学科;基本原理:软件工程的7条基本原理:1用分阶段的生命周期计划严格管理2坚持进行阶段评审3实行严格的产品控制4采用现代程序设计技术5结果应能清楚地审查6开发小组的人员应该少而精7承认不断改进软件工程实践的必要性3.软件工程方法学的基本概念、内容;基本概念:把在软件生命周期全过程中使用的一整套开发和管理技术方法的集合成为软件工程方法学,也称为范型;软件工程方法学包含3个要素:方法、工具和过程;内容:目前使用得最广泛地软件工程方法学,分别是传统方法学和面向对象方法学;传统方法学也称为生命周期方法学或结构化范型;4.软件生命周期的具体内容,每一个阶段的任务是什么结合具体的工程例子来理解做软件项目主要分那几个个阶段;①问题定义:确定要求解决的问题是什么②可行性研究:决定该问题是否存在一个可行的解决办法③需求分析:深入了解用户的要求,在要开发的目标系统必须做什么问题和用户取得完全一致的看法;④概要设计:概括回答怎样实现目标系统;概要设计又叫逻辑设计、总体设计、高层设计;⑤详细设计:把解法具体化,设计出程序的详细规格说明;详细设计也叫模块设计、底层设计;⑥编码和单元测试:编写程序的工作量只占软件开发全部工作量的10%-20%;⑦综合测试:软件测试的工作量通常占软件开发全部工作量的40%-50%;⑧软件维护:软件维护的费用通常占软件总费用的55%-70%;①②③为软件定义时期,④⑤⑥⑦为软件开发阶段;④⑤为系统设计,⑥⑦为系统实现;5.理解几个典型软件过程的内容及其优点与缺点:瀑布模型、增量模型、快速原型模型、螺旋模型、喷泉模型等;瀑布模型内容:瀑布模型是带“反馈环”的;优点:1可强迫开发人员采用的规范的方法结构化技术;2严格地规定了每个阶段必须提交的文档;3要求每个阶段交出的所有产品都必须经过质量保证小组的仔细验证;缺点:瀑布模型是由文档驱动的;1开发过程一般不可逆,否则代价太大;2实际的项目开发过程很难严格按照模型进行;3客户往往很难清楚地给出所有需求,而该模型却要求如此;4软件的实际情况必须到项目开发的后期客户才能看到,这要求客户有足够的耐心;快速原型模型是快速建立起来的可以在计算机上运行的程序,它所能完成的功能往往是最终产品能完成的功能的一个子集;不带反馈环优点:软件产品的开发基本上是线性顺序进行的;1可以得到比较良好的需求定义,容易适应需求的变化;2有利于开发与培训的同步;3开发费用低、开发周期短且对用户更友好;缺点:1客户与开发者对原型理解不同;2准确的原型设计比较困难;3不利于开发人员的创新;增量模型也称为渐增模型;使用增量模型开发软件时,把软件产品作为一系列的增量构件来设计、编码、集成和测试;优点:在较短时间内可以向用户提交可完成部分工作的产品,逐步增加产品功能可以使用户有比较充裕的时间学习和适应新产品,从而减少一个全新的软件可能给客户组织带来的冲击;1人员分配灵活,刚开始不用投入大量资源;2如果核心产品很受欢迎,则可增加人力实现下一增量;3可先发布部分功能给客户,对客户起到镇定剂的作用;缺点:1并行开发构件有可能遇到不能集成的风险,软件必须具备开放式的体系结构2增量模型的灵活性可以使其适应这种变化的能力大大优于瀑布模型和快速原型模型,但也很容易退化为边做边改模型,从而使软件过程失去整体性;螺旋模型的基本思想是使用原型及其他方法来尽量降低风险;理解这种模型的一种简便方法是把它看做在每个阶段之前都增加了风险分析过程的快速原型模型;优点:1设计上的灵活性,可以在项目的每个阶段进行变更;2以笑得分段来构建大型系统,使成本计算变得简单容易;3客户始终参与每个阶段的开发,保证项目不偏离正确的方向一击项目的可控性;4随着项目的推进,客户始终掌握项目的最新信息,从而他能够和管理层有效地交互;缺点:1采用螺旋模型需要具有相当丰富的风险评估经验和专门知识,在风险较大的项目开发中,如果未能够及时标示风险,势必造成重大损失;2过多的迭代次数会增加开发成本,延迟提交时间;喷泉模型:喷泉模型与传统的结构化生存期比较,具有更多的增量和迭代性质,生存期的各阶段可以相互重叠和多次反复,而且项目的整个生存期中还可以嵌入子生存期;就像水喷上去又可以落下来,可以落在中间,还可以落在底部;6.了解可行性研究中的任务和过程;用最小的代价在尽可能短的时间内确定问题是否能够解决;不是解决问题,而是确定问题是否值得去解决;可行性研究的根本任务:对以后的行动方案提出建议;实质:一次大大压缩简化了的系统分析和设计;任务:1.初步确定项目的规模,目标,约束和限制;2.在澄清了问题定义之后,分析员应该导出系统的逻辑模型;3.从系统逻辑模型出发,探索若干种可供选择的主要解法即系统实现方案;4.对每种解决方法都要研究它的可行性;技术可行性、经济可行性、操作可行性过程:1.复查系统规模和目标访问关键人员,描述目标系统的限制和约束;2.研究目前正在使用的系统:现有系统的问题;3.导出新系统的高层逻辑模型;4.进一步定义问题;5.导出和评价供选择的解法;6.推荐行动方针;7.草拟开发计划;8.书写文档提交审查;7.掌握系统流程图的概念和方法,会从具体的案例中抽象出系统流程图p388.掌握数据流图的概念和方法,会从具体的案例中画出0层数据流图和功能级数据流图P409.掌握数据字典的内容、方法、用户和实现p47内容:数据字典由4类元素定义组成;1数据流;2数据流分量即数据元素;3数据存储;4处理;定义数据的方法:数据字典中的定义就是对数据自顶向下的分解;由数据元素组成数据的方式只有下述3种基本类型:顺序选择重复用途:作为分析阶段的工具;实现:P4910.了解成本/效益分析方法p50货币的时间价值投资回收期:就是使累计的经济效益等于最初的投资费用所需的时间纯收入:整个生存周期之内的累计经济效益折成现在值-投资;投资回收率:现在的投资额P和估算出的将来每年的收益Fn,假设系统的使用寿命为n年;11.了解需求分析过程中任务是什么.p471.确定对系统的综合要求功能需求;指定系统必须提供的服务性能需求;指定系统必须满足的定时约束或容量约束可靠性和可用性需求;应定量指定出错处理需求;指环境错误,非系统本身的错误;2.分析系统的数据要求接口需求;常见的接口需求有:用户接口需求、硬件接口需求、软件接口需求、通信接口需求; 约束;常见的约束有:精度;工具和语言约束;设计约束;应该使用的标准;应该使用的硬件平台;逆向需求;说明软件系统不应该做什么;将来可能提出的要求;3.导出系统的逻辑模型;用数据流图、实体-联系图、状态转换图、数据字典和主要的处理算法描述这个逻辑模型;4.修正系统开发计划;用数据流图、实体-联系图、状态转换图、数据字典和主要的处理算法描述这个逻辑模型;12.理解面向数据流自顶向下逐步求精的方法和意义;p59结构化分析方法就是面向数据流自顶向下逐步求精进行需求分析的方法;通过可行性研究已经得出了目标系统的高层数据流图,需求分析的目标之一就是把数据流和数据存储定义到元素级;方法:为了达到这个目标,通常从数据流图的输出端着手分析,这是因为系统的基本功能是产生这些输出,输出数据决定了系统必须具有的最基本的组成元素;意义:1对数据流图细化之后得到一组新的数据流图,不同的系统元素之间的关系变得更清楚了; 2对这组新数据流图的分析追踪可能产生新的问题,这些问题的答案可能又在数据字典中增加一些新条目,并且可能导致新的或精化的算法描述;3随着分析过程的进展,经过提问和解答的反复循环,分析员越来越深入具体地定义目标系统,最终得到对系统数据和功能要求的满意了解;13.理解分析及建模的意义,需求分析中应该建立哪三种模型有哪些工具来帮助建立这些模型14.需求分析需要建立三种模型:1.数据模型:实体-联系图E-R数据对象即实体之间的关系2.功能模型:数据流图DFD系统对数据进行变换的功能3.行为模型:状态转换图系统的各种状态行为模式及状态之间的转换15.掌握实体关系E-R图的概念,内容和实现方法,能结合具体实例建立实体关系图;P6216.掌握状态图的概念,内容,实现方法和作用;p6517.掌握层次方框图、warnier图、IPO图的概念,内容和作用p6818.有穷状态机的概念和内容;Petri的概念;P77有穷状态机:状态集、输入集、转换函数、初始态、终态集Petri:P8219.总体设计是做什么总体设计的过程是怎样的P9120.总体设计的目标是将需求分析阶段定义的系统模型转换成相应的软件结构,以规定软件的形态及各成分间的层次关系、界面及接口要求;总体设计通常由两个过程组成:系统设计阶段,确定系统的具体实现方案;结构设计阶段,确定软件结构;典型的设计过程包括:1.设想选择的方案2.选取理想的方案3.推荐最佳方案4.功能分解5.设计软件结构6.设计数据库7.制定测试计划8.书写文档9.省查和复审21.掌握软件设计的几个设计原理,理解他们的内容和意义;p941模块化就是把程序划分成独立命名且可独立访问的;2抽象;3逐步求精;4信息隐藏和局部化;5模块独立;它有两个定性标准度量:内聚和耦合;22.掌握耦合和内聚的概念和内容,理解这些原理对设计有哪些指导意义;耦合:耦合是对一个软件结构内不同模块之间互连程度;内聚:内聚标志着一个模块内各个元素彼此结合的紧密;耦合是影响软件复杂程度的一个重要因素;设计时力争做到高内聚,并且能够辨认出低内聚的模块,有能力通过修改设计提高模块的内聚程度并且降低模块间的耦合程度,从而获得较高的模块独立性;23.耦合包含了哪些类型每个类型的具体内容是什么由低到高24.1非直接耦合:就是没有耦合;2数据耦合:就是参数传递耦合,它属于低级别耦合;3标记耦合:标记耦合指两个模块之间传递的是数据结构;4控制耦合:它属于中级别耦合,比如调度程序与进程之间的耦合,就是控制耦合;5外部耦合:属于高级别耦合6公共耦合:指通过一个公共数据环境相互作用的那些模块间的耦合;7内容耦合:属于最高级别耦合,例如,一个模块利用分支或跳转技术,转入到另一个模块中去执行,就是内容耦合;25.启发性规则的内容及部分概念;1.改进软件结构提高模块独立性2.模块规模应该适中3.深度、宽度、扇出和扇入都应适当4.模块的作用域应该在控制域之内5.力争降低模块接口的复杂程度6.设计单入口单出口的模块7.模块功能应该可以预测26.层次图、HIPO图和结构图的内容;p10227.掌握面向数据流的设计方法,怎样用变换分析法基于数据流图设计出软件总体结构了解其中涉及到的概念,结合例子理解具体是怎么做的;p104概念:面向数据流的设计方法把信息流映射成软件结构,信息流决定了映射的方法,信息流有两种类型:1、信息沿输入通路进入系统,同时由外部形式变换成内部,进入系统的信息通过变换中心,经过加工处理以后再沿输出通路变换成外部形式离开软件系统;当数据流图具有这些特征时,这种信息流就叫做变换流;2、数据沿输入通路到达一个处理T,这个处理根据输入数据的类型在若干个动作序列中选出一个来执行;这类数据流应该划为一类特殊的数据流,称为事务流;28.详细设计是做什么p117详细设计阶段的根本目标是确定应该怎样具体地实现所要求的系统,即经过这个阶段的设计工作,应该得出对目标系统的精确描述,从而在编码阶段可以把这个描述直接翻译成用某些程序设计语言书写的程序;29.什么是结构程序设计p117结构程序设计是尽可能少用GOTO语句的程序设计方法,最好仅在检测出错误时才使用GOTO语句,而且应该总是使用前向GOTO语句;30.人机界面设计问题包含哪些p1221、系统响应时间;2、用户帮助设施;3、出错信息处理;4、命令交互31.掌握设计过程中用到的工具:程序流程图的概念,内容和方法;盒图的概念、内容和方法;会结合实例使用这些工具;掌握PAD图的概念和内容;掌握判定表的概念和内容;要结合实例来掌握它们;P12432.结合Jackson图来掌握面向数据结构的设计方法;p13033.如何度量程序算法的复杂性p13634.掌握几种测试:单元测试、集成测试、确认测试、白盒测试技术和黑盒测试技术;掌握它们的概念,内容和方法;P14635.理解软件维护的定义、特点和维护过程;P189定义:在软件已交付使用之后,为了改正错误或满足新的需要而修改软件的过程;特点:1结构化维护与非结构化维护差别巨大2维护的代价高昂3维护的问题很多维护过程:1、维护组织2、维护报告3、维护的事件流4、保存维护记录5、评价维护活动;36.掌握面向对象方法学的要点,理解面向对象方法学的优点;P203四个要点:对象、类、继承、消息优点:1、与人类习惯的思维方法一致2、稳定性好3、可重用性好4、较易开发大型软件产品5、可维护性好6、掌握面向对象的概念;37.掌握面向对象的概念;P209对象对象的形象表示,对象的定义,对象的特点其他概念类,实例,消息,方法,属性,封装,继承,多态性,重载38.面向对象建模是建立哪三个模型它们的具体内容是什么P21539.1、描述系统数据结构的对象模型类图:表示静态的、结构化的系统的“数据”性质;它是对模拟客观世界实体的对象彼此间的关系的映射,描述了系统的静态结构;2、描述系统控制结构的动态模型状态转换图:动态模型表示瞬时的,行为化的系统的“控制”性质,它规定了对象模型中的对象的合法变化序列;3、描述系统功能的功能模型用例图,数据流图:功能模型表示变化的系统的“功能”性质,它指明了系统应该“做什么”,因此更直接地反映了用户对目标系统的需求;40.建立对象模型的内容是什么P235建立对象模型,需要定义一组图形符号,并且规定一组组织这些符号以表示特定语义的规则;也就是说,需要用适当的建模语言来表达模型,建模语言由记号即模型中使用的符号和使用记号的规则语义、语法和语用组成;41.掌握用UML提供的类图来建立对象模型的方法;理解类图的定义、基本符号和具体内容;类图建立对象模型的方法:1、定义类2、定义属性3、定义服务4、定义类与类之间的各种关系关联、泛化、依赖和细化;类图的定义:类图描述类与类之间的静态关系;类图是一种静态模型,它是创建其他UML图的基础;基本符号:UML中类的图形符号为长方形,用两条横线把长方形分成上、中、下3个区域下面两个区域可省略3个区域分别放类的名字、属性和服务;42.能结合实例掌握类图中类与类之间的关系:关联、泛化继承、依赖和细化;能根据实例情况正确判断出类与类之间的具体关系类型;关联:关联表示两个类的对象之间存在某种语义上的联系;泛化继承:UML中的泛化关系就是通常所说的继承关系,它是通用元素和具体元素之间的一种分类关系;具体元素完全拥有通用元素的信息,并且还可以附加一些其他信息;泛化关系指出类与类之间存在“一般-特殊”关系;泛化可进一步分成普通泛化和受限泛化;依赖:描述两个模型元素类、用例等之间的语义连接关系:其中一个模型元素是独立的,另一个模型元素不是独立的,它是依赖于独立的模型元素,如果独立的模型元素改变了,将影响依赖于它的模型元素;细化:当对同一个事物在不同抽象层次上描述时,这些描述之间具有细化关系;43.动态模型的概念、内容;P223概念:动态模型表示瞬时的、行为化的系统的“控制”性质,它规定了对象模型中的对象的合法变化序列;内容:动态模型是基于事件共享而互相关联的一组状态图的集合;44.功能模型的概念、内容和建立功能模型的方法;P224概念:功能模型表示变化的系统的“功能”性质,它指明了系统应该“做什么”,因此直接地反应用户对目标系统的需求;内容:功能模型由一组数据流图组成;用例图也是进行需求分析和建立功能模型的强有力工具;方法:创建用例模型的工作包括:定义系统,寻找行为者和用例、描述用例,定义用例之间的关系,确认模型;其中,寻找行为者和用例是关键;45.掌握用例图的概念、内容和方法;P224概念:用例图包括模型元素有系统、行为者、用例和用例之间的关系;内容:系统、用例、行为者、用例之间的关系;方法:创建用例模型的工作包括:定义系统,寻找行为者和用例、描述用例,定义用例之间的关系,确认模型;其中,寻找行为者和用例是关键;46.掌握面向对象分析的基本过程:三个子模型与5个层次;P232三个子模型:静态结构对象模型交互次序动态模型数据变换功能模型复杂问题大型系统的对象模型通常由5个层次组成:主题层、类与对象层、结构层、属性层和服务层;47.结合实例来掌握面向对象分析过程中建立对象模型的方法包含哪些步骤;P231 1.首先,系统分析员要对需求文档进行分析;发现和改正需求文档中的歧义性、不一致性,剔除冗余的内容,挖掘潜在的内容,弥补不足,从而使需求文档更完整、更准确;2.然后,是需求建模;系统分析员根据提取的用户需求,即用面向对象观点建立对象模型、动态模型和功能模型;3.最后,是需求评审;通过用户、领域专家、系统分析员和系统设计人员的评审,并进行反复修改后,确定需求规格说明;48.结合实例来掌握面向对象分析过程中建立动态模型的方法包含哪些步骤;P24749.结合实例来掌握面向对象分析过程中建立功能模型的方法包含哪些步骤;P25350.能结合实例画事件跟踪图P24951.能结合实例画类的状态图P25052.能结合实例画出0层数据流图与功能级数据流图;P42。
第一章一、软件的特点1、软件:计算机程序及其说明程序的各种文档2、程序:是计算机任务的处理对象和处理规则的描述3、文档:是有关计算机程序功能、设计、编制、使用的文字或图形资料4、软件的特点:1)软件是一种逻辑产品2)软件产品的生产主要是研制3)软件产品不会用坏,不存在磨损、消耗问题4)软件产品的生产主要是脑力劳动5)软件费用不断增加,软件成本相当昂贵二、软件生产有几个阶段,各有何特征1、程序设计时代生产方式:个体手工劳动工具:机器语言、汇编语言开发方法:追求程序运行效率硬件特征:价格贵、存储容量小、运行可靠性差软件特征:只有程序、程序设计概念,不重视程序设计方法2、程序系统时代生产方式:作坊式的小集团合作生产生产工具:高级语言开发方法:个人技巧,开始提出结构法方法硬件特征:速度、容量、工作可靠跃居第一明显提高软件特征:程序员数量猛增加,导致软件危机出现。
3、软件工程时代生产方式:工程化的生产生产工具:数据库、开发工具、开发环境、网络、分布式、面向对象技术来开发软件硬件特征:向超高速、大容量、微型化以及网络化方向发展三、什么是软件危机,其产生的原因是什么?1、软件危机软件发展到第二阶段末期,一些复杂的、大型的软件开发项目提出来了,但是,软件开发技术进步一直不能满足发展的要求。
在软件开发中遇到的问题找不到解决办法,使问题积累起来,形成了尖锐的矛盾,因而导致了软件危机。
2、软件危机的表现1)经费预算经常突破2)开发的软件不能满足用户的要求3)开发的软件可维护性差4)软件的软件可靠性差3、原因1)软件的规模越来越大,结构越来越复杂2)软件开发管理困难而复杂3)软件开发费用不断增加4)软件开发技术落后5)生产方式落后6)开发工具落后四、什么是软件工程,其目标和内容是什么?1、软件工程用科学知识和技术原理来定义、开发、维护软件的一门学科2、目标建造一个大型软件系统,一般有以下几个目标1)付出较低的开发成本2)达到软件要求的功能3)取得较好的软件性能4)开发的软件易于移植5)需要较低的维护费用6)能按时完成开发任务及时交付使用7)开发的软件可靠性高3、内容软件开发技术:主要研究软件开发方法、软件开发过程、软件开发工具和环境软件开发管理:软件管理学、软件经济学、软件必理学4、面临的问题1)软件的费用2)软件的可靠性3)软件的维护4)软件的生产率5)软件的重用五、什么是软件的生存周期,它有哪几个活动1、软件的生存周期一个软件从提出开发要求开始直到该软件报废为止的整个日期。
2、活动1)可行性分析和项目开发计划2)需要求分析3)概要设计4)详细设计5)编码6)测试7)维护六、什么是软件生存周期模型,有哪些主要的模型1、生存周期模型是描述软件开发过程中各种活动如何执行的模型2、主要的模型1)瀑布模型将软件生存周期各个活动规定为依线性顺序连接的若干阶段的模型。
它是一种理想的线性开发模式,缺乏灵活性,特别是不支解决软件需要不明确或不准确的问题2)增量模型是一种非整体开发模型。
开发出一部分向用户展示一部分。
具有较大的灵活性,适合于软件需要不明确,设计方案有一定风险的软件项目3)螺旋模型是一种风险驱支模型。
适合于大型软件的开发。
4)喷泉模型是一种以用户需要为动力,以对象作为驱动的模型。
适合于面向对象的开发方法5)基于知识的模型它把瀑布模型和专家系统结合在一起。
6)变换模型是一种适合于形式化开发方法的模型。
七、什么是软件开发方法,有哪些方法1、软件开发方法是一种使用早已定义好的技术集及符号表示习惯来组织软件生产的过程2、有如下主要的方法1)结构化方法结构化方法是由结构化分析、结构化设计、结构化程序设计构成。
它是一种面向数据流的开发方法数据流图建立功能模型软件结构图建立物理模型结构化程序设计来实施详细设计对于特别复杂的项目不太适应2)Jackson方法是一种面向数据结构的开发方法3)维也纳开发方法(VDM)VDM是一种基于模型的方法。
它的主要思想是将软件系统当作模型来描述,把软件的输入、输出看作模型对象。
4)面向对象的开发方法基本出发点:尽可能按照人类认识世界的方法和思维来分析和解决问题包括:面向对象分析、面向对象设计、面向对象实现。
作者:思渊提交日期:2006-10-21 14:49:00第二章一、可行性研究的任务是什么?1、技术可行性1)开发的风险2)资源的有效性3)技术4)开发人员的评估可行性2、经济可行性3、社会可行性二、可行性研究有哪此步骤1)确定项目规模和目标2)研究正在运行的系统3)建立新系统的高层逻辑模型4)导出和评价各种方案5)推荐可行性方案6)编写可行性报告三、可行性研究报告有哪些内容?1、引言2、可行性研究前提3、对现有系统的分析4、所建议系统的技术可行性5、所建议系统的经济可行性分析6、社会因素可行性分析7、其它可供选择方案8、结论意见四、成本、效益分析有哪些指标1、货币时间价值2、投资回收期3、纯收入五、项目开发技术有哪些内容1、项目概述2、实施计划3、人员组织及分工4、交付期限作者:思渊提交日期:2006-10-21 14:50:00第三章一、什么是需求分析?需求分析阶段的基本任务是什么?1、需求分析开发人员要准确理解用户的要求,进行细致的调查分析,将用户非形式的需求陈述转化为完整的需求定义,再由需求定义转换为相应的形式功能规约的过程。
1.1需求分析的难点1)问题的复杂性2)交流障碍3)不完备性和不一致性4)需求易变性1.2适用的基本原则1)必须能够表达和理解问题的数据域和功能域2)可以把子个复杂问题功能进行分解并可逐层细化3)建模2、基本任务1)问题识别这些需求包括:功能需求,性能需求,环境需求,用户界面需求2)分析与综合,导出软件的逻辑模型3)编写文档主要包括:编写需求规则说明书,初步用户使用手册,确认测试计划,修改完善软件开发计划二、什么是结构化分析方法?该方法使用什么描述工具?1、结构化分析方法(SA)是面向数据流进行需求分析的方法2、策略自顶向下逐层分解的分析策略3、描述工具利用图形等半形式化的描述方式表达需求1) 数据流图描述系统的分解即系统由哪几个部分组成,各部分之间有什么联系2)数据字典数据流图中每一个图形元素。
3)描述逻辑加工的结构化语言,判定表,判定数三、结构化分析方法通过哪些步骤来实现1、了解当前系统的工作流程,获得当前系统的物理模型2、抽象出当前系统的逻辑模型3、建立目标系统的逻辑模型4、作进一步的补充和优化四、什么是数据流图?其作用是什么?其中的基本符号各表示什么含义?1、数据流图,简称DFD,是SA方法中用于表示系统逻辑模型的一种工具,是一种功能模型。
2、作用:它以图形的方式描绘数据在系统中流动和处理的过程,反映系统必须完成的逻辑功能。
3、基本符号及含义箭头:数据流圆或椭圆:加工双杠:数据存储方框:数据的源点和起点五、画数据流图的步骤1、首先画系统的输入输出,即先画顶层数据流图2、画系统内部,即画下层数据流图。
一般将层号从0开始编号,采用自顶向下,由外向内的原则六、画数据流图就注意的事项1、命名:合适的命名使人们易于理解其含义。
2、画数据流而不是控制流,反映做什么,数据流名称只能是名词或名词短语。
3、一般不画物质流4、每个加工至少有一个输入流和一个输出流5、编号6、父图与子图平衡:了图的输入输出数据流同父图相应加工的输入输出数据流必须一致。
7、局部数据存储当某层数据流图中的数据存储不是父图中相应加工的外部接口,而只是本图中某些加工之间的数据接口,即为局部数据存储8、提高数据流图的易理解性七、什么是数据字典?其作用是什么?它有哪些条目?1、数据字典简称DD,用来定义数据流图中各个成分的具体含义的,它以一种准确的、无二义的说明方式为系统的分析、设计及维护提供了有关元素的一致的定义和详细的描述2、作用1)为系统的分析、设计及维护提供了有关元素的一致的定义和详细的描述2)为分析人员查找数据流图中有关名字的详细定义而服务的3)它有数据流图共同构成了系统的逻辑模型,是需求规格说明书的主要组成部分3、条目数据流、数据项、数据存储、基本加工八、描述加工逻辑有哪些工具1、结构化语言是介于自然语言和形式语言之间的一种半形式语言。
它的结构分为外层和内层1)外层:用来描述控制结构,采用顺序、选择、重复三种基本结构2)内层:采用祈使语句的自然语言短语。
2、判定表3、判定树九、什么是IDEF方法?IDEF0方法有什么特点?1、IDEF方法是在结构分析与设计技术的基础上提出来的,用于进行复杂系统分析和设计的方法。
它分为三个部分:1) IDEF0:描述系统的功能活动及其联系,建立系统的功能模型。
2) IDEF1:描述系统的信息及其联系,建立系统的信息模型3) IDEF2:进行系统模拟,建立系统动态模型。
2、特点1)采用方框和箭头等简单图形符号描述系统的活动和数据流,描述活动所受到的约束和实现机制2)采用严格的自顶向下、逐层分析的方式建立系统功能模型。
十、简述SA方法的优缺点1、优点1)公认的、有成效的、技术成熟、使用广泛的一种方法。
它比较适合于开发数据处理类型软件的需求分析2)该方法利用图形等半形式化工具表达需求,简明、易读,也易于使用,为后一阶段的设计、测试提供了有利条件2、缺点1)传统的SA方法主要用于数据处理方面的问题,它仅是一个静态模型,没反映处理顺序即控制流程。
因此,不适合描述实时控制系统。
2)SA方法在使用DFD在分析与描述“数据要求”方面有局限的3)DFD不适合描述人机界面系统的要求4)为了更精确地描述软件包需求,提高软件系统的可靠性、安全性,也便于实现自动化,SA 方法可与形式方法结合起来。
作者:思渊提交日期:2006-10-21 14:51:00第四章一、什么是软件概要设计?该阶段的基本任务是什么?1、软件概要设计在需求分析的基础上通过抽象和分析将系统分解成模块,确定系统功能的实现即把软件需求转换为软件包的过程。
2、基本任务2.1设计软件体系结构1)采用某种设计方案,将一个复杂的系统按功能划分成模块2)确定每个模块的功能3)确定模块之间的调用关系4)确定模块之间的接口5)评价模块结构的质量2.2数据结构及数据库设计1)数据结构设计2)数据库设计:概念设计、逻辑设计、物理设计2.3编写概要设计文档主要有:1)概要设计说明书2)数据库设计说明书3)用户手册4)用户测试计划2.4评审二、软件设计的基本原理包括哪些内容1、模块化1)模块:是可组合、分解和更换的单元2)基本属性接口:指模块的输入和输出功能:模块实现什么功能逻辑:如何实现要求的功能及所需要的数据(内部特性)状态:该模块的运行环境,即模块调用和被调用关系2、抽象是认识复杂现象过程中使用的思维工具,即抽出事物的本质的共同特性而暂不考虑它的细节,不考虑其它因素。