新書推薦:
《
泉舆日志 幻想世界宝石生物图鉴
》
售價:HK$
134.2
《
养育女孩 : 官方升级版
》
售價:HK$
50.4
《
跨界:蒂利希思想研究
》
售價:HK$
109.8
《
千万别喝南瓜汤(遵守规则绘本)
》
售價:HK$
44.7
《
大模型启示录
》
售價:HK$
112.0
《
东法西渐:19世纪前西方对中国法的记述与评价
》
售價:HK$
201.6
《
养育男孩:官方升级版
》
售價:HK$
50.4
《
小原流花道技法教程
》
售價:HK$
109.8
|
編輯推薦: |
本书从实用、够用的角度出发,以学生信息管理系统为主线,采用任务驱动案例教学的方式,详细讲述了软件工程的基本原理、概念、技术和方法。本书共9个项目,内容包括:软件工程的时代背景和理论基础;软件项目的需求分析;软件项目的总体设计和详细设计方法;软件项目的实现;软件项目的测试技术;软件项目的维护和管理等方面的基本理论;了如何书写整个软件项目开发总结性材料。
|
內容簡介: |
本书从实用、够用的角度出发,以学生信息管理系统为主线,采用任务驱动案例教学的方式,详细讲述了软件工程的基本原理、概念、技术和方法。本书共9个项目,内容包括: 项目的市场调研、需求分析、软件项目的总体设计、软件项目的详细设计、软件项目的实现、软件项目的测试、软件维护、软件项目的管理、软件项目的开发总结。 本书适合计算机专业的本科生、专科生和专升本学生作为教材使用,也适合从事研发工作的软件工作者和广大计算机用户参考或自学使用。
|
目錄:
|
项目1项目的市场调研1
任务1.1系统的研发背景1
1.1.1学生信息管理问题的提出1
1.1.2国内外研发现状2
任务1.2系统研发的理论基础3
1.2.1软件的定义及其特点3
1.2.2软件危机4
1.2.3软件工程的提出5
任务1.3制订软件计划6
1.3.1问题的定义6
1.3.2可行性研究7
1.3.3系统的开发计划9
任务1.4实验实训10
小结11
习题11
项目2需求分析13
任务2.1需求分析概述13
2.1.1需求分析的任务14
2.1.2需求分析应注意的问题15
2.1.3需求分析的原则16
2.1.4需求分析的过程16
任务2.2需求分析的方法18
2.2.1结构化分析方法18
2.2.2面向对象的分析方法22
任务2.3统一建模语言UML27
2.3.1UML的基本概念27
2.3.2UML语言概述28
2.3.3静态建模30
任务2.4需求分析规格说明书36
2.4.1需求分析规格说明书的作用36
2.4.2需求分析规格说明书的格式及内容36
任务2.5实验实训36
小结37
习题37
项目3软件项目的总体设计39
任务3.1总体设计的基本内容39
3.1.1软件设计的定义39
3.1.2总体设计的目标40
3.1.3总体设计的步骤40
3.1.4总体设计的基本任务40
3.1.5总体设计的准则41
任务3.2结构化的软件设计43
3.2.1结构化设计的基本概念43
3.2.2结构化的设计方法45
3.2.3总体结构设计48
3.2.4运行环境的设计49
任务3.3面向对象的软件设计50
3.3.1面向对象的设计方法50
3.3.2类图53
3.3.3子系统清单56
3.3.4功能模块清单56
3.3.5模块部件功能分配58
任务3.4数据库设计60
3.4.1数据结构设计60
3.4.2设计检查列表63
3.4.3设计模型65
3.4.4软件建模66
任务3.5实验实训67
小结68
习题68
项目4软件项目的详细设计70
任务4.1系统详细设计的基本内容70
4.1.1详细设计概述70
4.1.2详细设计的基本任务71
4.1.3详细设计的方法72
任务4.2系统详细设计方案75
4.2.1对象模型76
4.2.2对象模型映射为关系模型77
任务4.3用户界面设计80
4.3.1用户界面设计的特点80
4.3.2用户界面设计的基本类型和基本原则81
4.3.3案例分析82
任务4.4实验实训85
小结85
习题85
项目5软件项目的实现87
任务5.1结构化程序设计87
5.1.1结构化程序的提出87
5.1.2结构化程序的三种基本结构88
5.1.3NS流程图90
5.1.4结构化程序的设计方法91
任务5.2面向对象的程序设计91
5.2.1数据的抽象和封装92
5.2.2继承93
5.2.3多态93
任务5.3程序设计语言93
5.3.1计算机语言与程序设计语言93
5.3.2程序语言的分类94
任务5.4程序的复杂度96
5.4.1时间复杂度96
5.4.2空间复杂度96
任务5.5实验实训97
小结97
习题98
项目6软件项目的测试101
任务6.1软件测试的目的101
任务6.2软件测试的方法和步骤102
6.2.1黑盒测试和白盒测试102
6.2.2信息管理系统的测试105
6.2.3软件的测试步骤106
任务6.3软件调试技术107
6.3.1软件调试技术概述107
6.3.2软件调试技术的分类107
任务6.4测试报告108
6.4.1软件测试报告概述108
6.4.2软件测试报告模板109
任务6.5实验实训114
小结114
习题115
项目7软件维护117
任务7.1软件维护的目的117
7.1.1软件维护的原因117
7.1.2软件维护的定义117
7.1.3软件维护的策略118
任务7.2软件维护的成本119
7.2.1影响软件维护的因素119
7.2.2软件维护成本的分析119
任务7.3软件维护的方法120
7.3.1维护组织120
7.3.2维护报告121
7.3.3维护的事件流121
7.3.4保存维护记录122
7.3.5评价维护活动123
任务7.4软件可维护性123
7.4.1软件可维护性的定义123
7.4.2提高软件可维护性的方法125
任务7.5实验实训125
小结125
习题126
项目8软件项目的管理127
任务8.1项目管理127
8.1.1项目管理的定义127
8.1.2项目管理的要素128
8.1.3项目管理的特性129
8.1.4项目管理的流程130
任务8.2软件项目管理133
8.2.1软件项目管理概述134
8.2.2软件项目管理的人员配备135
8.2.3软件项目管理的组织模式135
任务8.3风险管理137
8.3.1风险识别138
8.3.2风险估计138
8.3.3风险评价138
8.3.4风险控制139
8.3.5风险管理措施140
任务8.4人力资源管理141
8.4.1项目人员的管理141
8.4.2人力资源的风险管理143
任务8.5进度计划管理144
8.5.1软件项目计划书144
8.5.2软件项目时间管理145
8.5.3项目进度计划工具147
任务8.6质量管理149
8.6.1软件的质量因素149
8.6.2软件的质量保证150
任务8.7实验实训152
小结152
习题152
项目9软件项目的开发总结153
任务9.1软件项目的经验和教训153
9.1.1软件项目的经验153
9.1.2软件开发的教训及建议155
任务9.2软件项目存在的问题159
9.2.1软件项目自身的问题159
9.2.2软件开发者的问题160
9.2.3软件开发中需要注意的问题161
任务9.3建议及展望162
9.3.1业务基础软件平台162
9.3.2给软件开发者的建议163
9.3.3对学生信息管理系统的展望163
任务9.4实验实训164
小结164
习题165
参考文献166
|
內容試閱:
|
自20世纪40年代中期现代计算机诞生以来,作为现代计算机灵魂的计算机软件经历了程序设计、软件设计和软件工程等几个发展阶段,尤其在20世纪60年代末期提出软件工程的概念以来,软件行业经历风风雨雨几十年,各种各样的编程语言、形形色色的开发方法、多如牛毛的软件工具、不计其数的软件应用如雨后春笋般涌现,然而,真正符合培养技能型紧缺人才需要,与现代软件企业开发相适应的教材并不多见。针对这种情况,编者结合多年来从事软件开发的体会以及计算机教学的丰富经验,对软件人才培养模式进行了较长时间的分析和调研,遴选出一批富有工程实践经验和教学经验的双师型教师,合力编写了这本适用于高职高专乃至大学本科院校的教材。本教材的编写是以任务驱动案例教学为核心,以学生信息管理系统这个项目开发为主线。在充分研究分析国内外先进职业教育的培训模式、教学方法和教材特色的基础上,消化吸收了优秀的教学经验和成果。以培养技能型人才为目标,以企业对人才的需要为依据,把软件工程和项目管理的思想完全融入教材体系中,将基本技能培养和主流技术相结合,课程的内容设置重点突出、主辅分明、结构合理、衔接紧凑。本教材侧重培养学生的实战操作能力,学、思、练相结合,旨在通过项目实践,增强学生的职业能力,使知识从书本中释放并转化为专业技能。基于以上观点的考虑,教材的编写思想是以学生信息管理系统这个案例为中心,以技能培养为目标,围绕开发项目所用到知识点进行剖析,然后以教师信息管理系统作为实验实训的主要内容,对所学知识点加深巩固,以帮助读者理解,进而将知识转变为技能。本书结合软件开发的生存周期,循序渐进,由浅入深,在整体上体现了内容主导、实例解析,以点带面的模式,本教材的特点如下:1 参照或吸纳国内外优秀软件专业教材的编写思想。2 准确把握高职高专及应用型本科院校软件专业人才的培养目标和特点。3 充分分析并研究国内软件企业,确定了基于案例教学任务驱动的教学手段。4 借鉴或采用项目驱动的教学方法和考核制度,突出计算机软件人才培养的先进性、工具性、实践性和应用性。5 以案例为中心,以能力培养为目标,并以身边的例子引入概念,符合学生的认知规律。语言简洁明了、清晰易懂,更具人性化。6 符合国家软件银领人才的培养目标;采用引入知识点、讲述知识点、强化知识点、应用知识点、综合知识点的模式,由浅入深地展开对技术内容的讲述。本书由吴文国任主编,高晓燕、王英合、陶强、贾春朴、宫泽林任副主编,参加编写工作的还有陈守森、王海霞、顾海燕、邢茹、段鹏、陈涌、李华伟等老师。编者非常感谢大家对本书的厚爱,为表谢意,书本的参考资料中附有完整的关于学生信息管理系统的程序设计源代码。限于作者水平,书中和程序设计上难免有疏漏和不妥之处,敬请广大读者不吝赐教。
编者2017年1月
项目3软件项目的总体设计【学习目标】 通过本项目的学习,能够使读者了解到软件项目总体设计的任务和目标,总体设计的准则,以及软件设计原理。 了解结构化的设计方法和面向对象的软件设计方法。 掌握数据设计方法,以及ER图、概念数据模型和物理数据模型的设计方法。 本阶段完成系统的大致设计并明确系统的数据结构与软件结构。软件需求分析阶段已经完全弄清楚了软件的各种需求,较好地解决了所开发的软件做什么的问题,下一步要着手对软件系统进行设计,也就是考虑应该怎么做的问题。软件设计是软件项目开发过程的核心,需求规格说明是软件设计的重要输入,也为软件设计提供了基础。软件设计过程是将需求规格转化为一个软件实现方案的过程。任务3.1总体设计的基本内容对于任何工程项目来说,在施工之前,总要先完成设计。从软件总体设计阶段开始正式进入软件的实际开发阶段。本阶段完成系统的大致设计并明确系统的数据结构与软件结构。软件总体设计的核心内容就是依据需求规格或规格定义,合理、有效地实现产品规格中定义的各项需求。它注重框架设计、总体结构设计、数据库设计、接口设计、网络环境设计等。总体设计是将产品分割成一些可以独立设计和实现的部分,保证系统的各个部分可以和谐地工作。设计过程是不断地分解系统模块,从高层分解到低层分解。3.1.1软件设计的定义软件需求讲述的是做什么,而软件设计解决的是怎么做的问题。软件设计是将需求描述的做什么问题变为一个实施方案的创造性的过程,使得整个项目在逻辑上和物理上能够得以实现。软件设计是软件工程的核心部分,软件工程中有三类主要开发活动: 设计、编码、测试。而设计是第一个开发活动,也是最重要的活动,是软件项目实现的关键阶段。设计质量的高低直接决定了软件项目的成败,缺乏或者没有软件设计的过程会产生一个不稳定的、甚至是失败的软件系统。良好的软件设计是进行快速软件开发的根本,没有良好的设计,会将时间花在不断的调试上,无法添加新功能,修改时间越来越长,随着给程序打上一个又一个的补丁,新的功能需要更多的代码实现,就变成一个恶性循环了。我们将软件设计分为两个级别,一个是高级设计,也称为概要设计或者总体设计;另外一个设计是低级设计,也称为详细设计。概要设计是从需求出发,描述了总体上系统架构应该包含的组成要素。概要设计尽可能模块化,因此描述了各个模块之间的关联。详细设计主要是描述实现各个模块的算法和数据结构以及用特定计算机语言实现的初步描述,例如变量、指针、进程、操作符号以及一些实现机制。3.1.2总体设计的目标学生信息管理系统应尽量采用学校现有软硬件环境以及先进的管理系统开发方案,从而达到充分利用学校现有资源,提高系统开发水平和应用效果的目的。同时,系统应符合学校学生信息管理的规定,满足对学校学生信息管理需要,并达到操作过程中的直观、方便、实用、安全等要求。根据总体设计的任务,明确设计所最终达到的目标,依据现有资源,选取合理的系统解决方案,设计最佳的软件模块的结构,有一个全面而精准的数据库设计,同时制订详细的测试计划,书写相关的文档资料。3.1.3总体设计的步骤由系统设计人员来设计软件,就是根据若干规定和需求,设计出功能符合需要的系统。一个软件最基本的模型框架一般由数据输入、数据输出、数据管理、空间分析4部分组成。但随着具体开发项目的不同,在系统环境、控制结构和内容设计等方面都有很大的差异,因此,设计人员开发软件时必须遵循正确的步骤。1 根据用户需要,确定要做哪些工作,形成系统的逻辑模型。2 将系统分解成一组模块,各个模块分别满足所提出的要求。3 将分解出来的模块按照是否能满足正常的需求进行分类,对不能满足正常需求的模块要进一步调查研究,以确定是否能进行有效的开发。4 制订工作计划,开发有关的模块,并对各模块进行一致行动测试以及系统的最后运行。3.1.4总体设计的基本任务1. 设计软件结构为了实现目标系统,最终必须设计出组成这个系统的所有程序和数据库文件。对于程序则首先进行结构设计,具体方法如下。1 采用某种设计方法,将一个复杂的系统按功能分成模块。2 确定每个模块的功能。3 确定模块之间的调用关系。4 确定模块之间的接口,即模块之间传递的消息。5 评价模块结构的质量。软件结构的设计是以模块为基础的。在需求分析阶段,通过某种分析方法把系统分解成层次结构。在设计阶段,以需求分析的结果为依据,共实现的角度划分模块,并组成模块的层次结构。软件结构的设计是总体设计的关键一步,直接影响到详细设计与编程工作。软件系统的质量及一些整体特性都在软件结构的设计中决定。2. 数据结构及数据库设计对于大型数据处理的软件系统,除了软件结构设计外,数据结构与数据库设计也是重要的。数据结构的设计采用逐步细化的方法。在需求分析阶段通过数据字典对数据的组成、操作约束和数据之间的关系等方面进行描述,确定数据的结构特性,在总体设计阶段要加以细化,而详细设计阶段则规定具体的实现细节。3. 编写总体设计文档编写总体设计文档的内容如下。1 总体设计的说明书。即总体设计阶段结束时提交的技术文档,主要内容如下。① 引言: 编写的目的、背景、定义、参考资料。② 总体设计: 需求规定、运行环境、基本设计概念和处理流程、软件结构。③ 接口设计: 用户接口、外部接口、内部接口。④ 运行设计: 运行模块组合、运行控制、运行时间。⑤ 系统数据结构设计: 逻辑结构设计、物理结构设计。数据结构和程序的关系。⑥ 系统出错处理设计: 出错信息、补救措施、系统恢复设计。2 数据库设计说明书。主要给出所使用的数据库管理系统DBMS简介,数据库概念模型、逻辑设计和结果。3 用户手册。对需求分析阶段的用户手册进行补充和修改。4 修订测试计划。对测试策略、方法和步骤提出明确要求。4. 评审在该阶段,对设计部分是否完整实现需求中规定的功能、性能等要求,设计方案的可行性、关键的处理及内外部接口定义的正确性、有效性,以及各部分之间的一致性都要进行评审。3.1.5总体设计的准则总体设计一是要覆盖需求分析的全部内容;二是要作为详细设计的依据。其设计过程是一系列迭代的步骤,它们使设计者能够描述要构造的软件系统的特征。总体设计与其他所有设计过程一样,是受创造性的技能、以往的设计经验和良好的设计灵感,以及对质量的深刻理解等一些关键因素影响的,它需要转变设计视点,全面提高系统可扩展性,实现工具式的可扩充功能。总体设计模型和建筑师的房屋设计类似,即首先表示出要构造的事务整体,设计房屋的整体结构,然后在细化局部,提供构造每个细节的指南。同样软件设计模型提供了软件元素的组织框架图。对此,许多专家,如Davis 曾提出一系列软件设计的原则,下面予以简单介绍。1. Davis 的设计准则1 设计过程应该考虑各种可选方案,根据需求、资源情况、设计概念来决定设计方案。2 设计应该可以跟踪需求分析模型。3 设计资源都是有限的。4 设计应该体现统一的风格。5 设计的结构应该尽可能满足变更的要求。6 设计的结构应该能很好地处理异常情况。7 设计不是编码,编码也不是设计。8 设计的质量评估应该是在设计的过程中进行,而不是事后进行的。9 设计评审的时候,应该关注一些概念性的错误,而不是关注细节问题。设计之前的规范性很重要,如命名规则,在设计中要尽可能提倡复用性,同时保证设计有利于测试。2. 命名规则Naming Rule软件工程技术强调规范化: 为了使由许多人共同开发的软件系统能正确无误地工作,开发人员必须遵守相同的约束规范用统一的软件开发模型来统一软件开发步骤和应进行的工作,用产品描述模型来规范文档格式,使其具有一致性和兼容性,这些规范要求有一个规范统一的命名规则,这样才能摆脱个人生产方式,进入标准化、工程化阶段。一般系统开发的命名遵循以下规则:1 变量名只能由大小写英文字母,下划线_,以及阿拉伯数字组成。而且第一个字符必须是大小写英文字母或者下划线,不能是数字。2 全局变量、局部变量的命名必须用英文首字母简写来命名。3 数据库表名、字段名等命名必须用英文来命名。命名应尽量体现数据库、字段的功能。3. 术语定义Terms Glossary前面我们强调了软件工程的规范化,这不仅要求命名规则的规范和统一,而且要求系统中的关键术语具有唯一性,并且定义明确,不具有二义性。下面是在学生信息管理系统中所用到的部分术语,请读者参考理解,如表31所示。表31术语定义序号术语的名称术语的定义1总体结构软件系统的总体逻辑结构。本系统采用面向对象的设计方法,所以总体逻辑结构为部件的组装图2概念数据模型CDM关系数据库的逻辑设计模型,包括一张逻辑ER图及其相应的数据字典3物理数据模型PDM关系数据库的物理设计模型,包括一张物理表关系图及其相应的数据字典4角色数据库中享有某些特权操作的用户5子系统具有相对独立功能的小系统,一个大的软件系统可以划分为多个子系统,每个子系统可由多个模块或多个部件组成6模块具有功能独立、能被调用的信息单元7参考资料指本文件书写时用到的其他资料4. 参考资料参考资料是指本文件书写时用到的其他资料。需要列出有关资料的作者、标题、编号、发表日期、出版单位或资料来源,可包括以下方面。1 本项目经核准的计划任务书、合同或上级机关的批文。2 项目开发计划。3 需求规格说明书。4 测试计划初稿。5 用户操作手册初稿。6 本文档所引用的资料、采用的标准或规范。比如,本系统所用到的参考资料如下:[1]赵池龙,等.实用软件工程[M].2版.北京: 电子工业出版社,2006.[2]韩万江.软件工程案例教程[M].北京: 机械工业出版社,2007.[3]毕硕本,卢桂香.软件工程案例教程[M].北京: 北京大学出版社,2007.[4]用户需求报告.[5]数据库设计规范.[6]软件命名规范.5. 相关文档相关文档是指当本文件内容变更后,可能引起变更的其他文件,如需求分析报告、详细设计说明书、测试计划、用户手册等。一个复杂的软件要让其他人员读懂并且理解,除程序代码外,还应有完备的设计文档来说明设计思想、设计过程和设计的具体实现技术等有关信息。因此文档是十分重要的,它是开发人员相互进行通信以达到协同一致工作的有力工具。而且按要求进度提交指定的文档,能使软件生产过程的不可见性变为部分可见,从而便于对软件生产进度进行管理。最后,通过对提交的文档进行技术审查和管理审查,以保证软件的质量和有效的管理。所以必须十分重视文档工作。一般软件开发至少具备如下文档:1 《详细设计说明书》。2 源程序清单。3 测试计划及报告。4 《用户使用手册》。任务3.2结构化的软件设计〖*45〗3.2.1结构化设计的基本概念结构化设计的关键思想是通过划分独立的模块来减少程序设计的复杂性,并且增加软件的可重用性,以减少开发和维护计算机程序的费用。这种方法构筑的软件,其组成清晰、层次分明,便于分工协作,而且容易调试和修改,是系统研制较为理想的工具。下面介绍结构化设计的几个基本概念。1. 模块模块是在程序中的数据说明、可执行语句等程序对象的集合,或是单独命名和编址的元素,如高级程序语言中的过程、函数和子程序等。在软件的体系结构中,模块是可以组合、分解和更换的单元。模块具有以下几个基本
|
|