软件工程及软件方法学
-
软件质量保证(以)Daniel Galin著;王振宇[等]译;王振宇译本书特色:■SQA的广阔视野。除了讨论经典的顾客定制软件,还讨论内部软件开发、外包软件和小机构的SQA。■实践问题的全面讨论。重点放在SQA应用、运行、机构与控制。■SQA问题的全面覆盖。讨论了许多其他SQA教科书中较少涉及的问题,包括:规程与工作条例、支持性质量手段、软件质量的费用与参与SQA框架的行动者。■最新主题。覆盖的问题有:自动测试、计算机化SQA工具与国际标准(例如IS09000-3)。■教学支持。每一章都有小结、案例研究、现实的例子与执行提醒、复习题和讨论题。■联机教师指南。指南包括课程计划指南、PowerPoint讲解材料与题库。本书全面覆盖了IS09000-3的要求。它还提供了ASQ(美国质量协会)CSQE(认证软件质量工程师)所需的知识。本书全面介绍软件质量保证的有关问题,既有理论,也有实践。全书覆盖面广,不仅涉及有关内部软件开发和商用成品软件的质量保证问题,还有许多一般SQA书籍很少涵盖的议题,包括规程与工作条例、支持性质量手段和软件质量费用等,以及最新的SQA议题:自动测试、国际SQA标准和计算机化SQA工具。另外,本书各章都有小结、复习题和讨论题,有利于读者对内容的深入理解。本书适合软件开发部门的经理和负责软件开发和维护质量的质量管理人员阅读。译者序 也许没有人否认软件质量的重要性, 正像几乎没有人否认软件的重要性一样. 但是, 是否动真格地做好软件质量保证工作, 则既涉及理论:观念与认识问题, 又涉及实践二-执行问题. 这本关于软件质量保证的书有个副标题:"从理论到执行". 其实这本书的重点就是执行方面. 不言而喻, 软件质量保证是一个实践性极强的问题. 它的基础来自软件工程学和质量学两个方面, 虽然有了30多年的探索, 但是如何将两方面的理论基础结合起来, 却仍然有许多未知的东西. 把理论付诸实施:执行, 有一系列的问题, 观念性的. 技术的. 费用的和人的方面的. Galin博士的这本书把重点放在执行方面, 无疑是正确的, 也符合我国软件产业发展的需要和人才培养的需要. 书中除了有一般教材中都有的复习题之外, 还有数量不少的讨论题. 读者会发现, 有些题确实是很值得讨论的. 对这些题给出一个回答并不困难, 但是要给出一个"标准答案"则几乎是不可能的. 在这些题中用得最多的话是"列出你的论据", 这就非得多动动脑筋不可. 本书中有一章专门讨论软件质量的费用问题. 在某种程度上, 费用问题是软件质量保证执行的核心. 这又反过来向领导层的管理人员提出一个问题:为了达到你和上级要求的软件质量等级, 在项目的计划安排中有足够的投入吗?这里我们把"费用"泛化成了"投入", 它包括资金费用. 人力和时间. 除封面署名外, 参加本书翻译工作的还有:张立(武汉工程大学). 余扬(华南理工大学). 王晓军(中船重212709研究所). 满益智(中船重工2709研究所). 段姗(中船重52709研究所). 周一帆(华中科技大学). 徐关勇(中船重工12709研究所). 李阳(中船重32709研究所)等. 王振宇(中船重工709研究所) 陈利(华中师范大学) 王志海(武汉理工大学) 2004年5月31日作者简介 DanielGalin博士在以色列海法市的以色列工学院Technion工业与管理工程系获得工业与管理工程学士学位和运筹学的硕士与博士学位. 他在Ruppin学术中心工作, 现在是Ruppin学术中心信息系统研究部的负责人. Galin博士通过SQA教学. 写作和咨询工作获得他在此领域的专长. 他在Ruppin学术中心信息系统研究部. 海法:市Technion的计算机科学系和特拉维夫的行政学院讲授软件质量保证和信息系统的课程. Galin博士同Z. Bluvband博士合著了《软件质量保证》一书. 他的许多论文已经在专业杂志上发表, 主要是英语杂志. 他以前的所有关于信息系统的分析与设计. 软件质量保证的书都是用希伯来语写的, 并由以色列的一流出版社出版. Galin博士20年以上的工作经历包括许多项目中的软件质量保证咨询以及信息系统的分析与设计.前言 新的丹佛国际机场(DIA)在1995年2月的通航是科罗拉多市民的喜庆日, 但它肯定结束了信息技术产业的一段风光时期. 按照计划, DIA要成为美国最大的机场, 到2020年, 每年要为1. 1亿位乘客服务, 每天要通过200个出入口和12条跑道处理1750个航班. 但是, DIA的运行推迟了16个月, 主要是由于基于软件的行李处理系统失效, 估计总损失20亿美元. 此外, 最终投入服务的行李处理系统同最初规定的系统相比, 其能力也有大幅度的缩减. 虽然自从1995年以来已经遗憾地记录了若干其他巨大的失败, 但在DIA的IT技术失败对于盯这个行业来说仍然是特别令人不愉快的, 无论是在损失的规模方面还是在引起的公众兴趣和批评方面都是如此. 许多SQA专业人士(包括作者在内)都相信, 如果从项目开始的时候就应用合适的软件质量保证系统, 那么这种规模的损失是不会出现的, 至少能使其损失大幅度减低. 在本书中讨论的方法和工具, 尤其是风险管理规程, 能够在很早阶段识别出状况的严重性, 并及时在整个项目中采取合适的改正性措施. 其他SQA工具也有可能保证系统按计划安排完成, 并完全符合其规范要求. 根据作者的软件质量保证概念, 可以通过下列方面达到软件质量的可接受水平: ·各种SQA部件的组合应用. ·特别强调软件开发早期阶段的质量, 包括项目前阶段. ·实施控制外部参与方(分包商. 重用软件模块和COTS软件产品的供货商和自己完成部分项目的顾客)的工作质量的全面SQA活动. ·基于对于功能需求. 进度安排和预算计划的预期, 根据连通器原理(principle of communicating vessels)将SQA活动扩展到项目进度安排和预算控制. 这个原理是指这三个容易变化的部件中有一个失效(或降低了实现等级)都会引起其他部件的立即实效. 软件质量保证这个概念通贯全书指导我们. 本书的特征 本书的下列特征是特别重要的: ·SQA的广阔视野. ·全面讨论SQA执行问题. ·全面覆盖SQA主题. ·最新的议题. 下面详细讨论这些特征. SQA的广阔视野 本书对SQA问题的讨论大大超出由大型成熟软件公司进行的顾客定制软件开发的边界. 它致力于重点关注反映软件产业当前状态的另一些软件开发与维护环境: ·信息系统部门的内部软件开发. 本书讨论内部项目的SQA. 传统顾客-供货商关系缺失或模糊的状况, 并简要给出对相关风险的推荐解决办法(见5. 6节和6. 4. 2节). . COTS软件包. COTS软件包在整个产业使用的软件包中所占的比例正在增长. 保证这些要直接集成到顾客软件系统中的软件包的质量已经变成一个重要的问题(见第12章). ·小项目和小机构. 本书也讨论同小机构的软件开发和小软件项目执行有关的问题(见6. 4. 1节). 全面讨论SQA执行问题 全书强调SQA部件的执行中产生的组织. 控制和其他问题. ·专门的章节, 讨论执行过程. ·例子, 把引用现实状况. 尤其是涉及执行问题的例子整合到本书中. ·执行提醒, 大多数章里有同特定执行问题有关的执行提示. ·讨论题, 在每章的末尾, 鼓励读者对执行问题提出创新的解决办法. 全面覆盖SQA主题 本书全面覆盖了SQA的主题. 它包括了其他SQA书中难得涵盖的议题. 这些议题包括: ·规程与工作条例, 它们的编制. 执行与更新(见第14章). ·支持性质量手段, 即模板与检查表, 它们的编制. 执行与更新(见第15章). ·软件质量的费用, 根据经典质量费用模型和一个更好地表示软件质量费用专有性质的新扩展模型进行费用估计(见第22章). ·在SQA框架中的SQA单位和其他行动者, 尤其是机构里促进SQA问题的那些活跃的和临时的实体的活动与职责:SQA单位. SQA理事. SQA委员会和SQA论坛(见第26章). 最新的议题 本书强调下列最新的SQA议题: ·自动测试, 包括有关各种类型的自动测试及其执行的讨论, 以对自动测试优缺点的评述结束(见10. 3节). ·计算机化SQA工具, 同本书中提到的几乎所有SQA部件相关联地进行讨论. 完全致力于讲述计算机化工具的专门一章(见第13章)评述CASE工具. 特别强调显著提高SQA工具性能的技术, 诸如自动测试. 软件配置管理与文档编制控制. ·国际SQA标准. 有两章(见第23. 24章)致力于对软件质量管理标准和项目过程标准的最新发展的全面考察. 可从WWW. booksites. net/Salin获得更多关于本书的信息. 本书的读者 本书的目的是满足对软件质量保证领域感兴趣的广大读者群的需要. 我们针对四个主要的读者群: ·软件开发部门的经理. 项目经理等. ·参加或讲授假期培训课程的人. ·大学和专科学生. ·涉及软件开发与维护的质量问题的实践人员. 此外, 还有在"针对专门读者群的指南"中提到的专门读者群. 致谢 本书得益于软件顾客的意见以及我在以色列工学院的Technion. Ruppin学术中心和其他地方的学生所问的问题. 他们帮助我改进我的讲解, 并激发我提供许多例子. 还有人通过回答问题或提供有价值的论文. 书籍和其他材料帮助过我. 由于人太多, 我无法一一提到他们的名字, 我感谢每一个人. 要向培生教育出版集团(Pearson Education)在以色列的代表Andrea Shustaritch致以特别的感谢, 是他鼓励我写这本书, 并一直关注其进展. 我的编辑Keith Mansfield, 也是培生教育出版集团在英国的高级组稿编辑, 在本书的写作过程中, 他不断提供指导和有价值的建议与合作, 也值得特别感谢. 我要向Nicola Chivers表示我的谢意, 他负责本书在培生教育出版集团的印制, 他的效率和和蔼作风使得和他一起工作是如此的愉快. 此外, 我想向Nina Reshef表示我的谢意, 她专心编辑我的手稿, 对本书的可读性和准确性做出了实质性贡献. 最后, 我想说:我十分感谢我的家庭, 我的妻子AmiraGalin. 我的女儿Michal Nisanson. 我的儿子Yoav Galin, 他们不断地支持和鼓励我, 并对本书的手稿提出过重要的意见. -
软件需求(美)Karl E.Wiegers著;刘伟琴,刘洪涛译;刘伟琴译本书是有关软件需求的经典教材,本书全面而深入地讲述了软件开发中一个至关重要的问题:软件需求问题。软件开发人员及用户往往容易忽略沟通的重要性,导致软件开发出来后,不能很好地满足用户的需要。返工不仅在技术上给开发人员带来巨大的麻烦,并且会造成人力、物力和资源的浪费,还使软件性能深受影响,所以在开发早期提高项目需求分析的质量,减少重复劳动,通过控制项目范围的扩大及需求变更来达到按计划完成预定目标,是当前软件业急需解决的问题,也是本书讨论的主要内容。本书对第1版的内容进行了扩展,不仅对原有的知识点进行了补充,还引入了一些新知识,以求与时代发展同步。本书可以作为计算机专业及软件工程专业学生的教材使用,也非常适合作为项目经理、软件开发人员的指导性参考书。译者序随着计算机软件项目的规模越来越大,竞争日趋激烈,软件开发组织越来越认识到软件质量的重要性,在这种情况下软件工程的理念已渐渐深入人心,人们已经从中受益。软件需求作为软件工程的一个阶段,在软件项目开发中起着至关重要的作用。软件项目要取得成功,最重要的莫过于了解所要开发的软件需要解决哪些问题,这就是软件需求所要解决的问题,因此,软件需求为软件项目的成功奠定了基础。如果软件开发人员与客户不进行充分的交流与沟通,没有就产品的功能性需求和非功能性需求达成共识,就匆匆忙忙开始着手编写代码,其后果可想而知,很可能不能满足用户的需要,从而不得不对项目进行返工,这就造成了人力和物力的巨大浪费。如果我们在软件项目开发之前,充分地完成软件需求的相关活动,就可以避免这种情况的发生。本书是一本非常实用的需求工程参考书,书中按照需求工程的各个阶段,即需求获取阶段、需求分析阶段、编写需求规格说明阶段、需求确认阶段和需求管理阶段组织起来,并提供了许多有效技术,这些技术为用户、开发人员和管理层之间进行交流提供了方便。本书作者卡尔·E·威格(KarlE.Wiegers)是需求工程领域的权威人士,他曾担任过软件开发人员、软件经理以及软件过程和质量改进负责人,在长期的工作中积累了丰富的经验。本书第1版曾荣获"软件开发"效率大奖,目前已成为参与软件开发过程的所有人员必不可少的参考书。本书第2版对第1版中所提出的最佳实践进行了许多扩充,这一版不仅在每一章中都列举了大量的实例并提供了新的案例,而且,作者还根据自己的亲身经历,为完成不同的任务提供了颇具特色的检查列表、范例文档和模板。另外,作者还从自己丰富的职业生涯中精选出了一些趣闻轶事,增加了技术书籍的趣味性。相信阅读本书之后,读者对于需求工程一定会有一个全面而透彻的理解。参加本书翻译工作的人员还有苏正泉、米强、张颖、夏红、谷昀、江峰、徐利生、李宏为、赵琪、姬凌岩。由于时间仓促以及水平有限,错误之处在所难免,敬请读者批评指正。 -
形式方法应用的杠杆作用Tiziana Maragria,Bernhard Steffen 著This book constitutes the thoroughly refereed post-proceedings of the First International Symposium on Leveraging Applications of Formal Methods, ISoLA 2004, held in Paphos, Cyprus in October/November 2004.The 12 revised full papers presented were carefully selected from more than 70 submissions. The papers discuss issues related to the adoption and use of rigorous tools and methods for the specification, analysis, verification, certification, construction, test, and maintenance of systems. In particular, by discussing common problems, requirements, algorithms, methodologies, and practices, ISoLA aims at supporting researchers in their quest to improve the utility, reliability, flexibility, and efficiency of tools for building systems, and users in their search for adequate solutions to their problems. -
UML基础及Visio建模刘晓华等编用UML建模已深入人心,但很多读者苦于没有好的UML建模工具一直裹足不前。本书是作者多年使用Visio的经验总结,相信对初学者有很大的参考价值。Visio不仅仅是一个功能强大、简单易用的绘图工具,它还是一个绝佳的UML建模工具。本书结合Visio最新的2002版本,介绍如下内容:UML相关理论简介,重点是UML 模型图;Visio绘图的基本方法和技巧;用Visio绘制用例图、静态结构图、包图、活动图、状态图、序列图、协作图、组件图和部署图。介绍每种模型图的时,本书会详细介绍其概念、创建步骤和创建示例;最后介绍如何将Visio、UML和.NET结合,开发企业级应用,包括如何把VisualStudio.NET项目实施反向工程以生成UML静态模型结构,如何用Visio把UML模型映射为代码框架。本书避免重复大量枯燥的理论,而是尽可能用图形、示例来说明问题,剖析疑难。本书适合学习Visio建模的初学者阅读,同时也可作为大专院校或社会培训班的学习教材。 -
中国冰川信息系统吴立宗等编本书主要介绍了中国冰川分布和数据,按国际档案,为每一条冰川建立档案,包括冰川位置、类型等多项指标。 -
供应链管理与高级规划(美)Hartmut Stadtler,(美)Christoph Kilger著;王晓东[等]译;王晓东译本书从理论探讨开始,提出供应链管理的建模方法,并结合当前常见的软件去解决“供应链规划”这一难题。书中附以大量案例,详细介绍了供应链管理和商级规划系统的理论、实践和建模。本书可作为教学用书,也可作为参考书指导业界实践。 -
软件工程(法)雅克·普林茨(Jacques Printz)原著;金维克译从总体上说,信息系统的生产是很复杂的,软件工程就是一门以这样生产为目标的科学。这门“元学科”确定了为保证软件生产过程正常进行所必需条件的规则和界限。因此,它必然要立足于软件开发的实践,并始终要研究它所提出的工具的有效性和合理性。本书全面介绍了软件开发的各项经济数据和技术数据,可以使读者更好地理解软件工程所面临的真正挑战:要让围绕在我们周围的信息系统始终为我们服务。本书适合于对软件开发感受趣的广大读者。 -
信息系统工程中的符号学Kecheng Liu著符号学(又称为记号学)作为研究各种符号的科学,多年来已被认为是信息通信系统中最重要的基础学科,并广泛应用于计算机及相关应用学科中,如计算机应用系统的设计与开发、需求工程、信息系统工程、电子商务、电子政务、人机交互、协同工作等。本书作为符号学在计算机及企业系统中的应用的一第部专著,自出版以来,给学术及应用领域带来了重要的影响,许多欧洲及美洲的大学院校采用此书作为研究生教材,并有一些院校根据此书开设大学高年级课程。本书从符号学的角度,介绍了信息需求分析、建模、设计及开发的方法,并提供实便演示,适合作为大学高年级或研究生的符号学教材。本书作者刘科成教授现在英国瑞丁大学(The University of Reading)任教,并担任交叉学科的信息科学研究中心主任。自2000年以来,他撰写和编辑了5本符号学专著,他的个人网址为:www,rdg.ac.uk/~sis01kl。 -
嵌入式系统开发与应用田泽编著内容简介目录全面讲述了嵌入式系统开发与应用技术,以嵌入式系统的基本开发技术为主线,以ARM处理器核及国内应用广泛的Samsung公司S3C44B0X(基于ARM7TDMI)为硬件平台,系统讲述了嵌入式系统开发的基本知识、基本流程、基本方法及以ARM微处理器为核心的嵌入式系统软、硬件开发过程。主要内容包括:◆ 嵌入式系统开发基础知识;◆ ARM技术概述;◆ 基于ARM的嵌入式系统应用程序设计;◆ 基于S3C44B0X的嵌入式系统应用开发实例;◆ μC/OSⅡ和μCLinux嵌入式操作系统及应用开发。本书可作为高校计算机和电类专业的本科生、研究生教材,以及相关工程技术人员进行嵌入式系统应用开发的教材,也可供基于ARM核嵌入式系统开发的工程技术人员参考。本书配套多媒体教学课件。嵌入式技术的发展以8位单片机(或微控制器,MCU)为核心的嵌入式系统早已广泛应用于各个领域,这些应用大多数还处于单机使用的嵌入式低层次阶段。其特点是以MCU为核心,与一些简单的传感器及监测、伺服控制、指示和显示等设备配合,实现一定的测量、显示、信息处理及控制等功能。虽然在一些工业控制、汽车电子和智能家居等多机应用中,为了实现多个MCU构成的系统间的信息交流,通常是利用CAN、RS232和RS485等总线将MCU组网。但这种网络的应用空间有限,相关的通信协议也比较单一,并且一般孤立于广泛应用的Internet以外。目前,Internet已成为社会重要的基础信息设施,是信息流通的重要渠道。嵌入式系统必将与Internet完美融合,方便、低廉地将信息传送到世界上任何一个地方。随着嵌入式设备与Internet的广泛结合,手机、PDA、路由器和调制解调器等复杂的高端应用对嵌入式处理器的性能提出了更高的要求。虽然以8位单片机为核心的嵌入式技术不断发展,性能也不断提高,但由于其性能的局限性,已无法满足未来高性能嵌入式技术的发展需求。激烈的市场和技术竞争要求不断提高嵌入式系统的性价比;同时,也要求缩短嵌入式系统的开发周期。自从20世纪70年代初出现嵌入式系统的概念以来,嵌入式系统以其高性能、低功耗等特点高速发展。当时的嵌入式系统很多都不采用操作系统,它们只是为了实现某个控制功能,使用简单的循环控制来对外界的控制请求进行处理。随着嵌入式系统的发展,当应用系统越来越复杂、使用范围越来越广泛时,每增加一项新的应用功能,都可能需要从头开始设计系统软件,没有操作系统已成为其最大缺陷。但目前在8位单片机上运行嵌入式操作系统尚有一定困难,因此,以32位处理器作为高性能嵌入式系统开发的核心已是嵌入式技术发展的必然趋势。20世纪90年代后,嵌入式系统设计从以嵌入式微处理器/DSP为核心的"集成电路"级设计,逐渐转向"集成系统"级设计,提出了片上系统SoC(Sytem on a Chip)的基本概念。目前,嵌入式系统已进入以SoC为核心的设计阶段,并开始逐步实用化和规范化。SoC为高性能嵌入式系统开发提供了功能丰富的硬件平台,也为实时嵌入式操作系统的广泛使用提供了硬件基础。从20世纪80年代开始,陆续出现了一些嵌入式操作系统,比较著名的有VxWorks、Windows CE、Palm、μCLinux、pSOS和μC/OSⅡ等,但真正广泛使用只是近几年的事情。一方面是因为嵌入式系统软件开发复杂度增加的需求;另一方面是大量高性能、面向实际应用、集成多种系统功能的SoC芯片成为高端嵌入式应用的硬件核心,为可靠、高效、低成本地运行嵌入式操作系统提供了硬件平台。大部分嵌入式操作系统价格昂贵,而源代码开放的μC/OSⅡ、μCLinux是大家比较看好的,也比较适用于教学。有关嵌入式操作系统的知识体系相对复杂,一些出版社已经出版了多种相关的书籍,如果在教学、科研中对这方面内容比较感兴趣,请参阅相关资料。嵌入式微处理器具有体积小、重量轻、成本低和可靠性高的优点,是嵌入式系统的核心。目前比较有影响的32位嵌入式处理器有ARM公司的ARM、Compaq公司的Alpha、HP公司的PARISC、IBM公司的PowerPC、MIPS公司的MIPS和Sun公司的Sparc等。而ARM处理器具有高性能、低功耗和低成本等显著优点,已成为高性能、低功耗嵌入式微处理器的代名词,是目前32位、64位嵌入式处理器中应用最为广泛的一个系列。20世纪90年代初,半导体行业产业链形成设计业、制造业和封装测试业三业分离的产业分工。台积电、联电等半导体代工厂崛起,一些fabless、chipless公司如雨后春笋般出现。而英国先进RISC机器公司(Advanced RISC Machines,简称ARM公司)作为fabless、chipless这一生产模式最为成功的典范。ARM公司既不生产芯片,也不销售芯片,而是设计出高效的IP内核,授权给各半导体公司使用;半导体公司在ARM技术的基础上,根据自己公司的产品定位,添加自己的设计并推出芯片产品;最后由OEM客户采用这些芯片来构建基于ARM技术的最终应用系统产品。经过10多年的发展,ARM公司已是业界领先的IP供应商。回顾ARM技术的发展历程,在ARM7体系结构(体系结构版本v3)刚被广泛接受和使用时,嵌入式微处理器的市场仍然大都由8位、16位处理器占领。然而,这些产品却不能满足当时移动电话、调制解调器等高端应用对处理器性能的要求。这些高端产品需要32位RISC处理器的性能和更优于16位CISC处理器的代码密度,这就要求要以更低的成本取得更好的性能和更优的代码密度。为了满足这种发展需求,ARM体系结构增加了T变种,开发了一种新的指令体系,即16位Thumb指令集。Thumb技术是ARM技术的一大特色。ARM发布的ARM7TDMIT体系结构(体系结构版本v4T)的处理器,是第一个支持Thumb指令集的微处理器,其工作模式可以方便地切换到Thumb状态。在该状态下运行的指令集是16位Thumb指令集,这在当时的16位系统与现在需要的32位系统之间搭起了一座桥梁。性能更优而不需要付出额外代价的ARM,为那些在当时使用8位或16位处理器,却一直在寻找更优性能处理器的用户来说,提供了解决方案,也极大地推动了ARM技术的发展。16位处理器一直没有像人们预期的那样发展起来的原因很复杂,由于32位ARM微处理器提供了低于一般16位微处理器的价格而高于一般16位微处理器的性能,使得高端的嵌入式应用可以完全跨越16位而直接进入32位应用领域,这也许是原因之一。ARM微处理器得到了众多半导体厂家和整机厂商的大力支持,全球已有100多家IT公司在采用ARM技术,20家最大的半导体厂商中有19家是ARM的用户,包括TI、Philips和Intel等公司。优良的性能和准确的市场定位极大地丰富了ARM资源,加速了基于ARM核的面向各种应用系统芯片的开发应用,使得ARM获得了更广泛的应用,确立了ARM技术的市场领先地位。ARM在高性能嵌入式应用领域获得了巨大的成功,已在32位嵌入式应用中稳居世界第一。在2002年,基于ARM核的芯片占据了整个32位、64位嵌入式微处理器市场的79.5%,全世界已使用了20多亿个ARM核。如今,ARM公司已经成为业界的龙头老大,"每个人口袋中都装着ARM"是毫不夸张的,因为几乎所有的手机、移动设备、PDA都是用基于ARM核的系统芯片开发的。为了顺应当今世界技术革新的潮流,了解、学习和掌握高性能嵌入式技术,就必然要学习以32位ARM微处理器为核心的嵌入式开发技术及其应用开发环境和平台。 对IT产业发展规律进行总结可发现:如果说过去20年PC机的广泛应用是集成电路和IT相关技术发展的驱动器并且极大地促进了IT相关技术发展,那么未来几十年除了PC技术要继续高速发展之外,主要驱动器应该是与Internet相结合的、可移动的(Mobile)、便携的(Portable)、实时嵌入式Internet的信息处理设备,即进入了后PC(PostPC)时代。目前嵌入式Internet还仅局限于移动商务、智能家居(家电上网)、工业控制和智能设备的应用等方面。随着相关应用技术的发展,嵌入式技术必将与许多实际应用领域相结合,以难以想像的速度发展。这必然会极大地拓展嵌入式应用的广度和深度,体现嵌入式系统与实际应用密切结合的价值。当代通用计算机工业是Wintel(Microsoft和Intel公司20世纪90年代初建立的联盟)垄断的工业。随着信息技术和网络技术的高速发展,嵌入式技术的广泛应用使得这种垄断在后PC时代不再存在。嵌入式系统正是非PC设备的主体。互联网技术在世界范围的扩展及中国通信事业的高速发展,为我国开发嵌入式产品造就了巨大市场。与实际应用密切结合且技术高度分散的嵌入式技术,为我国IT技术的发展提供了难得的机遇。加快嵌入式技术的开发应用,学习与掌握嵌入式系统开发的核心技术,对于IT技术并不发达的中国是非常重要的。学习32位嵌入式系统应用开发知识的迫切性与传统的以8位51单片机为核心的开发应用相比,ARM微处理器的性能和处理能力遥遥领先,应用也日益广泛,但与之相应的,基于ARM的32位嵌入式系统软/硬件开发的复杂度和难度也急剧加大。现在我国嵌入式应用开发技术人才状况是:掌握低端8位单片机应用技术的人才相对过剩;而真正了解高端32位嵌入式系统开发技术的人才,却凤毛麟角,需求与供给严重失衡。就我国大部分高校目前的嵌入式系统教学而言,整体仍然停留在20世纪80年代初发展起来的以8位51单片机为核心的单片机教学水平上。目前教学内容设置、教学方法、教学手段、教材编写体系与这门课程以实际应用为主的基本特征严重脱节。学生学习了这门课程后,只能进行一般的、基于指令基础上的简单编程,而不能进行基本的应用系统设计。在此基础上要想完成具有较大规模的应用程序设计是有一定难度的,要独立进行一般的开发工作就更加有难度。一般学生进入技术开发岗位后,基本上要进行相当长一段时间的实际培训,才能基本进入开发流程;要独立承担项目,还需要更长一段时间。发展嵌入式技术,人才是关键。培养和培训相关人才,一方面,要在高校中加强嵌入式系统教学,这是人才的源头;另一方面,有一定实际项目开发经验的工程技术人员也需要加强嵌入式系统开发技术的学习。因此,为满足高等院校相关专业嵌入式系统教学要求,迫切需要适合教学特点的高水平教材;从事嵌入式系统开发的一般工程技术人员也迫切需要对嵌入式系统应用开发技术进行全面、系统、深入介绍的参考资料。作者是国内最早翻译ARM bible级的《ARM SoC体系结构》\[1\]一书的译者之一,并从事于ARM技术的相关教学及科研工作多年,积累了大量的嵌入式系统教学和开发经验;作者与ARM公司、基于ARM核的芯片厂商以及对ARM感兴趣的读者建立了广泛的联系,获得了大量的技术信息和建议。因此,为满足高等院校相关专业的师生及嵌入式系统开发工程技术人员的需要,作者在此基础上,编写了4本图书,即本书及另外3本一套的《嵌入式系统开发与应用系列教程》。本书涉及的硬件平台及开发环境Samsung公司S3C系列芯片是国内市场占有率最高的基于ARM核的微处理器之一,其接口模块丰富,适用面广,故本书和《嵌入式系统开发与应用系列教程》都选择Samsung公司S3C44B0X(基于ARM7TDMI)作为硬件平台。在学习基于ARM的嵌入式系统开发时,选择合适的开发工具可以加快开发进度,降低开发成本。目前世界上有几十家公司提供不同类别的ARM开发工具和产品。ARM应用的开发工具主要包括集成开发环境IDE、嵌入式实时操作系统、评估板和JTAG仿真器等。一般来说,一套具备最基本功能的嵌入式集成开发环境IDE是嵌入式系统开发所必不可少的。目前国内外主要使用的IDE环境有ARM 公司的SDT和ADS、美国Green Hills软件公司的Multi 2000、台湾的Hitool for ARM以及英蓓特公司的Embest IDE for ARM等,而国内使用较多的IDE为ARM公司的SDT、ADS以及英蓓特公司的Embest IDE。仿真器有ARM公司的Muti-ICE和英蓓特公司的Embest系列ARM JTAG仿真器。SDT和ADS是ARM公司早期的集成开发环境(IDE),其用户界面不太符合中国人的使用习惯,而且软件本身价格很高,仿真器也是价格不菲。SDT和ADS目前都已经停止升级。英蓓特公司的ARM集成开发环境套件(包括Embest IDE、指令集模拟器、仿真器及Flash编程器等相关开发工具)是国内最早的ARM开发工具之一。作为国内较早成功开发出IDE环境的公司,英蓓特是目前国内唯一的ARM Connected Community Membership(参见http://arm.convergencepromotions.com/catalog/Embest.htm),完全自主开发,本土技术支持实力雄厚,且价格合理,并能为嵌入式系统开发人员提供软硬件开发工具和嵌入式系统完整解决方案及技术信息服务;因此,本书和《嵌入式系统开发与应用系列教程》都选用英蓓特公司的集成开发环境套件作为ARM应用开发的工具。学习32位嵌入式系统开发与应用技术所需的基础知识嵌入式系统开发与应用的内容繁杂,涉及基本的硬件知识(如嵌入式微处理器及其基本接口、扩展人机接口和网络通信接口等知识)、操作系统(应该至少了解一种操作系统的中断、优先级、任务间通信和同步等知识)、程序设计知识(C语言、C++语言和汇编语言程序设计,至少要熟悉C语言);同时,还要具备一定的数字电路知识以及使用示波器、逻辑分析仪等基本技能。因此,在系统地学习本书和《嵌入式系统开发与应用系列教程》之前,必须有学习过微机原理与接口、C语言程序设计等课程的基础,掌握计算机操作系统原理、体系结构和系统结构的基本概念,同时对于网络协议有一定的了解。本书内容组成本书全面、系统地讲述了嵌入式系统开发的基础理论与应用技术,以嵌入式系统的基本开发技术为主线,以ARM处理器核及目前应用广泛的Samsung公司的S3C44B0X(基于ARM7TDMI)为硬件平台,系统讲述了嵌入式系统开发的基本知识、基本流程、基本方法及以ARM微处理器为核心的嵌入式系统软/硬件开发过程。在加强嵌入式系统开发基础、嵌入式系统应用软件设计、嵌入式基本硬件接口、嵌入式操作系统移植及应用内容的基础上,紧密结合嵌入式系统开发过程的实际工程应用,将嵌入式系统外围复杂的实用模块开发例程移植到了本书内容中。本书按技术内容分为8章,共5大部分。各部分具体内容及包含的章节如下:第1部分: 为书的第1章,主要介绍嵌入式系统开发的基础知识。内容包括嵌入式系统的基本概念、组成结构、硬件组成、操作系统、应用软件开发、开发流程和发展趋势。通过本部分的学习,可使读者系统地建立起嵌入式系统开发的整体概念和知识体系。第2部分: 为书的第2章,主要对ARM技术进行全面论述。通过本部分的学习,可使读者全面地了解ARM技术,并建立起以ARM技术为基础的嵌入式系统应用和以ARM核为基础的嵌入式SoC芯片设计的技术框架。在学习本部分时,可根据自己的具体情况有所取舍。第3部分: 为书的第3、4和5五章。主要介绍嵌入式系统的应用程序设计。第3章主要介绍ARM指令集。第4章主要介绍Thumb指令集。ARM和Thumb这两种指令集只是基于ARM的嵌入式编程的基础。第5章主要介绍如何运用前面学过的汇编指令并结合C语言来进行嵌入式程序设计。首先介绍伪操作、宏指令和伪指令等嵌入式汇编语言程序设计基础知识;然后讲述ARM汇编语言程序设计,以实际例程中用到的C语言讲述嵌入式C语言程序设计基础,并在此基础上列举一个嵌入式C程序设计实例;对于嵌入式编程技巧和C语言与汇编混合编程也进行了简述;最后通过一个基于Embest IDE for ARM开发环境的嵌入式软件开发与调试实例讲述了嵌入式软件开发流程和开发工具的使用。本章密切结合嵌入式系统开发的实际例程,通过学习能使读者掌握嵌入式程序设计的基本知识、基本方法和基本流程。第4部分: 为书的第6章。主要介绍基于S3C44B0X的嵌入式系统开发。Samsung公司的S3C44B0X片上功能很强大,是国内应用广泛的基于ARM7TDMI内核的SoC。本部分以S3C44B0X为例,对嵌入式系统开发进行全面介绍,涉及片上基本功能模块及这些模块的应用开发;在此基础上还介绍基于S3C44B0X的S3CEV40开发板设计,并对基于S3CEV40的启动程序和基于S3CEV40的USB接口的嵌入式开发进行讲述,其他如网络等功能的完整的应用开发可详见《嵌入式系统开发与应用实验教程》\[2\]一书。通过对这些嵌入式外围主要模块应用功能(部分内容可参见《嵌入式系统开发与应用实验教程》)开发的讲述,可使读者对嵌入式系统开发有一个全面了解。第5部分: 为书的第7、第8章,主要对于嵌入式操作系统μC/OSⅡ和μCLinux的基本知识进行讲述,在此基础上分别对基于S3C44B0X的移植及应用开发进行介绍。本书包含大量软件和硬件设计资源,为系统学习与掌握基于ARM的嵌入式开发技术提供了一种选择方案。通过该书的学习,不仅可使读者系统地掌握嵌入式系统开发的基本知识,而且对复杂实用的外围接口模块的开发、嵌入式操作系统的移植也能有一个全面了解。本书提供的实际嵌入式系统开发例程也可应用到实际开发过程中。本书读者对象本书力求将嵌入式系统开发与应用技术全面介绍给读者,内容全面、详细和系统,非常适于学习嵌入式系统开发的工程技术人员阅读。因其内容较多,不太适宜作为高等院校嵌入式系统课程的短学时教材,但高校研究生或本科生的多学时嵌入式系统课程可选用此书作为教材。此书亦可作为嵌入式系统开发工程技术人员的培训资料。对于选用《嵌入式系统开发与应用系列教程》作为教材的高校师生,亦可将此书作为配套参考资料。为了便于教学和培训,本书还配套了多媒体教学课件。本书与《嵌入式系统开发与应用系列教程》的配套使用作者编写的另外3本一套的《嵌入式系统开发与应用系列教程》是专门针对高校嵌入式系统教学特点而编写的教材,包括:◆ 《嵌入式系统开发与应用教程》(理论课教材,即将出版):配套多媒体教学课件◆ 《嵌入式系统开发与应用实验教程》(实验课教材):配套Embest ARM实验教学系统:配套多媒体教学课件◆ 《嵌入式系统开发与应用学习指导》(即将出版)本套教程中的理论教材:《嵌入式系统开发与应用教程》,是针对高校嵌入式系统教学的特点,在本书基础上将内容重新整合而成的,更适合于短学时的教学和培训。本书可结合《嵌入式系统开发与应用系列教程》中的实验教材:《嵌入式系统开发与应用实验教程》来学习,这样可使读者用最短时间掌握32位嵌入式系统应用开发的基础理论和实践知识,培养高端嵌入式产品的研发和设计能力,达到社会对高素质、开拓型嵌入式人才的要求。作者根据实际教学情况和相关技术的发展,对《嵌入式系统开发与应用实验教程》进行了修订,其第2版即将出版。教学课件及获取方式为了便于教学和实验,作者针对本书以及《嵌入式系统开发与应用系列教程》的理论课和实验课教材3本书,为教师提供相配套的多媒体教学课件。有需要的教师,请与北京航空航天大学出版社联系。联系方式如下:通讯地址:北京市海淀区学院路37号北京航空航天大学出版社市场及客户服务部邮编:100083Email:bhpress@263.netTel:01082317031Fax:01082317031致谢在《嵌入式系统开发与应用系列教程》及本书的编写过程中,得到了北京航空航天大学出版社的大力支持,并得到了ARM中国总裁谭军博士、北京理工大学马忠梅教授的关心和指导,北京大学信息科学技术学院盛世敏教授、于敦山博士和蒋安平博士也给予了大量的支持和帮助。感谢我的博士导师中国科学院微电子研究所的仇玉林研究员、北大盛世敏教授,感谢我的硕士导师西安交通大学邱祖廉教授,感谢他们对我一如既往的关心、理解和帮助。他们将我带入科学研究的殿堂,并给予我各种帮助,是我无穷的精神源泉,在此表示深深感谢!我的硕士研究生万永波、闫效莺、车晓萍、杨峰、陈群英、李攀、王进军、刘涛和余兆安以及本科生谢辉、杨冬峰、张精通、徐德正、宋文博、侯利军、杨艳锋、杨景松、宫志坚、郑晓亮和朱书恬等同学亦参与了这一系列图书编写的部分工作,在此表示感谢! 深圳市英蓓特信息技术有限公司的徐光峰、张国瑞、黄日新、唐晖等工程师也提供了更详细的Embest ARM实验教学系统的技术资料和各种帮助,并提出了大量意见和建议,在此表示感谢!感谢我的爱人王永红给予我的理解和支持,是她在家庭中默默地劳作和操持,使我可以安心于工作。正是由于她给予我最及时、最需要的关心和照顾,使我在单调的工作之余,生活总是绚丽、多彩。感谢我的儿子田祎琨,我很少在生活和学习上给予他照顾,希望他幼小的心灵能够理解我!感谢北京航空航天出版社的编辑们,正是由于他们高效、努力的工作,才使得本书能够及时与大家见面!感谢所有帮助过我的人们,有了他们的理解、帮助和支持,我才能完成写作。由于时间仓促及众多客观条件的制约,书中存在的错误不足之处,敬请读者谅解,并真诚地欢迎读者提出宝贵意见和建议。希望教育界、科研界、产业界携手并进,抓住嵌入式技术为我国IT发展提供的难得机遇,促进我国嵌入式技术快速、稳定、健康地发展。田泽2004年10月 第1章 嵌入式系统开发基础1.1 嵌入式系统的基本概念11.1.1 嵌入式计算机11.1.2 嵌入式系统的概念51.1.3 嵌入式系统的特点61.1.4 嵌入式系统的分类91.1.5 嵌入式系统的应用范围91.1.6 嵌入式技术是中国IT发展的难得机遇91.2 嵌入式系统的组成结构101.2.1 嵌入式系统硬件基本结构介绍111.2.2 嵌入式系统软件的层次结构121.2.3 启动程序BootLoader介绍141.3 嵌入式系统的硬件组成151.3.1 嵌入式处理器151.3.2 典型嵌入式处理器介绍161.3.3 嵌入式SoC211.3.4 可编程片上系统SOPC221.3.5 嵌入式外围接口电路和设备接口241.4 嵌入式操作系统251.4.1 嵌入式操作系统261.4.2 嵌入式实时操作系统261.4.3 典型嵌入式操作系统介绍281.5 嵌入式应用软件开发311.5.1 嵌入式软件开发的特点和技术挑战311.5.2 嵌入式软件开发环境321.5.3 嵌入式应用软件开发的基本流程351.5.4 嵌入式软件开发的可移植性和可重用性391.6 嵌入式系统的开发流程401.6.1 嵌入式开发考虑的要素411.6.2 软硬件协同设计411.6.3 嵌入式系统开发的基本流程421.7 嵌入式系统的发展趋势441.7.1 即将来临的以ARM为核心的32位浪潮441.7.2 嵌入式系统与Internet的融合461.7.3 嵌入式系统的发展趋势47习题48第2章 ARM技术概述2.1 ARM体系结构的发展历史和技术特征502.1.1 ARM技术的发展历程512.1.2 RISC体系结构562.1.3 ARM体系结构的技术特征612.2 ARM体系结构不同版本的发展概述622.2.1 ARM体系结构的基本版本622.2.2 ARM体系结构的演变652.2.3 ARM体系结构的命名规则672.3 Thumb技术介绍672.3.1 Thumb的技术概述682.3.2 Thumb的技术实现682.3.3 Thumb的技术特点702.4 ARM处理器工作状态702.5 ARM处理器工作模式712.6 ARM寄存器组成722.6.1 ARM寄存器组成概述722.6.2 ARM状态下的寄存器组织732.6.3 Thumb状态下的寄存器组织782.7 ARM的异常中断792.7.1 ARM的异常中断响应过程802.7.2 从异常中断处理程序中返回812.7.3 异常中断向量表832.7.4 异常中断的优先级832.8 ARM组织结构简介842.8.1 3级流水线ARM的组织842.8.2 5级流水线ARM的组织872.9 ARM存储器接口及存储器层次892.9.1 ARM存储数据类型和存储格式892.9.2 ARM的存储器层次简介902.9.3 ARM存储系统简介912.10 ARM协处理器942.11 ARM片上总线AMBA952.11.1 总线标准概述962.11.2 AHB简介962.11.3 ASB简介982.11.4 APB简介982.12 基于JTAG的ARM系统调试992.12.1 JTAG边界扫描测试接口简介1002.12.2 ARM的调试结构1032.12.3 ARM的嵌入式跟踪1062.13 ARM核综述1072.13.1 ARM7系列核介绍1072.13.2 ARM9系列核介绍1152.13.3 ARM10系列核1202.13.4 StrongARM和XScale系列核1232.13.5 SecurCore系列核1282.14 基于ARM核的芯片选择1292.14.1 应用角度的ARM芯片选择原则1292.14.2 多内核ARM角度芯片选择原则1312.14.3 国内常用ARM芯片及供应商简介132习题133第3章 ARM指令集3.1 ARM指令集概述1343.1.1 ARM指令集编码1343.1.2 条件执行1353.1.3 指令分类及指令格式1363.2 ARM寻址方式1373.2.1 立即寻址1373.2.2 寄存器寻址1393.2.3 寄存器间接寻址1403.2.4 基址加偏址寻址1413.2.5 堆栈寻址1433.2.6 块拷贝寻址1443.2.7 相对寻址1463.3 ARM指令详细介绍1463.3.1 数据处理指令1463.3.2 Load/Store指令1543.3.3 状态寄存器与通用寄存器之间的传送指令1633.3.4 转移指令1663.3.5 异常中断产生指令1703.3.6 协处理器指令1733.3.7 未使用的指令空间177习题179第4章 Thumb指令集4.1 Thumb指令集概述1824.1.1 Thumb指令集编码1834.1.2 Thumb状态切换1834.1.3 编程模型1844.1.4 Thumb指令集特点1854.2 Thumb指令详细介绍1864.2.1 Thumb数据处理指令1864.2.2 Thumb转移指令1944.2.3 数据存取指令1984.2.4 异常中断指令204习题206第5章 基于ARM的嵌入式程序设计5.1 ARM汇编语言的伪操作、宏指令与伪指令2085.1.1 2种编译模式的集成开发环境IDE介绍2095.1.2 ADS编译环境下的ARM伪操作和宏指令2095.1.3 GNU编译环境下的ARM伪操作与宏指令2365.1.4 ARM汇编语言的伪指令2465.2 ARM汇编语言程序设计2505.2.1 ARM汇编中的文件格式2505.2.2 ARM汇编语言语句格式2505.2.3 ARM汇编语言编程的重点2605.2.4 ARM汇编程序实例2675.3 嵌入式C语言程序设计基础2735.3.1 C语言的"预处理伪指令"在嵌入式程序设计中的应用2735.3.2 嵌入式程序设计中的函数及函数库2925.3.3 嵌入式程序设计中常用的C语言语句3075.3.4 嵌入式程序设计中C语言的变量、数组、结构和联合3125.4 嵌入式C语言程序设计实例3185.4.1 实例实现功能介绍3185.4.2 实例实现程序源代码介绍3215.5 嵌入式C语言程序设计技巧3355.5.1 变量定义3355.5.2 参数传递3375.5.3 循环条件3375.6 C语言与汇编语言混合编程3385.6.1 ATPCS介绍3395.6.2 内嵌汇编3425.6.3 C语言和ARM汇编语言程序间相互调用3495.7 基于Embest IDE for ARM 环境的软件开发实例3515.7.1 开发实例介绍3525.7.2 源文件解释3525.7.3 建立工程3595.7.4 工程配置3605.7.5 在RAM中调试软件3675.7.6 软件的固化3695.7.7 程序在Flash中调试369习题370第6章 基于S3C44B0X的嵌入式系统应用开发实例6.1 S3C44B0X处理器介绍3746.1.1 Samsung S3C44B0X简介3746.1.2 Samsung S3C44B0X特点3746.1.3 S3C44B0X功能结构框图3786.1.4 S3C44B0X引脚信号描述3786.2 S3C44B0X存储控制器功能及应用开发3836.2.1 S3C44B0X存储控制器概述3846.2.2 S3C44B0X存储器空间划分简述3846.2.3 S3C44B0X存储控制器功能描述3856.2.4 S3C44B0X存储控制器的特殊功能寄存器3866.2.5 S3C44B0X存储器应用编程3906.3 S3C44B0X I/O端口功能及应用开发3926.3.1 S3C44B0X I/O功能概述3926.3.2 S3C44B0X端口功能配置3936.3.3 S3C44B0X端口功能控制描述3946.3.4 S3C44B0X I/O端口的特殊功能寄存器3966.3.5 S3C44B0XI/O端口应用编程4016.4 S3C44B0X DMA功能及应用开发4046.4.1 S3C44B0XDMA概述4046.4.2 S3C44B0XZDMA/BDMA操作4046.4.3 S3C44B0X DMA特殊功能寄存器4096.4.4 S3C44B0XDMA应用编程4156.5 S3C44B0X UART接口功能及应用开发4176.5.1 S3C44B0X UART概述4176.5.2 S3C44B0X UART的操作4196.5.3 S3C44B0X UART的特殊功能寄存器4226.5.4 S3C44B0X UART应用编程4276.6 S3C44B0X中断控制器功能及应用开发4316.6.1 S3C44B0X中断概述4316.6.2 S3C44B0X中断控制器的操作4326.6.3 S3C44B0X中断源4326.6.4 S3C44B0X矢量中断模式4356.6.5 S3C44B0X矢量中断模式的程序举例4356.6.6 S3C44B0X中断控制器的特殊功能寄存器4386.6.7 S3C44B0X中断控制器应用编程4436.7 S3C44B0X时钟电源管理器功能及应用开发4456.7.1 S3C44B0X时钟电源管理器概述4456.7.2 S3C44B0X时钟电源管理器功能描述4466.7.3 S3C44B0X时钟发生器与电源管理特殊功能寄存器4516.7.4 S3C44B0X时钟与电源管理器应用编程4536.8 S3C44B0X PWM定时器功能及应用开发4556.8.1 S3C44B0X PWM定时器概述4556.8.2 S3C44B0X PWM定时器工作原理4576.8.3 S3C44B0X PWM 定时器操作4576.8.4 S3C44B0X PWM定时器的特殊功能寄存器4596.8.5 S3C44B0X PWM定时器应用编程4646.9 S3C44B0X LCD控制器功能及应用开发4666.9.1 S3C44B0X LCD控制器概述4666.9.2 S3C44B0X LCD控制器的特性4666.9.3 S3C44B0X LCD外部接口信号4676.9.4 S3C44B0X LCD控制器框图4676.9.5 S3C44B0X LCD 控制操作4686.9.6 S3C44B0X LCD视频操作4696.9.7 S3C44B0X LCD控制器的特殊功能寄存器4726.9.8 S3C44B0X LCD控制器应用编程4776.10 S3C44B0X A/D转换器功能及应用开发4796.10.1 S3C44B0X的A/D转换器概述4806.10.2 S3C44B0X A/D转换器特点4806.10.3 S3C44B0X的A/D转换操作4806.10.4 S3C44B0X A/D转换的特殊功能寄存器4826.10.5 S3C44B0X A/D转换器应用编程4846.11 S3C44B0X RTC功能及应用开发4846.11.1 S3C44B0X RTC概述4856.11.2 S3C44B0X RTC特性4856.11.3 S3C44B0X RTC操作4856.11.4 S3C44B0X RTC特殊功能寄存器4876.11.5 S3C44B0X RTC应用编程4936.12 S3C44B0X看门狗定时器功能及应用开发4956.12.1 S3C44B0X看门狗定时器概述4966.12.2 S3C44B0X看门狗定时器特殊功能寄存器4966.12.3 S3C44B0X看门狗定时器应用编程4986.13 S3C44B0X I2C总线接口功能及应用开发4996.13.1 S3C44B0X I2C总线概述4996.13.2 S3C44B0X I2C总线接口操作4996.13.3 S3C44B0X I2C接口特殊功能寄存器5036.13.4 S3C44B0X I2C总线应用编程5066.14 S3C44B0X IIS总线接口功能及应用开发5076.14.1 S3C44B0X IIS概述5076.14.2 S3C44B0X IIS特性5086.14.3 S3C44B0X IIS功能描述5086.14.4 S3C44B0X IIS接口工作模式5096.14.5 S3C44B0X音频串行接口格式5096.14.6 S3C44B0X IIS接口特殊功能寄存器5116.14.7 S3C44B0X IIS应用编程5146.15 S3C44B0X SIO功能及应用开发5176.15.1 S3C44B0X SIO概述5176.15.2 S3C44B0X SIO特点5176.15.3 S3C44B0X SIO正常操作模式 5176.15.4 S3C44B0X SIO DMA 操作5186.15.5 S3C44B0X SIO 接口特殊功能寄存器5196.16 基于S3C44B0X的S3CEV40开发介绍5216.16.1 S3CEV40基本功能介绍5216.16.2 S3CEV40X外围接口硬件资源简介5226.17 S3C44B0X启动程序设计5266.18 USB接口功能开发实例5336.18.1 USB简介5336.18.2 USB接口电路设计5356.18.3 USB接口控制程序设计536习题543第7章 μC/OSⅡ及应用开发7.1 实时操作系统5447.2 μC/OSⅡ操作系统5457.2.1 μC/OSⅡ简介5457.2.2 μC/OSⅡ的特点5477.2.3 μC/OSⅡ的内核结构5487.3 μC/OSⅡ的内核5547.3.1 任务调度5547.3.2 任务间的通信与同步5557.3.3 任务管理5587.3.4 时间管理5597.3.5 内存管理5607.3.6 μC/OSⅡ的文件体系5617.4 μC/OSⅡ应用程序开发5627.4.1 变量类型5627.4.2 应用程序基本结构5637.4.3 μC/OSⅡAPI介绍5647.4.4 μC/OSⅡ多任务实现机制5657.5 μC/OSⅡ在S3CEV40上的移植5667.5.1 移植条件5667.5.2 移植步骤5677.5.3 移植μC/OSⅡ后的测试572习题573第8章 μCLinux及应用开发8.1 嵌入式Linux概况5748.1.1 Linux简介5748.1.2 嵌入式Linux5798.1.3 嵌入式Linux的版本5808.1.4 嵌入式Linux应用5818.2 开发工具GNU的使用5828.2.1 GNU简介5828.2.2 GCC介绍5838.2.3 makefile介绍5888.2.4 gdb调试工具5908.3 Linux内核分析5918.3.1 Linux内核概述5928.3.2 进程管理5928.3.3 内存管理5948.3.4 文件系统管理5968.3.5 设备管理5978.3.6 网络管理5988.4 μCLinux操作系统5998.4.1 进程管理6008.4.2 内存管理6028.4.3 文件系统6038.5 构造嵌入式Linux系统6058.5.1 构造嵌入式Linux系统的几个关键问题6058.5.2 构造嵌入式Linux系统的关键步骤6088.6 μCLinux应用程序开发6108.6.1 μCLinux程序设计要点6108.6.2 高效的程序开发6118.7 μCLinux在 S3CEV40上的移植6128.7.1 移植前的准备6128.7.2 移植步骤6128.8 基于S3CEV40平台的μCLinux开发实例6168.8.1 μCLinux编译运行6168.8.2 Boot Loader编译运行6178.8.3 μClinux内核调试实验6188.8.4 在文件系统中增加应用程序6188.8.5 多进程应用程序的编写及调试6198.8.6 网络应用程序的编写及调试619习题620参考文献621 -
软件工程卢潇 主编;孙璐 等编著内容简介目录本书是作者在多年的软件工程教学和科研实践的基础上,总结和吸取了国内外大量同类书刊的精华,精心设计和撰写的。全书正文共13章,内容可分四部分:第一部分主要介绍软件工程的基本概念,并概要介绍了软件生存周期、开发模型及软件开发的各种方法;第二部分按生命周期模型详细介绍软件计划、需求分析、设计、编码、测试和维护各个阶段的有关概念和工作内容,重点介绍了结构化方法和Jackson方法的实施,并介绍了软件体系结构的相关内容;第三部分介绍面向对象的方法及UML建模语言;第四部分介绍了软件标准、文档、质量评价和质量保证技术、软件工程的管理、认证等内容。该书的内容系统完整,在介绍传统理论体系的基础上,融人当前软件工程的最新发展和新技术。书中采用大量图表,描述尽量做到通俗易懂,将原理、方法与实例结合,并较详实地给出了一个软件系统的开发过程。通过大量的练习和案例分析,帮助读者加深对理论知识的理解。该书可作为高等院校软件工程课程的教材或教学参考书,也可作为软件项目管理者和软件开发人员的参考书。 软件工程学(通常简称软件工程)是一门迅速发展的新兴学科. 所谓软件工程是指用"工程化"的思想来指导并解决软件研制中的各种问题. 其研究的范围非常广泛, 包括技术方法. 工具和管理等许多方面. 软件工程的目标在于研究一套科学的工程方法, 并建立与此相适应的. 方便实用的工具系统, 力求以最少的成本获得较高的软件质量. 近年来, 软件工程发展迅速, 新的技术方法和工具不断涌现. 本书力求系统地给出软件工程的框架, 在保证全书的内容全面. 系统的基础上, 着重从实用角度讲述软件工程的基本原理. 概念和技术方法. 希望本书能为读者今后深入研究这门学科奠定良好的基础, 并能对实际的软件开发工作有所帮助. 本书正文共13章, 从内容上可分四部分. 第一部分(第1章), 概括介绍软件工程学产生的历史背景以及相关的基本原理. 概念和方法. 主要介绍软件工程的基本概念, 并概要介绍软件生存周期. 开发模型及软件开发的各种方法. 第二部分(第2章至第8章), 按生命周期模型, 详细介绍软件计划. 需求分析. 设计. 编码. 测试和维护各个阶段的有关概念. 工作内容. 重点介绍了结构化方法和Jackson方法的实施, 并介绍了软件体系结构的相关内容. 其中, 第2章介绍了软件生命周期的第一个阶段:软件计划的任务和相关技术, 主要内容有可行性研究. 软件计划和对于成本/效益分析, 第3章介绍了需求分析的发现. 求精. 建模. 规格说明和复审的过程以及需求管理的内容, 讨论了获取需求的方法及需求分析的原则, 重点介绍了结构化分析技术和原型技术, 并给出了软件需求规格说明书的要求, 第4章阐述了软件设计中用到的基本概念及软件总体结构. 数据结构与软件过程等概念, 重点介绍软件总体设计的方法和设计表达工具, 详细阐述了和结构化需求分析方法相衔接的. 面向数据流的设计方法:结构化软件设计方法(SD方法)和面向数据结构的设计方法:Jackson设计方法, 第5章介绍了详细设计的任务. 方法和工具, 并阐述了近年来软件工程领域的新的研究热点和关键技术之一:软件体系结构的有关内容, 第6章围绕着编码质量谈论了程序设计语言的选择及编码风格等内容, 第7章讨论了软件测试的相关概念. 步骤, 介绍了常用的测试技术和工具, 第8章介绍软件维护的任务. 特点. 组织以及软件维护可能带来的问题. 如何提高软件的可维护性等. 第三部分(第9章), 介绍了面向对象技术的基本概念, 以实例的形式阐述了UML建模语言进行系统分析. 系统设计和系统实施的基本过程. 第四部分包括(第10章至第13章), 其中第10章介绍了软件工程标准化的相关概念. 国内外的现状以及软件文档的相关内容. 第11章介绍了软件质量的特性, 并给出软件质量的度量方法及如何进行质量评价, 最后还简单介绍了软件的质量保证和质量管理体系. 第12章讨论了软件工程管理技术, 并介绍了目前流行的管理工具. IPMP与PMP认证体系及我国目前的项目管理认证体系的发展状况等内容. 第13章比较完整地介绍了一个实际软件的开发. 着重阐述从问题定义到实现的过程, 将这个具体例子与书中前几章的内容结合起来学习, 有助于加深对一些基本概念和方法的理解. 本书第1~5章和第13章由卢潇编写, 第6~9章由孙璐编写, 第10~12章由刘娟编写, 附录A由张科英编写. 研究生车从领. 王莉对书中的实例及图表作了大量的工作. 在本书的编写过程中参考了大量书籍. 资料和网站, 同时, 也融入了作者多年教学和科研工作的体会和经验. 作者的联系地址是Luxiaohons@aohu. com, 有什么问题和要求欢迎读者用电子邮件与作者联系. 鉴于编者的学识水平有限, 书中谬误和不足在所难免, 敬请读者不吝指正. 作者 2005. 1 第1章概述 1. 1软件的概念 1. 1. 1软件技术的发展阶段 1. 1. 2软件的定义 1. 1. 3软件的分类 1. 2软件危机 1. 2. 1什么是软件危机 1. 2. 2产生软件危机的原因 1. 2. 3解决软件危机的途径 1. 3软件工程 1. 3. 1软件工程的定义 1. 3. 2软件工程的内容 1. 3. 3软件工程的基本原理 1. 3. 4软件工程项目的基本目标 1. 3. 5软件工程的开发原则 1. 4软件过程和软件生存期 1. 4. 1软件过程 1. 4. 2软件生存周期 1. 5软件开发过程模型 1. 5. 1瀑布模型 1. 5. 2原型模型(快速原型模型) 1. 5. 3螺旋模型 1. 5. 4喷泉模型 1. 5. 5构件组装模型 1. 5. 6统一过程RUP模型 1. 5. 7第四代技术 1. 6软件开发方法简述 1. 6. 1结构化方法 1. 6. 2面向数据结构的开发方法 1. 6. 3面向对象的方法 1. 6. 4可视化开发方法 1. 7软件工程的最新发展动向 小结 习题1 第2章软件计划 2. 1可行性研究 2. 1. 1可行性研究的任务 2. 1. 2可行性研究的步骤 2. 2系统流程图 2. 2. 1系统流程图的符号 2. 2. 2系统流程图举例 2. 2. 3分层 2. 3制定软件计划 2. 3. 1确定软件计划 2. 3. 2复审软件计划 2. 4成本/效益分析 2. 4. 1成本估算技术 2. 4. 2成本/效益分析的方法 小结 习题2 第3章需求分析 3. 1需求分析的概念和任务 3. 1. 1需求的概念 3. 1. 2需求的层次 3. 1. 3需求分析的任务 3. 2获取需求的方法 3. 2. 1存在问题 3. 2. 2常用方法 3. 2. 3需求分析的原则 3. 2. 4需求分析方法概述 3. 3结构化分析方法 3. 3. 1结构化分析方法的基本思想 3. 3. 2描述工具 3. 3. 3数据流图 3. 3. 4数据字典 3. 3. 5加工逻辑说明 3. 4原型法 3. 4. 1原型的概念 3. 4. 2快速原型开发过程 小结 习题3 第4章总体设计 4. 1总体设计的任务及目标 4. 1. 1总体设计的任务 4. 1. 2总体设计的目标 4. 2总体设计的概念和原理 4. 2. 1软件结构和过程 4. 2. 2模块化 4. 3设计准则 4. 4总体设计的常用方法及工具 4. 4. 1面向数据流的设计方法 4. 4. 2面向数据结构的分析设计方法 小结 习题4 第5章详细设计 5. 1详细设计的任务 5. 2详细设计的原则 5. 3详细设计的方法和工具 5. 3. 1详细设计的方法 5. 3. 2详细设计的工具 5. 3. 3详细设计工具的选择 5. 4详细设计规格说明与复审 5. 4. 1详细设计说朋 5. 4. 2设计复审 5. 5界面设计 5. 5. 1用户界面设计的一般原则和步骤 5. 5. 2字符界面设计 5. 5. 3菜单设计 5. 5. 4对话框设计 5. 5. 5多窗口界面设计 5. 6软件体系结构 5. 6. 1软件体系结构的兴起 5. 6. 2软件体系结构的概念 5. 6. 3软件体系结构的现状及发展方向 5. 6. 4软件体系结构的风格 5. 6. 5软件体系结构的描述方法 5. 7几种新型的软件体系结构 5. 7. 1正交软件体系结构 5. 7. 2三层C/S软件体系结构 5. 7. 3C/S与B/S混合软件体系结构 5. 8软件体系结构与操作系统 5. 8. 1操作系统的体系结构 5. 8. 2模块结构 5. 8. 3分层结构 5. 8. 4微内核结构 小结 习题5 第6章编码 6. 1程序设计语言 6. 1. 1程序设计语言的分类 6. 1. 2选择程序设计语言的标准 6. 2程序设计风格 6. 2. 1源程序文档化 6. 2. 2数据说明 6. 2. 3语句结构 6. 2. 4输入和输出(I/O) 6. 3实例 小结 习题6 第7章软件测试 7. 1软件测试的任务和目标 7. 1. 1软件测试的目标 7. 1. 2软件测试原则 7. 2软件测试的方法 7. 2. 1白盒测试法 7. 2. 2黑盒测试法 7. 3软件测试的步骤 7. 3. 1单元测试 7. 3. 2集成测试 7. 3. 3确认测试 7. 3. 4系统测试 7. 4调试 7. 4. 1调试过程 7. 4. 2调试方法 7. 4. 3调试原则 7. 5软件测试工具 7. 5. 1自动软件测试的优点 7. 5. 2测试工具分类 7. 5. 3测试脚本 7. 5. 4自动测试的相关问题 7. 5. 5常用软件测试工具及特点 7. 6实例 小结 习题7 第8章软件维护 8. 1软件维护的概念 8. 2软件维护的特点 8. 2. 1影响维护的问题很多 8. 2. 2维护的代价高昂 8. 3软件维护的步骤 8. 3. 1维护申请报告 8. 3. 2维护工作实施 8. 3. 3维护文档整理 8. 3. 4维护活动评价 8. 4软件的可维护性 8. 4. 1影响软件可维护性的因素 8. 4. 2提高软件的可维护性方法 8. 5逆向工程和再工程 8. 5. 1预防性维护 8. 5. 2软件的逆向工程和再工程 8. 6实例 小结 习题8 第9章面向对象方法学 9. 1面向对象方法学的引入 9. 1. 1传统方法学的缺点 9. 1. 2面向对象技术特点 9. 1. 3面向对象方法学的优点 9. 2面向对象的基本概念和特性 9. 2. 1面向对象的基本概念 9. 2. 2面向对象的基本特性 9. 3面向对象分析 9. 3. 1面向对象分析的目标和任务 9. 3. 2面向对象分析的基本原则 9. 3. 3面向对象分析的基本过程 9. 3. 4面向对象建模 9. 4面向对象设计 9. 4. 1面向对象设计的基本原则 9. 4. 2面向对象设计的基本内容 9. 5几种流行的面向对象方法 9. 5. 1Coad-Yourdon方法 9. 5. 2对象模型技术 9. 5. 3Booch的方法 9. 6统一建模语言 9. 6. 1统一建模语言概述 9. 6. 2UML视图 9. 6. 3对象建模 9. 6. 4动态建模 9. 6. 5功能建模 9. 7面向对象实现 9. 7. 1程序设计语言 9. 7. 2程序设计风格 9. 7. 3面向对象的程序测试 9. 7. 4面向对象的软件维护 9. 8面向对象实例 9. 8. 1图书馆管理信息系统的需求说明 9. 8. 2UML建模 小结 习题9 第10章软件工程标准化和软件文档 10. 1软件工程标准化的概念 10. 1. 1什么是软件工程标准化 10. 1. 2软件工程标准化的意义 10. 1. 3软件工程标准化的类型 10. 2软件工程标准的制定与推行 10. 2. 1软件工程标准的制定与推行 10. 2. 2软件工程标准在开发机构中的推行 10. 3软件工程标准的层次和体系框架 10. 3. 1软件工程标准的层次 10. 3. 2软件工程标准的体系框架 10. 3. 3中国的软件工程标准化工作 10. 4ISO 9000国际标准简介 10. 4. 1ISO 9000标准概述 10. 4. 2ISO 9000标准的特点 10. 4. 3ISO 9000标准的构成 10. 5软件文档 10. 5. 1软件文档的作用和分类 10. 5. 2软件文档的编制要求 10. 5. 3软件文档的管理和维护 小结 习题10 第11章软件工程质量 11. 1软件质量特性 11. 1. 1软件质量的定义 11. 1. 2软件质量的特性 11. 2软件质量的度量和评价 11. 2. 1软件质量的度量 11. 2. 2软件质量的评价 11. 3软件质量保证 11. 3. 1什么是软件质量保证 11. 3. 2软件质量保证的主要任务 11. 3. 3软件质量保证体系 11. 4软件质量管理体系 11, 4. 1软件产品质量管理的特点 11. 4. 2软件质量管理的指导思想 11. 4. 3软件开发的质量管理体系 小结 习题11 第12章软件工程项目管理 12. 1软件项目管理 12. 1. 1软件项目管理的特点 12. 1. 2软件项目管理的主要职能 12. 2常见管理技术及工具简介 12. 2. 1软件项目管理的主要内容 12. 2. 2常见工具简介 12. 3软件过程成熟度模型 12. 3. 1CMM概述 12, 3. 2CMM的成熟度级别 12. 4利用CMM对软件机构进行成熟度评估 12. 5项目管理认证体系IPMP与PMP 12. 5. 1IPMP概况 12. 5. 2PMP简介 12. 5. 3我国目前的项目管理认证体系的发展状况 小结 习题12 第13章开发实例 13. 1项目论证和计划 13. 1. 1系统调查 13. 1. 2新系统的总体功能需求和性能要求 13. 1. 3完成文档 13. 2需求分析 13. 2. 1数据流分析 13. 2. 2数据字典 13. 2. 3处理逻辑描述 13. 2. 4形成需求规格说明书并进行需求评审 13. 3系统设计 13. 3. 1系统总体概要设计 13. 3. 2代码设计 13. 3. 3数据库设计 13. 3. 4界面设计 13. 3. 5完成设计文档和设计评审 13. 4系统实现 小结 附录A项目开发文档 参考文献
