软件工程

软件工程 pdf epub mobi txt 电子书 下载 2025

张海藩 著
图书标签:
  • 软件工程
  • 软件开发
  • 编程
  • 计算机科学
  • 软件质量
  • 需求分析
  • 系统设计
  • 测试
  • 项目管理
  • 软件架构
想要找书就要到 静流书站
立刻按 ctrl+D收藏本页
你会得到大惊喜!!
出版社: 清华大学出版社
ISBN:9787302198123
版次:1
商品编码:11132998
品牌:清华大学
包装:平装
开本:16开
出版时间:2010-07-01
用纸:胶版纸
页数:334
字数:506000
正文语种:中文

具体描述

编辑推荐


本书是软件工程领域的张海藩教授针对高校学时减少的实情,在其编写的经典教材《软件工程导论(第5版)》的基础上精简而成的。

1.畅销版本。各版本累计销售超180万册,被众多高校选作教材,成为软件工程领域的经典教材。

2.精心修订。为了反映软件工程发展的新状况,作者不断精心修改,编写了新版本。

3.全面系统。全面系统地讲述了软件工程的概念、原理和典型的方法学,并介绍了软件项目的管理技术。

4.适用面广。可作为高等院校“软件工程”课程的教材或教学参考书,也可供有一定实际经验的软件工作人员和从事开发应用软件的广大计算机用户参考。

5.配套完整。除主教材外,配套出版了《软件工程导论学习辅导》,提供了与教材内容密切配合的习题和解题思路,还提供了三套模拟试题以及参考答案。为便于教学,本书制作了电子教案,免费提供给选用本教材的教师。


内容简介

  为了满足“软件工程”课程学时较少的高等学校对一本适用教材的迫切需求,作者对先后荣获了全国普通高等学校工科电子类专业优秀教材一等奖和全国畅销书奖,并被评为北京高等教育精品教材的《软件工程导论》作了精心改编,保留了原书中较重要、较新颖的内容,删除或简化了一些较陈旧或较次要的内容,写出了《软件工程》。
  《软件工程》全面系统地讲述了软件工程的概念、原理和典型的方法学,并介绍了软件项目的管理技术。本书正文共13章,第1章是概述,第2章至第8章顺序讲述软件生命周期各阶段的任务、过程、结构化方法和工具,第9章至第12章分别讲述面向对象方法学引论、面向对象分析、面向对象设计和面向对象实现,第13章介绍软件项目管理。正文后面有两个附录,分别讲述了用面向对象方法和结构化方法开发两个软件的过程,对读者深入理解软件工程学很有帮助,也是上机实习的好材料。
  本书可作为高等院校“软件工程”课程的教材或教学参考书,也可供有一定实际经验的软件工作人员和需要开发应用软件的广大计算机用户阅读参考。

内页插图

目录

第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.4 软件过程
1.4.1 瀑布模型
1.4.2 快速原型模型
1.4.3 增量模型
1.4.4 螺旋模型
1.4.5 喷泉模型
1.4.6 Rational统一过程
1.4.7 敏捷过程与极限编程
1.4.8 微软过程
1.5 小结
习题

第2章 可行性研究
2.1 可行性研究的任务
2.2 可行性研究过程
2.3 数据流图
2.3.1 符号
2.3.2 例子
2.3.3 命名
2.3.4 用途
2.4 数据字典
2.4.1 数据字典的内容
2.4.2 定义数据的方法
2.4.3 数据字典的用途
2.4.4 数据字典的实现
2.5 成本/效益分析
2.5.1 成本估计
2.5.2 成本/效益分析的方法
2.6 小结
习题

软件工程目 录 第3章 需求分析
3.1 需求分析的任务
3.1.1 确定对系统的综合要求
3.1.2 分析系统的数据要求
3.1.3 导出系统的逻辑模型
3.1.4 修正系统开发计划
3.2 与用户沟通获取需求的方法
3.2.1 访谈
3.2.2 面向数据流自顶向下求精
3.2.3 简易的应用规格说明技术
3.2.4 快速建立软件原型
3.3 分析建模与规格说明
3.3.1 分析建模
3.3.2 软件需求规格说明
3.4 实体-联系图
3.4.1 数据对象
3.4.2 属性
3.4.3 联系
3.4.4 实体-联系图的符号
3.5 数据规范化
3.6 状态转换图
3.6.1 状态
3.6.2 事件
3.6.3 符号
……
第4章 形式化说明技术
第5章 总体设计
第6章 详细设计
第7章 实现
第8章 维护
第9章 面向对象方法学引论
第10章 面向对象分析
第11章 面向对象设计
第12章 面向对象实现
第13章 软件项目管理
附录A C++类库管理系统的分析与设计
附录B 一个汉字行编辑程序的设计
参考文献

