软件工程整理
软件工程笔记整理

软件工程概论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 、设计:在需求的基础上,给出被建系统的软件设计方案。
软件工程导论 重点知识整理 考前准备

软件工程关注于大型程序的构造:一个人短时间写的程序是小程序,多人半年以上时间为大型程序。
软件工程的基本原理1. 用分阶段的生命周期计划严格管理2. 坚持进行阶段评审3. 实行严格的产品控制4. 采用现代程序设计技术5. 结果应能清楚地审查6. 开发小组的人员应该少而精7. 承认不断改进软件工程实践的必要性软件工程包括技术和管理两方面,是技术和管理紧密结合所形成的工程学科。
管理:是通过计划、组织和控制等一系列活动,合理地配置和使用各种资源,以达到既定目标的过程。
范型:在软件生命周期全过程中使用的一整套技术方法的集合为方法学,也称为范型。
软件工程三要素:方法,工程,过程软件工程方法学:分为传统方法学和面向对象方法学软件生命周期1.问题定义2. 可行性研究3. 需求分析4. 总体设计5. 详细设计6. 编码和单元测试7.综合测试8. 软件维护可行性研究过程1. 复查系统规模和目标2. 研究目前正在使用的系统3. 导出新系统的高层逻辑模型4. 进一步定义问题5. 导出和评价供选择的解法6. 推荐行动方针7. 草拟开发计划8. 书写文档提交审查在澄清问题定义后,分析员应导出系统的逻辑模型,然后探索主要解法,对每种解法研究可行性,至少三种可行性:技术可行性(使用现在的技术能实现这个系统吗?),经济可行性(这个系统的经济效益能超过它的开发成本吗?),操作可行性(系统的操作方式在这个用户组织内行的通吗?),必要时还需要法律、社会效益等发面研究每种解法可行性。
数据流图(DFD):是一种图形化技术,它描绘信息流和数据从输入移动到输出的过程中所经受的变换。
数据流4种基本符号:在数据流图中应该描绘所有可能的数据流向,而不应该描绘出某个数据流的条件。
数据字典:对数据流图中包含的所有元素的定义的集合;数据流图与数据字典共同构成系统的逻辑模型。
数据字典的内容:1)数据流;2)数据元素(数据流分量);3)数据存储;4)处理。
数据元素的别名就是该元素的其他等价的名字,出现别名主要有下述三个原因:①对于同样的数据,不同的用户使用了不同的名字;②一个分析员在不同时期对同一个数据使用了不同的名字;③两个分析员分别分析同一个数据流时,使用了不同的名字。
软件工程基础知识点整理版

软件工程基础知识点整理版1.软件生命周期:软件工程将开发和维护软件的过程划分为不同的阶段,包括需求分析、设计、编码、测试、部署和维护。
这些阶段构成了软件生命周期。
2.软件需求:软件需求工程是对软件需求进行分析、规划和定义的过程。
它包括对用户需求的收集、分析和确认,以及对系统功能和性能的详细规范。
3.软件设计:软件设计是定义软件的结构和组成部分的过程。
它包括对软件系统的整体架构和各个模块的设计。
4.软件编码:软件编码是将设计好的软件系统转化为具体的程序代码的过程。
编码过程需要使用编程语言,并遵循编码规范和最佳实践。
5.软件测试:软件测试是验证软件是否满足需求规格的过程。
它包括对软件的功能、性能和安全性进行测试,并发现和修复软件中的错误。
6.软件配置管理:软件配置管理是对软件开发过程中各个组成部分的控制和跟踪。
它包括版本控制、配置项管理和变更控制等活动。
7.软件质量保证:软件质量保证是确保软件达到高质量标准的一系列过程和活动。
它包括质量计划、质量评审、质量度量和缺陷管理等。
8.软件项目管理:软件项目管理是规划、组织和控制软件开发和维护活动的过程。
它包括项目计划、进度管理、团队管理和风险管理等。
9.软件工具和环境:软件工程使用各种工具和环境来辅助软件开发和维护。
这些工具包括集成开发环境、版本控制工具、测试工具和项目管理工具等。
10.软件工程伦理:软件工程伦理是软件工程师在工作中需要遵循的道德准则和原则。
它包括保护用户隐私、遵守知识产权法律和保持专业水平等方面。
以上是软件工程的一些基础知识点,但软件工程领域非常广泛,还有很多其他的知识点值得深入学习和研究。
尽管有一些基础知识点可以帮助我们理解和实践软件工程的基本原理和方法,但要成为一名优秀的软件工程师,还需要不断学习和提升自己的技能和知识。
软件工程导论(整理)

