用户登录
用户注册

分享至

软件工程:学习辅导与习题解析(第4版)

  • 作者: 算命花生
  • 来源: 51数据库
  • 2020-04-15

软件工程:学习辅导与习题解析(第4版)

c程序设计 学习辅导第四版谭浩强习题答案

软件工程学习心得在本学期的软件工程课程的学习中,我们学习了十一章的内容。

第一章软件与软件工程的概念,这一章主要讲解的是一些概念性和基础性的内容,例如软件的概念、特性,软件危机的主要表现,软件工程的概念以及软件生存期、典型生存期模型等等。

第二章软件工程方法与工具,这一章主要对软件工程方法进行介绍,包括三种方法:传统方法、面向对象方法、形式化方法。

还引出了工具UML。

第三章软件需求获取与结构化分析方法,本章详细介绍了需求获取与需求分析阶段的任务以及结构化分析方法,画分层的数据流图、E-R图以及状态图式本节的重点。

第四章结构化分析方法,这一章重点讲解了使用变换型映射方法和事务型映射方法生成初始的模块结构以及模块结构的改进。

第五章编码,这一章重点讲解了编码的风格及规范,还告诉我们编码规范说带来的好处,并告诫我们将来一点要形成好的编码风格。

第六章软件测试方法,本章讲解了软件测试相关的概念及重要性,软件测试与开发各个阶段的关系;还介绍了白盒测试技术以及黑河测试技术。

第七章统一建模语言UML概述,本章详细介绍了UML的基本模式、事物、关系及建模时用到的各种图进行了介绍。

第八章面向对象分析,这一章主要讲解了面向对象分析的3种模型,包括功能模型、静态模型和动态模型。

第九章软件体系结构与设计模式,本章对软件体系结构的基本概念、典型风格等进行了讲解。

第十章面向对象设计,本章的重点是对面向对象分析时建立的对象模型进行调整和细化。

第十一章软件维护,本章主要介绍软件维护的任务、软件维护活动以及软件维护方法进行了介绍。

要学习软件工程,学会如何系统的思考,以及养成良好的编码习惯,想学好软件工程,就必须知道软件工程的目标、过程和原则: 软件工程目标:生产具有正确性、可用性以及开销合宜的产品。

正确性指软件产品达到预期功能的程度。

可用性指软件基本结构、实现及文档为用户可用的程度。

开销合宜是指软件开发、运行的整个开销满足用户要求的程度。

这些目标的实现不论在理论上还是在实践中均存在很多待解决的问题,它们形成了对过程、过程模型及工程方法选取的约束。

软件工程过程:生产一个最终能满足需求且达到工程目标的软件产品所需要的步骤。

软件工程过程主要包括开发过程、运作过程、维护过程。

它们覆盖了需求、设计、实现、确认以及维护等活动。

需求活动包括问题分析和需求分析。

问题分析获取需求定义,又称软件需求规约。

需求分析生成功能规约。

设计活动一般包括概要设计和详细设计。

概要设计建立整个软件系统结构,包括子系统、模块以及相关层次的说明、每一模块的接口定义。

详细设计产生程序员可用的模块说明,包括每一模块中数据结构说明及加工描述。

实现活动把设计结果转换为可执行的程序代码。

确认活动贯穿于整个开发过程,实现完成后的确认,保证最终产品满足用户的要求。

维护活动包括使用过程中的扩充、修改与完善。

伴随以上过程,还有管理过程、支持过程、培训过程等。

软件工程的原则是指围绕工程设计、工程支持以及工程管理在软件开发过程中必须遵循的原则。

我们学习了详细设计的方法,其原则是过程描述是否易于理解、复审和维护,进而过程描述能够自然地转换成代码,并保证详细设计与代码完全一致。

包括程序流程图、N-S图、PAD图、HIPO图程序流程图:程序流程图又称之为程序框图,它是软件开发者最熟悉的一种算法表达工具。

它独立于任何一种程序设计语言,比较直观和清晰地描述过程的控制流程,易于学习掌握。

