软件工程及软件方法学
-
基于CPLD\FPGA的数字通信系统建模与设计段吉海等编本书主要介绍了基于CPLD/FPGA的数字通信系统的设计原理与建模方法。从通信系统的组成、EDA概述及建模的概念开始(第1~2章),围绕数字通信系统的VHDL设计与建模两条主线,讲述了常用基本电路的建模与VHDL编程设计(第3章),详细地介绍了数字通信基带信号的编译码、复接与分接、同步信号提取、数字通信基带和频带收发信系统、伪随机序列与误码检测等的原理、建模与VHDL编程设计方法(第4~9章)。全书主要是基于CPLD/FPGA芯片和利用VHDL语言实现对数字通信单元及系统的建模与设计。 全书内容新颖,循序渐进,概念清晰,针对性和应用性强,既可作为高等院校通信与信息专业的高年级本科生教材或研究生的参考书,也可供科研人员及工程技术人员参考。
-
UML和模式应用(美)Craig Larman著;方梁等译;方梁译本书英文版面世以来,便广受业界专家和读者的好评。全书叙述清晰、用词精炼,构思巧妙,将面向对象分析设计的概念、过程、方法、原则和个人的实践建议一一道来,博引多家观点,以实例为证,将软件的分析和设计的过程叙述得如逻辑推理一般,于细节处见真知。本书是一本经典的面向对象分析设计技术的入门书,适用范围非常广,从刚刚入门的初学者,到已经有一定对象技术知识但希望进一步提高开发水平的中级读者,甚至是资深的专业人员,都可以从本书获益匪浅。同时,本书也很适合作为高等院校计算机专业及软件学院相关课程的教材和各类培训班的辅导教材。"人们经常问我,引导他们进入00世界的最佳图书是哪一本。读过本书之后,它已经成为我的惟一选择。:MartinFowler能够透彻解释事物的人太少了,而真正理解软件分析和设计的人就更少,但是,Larman恰恰拥有这两方面的能力。:JohnVlissides本书是经典的OOA/D、迭代式开发和UML方面的入门书,已被翻译成多种语言并在业界和高等院校中广泛使用。它可以帮助开发者和学生掌握OOA/D的重要原则和最佳实践:不仅仅是绘制UML,而是在软件设计过程中应用它们。作者通过精炼的研究案例,逐步介绍了有关OOA/D的关键技能,同时强调了软件分析和设计过程中最重要的活动、原则和模式。内容包括:需求和用例:识别和记录需求领域对象建模:理解领域中的相关对象,它们的属性及其关系架构:创建灵活、健壮和可维护的分层架构基本的对象设计技术:掌握重要的技能,包括:为对象分配职责,用信息专家模式、中介模式和受保护变化模式等原则设计对象的协作设计模式:用广泛应用的模式(如策略模式、工厂模式、适配器模式、观察者模式、模板模式和命令模式等)创建健壮的对象和框架。迭代开发和敏捷"UP":应用简洁、基本的统一过程的活动和最佳实践组织建模和开发本书在第1版的基础上进行了彻底改写,新增了案例研究问题,并更新了有关模式、用例、统一过程、架构分析等方面的讨论。本书提供了如何应用对象宋进行思考和设计的透彻和实用的指南。
-
UML设计及应用赵从军主编本书从UML的基础、设计和应用等方面全面地叙述了UML的知识和技术。全书分为四篇。第一篇为UML基础,主要介绍了UML的基础知识、RUP软件开发过程和Rational Rose工具的使用;第二篇为UML设计模式,从分析、设计和系统架构方面介绍了UML如何构建软件的重用与模式;第三篇为UML分析设计Visual Basic应用程序,通过实例详细讲解了用例分析和类图设计、动态元素分析、类图到数据库表的映射、组件到VB构件的映射和UML类图与Visual Basic代码的转换;第四篇为UML分析设计Java应用程序,通过实例讲解了Java的UML设计和UML类图与Java代码的转换。本书涉及多个知识层面,图文并茂,由浅入深。可作为高职高专软件技术专业及计算机相关专业的教材,也可作为软件设计与开发人员的参考书。
-
实用软件工程教程王珍玲主编软件工程是介绍软件开发方法、提高学生软件开发能力的一门课程。《实用软件工程教程》一书全面系统地介绍了软件工程的概念、原?砗偷湫偷募际醴椒ǎ弊帕樯芰巳砑こ痰囊恍┳钚录际醴椒ā1臼榧冉樯芰巳砑こ痰睦砺壑叮庇峙浜鲜道镏莆绽砺壑逗图际醴椒ǖ氖迪帧H楣卜志耪拢谌莅ㄈ砑こ谈攀觥⑷砑尚行匝芯俊⑷砑枨蠓治觥⑷砑杓啤⒊绦虮嗦搿⑷砑馐浴⒚嫦蚨韵蟮娜砑こ獭⑷砑诵杏胛ず腿砑钅抗芾恚恳徽潞竺媾溆邢嘤Φ南疤猓靡园镏屠斫獗菊碌闹叮保诟铰贾懈隽巳肯疤獾牟慰即鸢福┒琳卟慰际褂谩?本书是针对高职高专院校计算机应用专业学生编写的教材,同时适宜高等专科院校、成人教育学院、函授大学等大专层次的理工科计算机专业的学生使用,也可供有一定实践经验的软件开发人员、计算机科学爱好者参考使用。
-
软件工程的敏捷管理(美)David J. Anderson著;韩柯等译;韩柯译本书是一本观点鲜明、新颖独特的专著,全面论述当前比较流行的软件生产敏捷方法,着重介绍敏捷方法的理念和创新。书中并没有简单地否定传统软件生产方法,而是比较全面地分析了各种方法的适用场合。本书作者是特征驱动开发这种敏捷方法的创始人之一,他在书中介绍了很多自己亲身负责和参与的项目管理实例。本书具有很好的参考价值,适合软件开发经理、开发人员、用户以及在校学生阅读。敏捷方法如今已经炙手可热。但是,敏捷开发要想被管理人员广泛接受,还必须在管理上进行调整。本书作者向经理们说明,怎样才能通过重点运用EliGoldratt在其名著《TheoryofConstraints》中提出的方法,靠科学管理使敏捷方法如虎添翼。不管你使用的是XP、Scrum、FDD还是其他敏捷方法,通过本书,你都可以学会如何针对工程过程的所有阶段制定管理原则,集中精力构建可以提供最大客户价值并取得显著业务成果的软件。给出适用于敏捷方法的业务案例:实用工具和原则。如何为下一个项目选择敏捷方法。”关键链项目管理”和约束驱动的价值流控制的突破性应用。为软件项目的敏捷经理定义四种新角色。
-
软件工程经济学(英)Barry W.Boehm著;李师贤等译;李师贤译本书阐述软件工程经济学的基本原理和分析方法,包括COCOMO模型分析,多目标决策分析,软件生命周期定量模型,软件项目的工程经济学基础,软件生命周期成本估算方法,以成本效益分析、边际分析、风险分析为基础的决策方法以及软件成本估算技术等。本书使用了大量案例,深入浅出、概念清晰,较好地结合了理论与实践。本书适合作为大学高年级本科生和低年级研究生的软件工程经济学基础课程的教材,也可供广大软件从业人员参考。前言:工程经济学课程已成为硬件工程师教育的一个标准组成部分。但到目前为止,软件工程师却缺少相似的、适合的软件工程经济学课程。这样导致的结果就是,大多数软件工程师没有机会掌握并利用那些有重要意义的经济学概念、技术和案例,而这些恰恰对他们以后的职业生涯、对所编制软件的易用性和价值都有重要作用。所以,本书的主要目标是为美国高年级本科生和一年级研究生,提供软件工程经济学的基础课程。即本书的两个目的是:1.易于学生学习。2.便于教师讲授。我也努力使本书能够达到第三个目的:3.为这一领域的专业人士提供帮助。因为这三类读者有一定的差异,所以我对学生、教师和熟练的软件工程师分别给出了指导,作为他们学习本书的起点。本书的基本结构如图A所示。第一部分介绍背景、动机和软件工程目标框架等,为后续的内容打下基础。第二、三部分包括两个互相补充的主题:软件生命周期定量模型,应用于软件项目的工程经济学基础。第四部分详细讲述了软件生命周期成本估算的方法,它是以第二部分较简单的成本模型为基础,同时,又进一步支持第三部分的软件工程经济学的分析技术。图A也显示了本书的每一部分所解决的基本问题。例如:第四部分不仅讲述了软件成本估算、理解影响软件成本因素问题,还探讨了像“如何利用这种理解来提高软件项目的可见性及控制,进而提高软件生产率?”这类问题。图B显示了本书的每一部分中的章节。例如,图B显示了分等级的软件成本估算模型细节的逐级层次,这个模型通常称为COCOMO(COnstructiveCOstMOdel)。顶层是在第5章~第7章讲述的基本COCOMO(BasicCOCOMO)模型,基本COCOMO模型是一个简单的公式,将软件项目的成本仅仅估算为已交付源指令规模的函数。接下来是中等COCOMO(IntermediateCOCOMO)模型,在第8章和第9章介绍,它估算软件项目成本是规模和其他成本驱动属性(costdriverattribute)的函数,如人员经验与能力、计算机硬件约束、现代编程规范(modernprogrammingpractice)的使用程度等。第23章讲述了最精确、最详细的一层,那就是详细COCOMO(DetailedCOCOMO)模型,并在第24章~第27章给出了其详尽的细节,它利用成本驱动属性,按每个阶段、每个子系统、每个模块分别估算软件产品的成本。第24章~第27章详细解释了各种软件成本驱动因子属性是如何影响完成软件生命周期每一阶段所需工作量的。COCOMO模型不仅给出了估算公式,也给出了该模型为什么能得出这些结果的最好解释。第24章~第31章详细讨论了软件生命周期成本估算知识的前沿问题(frontier),并提出了需要进一步研究的广泛课题(agenda)的建议,以扩展我们在软件生命周期及其经济学方面的知识。图A本书的结构—主要讲述的问题深深地感谢那些鼓励我,为我提供数据与意见的人们。真希望能把他们都列出来。……致学生未来几年内,你将有机会在一间屋子里和一群人一起讨论,决定将要进行的一个重要的新软件工作需要用多长时间、花多少钱,这是一个好机会。这些人中,也许有一到两名对软件很了解,其他大多数都了解不深。这些人可能是高层经理、业务分析员、市场专家或生产线计划者之类的人员。总的说来,他们将根据边际投资回报率、成本收益率(cost-benefitratio)、现值(presentvalue)和风险暴露(riskexposure)之类的概念进行讨论,并做出决策。图B本书的结构—部分与章节还有其他一些人,对这个项目很感兴趣,但不在这间屋子里。这包括将为你工作的、或同你一起从事软件工作的人员,还包括一些用户,那些不得不使用你们团队正准备生产的这个软件的用户。无论是否意识到,事实上,他们未来几个月甚至几年的命运,很大程度上依赖于你和其他非软件人员能在多大程度上对软件工作的范围、预算、进度做出实事求是的决策。屋子里的非软件人员没法做出决策,因为他们对你所做的软件技术性权衡没什么感觉。所以对你来说,与他们交流、理解他们思考并做出决定所依据的经济学概念,就显得特别重要。如果你能做到这一点,你就有机会改变软件开发人员与面向业务人员之间那种敌对关系,把它变成一种能相互理解、承诺和信任的关系。在这本书里,我们将尽量提供必要的概念与技术,使你既能从编程角度,又能从经济学的角度进行思考。除了这些概念的实际应用之外,希望你会发现它们具有相当的刺激性,就像当时我对计算机与信息处理领域提出一种新的见解时那样。我发现它们对说明如下问题有很大帮助:*为什么信息是有价值的?*为什么人们要采用软件产品?*人们如何决定需要什么样的信息处理产品?*为什么软件生命周期是这样的?就像其他方面的研究一样,当我们更好地理解了软件工程领域为什么会存在,才能更好地在软件工程中进行实践。致教师在这里,我想说明以下三点:1.软件工程经济学对教师和学生来说都是一个具有刺激性的、内容丰富的主题。2.本书可用作软件工程经济学方面的教材,讲授一学期或一学年均可,也可以作为更通用的软件工程课程的辅助教材。3.软件工程经济学是一个有重要意义的、成果累累的研究领域。首先,我想你会发现,软件工程经济学是一门有趣的、有价值的学科。微观经济学是一门精致的、清晰的、精确的学科。为什么这么多人需要计算机、软件和处理过的信息?风险和信息价值使得这个行业有令人鼓舞的前景。由于分析影响软件成本的因素很重要,所以目前出现了许多的软件工程指南并对软件生命周期产生了影响。此外,我还认为每个人不必都把自己沉浸到行业的实践与术语中,去寻找软件工程经济学相关的例子与应用。当我还在USC时,对学校开发的各种计算机与软件应用,及学校对计算机与软件成本的关心程度(特别在学校经费紧张的时候)印象深刻。所以,本书尽量避免行业术语,尽可能多地包含面向大学的问题和实例,从而使本书采用的材料较为熟知。本书的基本内容很适合一学期或一学年的课程。此课程的主要学习目标如下:*了解对软件成本影响最大的因素,并由此来确定估算的软件项目成本。*理解软件工程中的微观经济学的基本概念。*将经济学分析技术应用到软件工程决策中。下表给出了在一学期内讲授本书的课程安排,时间显得有点紧:周书的章节主题11~4软件生命周期:经济学观点25~6简单软件成本模型3,47~9中等软件成本模型:影响软件成本的因素51~12成本效益分析:生产函数、规模经济、方案选择6-复习,期中考试713~15多目标决策分析:净值、现值、品质因素816~18多目标决策分析:约束、系统分析、不可量化目标919~2风险、不确定性和信息的价值121~22实用的软件成本估算技术1131~32案例研究:软件生命周期成本分析与控制12-期末考试如果是第一次讲授软件工程经济学这门课,上述这些内容比较适合一个学年的课程安排,要使一个学期的教学效果令人满意,最好只安排讲授1~18章的内容,也能基本达到学习目标。这门课程适合美国高年级的本科生和一年级的研究生,惟一的前提条件是学生基本熟悉编程过程(或上过相当于两年的计算机科学方面的课程)和一定的微积分基础。为练习软件成本估算模型,我强烈推荐使用有指数运算(Xy)功能的计算器。虽然为使没有计算器的同学也能运用这个模型,在书中我加进了很多曲线,但这毕竟不太精确,也不方便。最后,我希望你能进一步深入研究软件工程经济学,研究软件开发过程自身具有的基本问题,如:*为什么软件开发成本这么高?*是什么因素使软件成本上升或下降,各因素之间如何相互作用?*是什么活动消耗了大部分的成本?*新的软件技术如何降低软件成本?在本书的第四部分,我列举并分析了由63个软件项目的成本及其开发属性组成的数据库,试图回答以下这个问题:“为使项目数据有助于以后其他项目估算和理解其软件成本,我们应该如何解释这些数据?”本书所描述的成本模型,是回答上面这个问题的第一步,但还有待于进一步地去做大量有价值的研究。深入分析这63个项目的数据,就能进一步得到很多有价值的新观点。另外收集、分析更多的观察与实验数据,会得到更多这方面的见解。第四部分大多数章节的最后,都有“进一步研究的主题”一节,说明要阐明上述这个问题的一些最有前途的方向。希望你和你的学生能尝试一下。致在职的软件工程师可以想像在你的软件工程生涯中,已经形成了很多个人原则,来指导估算软件成本、进行软件产品和项目所需的决策。我相信这本书能帮助你利用他人的经验,校准自己的经验法则,能为你的软件成本估算、软件工程决策提供一些其他有用的技术。我也希望,你读这本书的过程是一次激动人心的、充满收获的经历,就像我当初看到,我所用到的各种表面上无关的技术和决策方针,而事实上就是经济学原则的一部分时那样。可以根据个人兴趣与需要选择本书的某些部分阅读,而不是从头到尾地读一遍。以下是根据个人兴趣可以进行的选择。*如果主要想提高自己(或机构)估算软件开发成本的能力,那最好从第21章和第22章的软件成本估算方法开始看,接着再看第4章~第9章的软件生命周期和基本与中等COCOMO模型。*如果你还对估算软件维护成本或其他软件相关成本有兴趣,可阅读第3章、第31章。*如果你还对完成一个详细的软件成本估算模型有兴趣,并想对其加以裁剪,以适合自己的机构,阅读第23章、第29章。*如果你主要对特定软件属性(如,项目人员能力、现代编程规范的使用或语言级别等)对软件成本的影响有兴趣,请阅读第24章~第28章中的相应的内容。*如果你主要对提高软件经济学决策的分析能力有兴趣,请阅读第1章~第18章。*如果你主要对软件项目计划和控制技术有兴趣,请阅读第31章第6节和第32章。然而,即使你只对某一方面的主题有兴趣,我还是推荐你阅读一下第1章~第3章的介绍性内容和第33章的提高软件生产率。这些章节提供了实现更有效的、更令人满意的和更具生产率的环境所需要的背景与方法,在这样的环境中我们能反复演练软件工程活动。
-
软件体系结构刘真编著本书系统地介绍了软件体系结构的基本概念、主要构成和有关理论和方法。在此基础上,着重介绍了目前广泛应用的几种软件体系结构的风格和模式,并深入分析了它们的系统结构、功能和非功能特性以及它们的设计实现。全书共分6章。第1章主要讨论软件开发的特点和问题。第2章主要介绍软件体系结构的概念和研究的重要性,软件体系结构的风格和模式。第3章介绍10种系统级体系结构风格模式。第4章介绍中等规模的设计模式。第5章介绍基础结构模式。第6章简要介绍软件体系结构的其他研究领域,如软件体系结构的描述语言,软件体系结构的形式化及软件体系结构的工具环境等。本书适合高等院校高年级学生和研究生使用,也可作为从事软件工程、软件设计开发、软件应用及软件体系结构研究人员的参考书目。
-
实用声纳工程(英)A.D.Waite著;王德石等译本书在声纳设计使用与研究开发之间搭起了一座桥梁。所以作为培训教材,本书为声纳的使用人员和学习人员提供了全面的基础知识与结论性规律,作为参考资料,本书从应用的角度阐述了声纳技术涉及的所有问题,为声纳设计者与研究人员以及从事声学研究的相关人员提供了宝贵的经验。
-
现代软件工程学钟珞主编21世纪高等院校计算机专业规划教材。本书作为普通高等院校计算机专业研究生的专用教材,从实用角度系统地阐述了现代软件工程学的基本原理、概念和技术方法。本书是一本注重系统性、科学性的教材,内容丰富,实用性强,可作为计算机专业和信息类专业及其他相关专业的研究生教材,也可作为高级软件开发人员的技术参考书。
-
嵌入式系统设计(美)Frank Vahid,(美)Tony Givargis著;骆丽译;骆丽译本书介绍嵌入式系统应用设计技术,不仅介绍嵌入式系统技术的基本理论和技术概念,而且突破了以往微机原理或单片机原理等技术书籍的体系,将嵌入式系统硬件和操作系统作为统一的技术平台来介绍,完全符合嵌入式技术的基本特点。另外,还提供并分析了多个应用实例,使得本书不仅具有较高的学术参考价值,还具有重要的技术参考价值。本书是美国加州大学Riverside分校“嵌入式系统入门”课程的教材,先修课程是“逻辑设计”。因此,本书可作为大多数电子和计算机工程/科学本科生、研究生嵌入式系统课程的教材,也可以作为本科生高年级设计课程以及从事嵌入式系统开发的一般工程技术人员的参考资料。