软件工程导论(整理)软件工程导论软件工程导论是计算机科学与技术专业的一门重要课程,通过对软件工程的基本概念、方法和技术进行介绍和讲解,使学生对软件开发过程有全面的认识。
本文将从软件工程的定义与特点、软件生命周期、软件开发方法和软件工程的挑战等方面进行论述。
一、软件工程的定义与特点软件工程是指研究和应用科学原理、方法和工具,对软件进行全面的规划、开发、测试、部署和维护的一门工程学科。
软件工程具有以下特点:1. 抽象性:软件是虚拟存在,不同于硬件,具有高度的抽象性。
2. 复杂性:软件开发是一项复杂的任务,涉及多个环节和多个参与者之间的协同合作。
3. 可变性:软件需求会随着时间和需求的变化而变化,需要具备良好的变更管理能力。
4. 可靠性:软件在使用过程中需要具备稳定、健壮和可靠的特性。
5. 可维护性:软件应该具备良好的可维护性,便于后续对其进行修改和维护。
二、软件生命周期软件生命周期是指软件从提出到退役的全过程,一般包括需求分析、设计、编码、测试、部署和维护等阶段。
1. 需求分析:明确用户需求,采集并分析用户的需求,形成软件的需求规格说明。
2. 设计:根据需求分析的结果,进行系统的设计,包括软件架构设计、模块设计等。
3. 编码:根据设计结果,进行具体代码的编写,实现软件的功能。
4. 测试:对编码后的软件进行测试,验证软件是否满足需求并具备稳定性。
5. 部署:将测试通过的软件部署到目标环境中,进行系统集成和性能调优等操作。
6. 维护:对已发布的软件进行修改、优化、升级和Bug修复等工作,确保软件持续稳定运行。
三、软件开发方法软件开发方法是指用于规范和指导软件开发过程的方法论和模型。
其中较为常见的软件开发方法有瀑布模型、迭代模型和敏捷开发等。
1. 瀑布模型:瀑布模型是软件开发过程中最早提出的方法之一,将软件开发过程划分为需求分析、设计、开发、测试和维护等阶段,每个阶段按顺序进行。
2. 迭代模型:迭代模型将软件开发过程划分为多个迭代周期,每个周期完成一部分需求的开发和测试,并通过反复迭代逐步完善软件。
软件工程习题整理