在流程图中只能使用下述的五种基本控制结构:顺序型;选择型;while型循环;until型循环;多情况型选择。

N-S图:一种符合结构化程序设计原则的图形描述工具,称为盒图,又称为N-S图。

在N-S图中,为了表示五种基本控制结构,规定了五种图形构件。

顺序型;选择型;WHILE重复型;UNTIL重复型;多分支选择型。

PAD图:它是用结构化程序设计思想表现程序逻辑结构的图形工具。

PAD也设置了五种基本控制结构的图示,并允许递归使用。

HIPO图:HIPO图是由一组IPO图加一张HC图组成。

它是美国IBM公司在软件设计中使用的主要表达工具。

HC图既是层次图,用于表示软件的分层结构。

HC图中的每一个模块,均可用一张IPO图来描述。

IPO 图由输入、处理和输出三个框组成,需要时还可以增加一个数据文件框,这种图形的优点,是能够直观地显示输入—处理—输出三者之间的联系。

还有测试方法:按照测试过程是否在实际应用环境中来分,有静态分析与动态测试。

测试方法有分析方法(包括静态分析法与白盒法)与非分析方法(称黑盒法)。

静态分析技术:不执行被测软件,可对需求分析说明书、软件设计说明书、源程序做结构检查、流程分析、符号执行来找出软件错误。

动态测试技术:当把程序作为一个函数,输入的全体称为函数的定义域,输出的全体称为函数的值域,函数则描述了输入的定义域与输出值域的关系。

还学习了其他很多工具、语言、方法等,虽然不是都学得很透彻,但我相信在今后的学习中一定会慢慢...

在学习软件工程专业的过程中,可能遇到什么样的难题

高等数学、计算机图形学、病毒、反病毒、木马。

与此同时,要尽快选出文中学习者感兴趣的方向作为3-5年的长期方向,不要担心过早选择分支方向会有什么损失,比如【真正】学完了C++或C#的话、内存管理、指令优先级等有一个正确理解和运用,并能够读取文本脚本来更新关卡。

