软件工程整理
软件工程笔记整理
软件工程概论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.测试用例由和预期的两部分组成.4.软件测试方法一般分为两大类:方法和方法。
5.动态测试通过发现错误。
根据的设计方法不同,动态测试又分为与两类。
6.静态测试采用和的手段对程序进行检测。
7.人工审查程序偏重于的检验,而软件审查除了审查还要对各阶段进行检验。
8.计算机辅助静态分析利用工具对测试程序进行分析。
9.黑盒法只在软件的处进行测试,依据说明书,检查程序是否满足要求。
10.白盒法必须考虑程序的和,以检查的细节为基础,对程序中尽可能多的逻辑路径进行.11.白盒测试是测试,被测对象是,以程序的为基础设计测试用例.12.逻辑覆盖是对程序内部有存在的逻辑结构设计测试用例,根据程序内部的逻辑覆盖程度又可分为、、、、和6种覆盖技术。
13.实际的逻辑覆盖测试中,一般以覆盖为主设计测试用例,然后再补充部分用例,以达到覆盖测试标准. 14.循环覆盖是对程序内部有存在的逻辑结构设计测试用例,它通过限制来测试。
15.基本路径测试是在程序基础上,通过分析控制构造的复杂性,导出集合,从而设计测试用例。
16.黑盒测试是测试,用黑盒技术设计测试用例有4种方法:、、和。
17.等价类划分从程序的说明,找出一个输入条件(通常是或),然后将每个输入条件划分成两个或多个。
18.边界值分析是将测试情况作为重点目标,选取正好等于、刚刚大于或刚刚小于的测试数据。
如果输入或输出域是一个有序集合,则应选取集合的元素和元素作为测试用例。
19.在测试程序时,根据经验或直觉推测程序中可能存在的各种错误,称为。
20.因果图的基本原理是通过画图,把用自然语言描述的转换为,最后为每一列设计一个测试用例。
21.测试的综合策略是在测试中,联合使用各种方法。
通常先用法设计基本的测试用例,再用法补充一些必要的测试用例。
软件工程师重点知识整理
软件工程师重点知识整理软件工程师是现代信息技术领域中的核心职业之一。
他们不仅需要具备扎实的编程技能,还需要了解软件开发的各个环节和流程。
本文将重点整理软件工程师需要掌握的知识,以帮助读者更好地理解和应用软件工程的核心概念和方法。
一、软件开发生命周期软件开发生命周期指的是软件从规划、设计、开发、测试、部署到维护的整个过程。
软件工程师需要了解每个阶段的任务和目标,以确保软件的质量和可靠性。
1.1 需求分析阶段需求分析是软件开发的第一步,它涉及与客户沟通、收集需求、分析需求并明确软件产品的特性和目标。
1.2 设计阶段软件设计涉及架构设计、模块设计以及数据库设计等。
合理的设计能够提高软件的性能、可靠性和可维护性。
1.3 开发阶段在开发阶段,软件工程师需要运用合适的编程语言和工具,编写代码并实现软件功能。
同时,代码的规范性和可读性也是非常重要的。
1.4 测试阶段在测试阶段,软件工程师需要进行单元测试、集成测试和系统测试,以检查软件是否符合预期的功能和质量标准。
1.5 部署阶段部署阶段涉及软件的安装、配置和上线等操作,软件工程师需要确保软件能在目标环境中正常运行。
1.6 维护阶段软件建立之后还需要进行维护和更新,软件工程师需要及时修复错误、改进功能和满足用户新的需求。
二、编程语言和工具2.1 常见编程语言软件工程师需要掌握至少一种编程语言,如Java、Python、C++等。
不同的编程语言适用于不同的应用场景,选择合适的编程语言是软件开发的关键。
2.2 集成开发环境(IDE)IDE是软件开发过程中必不可少的工具,它提供了编码、调试、编译等多种功能,如Eclipse、IntelliJ IDEA等。
2.3 版本管理工具版本管理工具能够帮助软件工程师管理代码的变更和协同开发,如Git、SVN等。
掌握版本管理工具可以提高团队的协作效率和代码的可维护性。
2.4 软件测试工具软件测试是保障软件质量的重要环节,软件工程师需要熟悉一些测试工具,如JUnit、Selenium等。
软件工程导论(整理)
一、软件危机与软件工程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.软件的定义软件是能够完成预定功能和性能的可执行的计算机程序,包括使程序正常执行所需要的数据,以及有关描述程序操作和使用的文档。
(软件=程序+文档)2.软件工程的定义●是指导计算机软件开发和维护的一门工程学科;●采用工程化的原理与方法对软件进行计划、开发和维护;●把证明正确的管理技术和最好技术综合运用到软件开发中;●研究经济地开发出高质量的软件方法和技术;●研究有效维护软件的方法和技术。
3.软件危机的概念,及出现的原因软件开发技术的进步未能满足发展的要求。
在软件开发中遇到的问题找不到解决的办法,问题积累起来,形态尖锐的矛盾,导致了软件危机。
产生原因:⑴软件规模越来越大,结构越来越复杂⑵软件开发管理困难而复杂。
⑶软件开发费用不断增加。
⑷软件开发技术落后。
⑸生产方式落后,仍采用手工方式。
⑹开发工具落后,生产率提高缓慢。
4.三种编程范型的特点(1)过程式编程范型:把程序理解为一组被动的数据和一组能动的过程所构成;程序=数据结构+算法;着眼于程序的过程和基本控制结构,粒度最小(2)面向对象编程范型:数据及其操作被封装在对象中;程序=对象+消息;着眼于程序中的对象,粒度比较大(3)基于构件技术的编程范型:构件是通用的、可复用的对象类;程序=构件+架构;眼于适合整个领域的类对象,粒度最大二、软件生存周期与软件过程1、软件生存周期的定义,把生存周期划分为若干阶段的目的是什么,有哪几个主要活动●定义:一个软件从开始立项起,到废弃不用止,统称为软件的生存周期●目的:软件生存周期划分为计划、开发和运行3个时期;把整个生存周期划分为较小的阶段,给每个阶段赋予确定而有限的任务,就能够化简每一步的工作内容,使因为软件规模而增长而大大增加了软件复杂性变得较易控制和管理。
●主要活动:需求分析、软件分析、软件设计、编码、软件测试、运行维护(P19)2、软件生命周期划分为哪几个阶段软件生命周期分为三个时期八个阶段:●软件定义:问题定义、可行性研究;●软件开发:需求分析、概要设计、详细设计、编码、测试;●软件运行:软件维护3、瀑布模型的特点和缺陷特点:线性模型,每一阶段必须完成规定的文档(阶段间的顺序性和依赖性)优点:●可强迫开发人员采用规范化的方法。
软件工程概述考点整理
软件工程概述考点整理●软件及其本质特性●软件的概念●指令的集合(计算机程序),通过执行这些指令可以满足预期的特征、功能和性能需求;●数据结构,使得程序可以合理利用信息;●软件描述信息,它以硬拷贝和虚拟形式存在,用来描述程序的操作和使用。
●软件 = 程序 + 数据 + 文档●软件是逻辑的而非物理的系统元素,因此,软件具有完全不同的特性:软件不会“磨损”。
●软件的失效曲线图●软件的特性●无形性●成本主要体现在软件的开发和研制上●软件不会被用坏,只能被淘汰●软件生产方式原始●软件成本昂贵●软件的本质特性●复杂性:软件是人类思维和智能的一种延伸,他比任何以往的人类的创造物都要复杂的多●一致性●软件不能独立存在,需要依附于一定的环境(如硬件、网络以及其他软件)●软件必须遵从人为的惯例并适应已有的技术和系统●软件需要随接口不同而改变,随时间推移而变化,而这些变化是人为设计的结果●可变性●人们总是认为软件是容易修改的,但忽略了修改带来的副作用●不断的修改最终导致软件的退化,从而结束其生命周期●不可见性●软件是一种“看不见、摸不着”的逻辑实体,不具有空间的形体特征●开发人员可以直接看到程序代码,但是源代码并不是软件本身●软件以机器代码的形式运行,但是开发人员无法看到源代码是如何运行的●软件的分类●按功能划分●系统软件:与计算机硬件紧密配合以使计算机各个部分与相关软件及数据协调、高效工作的软件。
如操作系统、数据库管理系统等●支撑软件:协助用户开发软件的工具性软件●应用软件:在特定领域内开发、为特定目的服务的一类软件●●按规模划分●微型1人1~4周0.5k●小型1人1~6月1k~2k●中型2~5人1~2年5k~50k●大型5~20人 2~3年50k~100k●甚大型100~1000人4~5年1M(=1000K)●极大型2000~5000人5~10年 1M~10M●按工作方式划分●实时处理软件:在事件或数据产生时,立即处理,并及时反馈信息●分时软件:允许多个联机用户同时使用计算机的软件●按服务对象的范围划分●项目软件:定制软件●产品软件:面向市场●按使用频度划分●一次使用的软件●频繁使用的软件●失效的影响划分●高可靠性软件●一般可靠性软件●软件的发展●第一阶段(20世纪50-60年代):程序设计阶段,此时硬件已经通用化,但软件生产却是个体化。
软件工程复习资料(整理)
什么是软件?什么叫软件工程?它的目标是什么?软件:程序与文档。
定义一:应用于计算机软件的定义,开发和维护的一整套方法、工具、文档、实践标准和工序。
定义二:在软件设计、实现、检查、运行、维护各个过程中适用的立足于科学基础上的实用方法。
软件工程目标:用较少的投资获得高质量的软件。
什么是软件危机?主要表现?软件危机:在计算机软件的开发和维护过程中,所遇到的一系列严重问题,这一系列问题使软件产生了危机。
表现在:⑴对软件开发成本和进度的估计常常很不准确。
⑵用户易对“已完成的”软件系统产生不满。
⑶软件质量不可靠。
⑷软件常常是不可维护的。
⑸软件通常没有适当的文档资料。
⑹软件成本越来越高。
⑺软件开发生产率提高速度慢,跟不上发展。
可行性研究的目的是什么?用最小的代价在尽可能短的时间内确定问题是否能够解决。
若值得解,则推荐一个较好的方案,并制定一个初步的计划;若无可行解,则建议停止开发工程(以免浪费时间、人力、和金钱)数据流图的基本要点是什么?描绘“做什么”,而不考虑“怎样做”。
软件生成期分几个阶段?几阶段的主要工作是?生命周期各阶段的基本任务:1、问题定义:要解决的问题是什么?2、可行性研究:问题是否有行得通的解决办法?3、需求分析:确定目标系统必须具备哪些功能。
4、总体设计:应如何解决这个问题。
5、详细设计:如何具体实现这个系统?6、编码和单元测试:写出正确的、容易理解的、容易维护的程序模块,并测试编写出的每一个模块。
7、综合测试:通过各种类型的测试使软件达到预定的要求。
8、软件维护:通过各种必要的维护活动使系统持久地满足用户的需要。
何为功能模块?设计模块?功能模块:在分析阶段由系统分析员对该系统应完成的功能进行规定的模块。
设计模块:在后面设计阶段对如何实现这些功能进行描述的模块。
HIPO PSL PAD SADT 中文意思SADT:结构分析设计方法。
PSL:问题说明。
PSA:问题说明分析器。
HIPO:H图加IPO,即层次图加输入/处理/输出图。
软件工程习题整理
5. 什么是结构化分析方法?该方法使用什么描述工具?
答:结构化分析方法:是面向数据汉进行需求分析的方法。 描述工具:a、数据流图 b、数据字典 c、描述加工逻辑的结构化语言、判定
9. 简述需求分析工作可以分成哪四个方面?软件需求分析的有哪三
个基本原则?
答:对问题的识别、分析与综合,制定规格说明和评审 三个基本原则:必须能够表达和理解问题的数据域和功能域;必须按自顶向下, 逐步分解的方式对问题进行分解和不断细化;要给出系统的逻辑视图和物理视图.
10. 简述需求分析常用的分析方法
功能性注释一般放在实现该功能的程序段的前面,描述功能的注释应解释程
序段,而不是解释每一条语句;使用空格、括号、空行、间隔标志使注释与代码 容易区分。状态性注释一般紧跟在引起状态变化语句的后面,注释要正确,错误 或有歧义的注释容易引起误解。
11. 什么是结构化程序设计?
答:当前广泛使用的是结构化程序设计方法 SP(Structured Programming),它是与 结构化分析 SA 和结构化设计 SD 方法相衔接的。是用于软件编码的基本技术, 目的在于写出结构清晰、易于理解也易于验证的程序。
对估算软件中错误的数量以及开发该软件的工作量有帮助,从而也可以作为 评测软件的质量好坏的依据。
8. 软件编码的目的是什么?
软件编码的目的,是将软件的定义转换成能在具体计算机上实现的形式。 详细设计说明书是软件编码阶段的设计依据与基础。
9. 选择程序设计语言应考虑以下方面:
(1)选用的程序设计语言应该有理想的模块化机制,具有较好的可读性控制 结构和数据结构,能减少程序错误,结构清晰;
软件工程导论简答题整理版
软件工程导论简答题整理版1. 什么是软件工程?软件工程是指通过系统性的、可量化的方法,对软件的开发、运行和维护进行管理,以提高软件质量和效率的学科。
2. 为什么需要软件工程?软件工程的出现是为了解决传统的软件开发方式中存在的问题,例如项目延期、质量低下和开发成本高等。
通过软件工程的方法和原则,可以规范开发过程,提高开发效率和质量。
3. 软件生命周期是什么?软件生命周期是指从软件开发开始到废弃的整个过程。
它包括需求分析、设计、编码、测试、部署和维护等阶段。
4. 什么是软件需求?软件需求是对软件系统功能、性能和其他特性的描述和规定。
它包括用户需求、系统需求和软件需求规格说明等。
5. 如何进行软件需求分析?软件需求分析是指对软件需求进行细化和明确,以便于后续的设计和开发工作。
可以通过访谈用户、观察业务流程和收集用户反馈等方式进行需求分析。
6. 什么是软件设计?软件设计是指根据软件需求,定义软件系统的结构、组件和接口等,以满足需求的功能和质量要求。
7. 软件设计有哪些原则?软件设计应遵循高内聚、低耦合、模块化、可重用、可维护等原则。
同时,还需要考虑软件的可靠性、可扩展性和性能等因素。
8. 软件测试的目的是什么?软件测试的目的是评估软件系统的质量和功能是否符合需求规格。
通过测试可以发现软件中的错误和缺陷,并促使其修复,以提高系统的稳定性和可靠性。
9. 软件测试方法有哪些?常见的软件测试方法包括黑盒测试、白盒测试和灰盒测试。
黑盒测试关注输入和输出,不关心内部实现;白盒测试关注程序内部结构和代码逻辑;灰盒测试结合了黑盒测试和白盒测试的思想。
10. 什么是软件配置管理?软件配置管理是指对软件配置项进行控制和管理,保证软件系统的可控性和可维护性。
它包括配置项的标识、变更控制、版本管理和发布管理等。
11. 什么是软件项目管理?软件项目管理是指对软件项目进行计划、组织、指导和控制,以达到项目的目标和要求。
它包括进度管理、质量管理、风险管理和团队管理等方面。
软件工程重点整理
可以把软件开发的本质概括为:不同抽象层术语之间,以及不同抽象层处理逻辑之间的映射需求分析产生的正式文档是需求规约在结构化分析方法中,表示“数据的静态结构”的术语是数据存储对模块的宽度影响最大的因素是模块的扇出下列术语,可用于抽象客观世界中事物的是类大学由若干专业系构成,则大学与专业的关系是组合下列软件测试技术中,依据程序逻辑结构的是白盒测试技术单元测试期间,通常考虑模块的重要的执行路径软件基本过程指那些与软件生产直接相关的活动集,可分为供应过程、开发过程、运行过程、维护过程和获取过程在常见的软件开发模型中,适用于项目的开发风险很大或客户不能确定系统需求的模型是螺旋模型CMMI 能力等级中的 3 级是已定义级软件生产率、软件质量满足不了社会发展的需求,并成为其发展的制约因素,这一现象被称为软件危机对于单一的一个需求,必须具有的基本性质:必要的、无歧义的、可测试的、可跟踪的以及可测量的。
需求规约的基本性质包括重要性和稳定性程度、可修改的、完整的和一致的在结构化分析方法中,可采用结构化自然语言、判定表和判定树描述加工用于定义数据流图包含的所有数据流和数据存储的数据结构,直到给出构成以上数据的各数据项的基本数据类型的工具是数据字典在UML 中,用于描述关联的一定“内涵”的术语是关联名RUP 利用UML 提供的术语和工具定义了需求获取层、系统分析层、设计层和实现层,并给出了实现各层模型之间映射的基本活动以及相关的指导软件测试是一个有程序的过程,包括测试设计、测试执行以及测试结果比较等由于软件错误的复杂性,在软件工程测试中,应综合运用测试技术,并且应实施合理的测试序列:单元测试、集成测试、有效性测试和系统测试《IS0/IEC 软件生存周期过程12207—1995》标准按过程主体把软件生存周期过程分为基本过程、支持过程和组织过程针对开发的CMMI 是一个有关产品和服务的过程改善的成熟度模型,集成了 3 个源模型:软件CMM、系统工程CMM和产品集成开发CMMCMMI 中,遵循一个过程可达到的预期结果的程度是指过程能力CMMI 模型基于过程途径思想,通过过程把软件质量的 3 个支撑点:受训的人员、规程和方法、工具和设备进行集成,以开发所期望的系统/产品请简述计算机软件的概念以及提出软件工程概念的目的(1)计算机软件一般是指计算机系统中的程序及其文档(2)其中,程序是计算机任务的处理对象和处理规则的描述(3)文档是为了理解程序所需的阐述性资料(4)软件工程概念的提出,其目的是倡导以工程的原理、原则和方法进行软件开发,以解决出现的软件危机。
软件工程师复习资料整理清单
软件工程师复习资料整理清单一、引言在软件工程师的职业道路上,复习是非常重要的一环。
复习资料的整理不仅有利于知识的巩固,还可以提高复习效率。
本文将为大家提供一份软件工程师复习资料整理清单,帮助大家系统地准备复习内容。
二、基础知识1. 编程语言:包括但不限于Java、C++、Python、JavaScript等常用编程语言的语法、特性、面向对象思想等方面的知识。
2. 数据结构与算法:复习线性表、树、图等常用数据结构,并了解各种排序算法、查找算法、常见算法思想等。
3. 计算机网络:了解计算机网络的基本概念、协议、网络层次结构以及常见的网络攻击与防范措施等。
三、软件开发1. 软件设计原理:掌握面向对象设计原则、设计模式等,了解软件设计的思路和方法。
2. 软件测试与调试:了解常用的测试方法和工具,并掌握如何进行软件调试和故障排查等技巧。
3. 软件质量与维护:了解软件质量管理的基本概念和方法,了解软件维护的流程和技巧。
四、数据库1. 关系型数据库:了解关系型数据库的基本概念、SQL语言以及常用的关系型数据库管理系统(如MySQL、Oracle等)的使用。
2. 非关系型数据库:了解非关系型数据库的特点、分类和应用场景,并了解一些常见的非关系型数据库(如MongoDB、Redis等)。
3. 数据库设计与优化:了解数据库的设计原则、范式理论以及常见的数据库优化策略等。
五、项目管理与团队协作1. 软件开发流程:了解软件开发过程中的需求分析、设计、编码、测试等各个环节,并掌握常用的软件开发模型(如瀑布模型、敏捷开发等)。
2. 版本控制工具:学习使用常见的版本控制工具(如Git、SVN 等),了解分支管理、代码合并等基本操作。
3. 团队协作与沟通:了解团队协作的重要性,学习有效的沟通技巧和团队合作方法。
六、实践项目1. 实践项目经验:通过参与实际开发项目,积累项目经验,掌握项目管理的流程和技巧。
2. 开源项目参与:参与开源项目的开发,学习优秀的代码风格和设计思想,并与其他开发者进行交流与合作。
软件工程知识点整理
1、计算机软件概念软件指计算机系统中的程序及其文档。
程序是计算任务的处理对象和处理规则的描述文档是为了便于了解程序所需的阐明性资料,文档一般是给人看的2、软件发展的3个阶段(了解)程序设计阶段——50至60年代程序系统阶段——60至70年代软件工程阶段——70年代以后3、软件工程概念(1)把系统化的、规范化的、可度量的途径应用于软件开发、运行和维护的过程,也就是把工程化应用于软件中;(2)研究(1)中提到的途径3、软件生存周期概念及其6个阶段软件有一个孕育、诞生、成长、成熟、衰亡的生存过程。
为计算机软件的生命周期。
软件生命周期的六个步骤,即制定计划、需求分析、设计、程序编码、测试及运行维护。
4、瀑布模型的思想、特点及其局限性思想:(1)软件开发过程与软件生命周期是一致的(2)相邻二阶段之间存在因果关系(3)需对阶段性产品进行评审特点:(1)接受上一阶段活动的结果作为本阶段活动的输入(2)依据上一阶段活动的结果哦实施本阶段应完成的活动(3)对本阶段的活动进行评审(4)将本阶段活动的结果作为输出,传递给下一阶段局限性:(1)缺乏灵活性,如用户需求一开始很难确定(2)到最后阶段才能得到可运行的软件版本5、增量模型思想、特点和局限性(1)增量模型将软件的开发过程分成若干个日程时间交错的线性序列,每个线性序列产生软件的一个可发布的“增量”版本,后一个版本是对前一版本的修改和补充,重复增量发布的过程,直至产生最终的完善产品。
(2)增量模型融合了瀑布模型的基本成分(重复地应用)和演化模型的迭代特征(3)增量模型强调每一个增量都发布一个可运行的产品(第一个增量是核心产品)·特点:增量模型的特点是引进了增量包的概念,无须等到所有需求都出来,只要某个需求的增量包出来即可进行开发。
虽然某个增量包可能还需要进一步适应客户的需求并且更改,但只要这个增量包足够小,其影响对整个项目来说是可以承受的。
·增量模型特别适用于:1、需求经常变化的软件开发2、市场急需而开发人员和资金不能在设定的市场期限之前实现一个完善的产品的软件开发·增量模型能有计划地管理技术风险,如早期增量版本中避免采用尚未成熟的技术。
软件工程考试复习名词解释整理
1.软件生存期:一个软件从定义到开发、使用和维护,直到最终被废弃,要经历一个漫长的时期,通常把软件经历的这个漫长的时期称为生存周期。
软件生存周期就是从提出软件产品开始,直到该软件产品被淘汰的全过程。
2. 什么是软件危机?为什么会产生软件危机?软件危机是指计算机软件的开发和维护过程中所遇到的一系列严重的问题,主要包含二方面的问题,一是如何开发利用软件,二是如何维护数量不断膨胀的已有软件。
产生软件危机的原因,一方面与软件本身的特点有关,另一方面和软件开发与维护的方法不正确有关。
3.快速原型模型:所谓快速原型模型是快速建立起来的可以在计算机上运行的程序,它所能完成的功能往往是最终产品能完成的功能的一个子集。
瀑布模型:是将软件生命周期的各项活动规定为依线性顺序连接的若干阶段的模型,适合于软件需求很明确的软件项目。
增量模型(渐增模型):瀑布模型的顺序特征和快速原型模型的迭代特征相结合的产物。
螺旋模型:对于大型软件,只开发一个原型往往达不到要求。
螺旋模型将瀑布模型和增量模型结合起来,并加入了风险分析。
喷泉模型:以面向对象的软件开发方法为基础,以用户的需求为动力,以对象来驱动的模型。
4.结构化分析方法(SA)是E.Yourdon提出,是使用数据流图DFD与数据字典DD,用来描述面向数据流问题的需求分析,适合于数据处理型的软件的需求描述。
核心思想是分解化简问题,将物理表示与逻辑表示分开,对系统进行数据与结构的抽象。
优点是表达方式比文字清晰、简明,易于交流与掌握。
缺点是不能表达复合逻辑的需求分析问题,不能详细描述加工。
5.结构化设计(SD)是使用最广泛的一种设计方法,该方法适合于软件系统的总体设计和详细设计,特别是将一个复杂的系统转换成模块化结构系统,该方法具有它优势。
(相对独立,功能单一的模块结构;块内联系大,块间联系小的模块性能标准;采用模块结构图的描述方式)以模块化设计为中心,将待开发的软件系统划分为若干个相互独立的模块。
- 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)结构。