软件工程习题整理一、软件需求分析与建模1.软件需求分析的要求?答:了解软件需求的目标和任务;了解软件需求分析的基本过程;掌握功能建模;掌握行为建模;掌握数据建模;了解结构化需求分析的若干技术;了解需求规格说明和需求评审的主要内容。
2.需求分析的基本任务是什么?答:要准确地定义新系统的目标,为了满足用户需求,回答系统必须―做什么‖的问题。
获得需求规格说明书。
3.软件需求分析的原则?答:能够表达和理解问题的信息域和功能域;能够对问题进行分解和不断细化,建立问题的层次结构;需要给出系统的逻辑视图和物理视图。
4.什么是需求分析?需求分析阶段的基本任务是什么?答:需求分析是指:开发人员要准确理解用户的要求,进行细致的调查分析,将用户非形式的需求陈述转化为完整的需求定义,再由需求定义转换到相应的形式主义功能规约(需求规格说明)的过程。
需求分析阶段的基本任务是:(1) 问题识别:双方对问题的综合需求:a.功能需求b.性能需求c.环境需求d.用户界面需求.(2) 分析与综合,导出软件的逻辑模型.(3) 编写文档5.什么是结构化分析方法?该方法使用什么描述工具?答:结构化分析方法:是面向数据汉进行需求分析的方法。
描述工具:a、数据流图b、数据字典c、描述加工逻辑的结构化语言、判定表、判定树。
6.什么是数据流图?其作用是什么?其中的基本符号各表示什么含义?答:数据流图:简称DFD,是SA(结构化分析)方法中用于表示系统逻辑模型的一种工具,是一种功能模型。
作用:它以图形的方式描绘数据在系统中流动和处理的过程,反映系统必须完成的逻辑功能.基本符号有四种:→,箭头,表示数据流; ○,圆或椭圆,表示加工; =,双杠,表示数据存储;□,方框,表示数据的源点或终点.7.简述SA方法的优缺点。
答:优点:1)公认的、有成效的、技术成熟、使用广泛的一种方法,比较适合于开发数据处理类型软件的需求分析。
2)该方法利用图形等半形式化工具表达需求,简明、易读,也易于使用,为后一阶段的设计、测试、评价提供了有利条件。
山东大学-软件工程复习重点整理

第一章1.1软件工程〔SE〕的定义、向、作用:SE:在将有关软件开发与应用的概念科学体系化的根底上,研究如有方案、有效率、经济的开发和利用能在就算机上正确运行的软件的理论和技术的工程法学,一些开发和维护软件的法、过程、原那么。
是一个系统工程,既有对技术问题的分析与综合,也有对开发过程和参与者的管理。
SE的向:面向对象模式,构造化模式,基于过程的模式等SE的作用:付出较低的开发本钱,到达要求的软件功能,取得较好的软件性能,开发的软件易于移植,需要较低的维护费用,能按时完成开发工作,及时交付使用。
1.2开发模式:软件开发的全部过程,活动和任务的构造框架,它能直观的表达的表达软件开发全过程,明确要完成的主要活动,任务和开发策略。
1.3说明错误、故障和失效的含义及联系〔并举例〕:错误:是在软件生产过程中人为产生的错误〔需求说明中的错误,代码中的错误〕故障:是在功能实现过程中产生的问题;是错误导致的结果,是在软件中一个错误的表现〔一个错误可能产生多个缺陷,静态存在的〕失效:是相对于系统指定行为的偏离,系统违背了它应有的行为〔动态存在的〕联系:当一个开发者编写程序时,会在代码中出现错误。
当这个程序被编译或集成到一个系统中时,系统就存在故障。
当你运行这个系统时,可能会导致失效,即人们产生错误,故障是错误的结果〔部观角:从开发者的角度对待问题〕,当故障执行时出现失效〔外部视角:从用户角度看到的问题〕。
并不是所有的错误会导致故障,并非每个缺陷都对应相应的失败。
1.4软件质量应从哪几个面衡量,论述之:〔1产品的质量〕〔2过程的质量〕〔3商业环境背景下的质量〕〔1〕产品的质量:用户从失败的数目和类型等外部特征进展评价,如果软件具有足够的功能并且易于学习和使用,用户就断定软件是高质量的;开发者从缺陷的数目和类型等部特征来作为产品质量的依据。
〔2〕过程的质量:有很多过程都会影响到最终的产品质量,只要有活动出了过失,产品的质量就会受到影响;开发和维护过程的质量与产品的质量是同等重要的。
软件工程考试资料整理