精彩书摘

  第1章 软件工程学概述
  迄今为止,计算机系统已经经历了4个不同的发展阶段,但是,人们仍然没有彻底摆脱“软件危机”的困扰,软件已经成为限制计算机系统发展的瓶颈。
  为了更有效地开发与维护软件,软件工作者在20世纪60年代后期开始认真研究消除软件危机的途径,从而逐渐形成了一门新兴的工程学科——计算机软件工程学(通常简称为“软件工程”)。
  1.1 软件危机
  在计算机系统发展的早期时代(20世纪60年代中期以前),通用硬件相当普遍,软件却是为每个具体应用而专门编写的。这时的软件通常是规模较小的程序,编写者和使用者往往是同一个(或同一组)人。这种个体化的软件环境,使得软件设计通常是在人们头脑中进行的一个隐含的过程,除了程序清单之外,没有其他文档资料保存下来。
  从20世纪60年代中期到70年代中期是计算机系统发展的第二个时期,这个时期的一个重要特征是出现了“软件作坊”,广泛使用产品软件。但是,“软件作坊”基本上仍然沿用早期形成的个体化软件开发方法。随着计算机应用的日益普及,软件数量急剧膨胀。在程序运行时发现的错误必须设法改正;用户有了新的需求时必须相应地修改程序;硬件或操作系统更新时,通常需要修改程序以适应新的环境。上述种种软件维护工作,以令人吃惊的比例耗费资源。更严重的是,许多程序的个体化特性使得它们最终成为不可维护的。“软件危机”就这样开始出现了11968年北大西洋公约组织的计算机科学家在联邦德国召开国际会议,讨论软件危机问题,在这次会议上正式提出并使用了“软件工程”这个名词,一门新兴的工程学科就此诞生了。
  ……

前言/序言

作者编著的《软件工程导论》已经出版了5个版本,累计销售了近一百万册,先后荣获全国普通高等学校工科电子类专业优秀教材二等奖和一等奖,并被评为全国优秀畅销书(前10名)和北京高等教育精品教材,国内许多高校把它选作“软件工程”课的教材。

但是,也有一些“软件工程”课程学时较少的高校教师反映,《软件工程导论》内容较多,用它作教材感到授课学时比较紧张。为了满足这部分学校的需求,作者对《软件工程导论》作了精心改编,保留了原书中较重要、较新颖的内容,删除或简化了一些较陈旧或较次要的内容,写出了《软件工程》。该书在保持原书结构不变的前提下把篇幅减少了近六分之一,将显著减少授课所需的学时。


编者20�C0�C9年5月



