软件案例复习总结.docx
《软件案例复习总结.docx》由会员分享,可在线阅读,更多相关《软件案例复习总结.docx(27页珍藏版)》请在冰点文库上搜索。
![软件案例复习总结.docx](https://file1.bingdoc.com/fileroot1/2023-6/16/6245ba71-16d5-4cee-8052-d8aaa63e4c5d/6245ba71-16d5-4cee-8052-d8aaa63e4c5d1.gif)
软件案例复习总结
软件工程:
软件工程是一门研究用工程化方法构建和维护有效的、实用的和高质量的软件的学科。
产生背景即软件危机:
在计算机软件开发和维护过程中所遇到的一系列严重问题,包括如何开发软件、怎样满足对软件日益增长的需求、如何维护数量不断膨胀的已有软件等。
(1)对软件开发成本和进度的估计常常很不准确。
(2)用户对“已完成的”软件系统不满意的现象经常发生。
(3)软件产品质量往往靠不住。
(4)软件常常是不可维护的。
(5)软件通常没有适当的文档资料,软件不仅仅是程序,还应该有一套完善的文档资料。
(6)软件成本在计算机系统总成本中所占的比重逐年上升。
(7)软件开发生产效率的提高远远跟不上计算机应用迅速普及深入的趋势,软件产品“供不应求”的现象使人类不能充分利用现代计算机硬件提供的巨大潜力。
软件工程三段论:
软件项目管理–管理过程;软件项目开发–生产过程;软件过程改进–“工艺流程”管理和改进
软件开发模型:
制作具体软件时,开发步骤的具体实施方法称为软件生存期模型(软件开发过程模型)或软件工程模型。
常见的软件生存期模型:
瀑布模型原型化方法螺旋模型
软件工程中的复用原则:
复用、合作;复用技术的使用原则:
反对一切从零开始;开源资源
结构化软件工程方法:
(面向数据流的分析方法)是一种基于功能分解的需求分析方法。
模型的核心是数据词典,它描述了所有的在目标系统中使用的和生成的数据对象。
并用数据流图表达需求。
分为如下几个步骤:
结构化分析(软件分析)SA结构化设计(总体设计、概要设计)SD
详细设计面向过程的编码
结构软件开发包括结构化分析、结构化设计和结构化编程
核心思想:
自顶向下和逐步求精。
基本手段:
分解和抽象。
分解:
把大问题分割成若干小问题,然后分别解决。
抽象:
略去细节,先考虑问题最本质的属性
描述需求说明书的几个规范工具。
即数据流图、数据词典、小说明
面向对象软件工程方法面向对象的方法按照人类的自然思维的方式,面对客观世界建立软件模型。
充分体现了对复杂系统进行分解、抽象、模块化等思想。
OOP的两个重要原理:
数据抽象行为共享
数据流图(DFD)(DataFlowDiagram)是一种图形化技术,它描绘信息流和数据从输入移动到输出的过程中所经受的变换。
在数据流图中没有任何具体的物理部件,它只是描绘数据在软件中流动和被处理的逻辑过程。
数据流图能够形象、清晰地描述数据在系统中流动、加工、存储的情况。
数据字典(DD)数据字典(DD,DataDictionary),DD以一种准确、简洁的方式对DFD中数据流、外部实体、数据存储作说明。
DD对DFD中的六类元素进行定义说明:
数据流、数据项(数据元素)、数据结构、数据存储、处理逻辑(基本加工)、外部实体
类的定义类(Class)实际上是对某种类型的对象定义变量和方法的原型。
它表示对现实生活中一类具有共同特征的事物的抽象,是面向对象编程的基础。
类的性质(封装、继承、多态)
软件项目需求:
软件需求的重要性和复杂性
(1)软件需求是项目成败的关键。
项目中出现的问题不一定都是需求导致,但需求通常是最主要,最普遍的问题源。
(2)需求具有模糊性、不确定性、变化性(用户不断增加需求、变更需求)、主观性。
(3)用户刁难(不合理的需求,和用户充分沟通)。
需求:
需求是指用户对软件的功能和性能的要求,就是用户希望软件能做什么事情,完成什么样的功能,达到什么性能。
(软件需求是用户驱动的。
软件需求关注的是软件需求的获取、分析、规格和验证)
需求类型(功能需求和非功能需求)
功能需求:
开发人员必须实现的软件功能(从项目开发的角度来看,这是最主要的需求)。
非功能性需求:
性能、可靠性、安全性。
需求工程的概念:
(1)确定客户需求,帮助分析人员理解问题,定义目标系统的所有外部特征。
(2)用合适的工具和记号系统地描述待开发系统及其行为特征、相关约束。
(3)形成需求文档。
(4)可以对用户不断变化的需求演进予以支持。
需求获取的概念:
就是进行需求收集的活动,从人员、资料和环境中得到系统开发所需要的相关信息。
需求获取是通过与用户的交流,对现有系统的观察及对任务进行分析,从而开发、捕获和修订用户的需求。
需求获取技术:
阅读背景资料头脑风暴讨论分析文档考古面谈(用户访谈)联合应用设计用户调查需求剥离现场观摩任务观察用例和场景
需求分析的概念:
需求分析是为最终用户所看到的系统建立一个概念模型,是对需求的抽象描述。
需求分析技术包括结构化方法和面向对象方法。
需求规格说明书的编制是为了使用户和软件开发者双方对该软件的初始规定有一个共同的理解,使之成为整个开发工作的基础。
需求分析工作完成的一个基本标志是形成了一份完整的、规范的需求规格说明书(SoftwareRequirementsSpecification,SRS)。
SRS为客户和开发者之间建立一个约定,准确地陈述了要交付给客户什么。
需求验证:
就是为了确保需求说明准确,完整的表达必要的质量特点的测试活动。
需求变更的概念要接受“需求会变动”的事实
需求变更管理:
软件变更控制委员会(SoftwareChangeControlBoard,SCCB)
建立基准和控制版本维护变更的历史记录
需求分析模型及其内容
软件工程就是在不断的“建模”,分析模型在系统描述和设计模型之间建立桥梁。
关联模型行为模型数据模型原型模型
需求建模的方法:
结构化分析方法、面向对象分析方法
结构化分析方法的建模工具:
DFDDD系统流程图法
面向对象分析方法的建模工具(UML工具)
用例需求分析方法的基本概念:
用例方法收集客户的需求从问题域或用例描述中抽取相应的对象,并从中抽象出类
UML建模静态结构、动态行为
用例驱动的需求分析方法对一个系统进行功能和角色方面的梳理和分析,可以采用的比较主流的方法之一就是绘制用例图。
用例图是贯穿整个面向对象分析/设计(OOA/OOD)的核心视图,它描述的是系统到底为用户提供了哪些功能,以及到底是哪些用户在使用这些功能,是沟通用户与技术人员的桥梁。
运用用例视图对业务需求进行分析、抽象、整理、提炼,进而形成抽象模型的过程称之为用例建模,而这个模型就是用例模型。
角色或参与者,也就是系统为哪些类型的用户提供服务,他们都各自承担哪些不同的职责,通常被绘制成一个人形符号
是角色(Actor,参与者)
(1)与系统发生交互作用的、系统之外的任何东西都是角色可以是人也可以是机器
(2)角色不等同于使用者(二者不能划等号!
)
(3)使用者是行驶某个角色职责的系统的使用人员
(4)角色存在于系统外部
(5)角色不是活动的准确描述
脚本(Script)
(1)脚本是一个角色与系统之间的一组交互作用
(2)通常具有详细的真实数据及实际的期望输出值
(3)一个应用系统可能具有成千上万个脚本
(4)即使同一件事,所得到的脚本可能也会有细微的区别
(5)脚本是描绘UseCase的重要的背景信息
用例的基本概念描述系统提供的交互功能一个UseCase可以被其他的UseCase调用
UseCase可以组合完成某一项更大的功能UseCase说明系统需要提供什么而不是怎么提供
用户并不关心你如何给他们提供所需要的功能UseCase一般是用“动宾”短语命名
非功能需求:
简称为“URPS+”,即可用性(Usability)、可靠性(Reliability)、性能(Performance)、可支持性(Supportability)以及其它(+)。
需求确认:
快速原型法的优点和缺点
可以在需求分析阶段拿出实物,用实物与用户确认需求,这就是快速原型法的基本思想。
快速原型法,它摒弃了那种一步步周密细致地调查分析,然后逐步整理出文字档案,设计开发,最后才能让用户看到软件结果的繁琐作法。
当捕获了一批业务需求以后,就立即使用快速可视化工具开发出一个原型,交给用户去试用、补充和修改。
再提出一些新的需求以后,再开发一版新的原型。
原型法的关键就是这个快速开发。
不用考虑性能、美观、可靠,原型的目的就是模拟客户的需求,与客户进行确认的。
整个需求分析的过程就是“捕获需求->原型开发->确认需求->再捕获需求”的过程。
快速原型法也会带来一些尴尬和不必要的误会。
最常见的误会就是让用户将原型误以为最终交付的系统。
开发一个系统需要持续数月,为何几天就可以完成?
为什么用户还要在这个系统上投入大量资金呢?
如果对方领导开始有这样的想法时,双方就开发费用进行的谈判就有一些不妙了。
所以在给用户看到原型前,一定要跟用户解释清楚。
既然是原型,必要的校验、非正常操作的处理通通都被忽略。
需求规格说明书
1.引言:
1.1编写目的1.2业务背景1.3项目目标(或任务概述)1.4参考资料1.5名词定义
2.整体概述:
2.1整体流程分析2.2整体用例分析2.3角色分析
3.功能需求:
3.1功能模块(子系统)3.1.1用例图3.1.2用例说明3.1.3领域模型
4.非功能需求5.接口需求:
5.1接口方案5.2接口定义
评审与签字确认会:
1.整体需求不变,具体细节变化。
2.界面风格与操作易用性是最容易发生变更的。
3.增加其它功能。
需求评审会的主要目的就是确认需求
概要设计的概念、内容、主要任务
概要设计:
就是设计软件的结构,包括组成模块,模块的层次结构,模块的调用关系,每个模块的功能等等。
概要设计的主要任务是把需求分析得到的系统扩展用例图转换为软件结构和数据结构。
内容:
如何把被开发的软件系统划分成若干个模块;决定各模块的接口,即模块之间的相互关系;确定模块之间的传递关系。
Jackson和Warnier方法是面向数据结构的分析与设计的典型方法。
详细设计的概念、内容、主要任务
详细设计:
就是对概要设计的一个细化,就是详细设计每个模块实现算法,所需的局部结构。
详细设计的主要任务是设计每个模块的实现算法、所需的局部数据结构。
详细设计的目标有两个:
实现模块功能的算法要逻辑上正确和算法描述要简明易懂。
描述方法(三种):
a.程序流程图b.PAD图C.过程设计语言
结构化程序设计?
基本形式:
顺序,选择,循环。
a.采用自顶向下、逐步求精的程序设计方法b.使用三种基本程序控制结构构造程序1).用顺序方式对过程分解,确定各部分的执行顺序。
2).用选择方式对过程分解,确定某个部分的执行条件。
3).用循环方式对过程分解,确定某个部分重复的开始和结束的条件。
c.主程序员组的组织形式。
软件重用是利用事先建立好的软件制品创建新软件系统的过程
主要应用在应用期系统的维护和进一步扩展上,用于改善应用期软件系统的原始设计,以及提高软件系统代码的质量。
5.数据库设计(内容、所用的建模工具)、文件设计、接口设计(包含哪些内容,具体任务是什么)
(1)设计E-R图:
涉及的实体、属性以及它们之间的关系
(2)根据E-R图设计数据库(关系数据库)(3)数据库设计是数据设计的核心,可以采用“面向数据”
的方法
流式文件自定义格式文件(DICOM格式、病灶格式
接口设计:
用户界面设计;外部接口设计:
与其他设备、系统、网络的接口;内部接口设计:
各种构件(模块)之间的内部接口设计
软件测试的概念:
在规定的条件下对程序进行操作,以发现程序错误,衡量软件正确性、完整性、安全性和质量,并对其是否能满足设计要求进行评估的过程。
测试的方法:
A.白盒测试B.黑盒测试C.灰盒测试
静态测试及其内容:
静态方法是指不运行被测程序本身,仅通过分析或检查源程序的语法、结构、过程、接口等来检查程序的正确性。
对需求规格说明书、软件设计说明书、源程序做结构分析、流程图分析、符号执行来找错。
动态测试及其内容:
动态方法是指通过运行被测程序,检查运行结果与预期结果的差异,并分析运行效率和健壮性等性能。
软件测试级别(单元测试、集成测试、系统测试概念)
单元测试:
是对软件中的基本组成单位进行测试,其目的是检验软件基本组成单位的正确性。
集成测试
集成测试是在软件系统集成过程中所进行的测试,其主要目的是检查软件单位之间的接口是否正确。
系统测试是对已经集成好的软件系统进行彻底的测试,以验证软件系统的正确性和性能等满足其规约所指定的要求。
用户界面的基本类型:
从用户角度出发:
问题描述语言,数据表格、图形与图标、菜单、对话框及窗口等。
用户界面设计基本方法:
分析用户类型;应用程序和界面分离;一致性;尽量减少用户工作;提供反馈;出错处理和帮助功能;增加可视化图形表示。
用户界面设计黄金三原则:
1.置用户于控制之下
(1)以不强迫用户进入不必要的或不希望的动作的方式来定义交互方式
(2)提供灵活的交互(3)允许用户交互可以被中断和撤消(如放弃输入)(4)当技能级别增加时可以使交互流水化并允许定制交互(5)使用户隔离内部技术细节(6)设计应允许用户和出现在屏幕上的对象直接交互)
2.减少用户的记忆负担(
(1)减少对短期记忆的要求(例如在浏览网页时,已经浏览过的超级链接总是用红色表示,而没有浏览过的用蓝色表示)
(2)建立有意义的缺省(Reset设置)(3)定义直觉性的捷径(例如在定义快捷键时用表示功能的单词的第一个字母(+Alt键)来代替,如Alt+F表示“文件(File)”功能)(4)界面的视觉布局应该基于真实世界的隐喻(手机界面、苹果机界面、Windows的废纸篓)(5)以不断进展的方式揭示信息(进程条))
3.保持界面一致(
(1)允许用户将当前任务放入有意义的语境(如用户可以打开多个一致的窗口,把相关任务联系起来,使用户很容易知道当前任务来自何处,下个任务将来自何处等)
(2)在应用系列内保持一致性(一组产品保持一致的设计规则,具有同样的操作方式,使用户很容易接受新版本的产品。
微软的产品如Windows98/2000,Word系列软件等设计风格就是一致的)(3)如过去的交互模型已建立起了用户期望,除非有迫不得已的理由,不要改变它(如Alt快捷键方式)
用户界面设计设计过程:
用户界面设计是一个迭代的过程,也就是说,通常先创建设计模型,再用原型实现这个设计模型,并由用户试用和评估,然后根据用户的意见进行修改(原型法)
用户界面设计:
数据输入界面设计:
数据输入的规则:
明确的输入、明确的动作、明确的取消;确认删除;提供反馈;允许编辑;提供撤销与恢复功能(Redo/Undo);自由格式;提示输入的范围
用户界面设计:
数据显示界面设计:
数据显示的规则:
只显示必要的数据;在一起使用的数据显示在一起;显示出的数据应与用户执行的任务有关;每一屏数据的数量不应超过整个屏幕面积的30%;
屏幕布局规则:
多个显示画面,应建立统一格式;提供明了的标题、标栏及其它提示信息
遵循用户习惯:
采用颜色、字符大小、下划线、不同字体等方式强化重要数据
用户界面设计:
实用性界面设计方法总结:
1.一般交互:
(1)保持一致性。
(2)提供有意义的反馈。
(3)在执行有较大破坏性的动作之前要求用户确认。
(3)允许取消绝大多数操作。
(4)减少在两次操作之间必须记忆的信息量。
(5)提高对话、移动和思考的效率。
(6)允许犯错误(7)按功能对动作分类,并据此设计屏幕布局。
(8)提供对工作内容敏感的帮助设施。
(9)用简单动词或动词短语作为命令名。
2.信息显示的设计:
(1)只显示与当前工作内容有关的信息。
(2)不要用数据淹没用户,应该用便于用户迅速地吸取信息的方式来表示数据。
(3)使用一致的标记、标准的缩写和可预知的颜色。
(4)允许用户保持可视化的语境,如果对图形显示进行缩放,原始的图像应该一直显示着(以缩小的形式放在显示屏的一角),以使用户知道当前观察的图像部分在原图中所处的相对位置。
(5)产生有意义的出错信息。
(6)使用大小写、缩进和文本分组以帮助理解。
(7)使用窗口分隔不同类型的信息。
(8)使用“模拟”显示方式表示信息,以使信息更容易被用户吸取。
(9)高效率地使用显示屏。
3.数据输入设计:
(1)尽量减少用户的输入动作。
(2)保持信息显示和数据输入之间的一致性。
(3)允许用户自定义输入。
(4)交互应该是灵活的,并且可调整成用户最喜欢的输入方式。
(5)使在当前动作语境中不适用的命令不起作用。
(6)让用户控制交互流。
(7)对所有输入动作都提供帮助。
(8)消除冗余的输入。
miniIPL系统:
miniImageProcessingLab一个具有简化功能的图像处理平台。
可以实现图像的读取、显示、基本操作(变换)、分割、特征分析、匹配、对象识别等。
可同时处理自然图像(照片图像)和医学图像。
1.miniIPL的整体设计
(1)矩阵数据的表示和处理(图像和矩阵之间的关系);
(2)(医学)图像的表示;(3)矢量图形的表示、标注;(4)图像基本处理(变换、代数处理等);(5)图像高级处理(分割、匹配、特征分析、检索等)。
实现技术:
类的设计
CDicomDataElement类
属性:
(1)组号(组号与元素号共同构成数据元素唯一的标签号-Tag);
(2)元素号;
(3)‘VR-ValueRepresentation’-数据描述,由2个大写字母构成;
(4)数据元素长度;
(5)数据缓冲区,其长度为‘数据元素长度’个字节;
(6)数据元素的说明;
方法:
(1)从流或缓冲区中读二进制数据(字节流);
(2)设置具体数据(字符串、整数、浮点数etc.)(虚方法)
基于结构化方法的C/S架构软件项目实例
(1)项目立项:
立项背景、可行性分析、开发计划
(2)需求分析:
需求调研、数据分析、功能定义、需求分析文档
(3)概要设计:
开发环境、架构设计、数据设计、界面设计、模块设计、概要设计文档
(4)详细设计:
接口定义、数据结构定义、算法设计、详细设计文档
(5)编码实现:
编程实现、编码文档
(6)系统测试:
测试方案、测试过程、测试评估
软件项目开发过程相当于生产线上的生产过程。
软件生产线上的工序主要包括:
需求分析、概要设计、详细设计、编码、测试、提交和维护等。
1、需求分析实例。
系统定义:
阐述项目的来源、背景.项目的用户特点和项目的目标。
项目来源及背景
本项目是为北京某公司开发的一个网上招聘系统,由于这个公司的规模比较大,需要招聘的员工也很多,每次招聘总能收到成千上万的简历,如何挑选合适的应聘者常常是公司比较棘手的事情,为人力资源部的工作人员带来很多的工作量。
为此公司希望有一个自动化的招聘系统能够给他们带来工作的便利,提高工作效率,同时能及时招聘到满意的人才。
为现实企业与人才的有效联系,弥补招聘中存在的种种不足,我们开发了网上招聘系统。
公司人力资源部的工作人员通过这个招聘系统维护知识题库,编制问卷,发布职位和与这个职位相应的问卷;应聘者可以通过网上提交自己的简历并同时回答相应的问卷。
人力资源部的工作人员通过这个招聘系统可以统计整理这些简历,并根据应聘者的简历和问卷分数提取出需要面试的人员,然后按照一定的方式通知面试人员参加面试,在面试过程中,记录相应的面试结果。
人力资源部的工作人员可以随时浏览人员简历和面试的相关信息。
用户的特点
本系统的用户都是网上用户,包括两类,一类是应聘者,他们的差异比较大,有的学历很高,有的可能很低。
有的经验很丰富,有的可能没有经验等。
另外一类用户是管理用户,他们是公司内部的人,主要是人力资源管理人员和系统管理人员。
他们对招聘业务很熟悉,系统管理人员对系统很熟悉,总之,他们对使用管理软件比较熟悉。
项目目标
本项目设定的目标如下:
·系统能够提供友好的用户界面,使操作人员的工作量最大限度地减少;
·系统具有良好的运行效率,能够达到提高生产率的目的;
·系统应有良好的可扩充性,可以容易地加入其他系统的应用;
·平台的设计具有一定的超前性,灵活性,能够适应企业生产配置的变化;
·通过这个项目可以锻炼队伍,提高团队的开发能力和项目管理能力。
应用环境:
根据用户的需求陈述,可以确定本项目分为客户端和管理端,客户端主要功能是提供应聘者的职位查询、简历录入、回答问卷,简历提交等。
管理端的功能提供公司人力资源管理人员(HR)进行的知识库(题库)管理、问卷管理、职位发布、简历管理、用户管理等。
系统运行的网络环境
无论是客户端的应聘者还是管理端的管理用户都可以通过网络登录到本系统中。
应聘者通过网络提交简历等相关信息,入力资源部通过网络发布职位信息,获得应聘者提交的简历信息,进行面试管理。
管理端的系统管理员需要设置管理端的用户以及相应的权限。
·操作系统:
UNIX/Linux/Windows2000或以上版本
·数据库:
SQLServer2000
·开发工具包:
JDKVersion1.4.2
·Web服务器:
Tomcat
·浏览器:
IE6.0以上
设计用例时,我们遵循下列步骤:
1)识别出系统的角色。
角色可以是用户、外部系统,甚至是外部处理,通过某种途径与系统交互。
重要的是着重从系统外部执行者的角度来描述系统需要提供哪些功能,并指明这些功能的执行者(角色)是谁。
尽可能地确保所有角色都被完全识别出来。
2)描述主要的用例。
可以采取不断地问自己“这个角色究竟想通过系统做什么?
”来准确地描述用例。
3)重新审视每个用例,为它们下个详尽的定义。
角色定义
角色或者执行者指与系统产生交互的外部用户或者外部系统。
1)应聘者
应聘者是指在这个网络招聘系统中通过客户端提交简历信息的人员,这个角色主要参与客户端的职位查询、填写简历、回答问题、提交简历等功能。
2)管理用户
管理用户是指管理端的用户,此角色派生两个子类,HR(入力资源管理)和系统管理员,HR是指在网络招聘系统中通过管理端参与公司人力资源管理工作的人员,它又可以派生三个子类即试题管理者、职位发布者和面试管理者。
系统管理员是指对网上招聘系统进行相关设置、进行系统维护的人员,他也是通过管理端登录对管理端的用户进行设置,分配权限等。
管理用户具体说明如下:
HR
。
试题管理者。
管理题库、组织相关问卷。
。
职位发布者。
根据公司的需要发布相应的职位。
。
面试管理者。
整理应聘者简历、对简历合格人员进行面试。
系统管理员
导过管理端对系统用户进行管理的人员,这个角色主要负责对管理端用户的增删,权限的设置等功能。
3)数据库
数据库是一个与系统产生交互的外部系统,这个角色负责系统的数据查询、增加、删除和修改等操作。
系统主用例图
网上招聘系统可以分为两个主要的组成部分,一个是客户端子系统,一个是管理端子系统。
客户端子系统功能主要是指应聘者通过登录招聘网站进行操作的功能,即应聘功能。
管理端子系统功能是招聘公司的管理人员发布招聘职位,整理应聘者简历,面试等功能。
客户端子系统
应聘者通过公司的招聘网站登录到系统中进行应聘,应聘者通过它提交简历,进行应聘这就是客户端系统的功能。
在客户端用户可以看到职位名称,职位发布日期,截止日期,职位类型,招聘人数等说明,按职位发布日期排序。
当点击职位名称时进入职位详细信息页面,如果应聘的话可以填写简历信息,并回答问卷,最后将问卷连同简历一同提交。
客户端的功能主要包括选择职位、填写简历、回答问卷等功能。
选择职位
用例描述:
应聘职位选择
执行者:
应聘者;
前置条件:
应聘者已登录系统;
后置条件:
选择应聘职位后,可输入简历。
应聘职位选择业务流程
a)应聘者进入职位发布界面,首先展示目前正在招聘的所有职位信息列表。
b)通过点击每个职位,可以详细浏览每个