1.在结构化分析中,__数据字典__用于详细地定义数据流图中的成分。
2.结构化程序设计是一种程序设计技术,它采用__自顶向下、逐步求精__的设计方法和顺序、选择、循环三种基本控制结构构造常态程序。
3.结构化分析方法中,数据流图的四种基本成分为:处理、源点或终点__数据存储和数据流_。
4.模块内部的算法设计在结构化方法的___详细设计__阶段进行。
5.定性度量模块独立性的两个标准是内聚性和___耦合性___。
6.从模块内外的联系来看,结构化设计的要求是___高内聚低耦合_。
7.耦合性和内聚性是衡量___模块独立性_的两个定性的标准。
8.在一段程序中,将多次出现的一组语句设计为一个子程序,供多个部分调用,这种情况出现的内聚称为___偶然内聚_____。
9.一个进行学生成绩统计的模块其功能是先对学生的成绩进行累加,然后求平均值,则该模块的内聚性是 ____顺序内聚__。
10.在模块结构图中,直接调用某一模块的其他模块数称为该模块的__扇入数_11.在软件开发过程中要产生大量的信息,要进行大量的修改,软件配置管理能协调12.软件开发,并使混乱减到最低程度。
13.软件可维护性度量的七个质量特性是可理解性、可测试性、可修改性、可靠性、可移植性、可使用性和效率。
14.为了便于对照检查,测试用例应由输入数据和预期的输出结果两部分组成。
15.软件结构是以模块为基础而组成的一种控制层次结构。
16.在结构化分析中,用于描述加工逻辑的主要工具有三种,即:结构化语言、判定表、17.判定树。
18.结构化语言是介于自然语言和形式语言之间的一种半形式语言。
19.第二代CASE工具的特点是支持图形表示的 __结构化方法__________ 。
如数据流图与结构图。
20.在面向对象方法中,对象实现了数据和操作的结合,使数据和操作 _封装__ 于对象的统一体中。
21.面向对象分析的目的是对客观世界的系统进行建模。
22.为了使应用软件适应计算机环境的变化而 _____修改软件_的过程称为适应性维护。
软件工程复习资料整理