《代码的秘密:从零构建一个高效能的计算系统》 序言 在信息爆炸的时代,我们无时无刻不被各种软件所包围,从掌中的智能手机到庞大的服务器集群,再到我们日常生活的方方面面,都离不开软件的身影。我们或许会惊叹于某些应用程序的流畅运行,或者好奇于复杂系统如何协同工作。然而,在这些看似简单易用的界面背后,隐藏着一个复杂而精妙的世界——计算系统的构建。 本书并非一本关于“如何写代码”的教程,也不是一本“管理项目”的指南。相反,它将带领读者深入探索一个更加底层、也更加根本的领域:如何从最基本的逻辑单元出发,一步步构建出能够执行复杂任务的计算系统。 我们将抛开对具体编程语言的依赖,而是专注于理解计算的本质,以及支撑起现代软件运行的那些基础架构。 如果你曾经对计算机内部的工作原理感到好奇,想知道那些看似不可思议的功能是如何实现的;如果你对抽象的理论感到厌倦,渴望看到它们在实际系统构建中如何落地;抑或你只是一个对技术充满热情的探索者,希望拓宽自己对计算世界的认知边界,那么,本书将为你提供一条独特的学习路径。 我们将从最基础的逻辑门开始,一步步理解如何用它们组合出更复杂的逻辑电路,最终构建出能够执行指令的处理器。随后,我们将探讨内存的运作机制,以及如何组织数据以便处理器能够高效地访问。接着,我们会进入操作系统的核心,了解它是如何管理硬件资源,并为应用程序提供一个稳定运行的环境。最后,我们将触及网络通信的基础,看看不同系统之间是如何进行信息交换,构建起庞大的分布式系统。 本书的写作风格力求严谨而不失趣味,我们会用清晰易懂的语言解释抽象的概念,并辅以大量的图示和类比,帮助读者建立直观的理解。我们不会回避技术细节,但会确保这些细节服务于整体的理解,而不是成为学习的障碍。 第一章:数字世界的基石——逻辑门与布尔代数 本章将带领我们回到计算的起点:逻辑门。我们将从最基本的“与”、“或”、“非”门开始,理解它们如何处理二进制的0和1。通过学习布尔代数,我们将掌握一种描述和化简逻辑运算的强大工具。你将了解到,如何利用这些看似简单的门电路,组合出实现加法、减法等基本算术运算的电路,从而为理解更复杂的计算奠定基础。我们还将初步探索组合逻辑电路和时序逻辑电路的区别,为后续章节中更高级的概念做好铺垫。 二进制的世界:0与1的魅力 为何选择二进制? 位(bit)与字节(byte)的概念 二进制数系的表示与转换 逻辑门:构建计算的积木 AND(与)门:协同工作的逻辑 OR(或)门:选择的智慧 NOT(非)门:状态的反转 XOR(异或)门:差异的体现 NAND(与非)与NOR(或非)门:通用逻辑门 布尔代数:逻辑的数学语言 基本公理与定理 逻辑表达式的简化 真值表与逻辑函数的对应 从逻辑门到基本运算电路 半加器与全加器:实现二进制加法 多位加法器:并行处理 减法器的设计思路 第二章:指令的执行者——处理器架构与流水线 在理解了逻辑运算的基础后,本章将聚焦于计算机的心脏——处理器(CPU)。我们将深入探讨处理器的基本架构,包括指令集架构(ISA)的概念,理解处理器如何理解并执行一系列指令。你将了解到,指令的获取、译码、执行、写回等基本步骤是如何协同工作的。更重要的是,我们将揭示“流水线”技术是如何通过并行处理指令的各个阶段,极大地提升处理器的工作效率。理解流水线的设计原理,是理解现代高性能计算的关键。 指令集架构(ISA):处理器与软件的契约 RISC与CISC的演进 指令的类型:数据传输、算术逻辑、控制流等 寄存器的作用与管理 处理器核心组件 程序计数器(PC):指引指令的流动 算术逻辑单元(ALU):执行算术与逻辑运算 控制单元(CU):协调指令的执行 内存地址寄存器(MAR)与内存数据寄存器(MDR) 指令执行周期 取指令(Fetch) 指令译码(Decode) 执行指令(Execute) 访存(Memory Access) 写回(Write Back) 流水线技术:提升效率的秘密武器 流水线的基本思想 流水线冒险:结构冒险、数据冒险、控制冒险 解决冒险的技术:转发(Forwarding)、乱序执行(Out-of-Order Execution)、分支预测(Branch Prediction) 现代处理器的一些高级特性预览 超标量(Superscalar)与多核(Multi-core) 第三章:数据的容器——内存系统与缓存层次 处理器需要数据才能工作,而数据则存储在内存中。本章将深入探讨内存系统的设计与运作。我们将从最基础的存储单元(如DRAM)讲起,理解其工作原理以及如何通过总线与处理器进行数据交换。更关键的是,我们将解析“缓存”的概念,理解缓存层次(L1, L2, L3 Cache)是如何工作的,以及它们如何显著地减少处理器访问主内存的延迟,从而提升整体性能。掌握内存系统与缓存的工作机制,对于理解程序运行的效率至关重要。 内存单元:比特的存储 DRAM(动态随机存取存储器)与SRAM(静态随机存取存储器) 存储器的工作原理:读写操作 内存控制器与总线 内存控制器的作用 内存总线:数据传输的通道 内存地址空间 如何映射物理内存 内存管理单元(MMU)的角色 缓存:提速的秘密武器 局部性原理:时间局部性与空间局部性 缓存的组成:标签(Tag)、索引(Index)、偏移(Offset) 缓存映射方式:直接映射、组相联映射、全相联映射 写策略:写回(Write-Back)与写通(Write-Through) 缓存替换算法:LRU(最近最少使用)等 缓存层次结构 L1、L2、L3缓存的协同工作 缓存一致性问题 第四章:系统的管理者——操作系统核心概念 当硬件基础搭建完成后,我们需要一个“管理者”来协调所有资源的利用,并为应用程序提供一个统一的接口。本章将聚焦于操作系统的核心概念。我们将探讨进程(Process)与线程(Thread)的区别,理解它们如何被创建、管理和调度。你将了解到,操作系统如何处理并发任务,如何进行内存管理(包括虚拟内存),以及如何与输入输出设备进行交互。理解操作系统的作用,是理解现代软件运行环境的关键。 操作系统的角色与目标 资源管理:CPU、内存、I/O设备 提供抽象:进程、文件 提供接口:系统调用 进程管理 进程的概念与状态(运行、就绪、等待) 进程控制块(PCB) 进程调度算法:先来先服务、短作业优先、时间片轮转等 进程间通信(IPC):管道、共享内存、消息队列 线程管理 线程的概念与优势 用户级线程与内核级线程 内存管理 内存分配与回收 分页(Paging)与分段(Segmentation) 虚拟内存:实现更大的地址空间 页面置换算法:FIFO、LRU、OPT 输入输出(I/O)管理 I/O设备与驱动程序 缓冲与假脱机 中断处理 第五章:连接的世界——网络通信基础 在现代计算环境中,几乎没有一个系统是孤立运行的。本章将带你了解网络通信的基础知识,理解不同计算机之间是如何进行数据交换的。我们将从最基础的物理层和数据链路层讲起,介绍MAC地址、IP地址、TCP/IP协议栈等核心概念。你将了解到,如何通过这些协议,实现数据包的路由、传输和可靠送达。理解网络通信的原理,是理解互联网、分布式系统乃至现代分布式应用程序的基础。 网络模型:OSI七层模型与TCP/IP四层模型 各层的功能与职责 物理层与数据链路层 比特流的传输 MAC地址与以太网 差错检测与纠正 网络层 IP地址与子网划分 路由(Routing):数据包的寻径 ARP(地址解析协议) 传输层 TCP(传输控制协议):面向连接、可靠的传输 三次握手与四次挥手 流量控制与拥塞控制 UDP(用户数据报协议):无连接、不可靠的传输 应用层 HTTP(超文本传输协议) DNS(域名系统) 其他常用协议简介 结语 通过对逻辑门、处理器架构、内存系统、操作系统以及网络通信等核心领域的探索,我们已经构建了一个理解计算系统运作的宏观框架。从最基础的二进制逻辑,到支撑起庞大互联网的复杂协议,每一步都充满了智慧与工程的结晶。 本书的目标并非让你成为一名硬件工程师或操作系统内核开发者,而是希望为你提供一个更深层次的视角,去理解我们每天都在使用的软件是如何被创造和运行的。当你下次使用一个应用程序时,你可能会联想到背后的处理器是如何执行指令,内存是如何存储数据,操作系统又是如何管理这一切的。这种理解,将极大地拓宽你对计算世界的认知,并为你在未来学习更高级的技术打下坚实的基础。 正如建造一座宏伟的建筑需要坚固的地基一样,理解复杂的软件系统同样需要扎实的底层知识。希望本书能够点燃你对计算原理的好奇心,并激励你在这个充满活力的领域中继续探索。 致谢 感谢所有为计算机科学发展做出贡献的先驱者们,他们的智慧和努力构建了我们今天的数字世界。

