具体描述
本书是依据教育部《高职高专教育基础课程教学的基本要求》和《高职高专教育专业人才培养目标与规格》编写而成。全书共15章,内容主要包括:软件危机与软件工程,软件开发模型,计算机系统工程,需求分析,总体设计,详细设计,编码与测试,软件维护,面向对象技术,快速原型技术,重用技术,人机界面设计。书中含有丰富的例题与习题,便于教学与自学。
本书强调内容的实用性,以问题带知识点的方式来阐述,内容精练,重点突出,概念清楚,针对性和实际操作性强,可作为高职高专计算机专业学生的教材,也可作为软件开发人员的参考书。
本书为授课教师免费提供电子教案(此教案用PowerPoint制作,可以任意修改),方便教师使用多媒体教室教学。
作者简介
目录信息
前言
第1章软件危机与软件工程
1.1软件危机
1.1.1软件代价高
1.1.2软件开发和维护中严重问题
1.1.3产生软件危机的原因
1.1.4克服危机的途径
1.2软件工程
1.2.互软件工程的定义与基本原理
1.2.2软件工程的目标
1.2.3软件工程框架及原则
1.3本章小结
习题
第2章软件生命周期及软件开发模型
2.1软件生命周期
2.2软件模型
2.2.l瀑布模型
2.2.2演化模型
2.2.3原型模型
2.2.4螺旋模型
2.2.5喷泉模型
2.3本章小结
习题
第3章计算机系统工程
3.1基于计算机的系统
3.1.l计算机系统工程
3.1.2硬件和硬件工程
3.1.3软件和软件工程
3.1.4人机工程
3.1.5数据库和数据库工程
3.2可行性研究
3.2.1可行性研究的任务
3.2.2经济可行性
3.2.3技术可行性
3.2.4方案选择
3.3系统结构的模型化
3.4本章小结
习题
第 4章需求分析
4.l需求分析基础
4.1.1分析的任务与原则
4.1.2初步需求获取技术
4.l.3需求建模
4.1.4开发原型系统.
4.2结构化分析方法
4.2.1数据流图
4.2.2数据字典
4.2.3小说明
4.2.4实施步骤
4.3实体――关系图
4.3.l数据对象、属性与关系
4.3.2E-R方法和实体模型
4.3.3数据结构的规范化
4.4需求规格说明与评审
4.4.豆需求规格说明书的目标与内容
4.4.2需求评审
4.5本章小结
习题
第5章总体设计
5.1总体设计的过程
5.1.l设计供选择的方案
5.1.2推荐最佳实现方案
5.1.3设计软件结构
5.l.4数据库设计
5.1.5制定测试计划
5.2软件设计基本原理
5.2.1模块化
5.2.2抽象
5.2.3信息隐蔽
5.2.4模块独立性
5.3设计准则
5.4总体设计的图形描述工具
5.4.1层次图
5.4.2 HIPO图
5.4.3结构图
5.5结构化设计方法
5.5.1数据流图的类型
5.5.2设计步骤
5.5.3变换设计
5.5.4事务设计
5.5.5设计的后处理
5.6本章小结
习题
第 6章详细设计.
6.1结构化程序设计
6.2详细设计工具
6.2.1程序流程图
6.2.2盒图(N-S图)
6.2.3PAD图
6.2.4过程设计语言( PDL)
6.2.5判定表
6.2.6判定树
6.3面向数据结构的设计方法
6.3.1Jackson图
6.3.2 Jackson程序设计方法
6.4本章小结
习题
第 7章编码
7.l程序设计语言
· · · · · · (收起)
读后感
用户评价
这本《软件工程》的书籍,说实话,我本来是抱着一种“工具书”的心态去翻阅的,毕竟我对这个领域只是略知皮毛,想找一本能快速上手、解决实际问题的指南。然而,读完之后,我的感受非常复杂。首先,它在理论深度上着实令人印象深刻,几乎涵盖了从瀑布模型到敏捷宣言背后的哲学思辨,内容之详实,简直像是在一本厚重的历史文献中寻找现代工业的演进轨迹。书中对需求分析阶段的描述尤其细腻,引用了大量的经典案例和晦涩难懂的专业术语,像是在试图构建一个完美的、滴水不漏的理论体系。但正是这种近乎学院派的严谨,让我这个试图寻找“实战秘籍”的读者感到一丝迷茫。很多章节都需要反复阅读才能勉强理解其背后的逻辑推导,仿佛作者默认读者已经拥有了扎实的计算机科学背景。如果你想深入探究软件生命周期的每一个微观环节,这本书无疑是一座难以逾越的知识高峰,但对于初入职场的工程师来说,可能更像是一本需要“解码”的古籍,而不是一本能即刻指导你写出健壮代码的操作手册。它更像是在描绘“软件工程应该是什么样子”,而不是“我们现在该如何应对眼前的Bug”。
翻开这本书,最先抓住我眼球的是它那令人敬畏的篇幅和密密麻麻的图表,简直就是软件开发领域的“百科全书”。我特别关注了其中关于配置管理和版本控制的那几章,本以为能看到一些关于Git或SVN的现代实践技巧,结果大部分篇幅却在探讨更宏观的项目集成策略和构建流程的标准化。书中用大量的篇幅讨论了如何建立一个可持续、可审计的构建环境,其中不乏对早期大型机时代工程实践的追溯和反思。这种历史的厚重感确实增加了本书的学术价值,但对于我们现在这种高频率、小迭代的互联网开发模式来说,很多讨论显得有些“高屋建瓴”甚至脱离了日常语境。比如,书中对“集成测试”的定义和实施步骤,如果完全按照书中所述去执行,一个小型团队可能光是准备工作就要花掉一个月的时间。总的来说,它更像是一部软件工程的“宪法”,规定了所有美好的原则和远景,但对于如何在泥泞的施工现场快速搭起脚手架,指导性略显不足,更像是对“理想国”的构建与描绘。
这本书的结构安排给我留下最深刻的印象是其对软件架构设计的深度挖掘。它似乎将架构视为整个软件的“骨架”,投入了极大的笔墨去解析各种架构模式——从分层架构到面向服务的架构(SOA),再到更前沿的微服务概念的萌芽时期的讨论。作者似乎非常热衷于通过对比不同架构选择的长期维护成本和可扩展性,来论证哪一种设计哲学更为“正确”。书中对这些模式的描述,往往结合了上世纪八九十年代大型企业级系统的案例,充满了对稳定性、安全性和容错性的极致追求。这种对稳健性的坚持值得称道,但作为一名习惯了容器化和云原生开发的现代开发者,我发现书中对于快速部署、灰度发布等现代DevOps实践的讨论明显不足。很多关于架构演进的章节,感觉像是时间定格在了十多年前的软件行业黄金时代,虽然理论框架依旧坚固,但缺少了与当代技术栈(如Serverless、Kubernetes)的有效融合与对话,读起来总觉得少了一丝“呼吸感”。
我是一个对过程改进和质量保证有着执念的读者,所以我迫不及待地翻到了关于度量和评估的部分。这本书在这方面的论述,简直是把所有能想到的指标都罗列了出来,从代码复杂度、缺陷密度到开发人员的生产力模型,其详尽程度令人咋舌。它详细阐述了如何建立一个全面的、多维度的评估体系,并且提供了大量的数学公式来支撑这些度量的合理性。这部分内容读起来,就像是进行一场严谨的统计学实验报告的审阅,每一个数字、每一个比例的推导都力求无懈可击。然而,这种对量化的极致追求,也带来了一个问题:它似乎忽略了软件开发中那种难以量化的“创造性”和“直觉性”因素。在实际工作中,我们往往需要在“完美度量”和“快速交付”之间做出艰难的权衡,而这本书更偏向于前者,它描绘了一个数据驱动的完美世界,却很少触及如何在资源极其有限的情况下,做出务实的、可接受的妥协。如果你想写一篇关于软件质量的博士论文,这本书是极佳的参考,但如果你的老板明天就要上线一个新功能,这本书可能帮不上太多具体的忙。
与其他软件工程书籍相比,这本书在项目管理和团队协作方面的论述显得异常的保守和流程化。它花费了大量的篇幅来详细描述如何绘制甘特图、如何进行关键路径分析,以及如何运用严格的WBS(工作分解结构)来控制项目范围的蔓延。阅读这些章节,我仿佛回到了一个强调“计划先行”的时代,每一步骤都需要被精确预估和记录。书中对风险管理的探讨也主要集中在传统的、可预见性的技术风险上,比如技术选型失败或资源不足等。然而,真正让我感到震撼(也有些许遗憾)的是,它对敏捷思想的引入相对谨慎和迟缓,更多地是将敏捷视为对传统瀑布模型的“修补”或“折衷”,而非一种范式的根本转变。对于如何处理需求频繁变更带来的管理难题,书中的解决方案往往是回归到更严格的文档控制和更频繁的里程碑审查。这本书完美地展示了“如何通过精密的计划来避免不确定性”,但对于我们这个充满“不确定性”的行业来说,它提供的庇护伞似乎有些过于厚重和僵硬,缺乏现代团队所需要的灵活性和快速响应能力。