《软件工程》试题参考答案(1)卷一、单向选择题(四选一、每小题3分,共18分)1、需求分析的任务不包括(B)。
A.问题分析B.系统设计C.需求描述D.需求评审。
2、当模块中包含复杂的条件组合,只有( A)能够清晰地表达出各种动作之间的对应关系。
0802A.判定表和判定树C.流程图3、以下不属于逻辑覆盖的是(D)。
1402A.语句覆盖C.条件覆盖B.盒图D 关系图B.判定覆盖D.基本路径4、为适应软件运行环境的变化而修改软件的活动称为( B)。
1501A.纠错性维护B.适应性维护C.改善性维护 D 预防性维护二、填空题(每空2分,共18分)1. 软件可靠性是指在给定的时间间隔内,程序成功运行的(概率)。
01012. 高级语言:独立于机器,面向过程或面向(对象)01013. 软件项目管理的范围主要集中于 3 个P 上,即:People 人员、Problem 问题和(过程)。
02014. 由于维护或在维护过程中其他一些不期望的行为引入的错误称为维护的(副作用)。
15045. 在公式V(G) = E – N + 2 中: E 为程序图G 中边的总数;N 为程序图中结点的总数。
V(G)又称为图 G 的环形(复杂度)0204。
6. 任何一个基于计算机系统都可以用输入-处理-输出(IPO)图来描述,它将该系统转换成一个信息变换模型。
03037. 为提高可交互性一般对所有可能造成损害的用户操作动作,应坚持要求用户(确认),例如,提问“你确实要删除…?”。
12048. 文档是一种数据媒体和其上所记录的(数据)。
0101三、判断题(每小题2分,共24分,错误打X、正确打√)1. 用户对软件需求的描述不准确,往往是产生软件危机的原因之一。
(√)01022. 一个好的开发人员应具备的素质和能力包括善于与周围人员团结协作,建立良好的人际关系,善于听取别人的意见。
(√)02063. 目前的绝大多数软件都不适合于快速原型技术。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第一章软件工程研究的主要内容:为了在有限的资金、资源和时间条件下开发满足客户要求的高质量软件,需要研究与软件开发和管理相关的模型、方法、技术等。
在《计算机科学技术百科全书》中,对计算机软件作出如下定义:计算机软件指计算机系统中的程序及其文档。
程序是计算任务的处理对象和处理规则的描述。
任何以计算机为处理工具的任务都是计算任务。
处理对象是数据或信息。
处理规则一般指处理的动作和步骤。
文档是为了便于了解程序所需的阐述性资料。
软件工程的定义:⑴IEEE在软件工程术语汇编中的定义:①软件工程是将系统化的的方法用于软件的开发、运行和维护,即将工程化应用于软件;②在①中所述方法的研究⑵软件工程是应用计算机科学等原理,开发软件的工程。
软件工程借鉴传统工程的原则、方法,以提高质量、降低成本为目的。
其中,计算机科学、数学用于构造模型与算法,工程科学用于制定规范、设计范型、评估成本及确定权衡,管理科学用于计划、资源等管理。
软件工程的框架:目标,过程和原则软件工程目标是指生产具有正确性、可用性、和开销合宜的产品。
正确性指软件产品达到预期功能的程度。
可用性指软件基本结构、实现及文档为用户可用的程度。
开销合宜指软件开发、运行的整个开销满足用户要求的程度。
软件工程原则包括围绕工程设计、工程支付和工程管理所提出的以下4条基本原则(1)选取适宜的开发模型(2)采用合适的设计方法(3)提供高质量的工程支撑(4)重视软件工程的管理软件生存周期是指软件产品或软件系统从产生、投入使用到被淘汰的全过程。
软件生存周期分为6个阶段:计算机系统工程、需求分析、设计、编码、测试、运行和维护软件过程是生产一个最终满足需求且达到工程目标的软件产品所需的步骤。
软件过程是软件生存周期中的一系列相关的过程。
过程是活动的集合,活动是任务的集合。
软件过程有3层含义:一是个体含义,即指软件产品或系统在生存周期中的某一类活动的集合;二是整体含义,即指软件产品或系统在所有上述含义下的软件过程的总体;三是工程含义,即指解决软件过程的工程,应用软件工程的原则、方法来构造软件过程模型、并结合软件产品的具体要求进行实例化,以及在用户环境,并结合软件产品的具体要求进行实例化,以及在用户环境下运作,以此进一步提高软件生产率,降低成本。
软件过程模型也称软件开发模型,是软件开发全部过程、活动和任务的结构框架。
典型的软件过程模型有:瀑布模型、演化模型(如增量模型、原型模型、螺旋模型)、喷泉模型、基于构件的开发模型和形式方法模型等。
瀑布模型是1970年由W.Royce提出的,它给出了软件生存周期活动的固定顺序,上一阶段的活动完成后向下一阶段的活动过渡,最终得到所开发的软件产品。
其特征是:接受上一阶段活动的结果作为本阶段活动的输入依据上一阶段活动的结果实施本阶段应完成的活动对本阶段的活动进行评审将本阶段活动的结果作为输出,传递给下一阶段瀑布模型也逐渐暴露出它的不足(1)不少软件的需求存在着不确定性,(2)如果发现不满足客户需求的问题,那么修改软件的代价是巨大的演化模型,是从构造初始的原型出发,逐步将其演化成最终软件产品的过程。
演化模型适用于对软件需求缺乏准确认识的情况。
典型的演化模型有:增量模型、原型模型、螺旋模型增量模型将软件的开发过程分成若干个日程时间交错的线性序列,每个线性序列产生软件的一个可发布的“增量”版本,后一个版本是对前一个版本的修改和补充,重复增量发布的过程,直至产生最终的完善产品。
增量模型融合了瀑布模型的基本成分和演化模型的迭代特征,强调每一次增量都发布一个可运行的产品。
特征:(1)适用于需求经常发生变化的软件开发(2)在市场急需而开发人员和资金不能在设定的市场期限之前实现一个完善的产品,此时也适宜用增量模型进行开发(3)能有计划的管理技术风险原型方法的目的是定义软件的总体目标,标识需求,然后快速制定原型开发的计划,确定原型的目标和范围,采用快速设计的方式对其建模并构建原型根据原型使用的目的不同,可以分为:探索型、实验型、演化型原型使用策略:废弃策略、追加策略螺旋模型将原型实现的迭代特征与瀑布模型中控制的和系统化的方面结合起来,不仅体现了这两种模型的优点,而且还增加了风险分析其有四个方面的任务:制定计划、风险分析、工程实施、客户评估一种基于构件的开发模型包括两个部分:领域工程和应用系统工程领域工程的目的:构建领域模型、领域基准体系结构和可复用构件库应用系统工程的目的:使用可复用构件组装应用系统基于构件的开发模型的作用(优点):提高软件生产率、提高软件质量、降低成本、提早上市时间敏捷(Agile)开发的4个价值观:(1)个人和交互高于过程和工具(2)可运行软件高于详尽的文档(3)与客户协作高于合同谈判(4)对变更及时做出反应高于遵循计划计算机辅助软件工程(computer aided sofrware engineering,CASE)是指使用计算机及相关的软件工具辅助软件开发、维护、管理等过程中各项活动的实施,以确保这些活动能高效率、高质量地进行CASE研究和实践的重点集中在CASE工具和软件开发两个方面软件开发环境(software development environment)是支持软件产品开发的软件系统第二章业务过程工程的目标是:定义一个能有效地利用信息进行业务活动的体系结构。
语境中分析和设计3种体系结构:数据体系结构、应用体系结构和技术基础设施。
产品工程的目标:将客户期望的一组已定义的能力转换成工作产品。
体系结构包含4种不同的系统元素:软件、硬件、数据(和数据库)和人员。
计算机系统工程目的是分析基于计算机的系统的功能、性能等要求,并把它们分配到基于计算机系统的各个系统元素中,确定它们的约束条件和接口。
可行性研究分析主要从经济、技术、法律等方面分析所给出的解决方案是否可行,能否在规定的资源和时间的约束下完成。
可行性分析包括:机会选择、初步可研究性分析、详细可研究性分析第三章需求工程是应用已证实有效的技术、方法进行需求分析,确定客户需求,帮助分析人员理解问题,评估可行性,协商合理的解决方案、无歧义地规约方案、确认规约以及将规约转换到可运行的系统时的管理要求,需求工程通过合适的工具和符号系统地描述待开发系统及其行为特征和相关约束,形成需求文档,并对用户不断变化的需求演进给予支持可将需求工程分为6个阶段:需求获取、需求分析与协商、系统建模、需求规约、需求验证以及需求管理在需求获取阶段出现的问题:(1)用户提出的要求超出的要求软件系统可以实现的范围或实现能力(2)不同的用户提出了相互冲突的需求软件需求是指用户对目标软件系统在功能、行为、性能、设计约束等方面的期望创建用况模型的主要步骤如下:(1)确定谁会直接使用该系统,即执行者(2)选取其中一个执行者(3)定义该执行者希望系统做什么,执行者希望系统所做的第件事将成为一个用况(4)对每件事来说,何时执行者会使用系统,通常会发生什么,这就是腹部的基本过程(5)描述该用况的基本过程需求分析原则:必须能够表示和理解问题的信息域必须能够定义软件将完成的功能必须能够表示软件的行为(作为外部事件的结果)必须划分描述数据、功能和行为的模型,从而可以分层次地揭示细节分析过程应该从要素信息转向细节信息问题分析的目的是要能心层次化的方式对问题进行分解和不断细化常用的分析方法有以下几种:面向数据流的结构化分析方法(SA)面向数据结构的分析方法面向对象的分析方法(OOA)软件需求规约是分析任务的最终产物,通过建立完整的信息描述、详细的功能和行为描述、性能需求和设计约束的说明、合适的验收标准,给出对目标软件的各种需求需求验证的目的是要检验需求是否能够反映用户的意愿第四章软件需求分析解决“做什么”的问题,软件设计过程则解决“怎么做”的问题。
软件设计主要包含两个阶段:软件体系结构设计阶段和部件级设计阶段软件体系结构设计将软件需求转化为数据结构和软件的系统结构。
部件级设计将软件体系结构中的结构性元素转化为软件部件的过程性描述,得到软件详细的数据结构和算法。
体系结构设计定义了软件的整体结构,由软件部件、外部可见的属性和它们之间的关系组成。
判断设计好坏的3条特征,也就是软件设计过程的目标:设计必须实现分析模型中描述的所有显式需求,必须满足用户希望的所有隐式需求。
设计必须是可读、可理解的,使得将来易于编程、易于测试、易于维护。
设计应从实现角度出发,给出与数据、功能、行为相关的软件全貌。
软件设计的过程:制定规范、体系结构和接口设计、数据/类设计、部件级(过程)设计、编写设计文档软件的设计人员通常采用的原则:抽象与逐步求精、模块化和信息隐藏抽象是在软件设计的规模逐渐增大的情况下,控制复杂性的基本策略。
软件设计中的主要抽象手段有:过程抽象和数据抽象。
过程抽象(功能抽象):任何一个完成明确定义功能的操作都可被使用者当作单个实体对待,尽管这个操作实际上由一系列更低级的操作来完成的。
数据抽象:定义数据类型和施加于该类型对象的操作,并限定了对象的取值范围,只能通过这些操作修改和观察数据。
模块化:把软件按照规定原则,划分为一个个较小的,相互独立的但又相互关联的部件。
模块化实际上是系统分解和抽象的过程。
模块:数据说明、可执行语句等程序对象的集合,是单独命名的,并且是可以通过名字来访问。
模块化的理论依据:把复杂问题分解成许多容易解决的小问题,则原来复杂的问题也就容易解决了。
采用模块化原理使程序错误通常局限在有关的模块及它们之间的接口中,模块化使软件容易调试和测试,有助于提高软件的可靠性,同时变动往往只涉及少数几个模块,从而模块化能够提高软件的可修改性;使软件结构清晰。
这样每个模块的内容不仅容易设计也容易阅读/和理解。
模块独立:模块完成独立的功能并且与其他模块的接口简单,符合信息隐蔽,模块间关联和依赖程度尽可能小。
模块的独立性:第一,功能被划分,并且接口被简化,所以具有有效模块化的软件更易于开发。
第二,由于因设计和编码修改引起的副作用受到局限,错误传播被减小,并且模块复用成为可能,所以独立的模块更易于维护和测试。
内聚cohesion是一个模块内部各个元素彼此结合的紧密程度的度量。
耦合coupling是模块之间的相对独立性(互相连接的紧密程度)的度量。
高内聚性低功能内聚顺序内聚通信内聚过程内聚时间内聚逻辑内聚巧合内聚强模块独立性弱功能单一功能分散低耦合性高非直接耦合数据耦合标记耦合控制耦合外部耦合公共耦合内容耦合强模块独立性弱软件体系结构关注系统的一个或多个结构,包含软件部件、这些部件的对外可见的性质以及它们之间的关系。
Bass提出体系结构重要的3个关键理由:方便利益相关人员的交流;有利于系统设计的前期决策;建立了一个系统的可传递的抽象常见的软件体系结构:单主机结构、客户/服务器(C/S)结构、浏览器/服务器(B/S)结构。