用户评价

评分

我必须承认,这本书的结构安排非常巧妙,让我得以在一个相对轻松的环境下,系统地掌握软件工程的知识体系。作者并没有把所有内容一股脑地塞给读者,而是循序渐进,层层递进。从最基础的项目启动,到复杂的系统架构设计,再到最后的维护和优化,每一个阶段的讲解都环环相扣,让人感觉非常连贯。我尤其喜欢书中关于“敏捷开发”的阐述,它提供了一种更灵活、更适应变化的开发模式,与我之前接触过的传统开发模式有着显著的区别。而且,作者在介绍各种开发方法论时,并没有简单地列举它们的优缺点,而是深入分析了它们背后的思想和适用场景,让我能够根据实际情况做出更明智的选择。书中的插图和图表也设计得非常精美,清晰地展示了各种概念之间的关系,大大降低了理解的难度。总而言之,这本书是一份非常宝贵的学习资料,让我能够更自信地应对复杂的软件开发项目。

评分

哇!这本书就像一剂灵感的催化剂,让我重新燃起了对软件工程的热情。我之前一直觉得软件开发就是写代码,但这本书彻底颠覆了我的认知。它就像一本武林秘籍,将软件开发的“内功”和“外功”都讲得明明白白。作者的笔触非常细腻,从最基础的“需求分析”讲到“项目管理”的方方面面,每一个环节都处理得恰到好处,不会过于冗长,也不会流于表面。最让我印象深刻的是关于“用户体验设计”的部分,作者通过一系列真实的案例,让我看到了一个优秀的用户界面是如何能够极大地提升用户满意度的。而且,书中对于“测试”的讲解也让我耳目一新,不再是那种枯燥的理论堆砌,而是充满了实操性的建议,让我学会如何设计更有效的测试用例,从而发现潜在的bug。这本书的语言风格也非常活泼,有时候读起来就像在听一位经验丰富的前辈分享他的心得体会,让人感觉非常亲切。

