(3)概念和形式模型。
对一个想法或问题进行形式化、特征化、可视化和思维的各种方法。
(4)一致性和完备性。
一致性包括公理的一致性、理论与事实的一致性、设计与实现的一致性等。
完备性包括公理的充分性和功能的充分性。
(5)效率。
关于对空间、时间、人力、财力等资源耗费的度量。
(6)演化。
对更改的适应性。
(7)抽象层次。
通过具有不同层次的细节和指标的抽象能够表示一个实体或系统。
(8)按空间排序。
局部性和近邻性的概念。
(9)按时间排序。
事件排序中的时间概念。
(10)重用。
技术、概念或系统成分可被再次使用的能力。
(11)安全性。
对合适的响应以及抗拒不合适的非预期的请求以保护自己的能力、承受灾难的能力。
(12)折中和结论。
7、软件文档在软件开发中的地位和作用如何?
在软件开发中对文档的基本要求是什么?
Answer:
软件文档的地位:
(1)编制软件文档的过程,实际上就是采用软件工程方法,有组织、有计划的科学管理过程和研究开发过程。
(2)软件文档记录软件开发的活动和阶段性成果,它具有永久性并能提供给人或机器阅读。
(3)从某种意义上,软件文档甚至比可执行代码程序还重要。
软件文档的作用:
(1)文档反应软件开发人员各阶段的工作成果和结束标志。
(2)文档提高软件开发过程的透明度,便于软件管理人员对整个开发过程进行控制和管理。
(3)文档增强软件开发的系统性
(4)文档增强软件开发人员之间的交流
(5)文档既便于协调软件开发工作,又为软件维护和扩充提供数据。
(6)文档声明软件安装。
对文档的基本要求:
及时性、完整性、准确性、规范性。
8、如何理解标准化工作对软件文档编写的积极作用?
Answer:
9、关于计算机文档的常用标准有哪些?
Answer:
软件工程和软件文档标准可分为5个级别:
国际标准、国家标准、行业标准、企业规范和项目规范。
常用的有:
ISO(国际标准化组织)、GB(国标)、ANSI(美国国家标准协会)、IEEE(美国电气与电子工程师协会)等
10、根据国家标准,软件文档的种类有哪些?
Answer:
根据GB,软件文档种类有:
(1)可行性研究报告
(2)项目开发计划(3)软件需求说明书(4)数据要求说明书(5)概要设计说明书(6)详细设计说明书(7)数据库设计说明书(8)用户手册(9)操作手册(10)测试计划(11)测试分析报告(13)开发进度月报(14)项目开发总结报告
第2章软件生命周期、过程模型、CASE
1、什么是软件生命周期?
把生命周期划分成阶段的目的是什么?
Answer:
软件产品从形成概念开始,经过开发、使用和维护,直到最后退役的全过程称为软件生命周期。
把生命周期划分成阶段的目的:
把软件生命周期划分成若干个阶段,每个阶段的任务相对独立,而且比较简单,便于不同人员分工协作,从而降低了整个软件开发工程的困难程度;在软件生命周期的每个阶段都采用科学的管理技术和良好的技术方法,使得软件开发的全过程以一种有条不紊的方式进行,这样,能保证软件的质量,特别是提高软件的可维护性。
2、软件生命周期各阶段是如何划分的?
试述各阶段的基本任务。
Answer:
软件生命周期分为软件系统的可行性研究、需求分析、概要设计、详细设计、实现、组装测试、确认测试、使用、维护、退役十个阶段。
各阶段的基本任务:
可行性研究:
分析软件项目的经济可行性、技术可行性、法律可行性、进行方案的选择和编写可行性研究报告。
需求分析:
确认待开发软件的功能需求、性能需求和运行环境约束,编制软件需求规格说明、软件系统的确认测试准则和用户手册概要。
概要设计:
根据软件需求规格说明建立软件系统的总体结构和模块间的关系,定义各功能模块接口,设计全局数据库或数据结构,规定设计约束,制定组装测试计划。
详细设计:
建立“模块开发宗卷”:
设计程序模块的内部细节,包括算法、数据结构和各程序模块之间的详细接口信息;拟定模块测试方案。
实现:
根据详细设计文档将详细设计转化为程序,完成程序调试和程序单元测试。
组装测试:
将经过单元测试的模块逐步进行组装和测试。
确认测试:
测试系统是否达到了系统需求。
3、什么是软件开发模型?
常用的软件开发模型有哪些?
Answer:
软件开发模型(SoftwareDevelopmentModel)是指软件开发全部过程、活动和任务的结构框架。
常用的软件开发模型有:
以软件需求完全确定为前提的模型:
瀑布模型
渐进式开放模型:
原型模型、螺旋模型
形式化开发方法为基础的变换模型
4、瀑布模型的特点是什么?
快速原型模型与螺旋模型有何区别?
Answer:
瀑布模型的特点是:
(1)规定了阶段之间自上而下、相互衔接的固定次序,上一阶段的成果作为下一阶段的输入
(2)每一个阶段完成之后,必须对阶段性成果进行评审,确认之后才可进入下一阶段。
快速原型模型与螺旋模型的区别为:
快速原型模型:
快速原型模型的第一步是建造一个快速原型,实现客户或未来的用户与系统的交互,用户或客户对原型进行评价,进一步细化待开发软件的需求。
通过逐步调整原型使其满足客户的要求,开发人员可以确定客户的真正需求是什么;第二步则在第一步的基础上开发客户满意的软件产品。
螺旋模型:
螺旋模型,它将瀑布模型和快速原型模型结合起来,强调了其他模型所忽视的风险分析,特别适合于大型复杂的系统。
螺旋模型由风险驱动,强调可选方案和约束条件从而支持软件的重用,有助于将软件质量作为特殊目标融入产品开发之中。
5、什么是CASE?
试举几例你所使用的CASE工具并说明它们的作用和特点。
Answer:
CASE(ComputerAidedSoftwareEngineering)计算机辅助软件工程:
在软件工程活动中,软件工程师和管理员按照软件工程的方法和原则,借助计算机及其软件工具的帮助,开发、维护、管理软件产品的过程。
CASE工具:
事物系统规划工具、项目管理工具、支撑工具、分析和设计工具、程序设计工具、测试工具、原型建造工具、维护工具、框架工具。
6、可行性研究的内容有哪些?
Answer:
可行性研究的内容有:
引言、要求和目标、现有系统、所建议的系统、可选择的其它系统方案、投资及效益分析、社会因素方面的可行性、结论。
7、用系统流程图描述一家网上银行中网上购物系统的物理模型,并编写此系统的可行性研究报告。
Answer:
顾客购买活动图:
顾客购买活动图主要是描述系统元素的活动,用于展示参与行为的类的活动或动作。
下图便是网上顾客购物过程的活动图,直观地反映顾客在网上购买商品活动的整个过程,具体见下图。
从活动图中可以看到,顾客首先访问网上购物网站,浏览网页。
接着如果是新用户就登录注册界面,输入相关信息进行注册,立刻成为用户。
老用户就直接登录界面。
注册成为会员后,就能够享受到商场提供的各种方便的服务,可以利用商品查询的功能,快捷地查询到自己需要购买的商品,为顾客实现不出门也能方便快捷地了解到自己需要购买的商品的价格,生产日期,有何优惠等。
找到自己需要购买的商品以后,就可以进行购物了。
在需要购买的商品点击购买按扭,进入订货界面,进行订货。
客户可以查询自己的订单,看看是否交易成功。
成功后就进行付款,最后可以选择继续购买还是注销退出,实现网上购物整个活动过程。
第3章软件文档写作
1、什么是文档?
如何理解软件文档在软件开发中的桥梁作用?
Answer:
文档是指某种数据媒体和其中所记录的数据。
在软件工程中,文档常常用来表示对活动、需求、过程或结果进行描述、定义、规定、报告或认证的任何书面或图示的信息。
软件文档在产品的开发生产和使用、维护过程中起着重要的桥梁作用。
(1)提高软件开发过程的能见度
(2)提高开发效率
(3)作为开发人员在一定阶段的工作结果和结束标志
(4)记录开发过程中的有关信息,便于管理人员、开发人员、操作人员、用户之间的协作、交流和了解
(5)便于潜在用户了解软件的功能、性能等各项指标,为他们选购符合自己需求的软件提供依据。
2、对软件文档的质量要求有哪些?
Answer:
(1)针对性:
文档编制以前应分清读者对象
(2)精确性:
文档的行文应当十分确切,不能出现多义性的描述
(3)清晰性:
文档编写应力求简明,如有可能,配以适当的图表,以增强其清晰性
(4)完整性:
任何一个文档都应当是完整的,独立的,它应自成体系
(5)灵活性:
不同软件项目的规模和复杂程度有着许多实际差别,不能一样看待
3、软件文档的编写一般分为哪几个步骤?
Answer:
任何一个文件的编写过程都可以分为四个步骤:
准备工作、确定写作内容、编写定稿、更新完善。
4、如何写好计算机软件文档?
Answer:
(1)做好准备:
深入理解系统和用户、明确写作目的、确定文档的组织方式
(2)讲究文风:
语言简洁、读者观点、尊重习惯
(3)注重表达:
图表、符号、引例
(4)加强文档编写使用的组织管理
软件文档编写过程管理:
软件文档编写计划管理、软件文档编写进度管理、软件文档评审管理、软件文档维护管理
软件文档使用管理:
软件文档归档、软件文档控制、软件文档发行管理
(5)注意几个问题:
文档的整体结构、文档的一致性、文档的可用性、文档的可维护性、文档的及时性、文档的评审测试、文档的使用培训、文档编写自动化
5、在文档的编写中如何使用引例?
Answer:
在使用引例时,应该重视以下几点:
(1)引例使用要适当,要有重点,多则无法突出重点,少则不易讲明问题
(2)引例要典型,即所使用的引例必须有代表性,必须为读者提供量的概念,最好能提供量的范围
(3)引例准确,文档编写者应该清楚这样一点:
读者对引例的研究要比对文字叙述的研究认真几倍
(4)引例之间应相互补充
6、软件文档编写过程中主要包括哪些内容?
如何理解文档的一致性?
Answer:
软件文档编写过程管理主要包括:
软件文档编写计划管理、软件文档编写进度管理、软件文档评审管理、软件文档维护管理。
所编写的文档是否一致,主要是指:
(1)文档与系统是否一致
(2)文档之间是否一致
(3)文档局部与整体是否一致
(4)文档所用图表、符号是否一致
(5)文档所用约定是否一致
(6)文档所用概念的内涵和外延是否一致
第4章需求分析基础
1、什么是软件需求?
如何理解软件需求分析的重要性?
Answer:
IEEE软件工程标准词汇表中的需求定义:
(1)用户解决问题或达到目标所需的条件或能力
(2)系统或系统部件要满足合同、标准、规范或其它正式规定文档所需具有的条件或能力
(3)一种反映上面两点所描述条件或能力的文档说明
软件需求分析的重要性体现在:
在软件开发过程中遇到的许多问题,都是由于收集、编写、协商、修改软件需求过程中的失误带来的,诸如信息收集不全、功能不明确、交流不充分、文档不完善、需求发生变化等。
开发软件系统最为困难的部分就是准确说明开发什么,最为困难的概念性工作便是编写详细的技术需求,包括所有面向用户、面向机器和其他软件系统的接口。
软件需求一旦做错,将会给系统带来极大的损害,同时对以后的修改也带来很大的困难。
2、软件需求分析是软件工程过程中交换意见最频繁的步骤。
为什么交换意见的途径会经常阻塞?
Answer:
3、需求分析分为哪几个方面?
Answer:
(1)问题识别
(2)分析和综合(3)编制需求分析阶段的文档(4)需求分析评审
4、需求获取技术主要作了哪些工作?
Answer:
(1)建立获取用户需求的方法的框架
(2)支持和监控需求获取的过程的机制
5、什么是多视点分析?
如何理解抽象在软件开发中的作用?
Answer:
多视点分析就是从各个角度分别对问题进行理解和分析,然后综合成为全面理解。
抽象在软件开发中的作用:
抽象方法要求分析人员在分析过程中善于捕捉用户描述或问题本身所固有的一般-特殊关系,首先关注一般问题的解决途径,进而指导特殊问题的求解。
同时,分析人员应该注意用户描述所处的不同抽象级别,这是从杂乱零散关系中建立清晰思路的重要方法。
6、快速原型法如何支持软件需求分析?
Answer:
在软件开发中,原型是软件的一个早期可运行版本,它反映最终系统的部分重要特性。
如果在获得一组基本需求说明后,通过快速分析构造出一个小型的软件系统,满足用户的基本要求。
使得用户可在试用原型系统的过程中得到亲身感受和启发,做出反应和评价。
然后开发者根据用户的意见对原型加以改进。
随着不断试验、纠错、使用、评价和修改,获得新的原型版本。
如此周而复始,逐步减少分析和通信中的误解,弥补不足之处,进一步确定各种需求细节,适应需求的变更,从而提高了最终产品的质量。
7、需求管理的内容有哪些?
怎样理解需求文档的版本控制?
Answer:
需求管理的内容包括:
变更控制、版本控制、需求跟踪、需求状态跟踪。
需求文档的版本控制:
版本控制是管理需求的一个必要方面。
需求文档的每一个版本必须被统一确定,组内每个成员必须能够得到需求的当前版本,必须清楚地将变更写成文档,并及时通知到项目开发所涉及的人员。
为了尽量减少困惑、冲突、误传,应仅允许指定的人来更新需求。
8、简述软件需求规格说明书的主要方面。
Answer:
(1)引言:
目的+背景+定义+参考资料
(2)任务概述:
目标+用户特点+假定和约束
(3)需求规定:
信息功能描述+性能描述+输入输出+数据管理能力+故障处理+其它
(4)运行环境规定:
硬件、软件+接口+协议
9、在软件需求规格说明书的“信息和功能描述”方面为什么采用不同的表达方式?
有何区别?
Answer:
面向数据流的需求分析:
数据流图+数据词典+小说明
面向对象的需求分析:
类图+各个类的详细说明+状态图+交互图+文字说明
第5章面向数据流的分析
1、数据流程图的作用是什么?
它有哪些基本成分?
Answer:
数据流图在需求分析及整个软件开发和维护中有着重要作用:
(1)数据流图是需求分析的主要工具
(2)数据流图作为软件开发和维护各阶段信息交流的工具,为分析、设计人员提供在各阶段设计、实施和维护的依据。
(3)当使用数据流图辅助物理系统设计时,以图中不同加工逻辑的定时要求为指导。
数据流图的基本图形元素有4种:
加工、数据输入的源点和数据输出的汇点、数据流、数据存储文件。
2、数据词典的作用是什么?
它有哪些基本条目?
Answer:
数据词典精确、严格地定义了每一个与系统相关的数据元素,并以字典式顺序将它们组织起来,使得用户和分析员对所有输入、输出、存储成分和中间计算有共同的理解。
在数据词典的每一个词条中应包括以下信息:
(1) 名称:
数据对象或控制项、数据存储或外部实体的名字
(2) 别名或编号
(3) 分类:
数据对象、加工、数据流、数据文件、外部实体、控制项(事件/状态)
(4) 描述:
描述内容和数据结构等
(5) 何处使用:
使用该词条(数据或控制项)的加工
第6章面向对象的需求分析方法(上)
1、什么是面向对象方法学?
什么叫面向对象?
面向对象方法的特点是什么?
为什么要用面向对象方法开发软件?
Answer:
面向对象方法的基本思想是从现实世界中客观存在的事物(即对象)出发,尽可能地运用人类的自然思维方式来构造软件系统。
它更加强调运用人类在日常的逻辑思维中经常采用的思想方法与原则,例如抽象、分类、继承、聚合、封装等,使开发者以现实世界中的事物为中心来思考和认识问题,并以人们易于理解的方式表达出来。
面向对象的基本观点:
(1)客观世界是由对象组成的,任何客观的事物或实体都是对象,复杂的对象可以由简单的对象组成
(2)具有相同数据和相同操作的对象可以归并成为一个类,对象是对象类的一个实例
(3)类可以派生出子类,子类继承父类的全部特性(数据和操作),又可以有自己的新特性
(4)对象之间通过消息传递相互联系。
面向对象=对象+类+继承+通信(或消息)
如果一个软件系统采用这些概念来建立模型并予以实现,那么它就是面向对象的。
使用面向对象方法开发软件的原因是面向对象方法与传统的软件开发方法相比,具有许多显著的优点:
(1)按照人类的自然思维方式,面向客观世界建立软件系统模型,有利于对问题域和系统责任的理解,有利于人员交流;
(2)在整个开发过程中采用统一的概念和模型表示,填平了语言之间的鸿沟,使得开发活动之间平滑过渡;
(3)对象所具有的封装性和信息隐蔽等特性,使其容易实现软件复用;
(4)在面向对象的方法中,系统由对象构成,对象是一个包含属性和操作两方面的独立单元,对象之间通过消息联系。
这样的系统一旦出错,很容易定位和修改,系统的可维护性好。
2、什么是“对象”?
识别对象时将潜在对象分成7类,试给出这7类对象的名称,并举例说明。
Answer:
对象可以定义为系统中用来描述客观事物的一个实体,它是构成系统的一个基本单元,由一组属性和一组对属性进行操作的服务组成。
对象的分类:
(1)外部实体:
与软件系统交换信息的外部设备、相关子系统、操作员和用户等
(2)信息结构:
问题信息域中的概念实体,如信号、报表、显示信息等
(3)需要记忆的事件:
在系统运行过程中可能产生并需要系统记忆的事件,如单击鼠标左键
(4)角色:
与软件系统交互的人员所扮演的角色
(5)组织机构:
有关机构,如单位,小组等
(6)位置:
系统环境或问题上下文的场所、位置、如客户地址,收件人地址等
(7)操作规程:
如操作菜单,某种数据输入过程等
3、什么是“类”?
“类”与传统的数据类型有什么关系和区别?
Answer:
把具有相同特征和行为的对象归在一起就形成了类。
类常常可以看作是一个抽象数据类型(ADT)的实现,但更重要的是把类看作是表示某种概念的一个模型。
4、面向对象开发方法与面向数据流的结构化开发方法有什么不同?
使用面向对象开发方法的优点在什么地方?
Answer:
面向对象方法与传统的软件开发方法相比,具有许多显著的优点:
(1)按照人类的思维方式,面对客观世界建立软件系统模型,有利于对问题域和系统责任的理解,有利于人员交流;
(2)在整个开发过程中采用统一的概念和模型表示,填平了语言之间的鸿沟,使得开发活动之间平滑过渡;
(3)对象所具有的封装性和信息隐蔽等特性,使其容易实现软件复用;
(4)在面向对象的方法中,系统由对象构成,对象是一个包含属性和操作两方面的独立单元,对象之间通过消息联系。
这样的系统一旦出错,很容易定位和修改,系统的可维护性好。
结构化方法分析过程如下:
1.总结出系统应有的功能,对一个功能,从功能完成的过程考虑,将各个过程(或说小的功能(难以再分解))列出,标识出过程转向和传递的数据。
这样,可以将所有的过程都画出来。
2.细化数据流。
确定应该记录的数据。
3.分析各过程之间的耦合关系,合理地进行模块划分以提高它们之间的内聚性。
实际上,对于这个练习,可以使模块具有信息内聚性。
而面向对象方法分析过程如下:
1.总结出系统应有的功能,从功能完成的过程考虑,描述每个功能的完成过程。
对应UML的USECASE和SEQUENCE。
2.开始寻找定义对象,并归纳各对象应记录的属性,对象的状态及转换关系在这里定义。
这一步的对象和第一步画SEQUENCE所带入的对象有联系但更重要的是区别。
3.从功能完成的过程考虑,区分所需要的各个功能。
再根据定义出的对象,将功能分配到对象上。
由于第一步的关系,在这个练习中,这一步相对简单。
4.根据前3步的结果,如果需要的话,应该重新画SEQUENCE。
特别是希望UML图对编程能更有帮助时。
由于我只做了系统分析,没有编程,所以这一步没有做。
两种方法的异同:
1.总结系统应具备的功能的时候,都是根据题目的描述,一条一条总结归纳得到的。
对结构化方法,就是画数据流图。
对面向对象方法,就是USECASE和SEQUENCE。
实际上,在工作中使用时,一般还需要ACTIVITY图。
2.确定应该记录的数据。
对结构化方法,就是细化数据流,并整理出