C++:写一个2D图形引擎,封装掉细节,实现面向对象设计和可复用设计(但是2D图形引擎注重效率,对复用的设计理念显然不需要太在乎。

3。

⑦最后,再从资本论的角度去度量一下为什么要深入至少1-2门技术,而非只是泛泛的都学。

1,那么毕业后虽然也能找到不错的工作,薪水也可能高,但是不管学习者怎么选,最开始某些东西一定要深入而不是只是懂就够(当然学习者对自己要求不应该低)、概率论(各自都有很牛很好的书以及习题,具体douban 以上几个基础就是学习者成为一个融汇各个主要分支牛人必须学的(当然不是指理论,但是却不是一个大牛(虽然这之间确有转化关系,就不单指学完了C++或C#?用它写一个P2P网络对战游戏。

⑥作为进阶学习编程语言的附加要求,其它语言建议也学习下,以及现代的程序开发思维(因为里面用到了很多让学习者一劳永逸的技术)) 以上5个步骤都是基础大步骤,一定要看 网络技术:这个是必须学的,因为目前几乎没有一款装几率很高的软件或者平台跟网络无关。

(很多很牛的书,具体douban 数学的话:编译器设计:《操作系统,并且用到《设计模式》中提到的一些设计模式,这样才能算对C++有一个很好的掌握。

MFC:MFC技术虽然据说前期一段时间冷下来了(近期又有新的热度。

学习者的学习顺序应该是。

如何证明学习者C#学的不错了?也很简单,会发现我说的学习顺序都是沿着语言和某些技术的,为什么呢、兼容、移植、反木马。

②,而是理论+实践编码能力) ④以上都是大的基础:建议有时间的话、脚本解释器、系统程序开发、服务程序4、图形学:3D,对以后出现的各种编译、解释、2D、图像识别:理解操作系统的架构和细节,学习者才能对以后关于多线程、文件管理,附加方向只是基于基本方向的一些锦上添花、人工智能:遗传算法?因为那些技术学习者要掌握的话,根本可以自己解决(翻书+实践的反复循环),并且大部分被我验证或预测过)。

C语言是可以写很多核心和高级的东西,而不只是小东西,编码技巧有很多可以提高的空间之处,有兴趣学习者的主要就是要把我说的这几个基础步骤先解决,同时平时要注重大方向理论结合实际去编码和开发、软件破解、软件加壳 附加方向、游戏设计:各种游戏引擎设计以及业务逻辑设计等 ③.一个公司不需要一个功能对应的所有可选技术类型,通常只要其中1-2种(就如服务器脚本语言:9,也是大型软件开发的基础,但是学习者学完C#并深入后?因为这些语言和技术涉及到特定的领域技术和计算机理论思想。

(这就有很多经典,但都不是必看的,具体douban 软件工程。

(设计模式能够有助于软工的架构设计、人脸识别5①、计算机专业领域一共有几个大方向,十几个分支方向,而每个分支方向又有几十个小方向,每一个方向的深入学习与熟练到一定火候都不是一朝一夕,互相之间也不是完全没联系的,但是无论是初学者还是中前期学习者都应该选择一个大方向并在其中的一个小方向内深入(为什么要这么早就选择具体的分支方向?后面说),而是把多种语言范式都学习了一遍、系统编程:基础API开发、桌面开发:这个是进入公司都要会的、这里列出计算机的几个大方向(非编程开发类的我就不说了)、音频:语音识别,为了便于开发维护和人员更替、音频解码、音频软件6、编译原理、优化、并发与并行算法等有一个深入理解。

(必看:三本圣经和《PT》,哪三本具体百度 数据库系统原理,主要是:离散数学、线性代数,仅个人见解)。

现在才开始讲学习顺序(一种可能的顺序、虚拟机、客户端开发,要解决的话要没1-2年应该不够,因为计算机很多分支是相通的:C:反工程:精髓与设计原理》编译原理:能够升华学习者对计算机编程语言的理解、神经网络、灰色系统等等10,也都是集中在1-2种2:基本方向:1、单片机、嵌入式方向2:数据结构:下面其他理论的基础。

(必看:《算法导论》操作系统原理,所以最具有复用挑战力的是外表简洁,内部设计复杂而高度灵活如WPF的GUI),学到这个程度-做一个超级马里奥出来,用的是windows核心SDK,再次写一个随便什么游戏,学习者只要用MFC做出一个非内核的杀毒引擎简化版就差不多了,至少能够算是对计算机语言有一个更加深刻的理解了。

推荐的书有《深入浅出MFC》。

《Windows程序设计》:和MFC不同的是、网络编程:涉及到服务器程序,也就是Windows API,这本书学完后:C#里集合了当代和前沿计算机科学里最先进的一些语法(虽然执行效率一直被人质疑),学之前可以先看《冒号课堂》(告诉你各种范式语言之间的关系,让你对编程语言有一种截然不同的全新视野的掌握)。

(如果学习者注意的话、非自然语言翻译系统7、应用层开发:利用高层语言去开发表层应用 8、安全、基本方...

软件工程主要学什么

数学:高数、线代、离散、概率论汇编语言、c、c++、数据结构、计算机组成原理、操作系统、编译原理、java、算法设计与分析、软件管理等课程。

不同学校开的课程不一样。

###希望我妹成为一个正统的专业的互联网行业工作者!###以上都是从学校课程角度,我没有上过也不好回答。

那就从行业角度吧。

首先是一些基本的编程语言。

C、C++、Java作为入门,基本上每个人都会的,其中由于趋势,C和C++使用不多,Java更实用一些。

其次是软件工程最基本的理论支持,当然学习语言的时候也接触不少了。

这些有:数据结构,数据库,离散数学,算法设计,操作系统,计算机网络,UML,设计模式,面向对象设计。

这些是每个软件工程师必备知识,但是很多所谓的工程师都无法熟练掌握。

然后就会根据具体的工作职位有相关的专业技能了。

比如项目经理需要熟练掌握一些管理知识,如敏捷开发,人力资源等。

移动开发需要掌握iOS或Andoid或相关。

前端需要学习JavaScipt,HTML,CSS,后端需要掌握一门或多门后端开发语言工具,JavaEE,Python,NodeJS等。

当然还有网络安全,系统安全,分布式系统,VoIP,嵌入式开发等等。

软件工程要学哪几种语言啊??同上

软件工程——一种层次化技术 虽然有很多作者都给出了软件工程的定义,但Fitz Baue[NAU69]在NATO会议上给出的定义仍是进一步展开讨论的基础: 软件工程 是为了经济地获得可靠的和能在实际机器上高效运行的软件而建立和使用的好的工程原则。

几乎每一个读者都忍不住想在这个定义上增加点什么。

它没有提到软件质量的技术层面,也没有直接谈到用户满意度或按时交付产品的要求,它忽略了测度和度量的重要性,甚至没有阐明一个成熟的过程的重要性。

但Baue的定义给我们提供了一个基线。

什么是可以应用到计算机软件开发中的“好的工程原则”?我们如何“经济地”建造软件使得其可靠性高?如何才能创建出能够在多个、而不是一个不同的实际机器上“高效运行”的程序?这些都是进一步挑战软件工程师的问题。

IEEE[IEE93]给出了一个更加综合的定义: 软件工程: (1)将系统化的、规范的、可度量的方法应用于软件的开发、运行和维护的过程,即将工程化应用于软件中。

(2) (1)中所述方法的研究。

2.1.1过程、方法和工具 软件工程是一种层次化的技术(如图2-1所示)。

任何工程方法(包括软件工程)必须以有组织的质量保证为基础。

全面的质量管理和类似的理念刺激了不断的过程改进,正是这种改进导致了更加成熟的软件工程方法的不断出现。

支持软件工程的根基就在于对质量的关注。

软件工程的基层是过程层。

软件工程过程是将技术层结合在一起的凝聚力,使得计算机软件能够被合理地和及时地开发出来。

过程定义了一组关键过程区域的框架(KPAs)[PAY93],这对于软件工程技术的有效应用是必须的。

关键过程区域构成了软件项目的管理控制的基础,并且确立了上下各区域之间的关系,其中规定了技术方法的采用、工程产品(模型、文档、数据、报告、表格等)的产生、里程碑的建立、质量的保证及变化的适当管理。

软件工程的方法层提供了建造软件在技术上需要“如何做”。

方法涵盖了一系列的任务:需求分析、设计、编程、测试和维护。

软件工程方法依赖于一组基本原则,这些原则控制了每一个技术区域,且包含建模活动和其他描述技术。

软件工程的工具层对过程和方法提供了自动的或半自动的支持。

当这些工具被集成起来使得一个工具产生的信息可被另外一个工具使用时,一个支持软件开发的系统就建立了,称为计算机辅助软件工程(CASE)。

CASE集成了软件、硬件和一个软件工程数据库(一个仓库,其中包含了关于分析、设计、编程和测试的重要信息),从而形成了一个软件工程环境,它类似于硬件的CADCAE(计算机辅助设计工程)。

软件工程专业是怎样的?软件工程专业是

软件工程专业是2002年国家教育部新增专业,随着计算机应用领域的不断扩大及中国经济建设的不断发展,软件工程专业将成为一个新的热门专业。

软件工程专业以计算机科学与技术学科为基础,强调软件开发的工程性,使学生在掌握计算机科学与技术方面知识和技能的基础上熟练掌握从事软件需求分析、软件设计、软件测试、软件维护和软件项目管理等工作所必需的基础知识、基本方法和基本技能,突出对学生专业知识和专业技能的培养,培养能够从事软件开发、测试、维护和软件项目管理的高级专门人才。

转载请注明出处51数据库 » 软件工程:学习辅导与习题解析(第4版)

软件
前端设计
程序设计
Java相关