评分

这是一本让我醍醐灌顶的书!作者以一种非常独特的视角,将软件工程的复杂概念与现实世界中的种种现象联系起来,让我豁然开朗。我之前一直觉得软件开发是一门纯粹的技术学科,但这本书让我看到了它背后蕴含的艺术性和创造性。书中对于“沟通”和“协作”的强调,让我深刻理解了在软件项目中,人与人之间的互动往往比技术本身更加关键。作者的文字功底也非常深厚,每一句话都饱含深意,引人深思。我最喜欢的是其中关于“如何避免项目失败”的分析,它并没有简单地给出一些通用的建议,而是通过深入剖析导致项目失败的根本原因,让我能够从更深层次上认识到风险管理的重要性。这本书也让我对“技术债务”有了更深刻的理解,认识到短期内的效率提升可能会为未来的维护和迭代带来巨大的隐患。读完这本书,我感觉自己的思维方式得到了很大的提升,能够更全面、更系统地看待软件工程的各个方面。

评分

这本书真是我最近读到的最令人惊艳的一本!一开始抱着试试看的心态翻开,没想到立刻就被作者那流畅而引人入胜的叙事风格吸引住了。它不像我以前读过的许多技术类书籍那样枯燥乏味,而是充满了故事性和画面感。作者仿佛是一位经验丰富的向导,带着我穿梭在软件开发的各个环节,从最初的概念萌芽,到精雕细琢的设计,再到严谨的实现和细致的测试,每一个阶段都描绘得栩栩如生。书中举的例子都非常贴合实际,仿佛就发生在我身边,让我能够立刻理解那些抽象的概念。而且,作者在讲解一些复杂的技术原理时,并没有直接抛出晦涩的术语,而是通过生动形象的比喻和深入浅出的分析,将它们变得易于消化。我尤其喜欢其中关于团队协作的部分,它让我深刻体会到,在软件工程的世界里,个体的能力固然重要,但更关键的是如何凝聚成一个高效协作的整体。整本书读下来,我感觉自己不仅仅是在学习知识,更像是在经历一次完整的软件开发旅程,收获满满。

评分

说实话,拿到这本书的时候,我并没有抱太高的期望,毕竟“软件工程”这个主题听起来就有点宏大且可能偏理论。但事实证明,我的预判完全错了!这本书的视角非常独特,它并没有一味地强调各种开发模型或者设计模式的细节,而是更侧重于软件开发背后的“道”与“术”。作者以一种非常哲学的高度,探讨了软件的本质、人类的认知在软件开发中的作用,以及如何构建可持续发展的软件生态。我最喜欢的是关于“软件的演进”那一章节,它让我从宏观的角度理解了软件生命周期的动态性,以及为何优秀的软件系统总是能够随着时间推移而不断适应和发展。书中对于“脆弱性”和“健壮性”的讨论也极具启发性,让我重新审视了在项目初期就埋下隐患的风险。阅读过程中,我时常会停下来思考,作者提出的观点是否也适用于我目前正在参与的项目。这本书提供了一种全新的思考框架,让我能够更深刻地理解软件开发过程中面临的挑战,并找到更具前瞻性的解决方案。

评分

有些枯燥

评分

在计算机系统发展的早期时代(20世纪60年代中期以前),通用硬件相当普遍,软件却是为每个具体应用而专门编写的。这时的软件通常是规模较小的程序,编写者和使用者往往是同一个(或同一组)人。这种个体化的软件环境,使得软件设计通常是在人们头脑中进行的一个隐含的过程,除了程序清单之外,没有其他文档资料保存下来。

评分

找编程工作,临时突击专用的

评分

嗯, 跑了几家书店都没有这本书, 还好这里有得卖

评分

国内比较经典的软件工程书籍了。

评分

1.1 软件危机

评分

很好很好很好很好很好

评分

快递如风 ,书本正版 ,服务一流

评分

书是正版的,质量不错!

相关图书

本站所有内容均为互联网搜索引擎提供的公开搜索信息,本站不存储任何数据与内容,任何内容与数据均与本站无关,如有需要请联系相关搜索引擎包括但不限于百度google,bing,sogou

© 2025 book.coffeedeals.club All Rights Reserved. 静流书站 版权所有