(考研复试)软件工程笔记
- 格式:docx
- 大小:27.37 KB
- 文档页数:15
学习中心姓名学号一、单选题(共12题,每题2分,共24分。
请将答案填入下表)1.软件工程是以()为核心。
A.过程B.方法C.软件开发D.质量1.软件工程是以()为核心。
A.过程B.方法C.软件开发D.质量2.以下数据流图存在()错误。
A.功能2.1存在不必要的输出B.功能2.1输出到顾客信息的数据流上无名字C.处理2.1无输入数据流D.该图中存在输入/输出命令3.数据流程图是一个分层的概念模型,分三个层次:(),分别描述系统的不同特征。
A.总体图、二级图、三级图B.总体图、二级图、细节图C.总体图、零级图、细节图D.总体图、次级图、细节图4.在用例图中,()是在系统之外,透过系统边界与系统进行有意义交互的任何事物。
A.相关系统B.用例C.类D.参与者5.软件测试是为了()而执行程序的过程。
A.纠正错误B.发现错误C.避免错误D证明正确6.“以相对短的时间和相对低的成本来确定给定的问题在其约束条件内是否有解、有几种解以及哪个是最佳解”,这指的是软件开发过程中的()阶段。
A.可行性研究B.需求分析C.设计D.实施7.下图中,类B和类A之间的关系是()关系。
A.关联B.依赖C.组成关联D.聚集关系8.设C(X)定义问题X的复杂性函数,E(X)定义解决问题X所需要工作量的函数,对于两个问题p1和p2,一般情况下如果C(p1)<C(p2) 则()。
A.E(p1)>E(p2) B.C(p1+p2)=C(p1)+C(p2)C.E(p1+p2)>E(p1)+E(p2) D.E(p1+p2)<E(p1)+E(p2)9.在将下面的左图改造成右边的图过程中体现了的()。
A.开闭原则B.里氏替换原则C.依赖倒转原则D.接口隔离原则10.下图体现的是用例图中用例的()关系。
A.泛化B.包含C.扩展D.错误的画法11.假设某项目有两个方案,预计A方案需要投入100000元,5年后净资金现值为40000元;预计B方案需要投入50000元,5年后净资金现值为10000元。
软件工程复习提纲第一篇:软件工程复习提纲《软件工程》课程要点λ每章教学课件中的“本章小结”列出了需要掌握的内容λ教学过程中的例题和习题也是课程重点一、软件工程与软件过程概述1.概念:(1)软件的概念(组成成分、作用);(2)软件危机的含义、表现、产生原因(客观、主观)(3)软件工程学科包括的内容、解决的主要问题(4)软件生命周期的含义、组成阶段及各阶段主要任务2.需理解的问题:(1)软件与程序的区别和联系?(2)开发一个软件项目包括哪些基本的步骤?每一步骤完成哪些工作?(3)主要的软件过程模型(生命周期模型)有哪些?各自有什么特点?二、结构化分析-面向数据流的分析方法1.什么是软件需求?需求分析过程(步骤)?2.需求分析模型:(1)功能模型(数据流图DFD)的含义、描述符号、画法步骤及规则(2)数据模型(E-R图)的作用(3)行为模型(状态转换图)的作用(4)数据字典的作用三、结构化设计1.软件设计的任务?结构化设计与结构化分析的区别和联系?2.软件设计遵循的基本原理及规则:(1)模块化的含义、如何划分模块(降低成本、提高独立性)?(2)抽象与逐步求精的含义、二者间关系如何?(3)信息隐藏的含义(4)如何完善软件结构(深度、宽度、扇入、扇出、作用域、控制域)? 3.模块独立性:(1)模块独立性含义?(2)模块独立性的度量标准:耦合的分类、含义及应用;内聚的分类、含义及应用。
4.概要设计(面向数据流的设计方法)(1)概要设计的任务?(2)数据流图的类型及特征(变换型、事务型)(3)变换分析设计方法的应用(步骤)(4)事务分析设计方法的应用(步骤)4.详细设计(过程设计)(1)详细设计的任务(2)结构化程序(设计)的特征(3)详细设计结果的描述工具:程序流程图、N-S图、PAD图、PDL、判定表四、软件测试1.软件测试基础(1)软件测试的含义和目的?(2)测试用例的内容(输入数据、预期输出结果)?(3)主要测试方法(黑盒测试、白盒测试)的含义?2.主要的白盒测试技术及应用-------逻辑覆盖法?基本路径测试方法? 3.主要的黑盒测试技术及应用-------等价类法? 边界值分析法?4.软件测试的过程?(1)单元测试(采用的测试方法;测试内容)(2)集成测试(采用的测试方法;测试内容;模块组装策略)(3)确认测试(采用的测试方法;测试内容;α测试与β测试?)(4)辅助模块的含义及作用(驱动模块、存根模块?)五、面向对象方法学基础 1.基本概念:(1)对象的含义及特点?(2)类的含义?类与对象的关系?(3)消息及消息传递的含义及作用?(4)继承的含义?多态性机制?2.面向对象建模技术中的三种模型及各自作用?3.对象模型及描述(类图):对象(类)的图形表示;关系(关联、聚集、继承)的图形表示; 4.事件追踪图、状态图、用例图的作用六、面向对象分析与设计过程1.面向对象分析(OOA)的任务?OOA的基本过程?2.面向对象设计(OOD)的主要任务?OOD与OOA的区别和联系?3.OOD模型的组成(四部分)及内容?七、软件维护1.软件维护的含义及类型? 2.软件维护过程?--------------- 课堂练习题目一、填空题1.软件主要包括程序、和三部分内容。
1.什么是软件工程?目前有哪几种重要旳软件工程措施?概括地说,软件工程是指引计算机软件开发和维护旳一门工程学科.采用工程旳概念、原理、技术、和措施来开发与维护软件,把通过时间考验而证明对旳旳管理技术和目前可以得到旳最佳旳技术措施结合起来,以经济地开发出高质量旳软件并有效地维护它,这就是软件工程。
但软件工程始终以来都缺少一种统一旳定义,诸多学者、组织机构都分别给出了自己旳定义。
重要有老式措施也称为典型软件工程措施或生命周期措施或构造化范型和面向对象措施。
2、流程图与数据流图有什么重要区别?(1)数据流图(date flow diagram , DFD),是SA措施中用于表达系统逻辑模型旳一种工具,它以图形旳方式描绘数据在系统中流动和解决旳过程,由于它只反映系统必须完毕旳逻辑功能,因此它是一种功能模型,是从数据旳角度来描述一种系统旳;而流程图则是从对数据加工旳角度来描述系统旳;(2)数据流图中旳箭头是数据流,而流程图中旳箭头则是控制流,它体现旳是程序执行旳顺序;(3)数据流图适合于宏观地分析一种组织业务概况,而程序流程图只适合于描述系统中某个加工旳执行细节。
(4)数据流程图应当重点描述了数据加工旳过程,重要是模块内部,数据流图则是描述模块之间旳关系。
3.软件需求分析旳任务是什么?有哪些重要环节?需求分析旳基本任务是进一步描述软件旳功能和性能、拟定软件设计旳约束和软件同其他系统元素旳接口细节、定义软件旳其他有效性需求,总之,需求分析旳任务就是借助于目前系统旳逻辑模型导出目旳系统旳逻辑模型,解决目旳系统旳“做什么” 旳问题。
重要环节:1.问题辨认(1) 功能需求:明确所开发旳软件必须具有什么样旳功能。
(2) 性能需求:明确待开发旳软件旳技术性能指标。
(3) 环境需求:明确软件运营时所需要旳软、硬件旳规定。
(4) 顾客界面需求:明确人机交互方式、输入输出数据格式。
2. 分析与综合,导出软件旳逻辑模型分析人员对获取旳需求,进行一致性旳分析检查,在分析、综合中逐渐细化软件功能,划提成各个子功能。
一、判断题1、软件危机是指软件开发和维护过程中存在的周期长、成本高、质量低等问题()。
2、软件危机是指计算机硬件发展的太快,软件开发跟不上硬件的更新()3、软件工程是指以质量为核心,为经济的开发满足客户需求的软件而研究、建立和应用的系统化的、有规则的、可度量的、可控制的工程原则和方法。
()4、软件工程是指编制软件的工程项目。
()5、软件工程是一个零散的相关知识点的集合。
()6、软件工程包含软件过程、项目管理、开发方法、软件度量和开发工具等各相关方面的知识的有机组合()7、软件开发具有难以描述性()8、软件开发的质量保证主要是通过程序员的经验来保证的()9、软件满足客户需求的程度是衡量软件质量的最重要因素()10、项目管理的内容涉及人力资源管理、项目计划、风险管理、项目跟踪、质量保证、配置管理等方面()11、项目管理的内容涉计算机硬件管理和软件管理两方面( * )二、选择题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) 软件工程只包括软件的开发过程B) 软件工程涉及软件过程、项目管理、开发方法、开发工具甚至企业文化。
如何备考软件工程考研软件工程考研作为计算机领域的一门重要学科,备考过程需要有系统的规划和科学的方法。
本文将从准备考试材料、制定学习计划、选择教辅材料、抓住重点知识等几个方面,介绍如何高效备考软件工程考研。
一、准备考试材料备考软件工程考研首先要有系统全面的考试资料。
可以通过购买或借阅教材和参考书籍,收集真题和模拟试题等。
同时,还可以参加备考培训班或听课,通过解析和讲解,深入理解知识点。
考生也可通过互联网资源,下载并整理相关资料,形成自己的备考资料库。
二、制定学习计划备考软件工程考研需要有明确的学习目标和合理的学习计划。
首先,根据考纲和教学大纲,了解各科目的考试内容和重点难点。
然后,根据个人情况和时间安排,制定合理的学习计划。
学习计划应包括每日、每周、每月的学习安排,明确每个阶段的学习目标和重点。
三、选择教辅材料备考软件工程考研需要选择合适的教辅材料来辅助学习。
可以参考往年考研优秀教材,选择适合自己的教辅材料。
教辅材料应全面系统地讲解各门学科的知识点,同时提供大量的例题和习题,帮助考生掌握解题技巧。
四、抓住重点知识备考软件工程考研需要重点掌握考试科目的重点知识。
可以通过查找历年真题和模拟试题,总结出重点知识点。
同时,要注重理论与实践相结合,理论知识要与实际工程相结合,加深对理论知识的理解与应用。
五、做好时间管理备考软件工程考研需要合理安排时间,做好时间管理。
可以使用番茄钟等时间管理工具,设定专注学习和休息的时间,保持高效的学习状态。
同时,要注意合理分配时间,根据科目的难易程度和自己的掌握程度,合理分配学习时间。
六、做题训练备考软件工程考研需要进行大量的题目训练。
通过做真题和模拟试题,熟悉考试题型和出题规律,提高解题能力和应试技巧。
同时,要分析做题过程中出现的错误,找出不足,并加强相关知识的学习和复习。
七、定期复习备考软件工程考研需要定期进行复习。
复习要有重点有计划,有针对性地对知识点进行复习巩固。
可以通过学习笔记、知识点总结和概念图等方式整理和复习知识点。
第一章软件工程概论一、填空题⑴软件是计算机系统中与硬件相互依存的部分,它是包括(A)、(B)、及(C)的完整集合。
其中,(A)是按事先设计的功能和性能要求执行的指令序列,(B)是使程序员能够正确操纵信息的数据结构,(C)是与程序开发、维护和使用有关的图文材料。
①软件②程序③代码④硬件⑤文档⑥外设⑦数据⑧图表⑵开发软件时,对于提高软件开发人员工作效率至关重要的是(A)。
软件工程中描述软件生存周期的瀑布类型一般包括计划、(B)、设计、编码、测试、维护等几个阶段。
其中,设计阶段在管理上可以依次分成(C)和(D)两个步骤。
A:①程序开发环境②操作系统的资源管理功能③开发程序人员数量④计算机的并行处理能力B:①需求分析②需求调查③可行性分析④问题定义C、D:①方案设计②代码设计③概要设计④数据设计⑤运行设计⑥详细设计⑦故障处理设计⑧软件体系结构设计⑶有人将软件的发展过程划分为四个阶段,第一阶段(20世纪50年代),称为程序设计的“原始时期”。
这时既没有(A),也没有(B),程序员只能用机器指令编写程序。
第二阶段(20世纪60年代),称为“基本软件期”。
出现了(A),并逐渐普及。
随着(B)的发展,编译技术也有较大的发展。
第三阶段(20世纪60年代末至70年代中期)称为“程序设计方法时代”。
这一时期,与硬件价格下降相反,软件开发费用急剧上升。
人们提出了(C)和(D)等程序设计方法,设法降低软件的开发费用。
第四阶段(20世纪70年代中期至今),称为“软件工程”时期。
软件开发技术不再仅仅是程序设计技术,而是包括了软件开发的各个阶段。
如(E)、(F)、编码、单元测试、综合测试、(G)及其整体有关的各种管理技术。
A、B、C、D:①汇编语言②操作系统③虚拟存储器概念④高级语言⑤结构化程序设计⑥数据库概念⑦固件⑧模块化程序设计E、F、G:①使用和维护②兼容性的确认③完整性的确认④设计⑤需求定义⑥图像处理二、简答题⑴软件工程过程有哪几种基本活动,试加以说明。
长安大学软件工程专业考研复试面试问题附面试技巧/自我介绍范文/快速提分技巧第一部分:面试问题(含通用、专业、英文面试问题)一、通用面试问题1. 自我介绍:请简要介绍一下你的个人背景、研究兴趣和目前的专业知识水平。
2. 为什么选择长安大学?对于软件工程有什么了解和认识?3. 在本科阶段,你非常喜欢的一门课程是什么?为什么?4. 你在本科阶段参加过哪些科研项目或者实习经历?请简要介绍一下。
5. 在这些科研项目或实习经历中,你非常大的收获是什么?6. 你在团队协作中扮演过什么角色?如何处理和解决团队中的冲突?7. 对于软件工程领域,你认为非常重要的技能或知识是什么?8. 你对未来研究方向有什么规划或想法?为什么选择这个方向?9. 你认为你的优点和不足是什么?如何改进自己的不足之处?10. 你能简单介绍一下自己的时间管理能力和应对压力的能力吗?二、专业类面试问题1. 什么是软件工程?请谈谈你对软件工程的基本理解。
2. 软件工程的主要流程包括哪些?请简要描述一下。
3. 你对软件质量有什么看法?如何保证软件的质量?4. 你在本科阶段学习过哪些与软件工程相关的课程?请简要介绍一下。
5. 你对敏捷开发有什么了解?请谈谈你对其核心理念的理解。
6. 你在编程方面有哪些实践经验?能否举例说明?7. 对于软件测试,你有什么特别的见解?8. 如何进行有效的版本控制?请谈谈你对Git的理解和用法。
9. 在软件开发过程中,你如何处理和解决遇到的技术难题?10. 对于前端开发和后端开发,你更倾向于哪个方向?为什么?三、英文面试问题1. Please introduce yourself briefly in English.2. Why did you choose Chang'an University? What do you know about our software engineering program?3. What is your greatest strength in terms of your abilities as a software engineer?4. Can you describe a situation where you overcame a challenge in software development?5. What is your plan for the future in terms of your professional goals?第二部分:考研复试面试自我介绍范文1、开场白尊敬的各位老师,大家好!首先,我要感谢老师们给予我这次复试的机会,让我有机会向你们展示自己的才华和潜力。
1:软件危机:问题1:如何开发软件,以满足对软件日益增长的需求。
问题2:如何维护数量不断膨胀的软件。
表现:对软件开发成本和时间估计不准,用户对已完成软件不满意,软件质量不可靠,软件不可维护,软件缺少文档,软件成本过高,软件跟不上硬件发展速度。
原因:与软件本身特点有关,缺乏可见性,质量难以评价,规模庞大难以维护。
与软件开发维护的不当方法有关,轻视需求分析和维护,对用户的要求没有完整准确的认识就编写程序,忽视程序,文档,数据等软件配置。
2:软件工程:采用工程的概念,原理,技术和方法开发与维护软件,把正确的管理技术和软件开发技术结合起来,经济的开发出高质量的软件并有效的维护。
即把系统化的,规范的,可度量的途径应用于软件开发,运行和维护的过程。
3:软件工程7条基本原理:用分阶段的生命周期计划严格管理,坚持进行阶段评审,实行严格的产品控制,采用现代程序设计技术,结果应能清楚地审查,开发小组的人员应该少而精,承认不断改进软件工程实践的必要性。
4:软件工程领域:软件需求,设计,构建(写代码),测试,维护,配置管理,工程管理,工程过程,工程工具,软件质量。
5:软件生命周期:软件定义(问题定义,可行性研究,需求分析),软件开发(概要设计,详细设计,编码和单元测试,综合测试),运行维护(改正性维护,适应性维护,完善性维护,预防性维护)。
、生命周期模型6:瀑布模型:就是把一个开发过程分成收集需求,分析,设计,编码,测试,维护六部分,只有完成前面一步才能开始后面一步,上一步的输出的文档就是这一步的输入文档,每一步完成都要交出合格的文档,每一步都会有反馈,如果反馈有错误就退回前一步解决问题。
瀑布模型的缺点:实际的项目开发很难严格按该模型进行;由于用户只能通过文档来了解产品,客户往往很难清楚地给出所有的需求,而瀑布模型不适应用户需求的变化;软件的实际情况必须到项目开发的后期客户才能看到。
7:快速原型模型:就是根据用户的需求迅速设计出一个原型系统,原型系统具有基本的功能,然后用户使用原型并对原型提出需求和改变,开发人员再对原型进行修改和完善知道用户满意。
优点:容易适应需求的变化;有利于开发与培训的同步;开发费用低、开发周期短且对用户更友好。
缺点:快速建立起来的系统结构加上连续的修改可能会导致产品质量低下;使用这个模型的前提是要有一个展示性的产品原型,因此在一定程度上可能会限制开发人员的创新。
8:增量模型:就是把软件分成许多个构件,每个构件分别当做一个软件来分析,设计,编码,测试。
开发人员一次一个构件的提交给用户,最后组装到一起。
增量模型的优点:一开始不用投入太多人力,如果核心产品很受欢迎,则可增加人力实现下一个增量;可先发布部分功能给客户,让客户逐渐适应。
缺点:并行开发构件有可能遇到不能集成的风险,软件必须具备开放式的体系结构。
9:螺旋模型:螺旋模型基本做法是在快速原型模型的每一个原型前引入一个非常严格的风险分析,每个原型经过制定计划,风险分析,实施工程,客户评估四步走。
每个原型都标识一个或多个主要风险,直到所有的主要风险因素都被确定。
螺旋模型由风险驱动,强调可选方案和约束条件从而支持软件的重用,有助于将软件质量作为特殊目标融入产品开发之中。
优点:设计上的灵活性,可以在项目的各个阶段进行变更;以小的分段来构建大型系统,使成本计算变得简单容易;客户始终参与每个阶段的开发,保证了项目不偏离正确方向以及项目的可控性;缺点:采用螺旋模型需要具有相当丰富的风险评估经验和专门知识,在风险较大的项目开发中,如果未能够及时标识风险,势必造成重大损失;过多的迭代次数会增加开发成本,延迟提交时间。
10:喷泉模型:以用户需求为动力,以对象为驱动的模型,主要用于描述面向对象的软件开发过程。
该模型认为软件开发过程自下而上周期的各阶段是相互迭代和无间隙的特性。
喷泉模型不像瀑布模型那样,需要分析活动结束后才开始设计活动,设计活动结束后才开始编码活动。
该模型的各个阶段没有明显的界限,开发人员可以同步进行开发。
其优点是可以提高软件项目开发效率,节省开发时间,适应于面向对象的软件开发过程。
缺点:由于喷泉模型在各个开发阶段是重叠的,因此在开发过程中需要大量的开发人员,因此不利于项目的管理。
10.1:总结:一开始是瀑布模型,但是瀑布模型因为是文档驱动,最终交付的产品不一定符合用户需求,所以有了快速原型模型,增量模型能在软件早起就让投资者获得回报,但是需要软件具有开发体系架构,螺旋模型是风险驱动,但是需要专业的风险分析人,喷泉模型的软件生命周期是循环的,适用于面向对象范型。
11:rational统一过程是一个软件开发过程框架,就是指团队可以根据具体的项目组或软件开发企业的不同需求,能够定义,配置,定制和实施一致的软件开发过程,包括3核心:用于成功开发软件的一组基本观念和原则,一套关于可重用方法内容和过程构件的框架(在框架内定义自己的开发方法和过程),基础的方法和过程定义语言。
12:RUP的最佳实践:描述了一个指导开发团队达成目标的迭代式的软件开发过程,包括:迭代式开发(每次迭代过程中需求改变,每个迭代过程以完成可执行版本结束,让用户不断介入和提出意见并改进),管理需求(用脚本来确定需求),使用基于组件的架构(使用功能清晰的模块),可视化建模(可视化图形更容易令人理解,帮助人们提高管理软件复杂性的能力),验证软件质量(软件质量评估贯穿整个开发过程),控制软件变更(确保每个更改都是可接受和可跟踪的)。
13:敏捷过程:宣告了以下4个价值观:个体和交互高于过程和工具(团队合作很重要,应该根据团队成员和交互方式配置项目环境),可以使用的软件高于面面俱到的文档(主要精力放在创建),客户合作高于合同谈判(开发团队与客户密切协作),响应变化高于遵循计划(计划必须有足够的灵活性,在需要时能够迅速调整)14:极限编程:就是把好的开发实践运用到极致,广泛运用于模糊且经常改变的场合。
过程:首先,项目组针对客户代表提出的要求进行讨论,对体系结构进行试探,然后项目组根据客户设定的优先级指定交付计划,然后开始多个迭代过程。
迭代期中新用户故事不在本次迭代内解决,开发出的新版本软件通过验收测试之后交付用户使用。
极限编程可以迅速快捷的响应变化和不确定的需求,同时保持开发速度。
迭代过程:项目组根据项目速率,选择需要完成的用户需求或应该消除的差错,制定出本次迭代计划,每天举行一次站立会议解决遇到问题,调整迭代计划,开发出的新功能必须通过单元测试,立即继承,得到新的可运行版本由客户代表进行验收测试,客户代表提出问题,项目组根据问题提出新的用户要求,算出新的项目速率,并在站立会议上讨论。
15:能力成熟模型CMM:因为问题是由管理软件过程的方法不当引起的,所以新软件技术的运用并不会自动提高生产率和软件质量,能力成熟模型有助于软件开发组织建立一个有规律,成熟的软件过程,改进后的过程将开发出高质量的软件,并节约时间和经费。
软件开发既包括技术方面也包括管理方面,CMM通过改变管理方面,从而改变技术方面。
16:CMM结构:成熟度等级(对软件过程的改进的5个步骤),过程能力(改进的软件过程实现预期结果的能力),关键过程域(完成一些关键过程域就进入下一个成熟度等级),目标(定义每个关键过程域的目的),公共特性(把关键实践归入5个公共特性之中,指示一个关键过程域的实施和规范化是否有效),关键实践(若干个关键实践描述关键过程域)。
17:软件过程:为了获得高质量软件产品所需要完成的一系列任务的框架,规定各项任务的工作步骤。
传统方法学之结构化分析18:传统的软件工程采用结构化分析完成需求分析工作。
19:需求分析的第一步就是尽可能准确的了解用户当前的情况和需要解决的问题,分析员对用户的要求反复求精细化,理解用户需求,得出对目标系统完整的准确的和具体的要求。
结构化分析就是通过建立数据模型,功能模型,行为模型给出完整的需求规格说明书和全面的设计表示。
20:与用户沟通的方法:会谈,简易应用规格说明书,软件原型。
21:结构化分析实质上是一种创建模型的活动,模型可以描述用户需求,为软件设计奠定基础,定义一组需求,一旦开发出软件产品之后,就可以用这组需求为标准来验收。
分析模型的核心是数据字典,围绕这个核心有三种图22:实体关系图可以数据对象描述,数据流图(就是A和B 两个数据流经过一个处理系统出来C数据)可以处理规格说明,状态转换图可以控制规格说明23:通过需求分析创建分析模型外还要写出软件规格需求说明,这是分析阶段的最终成果。
24:数据字典:对数据的数据项、数据结构、数据流、数据存储、处理逻辑、外部实体等进行定义和描述,其目的是对数据流程图中的各个元素做出详细的说明从而是用户和系统分析员双方对输入输出存储的成分以及中间计算结果有共同的理解。
25:结构化分析举例:项目:系统分析员研究学校自己的计算机生成工资明细表和各种财务报表的可能性。
过程包括问题定义,可行性研究,需求分析3阶段。
(1)问题定义:考虑用户面临的问是什么,用户为什么要做这个项目,考虑项目规模,预花费的费用。
(2)可行性研究:抽象和简化了的系统分析和设计的全过程,目的是以最小的代价确定问题是否可以解决。
澄清系统规模和目标,研究现有系统,导出高层逻辑模型,进一步确定系统规模和目标,导出供选择的解法,推荐最佳方案,草拟开发计划,写出文档提交审查。
(3)需求分析:回答“系统必须做什么”,在可行性研究的基础上,以前一段产生的文档为出发点,分析员设计出更为精确的数据流图,写出数据字典,更详尽的定义系统应该完成的每一个逻辑功能。
写出文档初稿,定义逻辑系统,细化数据流图,书写正式文档,技术审查和管理复查结构化设计26:软件设计的目标是设计出所要开发的软件的模型。
对软件需求有了完整,准确,具体的理解后,接下来的工作就是用软件正确的实现需求。
传统的软件工程用结构化设计,把软件设计工作分为概要设计(分析软件规格说明书,对软件进行功能分解,划分模块,设计出预定模块的结构)和详细设计(详细设计每个模块的算法和数据结构)。
结构化分析为结构化设计提供输入信息,由数据模型,功能模型,行为模型描述的软件需求给软件设计者,软件设计者再完成数据设计,体系结构设计,接口设计,过程设计。
27:软件设计的原理:模块化(把程序划分为独立命名独立访问的模块,每个模块完成一个子功能),抽象(高层次抽象一开始以概括的方式叙述问题的解法,然后低层次抽象把面向问题的术语和面向实现的术语结合起来叙述问题的解法,最后再最低层用直接实现的方式叙述问题的解法),逐步求精(即将系统功能按层次进行分解,每一层不断将功能细化,到最后一层都是功能单一、简单易实现的模块),细节隐藏。
28:模块独立:独立的模块比较容易开发,测试和维护,耦合(一个软件结构内不同模块之间的互联程度,耦合的强度取决于模块间接口和复杂程度),内聚(一个模块内各个元素彼此结合的紧密程度),我们追求的是低耦合和高内聚。