惠州学院 软件工程导论 第二章__可行性研究 刘宇芳
- 格式:pdf
- 大小:277.43 KB
- 文档页数:12
《软件工程导论》课 程 介 绍课程特点:既是一门技术学课程,也是一门管理学课程;既具有理论性,也具有较强的实操性。
课程目的:基本:✧ 掌握软件工程学的基本概念和基本原理;✧ 掌握分析、设计、测试与维护软件系统的理论与方法;✧ 实践用软件工程的方法开发软件系统的全过程,构建一个软件系统。
进一步:✧ 转变对软件的认识:程序 系统;✧ 转变思维定式:程序员 系统分析员/系统设计员;需求获取、定义、建模、分析软件体系结构设计软件概要设计软件评审与测试软件评审/测试软件评审/确认软件详细设计软件构造软件项目管理软件工程人才分布示意图✧ 学习以团队合作的形式开发软件;✧ 工程化训练:规范、准则、项目管理。
课程的主要内容:软件工程的产生、软件的生命周期、生命周期模型;软件开发各阶段的目标、任务、特点、步骤和文档;传统软件工程的基本思想,开发过程和步骤,应遵循的原则和准则;面向对象软件工程的基本思想、基本过程和基本模型;软件工程的管理技术。
课程重点:掌握结构化方法开发软件系统的过程、步骤、应遵循的原则以及工具。
教学安排:56学时讲授;8-10学时课内实验;课后作业和课后实验。
考核:期末考试:70%;作业+分组实验报告+点名:30%。
教材:软件工程导论(5th),张海藩,清华大学出版社参考文献软件工程(第二版),齐治昌,高等教育出版社软件工程实践教程,谭庆平等,高等教育出版社软件工程分析案例,李代平等,清华大学出版社先修课程:程序设计语言数据结构数据库原理与设计课程实验:实验要求:按照面向数据流的软件工程的要求完成各阶段的主要文档,实现的程序能初步运行。
✧分组进行,每组3~4人,自由组合,每组设项目负责人一个;✧每组抽签选择开发题目1、2或3,一组同学合作完成一个项目,每人负责项目中的1~2个开发步骤;✧工作步骤:问题初步定义和可行性研究→需求分析(资源采集)→界面原型设计→概要设计→详细设计→实现与测试→项目验收✧需要交付的文档:(1)可行性研究报告(2)项目开发计划(含小组成员分工)(3)需求规格说明书(4)概要设计说明书(5)详细设计说明书(6)数据库设计说明书(7)测试计划(8)测试分析报告(9)项目开发总结报告(10)系统源代码(11)操作手册建议开发步骤:⏹可行性研究:用系统流程图描述系统的工作流程。
软件工程导论试题集()————————————————————————————————作者:————————————————————————————————日期:第一章:软件工程学概述一.填空题1. 计算机科学中的研究成果均可用于软件工程,但计算机科学更侧重于(原理和理论)、而软件工程侧重于(如何建造一个软件系统)2. 计算机程序及其说明程序的各种文档称为(文件)。
计算任务的处理图像对象和处理规则的描述称为(程序)。
有关计算机程序功能、设计、编制、使用的文字或图形资料称为(文档)。
3. 软件开发环境是相关一组(软件工具)的集合,它支持一定的软件开发方法或按照一定的软件开发模型组织而成的。
4. CASE这一术语的英文是(Computer Aided Software Engineering)。
5. (平台集成)是指工具运行在相同的硬件/操作系统平台上。
(数据集成)是指工具使用共享数据模型来操作。
(表示集成)是指工具提供相同的用户界面。
6. 根据支持的范围,CASE工具可分为(窄支持)、(较宽支持)和(一般支持)工具。
7. 软件危机的主要原因有(软件本身的特点)和(缺乏好的开发方法和手段)。
8. (增量)模型是一种非整体开发的模型。
软件在该模型中是“逐渐”开发处理的,开发出一部分,向用户展示一部分,可让用户及早看到部分软件,及早发现问题。
或者先开发一个“原型”软件,完成部分主要功能,展示给用户并征求意见,然后逐步完善,最终获得满意的软件产品。
9.结构化方法总得指导思想是(自顶而下逐步求精)。
它的基本原则是功能的(分解)与(抽象)。
它是软件工程中最早出现的开发方法,特别适用于数据处理领域的问题。
10. 面向对象开发方法包括(面向对象分析)、(面向对象设计)、(面向对象实现)、三部分。
11. 瀑布模型是将软件生存周期各个活动规定为依线性顺序连接的若干阶段的模型。
它包括(可行性分析)、项目开发计划、(需求分析)、(概要设计) 、(详细设计)、_(编码)、(测试)、(维护),它规定了由前至后、相互衔接的固定次序,如同瀑布流水,逐级下落。
第二章可行性研究
2.1 可行性研究的目标与任务
2.1.1 目标:用最小的代价和尽可能短的时间判断问题是否值得去解?
2.1.1 任务:
——技术可行性
——经济可行性
——操作可行性
——社会可行性
2.2 可行性研究过程
(1)复查系统规模与目标
(2)研究目前正在使用的系统
(3)导出新系统的高层逻辑模型
(4)导出与评价各种方案
(5)推荐行动方针
(6)草拟开发计划
(7)书写文档提交审查——《可行性研究报告》
2.3 可行性研究工具
——
系统流程图:表达数据在系统各部件之间流动的情况
程序流程图:对数据进行加工处理的控制过程
2.4 成本/效益分析:从经济角度评价开发一个新的软件工程项目是否可行
——成本估计
……代码行技术
……任务分解技术
……自动估计成本技术
——效益分析:有形效益,无形效益
——常用的效益度量方法
……货币的时间价值
……投资回收期
……纯收入
1。
第一章一、什么是软件危机?它有哪些典型表现?为什么会出现软件危机?软件危机是指在计算机软件开发、使用与维护过程中遇到的一系列严重问题和难题。
它包括两方面:如何开发软件,已满足对软件日益增长的需求;如何维护数量不断增长的已有软件。
软件危机的典型表现:(1) 对软件开发成本和进度的估计常常很不准确。
常常出现实际成本比估算成本高出一个数量级、实际进度比计划进度拖延几个月甚至几年的现象。
而为了赶进度和节约成本所采取的一些权宜之计又往往损害了软件产品的质量。
这些都降低了开发商的信誉,引起用户不满。
(2) 用户对已完成的软件不满意的现象时有发生。
(3) 软件产品的质量往往是靠不住的。
(4) 软件常常是不可维护的。
(5) 软件通常没有适当的文档资料。
文档资料不全或不合格,必将给软件开发和维护工作带来许多难以想象的困难和难以解决的问题。
(6) 软件成本、软件维护费在计算机系统总成本中所占比例逐年上升。
(7) 开发生产率提高的速度远跟不上计算机应用普及的需求。
软件危机出现的原因:(1) 来自软件自身的特点:是逻辑部件,缺乏可见性;规模庞大、复杂,修改、维护困难。
(2) 软件开发与维护的方法不当:忽视需求分析;认为软件开发等于程序编写;轻视软件维护。
(3) 供求矛盾将是一个永恒的主题:面对日益增长的软件需求,人们显得力不从心。
二、假设自己是一家软件公司的总工程师,当把图1.1给手下的软件工程师们观看,告诉他们及时发现并改正错误的重要性时,有人不同意这个观点,认为要求在错误进入软件之前就清楚它们是不现实的,并举例说:“如果一个故障是编码错误造成的,那么,一个人怎么能在设计阶段清除它呢?”应该怎么反驳他?答:在软件开发的不同阶段进行修改付出的代价是很不相同的,在早期引入变动,涉及的面较少,因而代价也比较低;在开发的中期,软件配置的许多成分已经完成,引入一个变动要对所有已完成的配置成分都做相应的修改,不仅工作量大,而且逻辑上也更复杂,因此付出的代价剧增;在软件“已经完成”是在引入变动,当然付出的代价更高。
第二章可行性研究一、可行性研究的任务可行性研究就是确定问题是否值得去解。
可行性研究工作是在初步的需求定义(澄清问题的定义)之后进行的,其的目的是用最小的代价在尽量短的时间内(总成本的5%~10%)确定该项目是否值得去解决,是否存在可行的解决方案。
对每一种可能的解决方案,就以下几个方面研究其可行性:(1)经济可行性:这个系统的经济效益能超过它的开发成本吗?估算项目的开发成本和系统投入使用后可能带来的利润,进行成本/效益分析,从经济角度判断系统开发是否“合算”。
(2)技术可行性:使用现有的技术能实现这个系统吗?根据客户提出的系统功能、性能要求,从开发者的技术实力、以往工作基础、问题的复杂性等出发,判断系统开发在时间、费用及其他各项约束条件限制下成功的可能性。
(3)运行、操作可行性:系统的操作方式在这个用户组织内行得通吗?主要研究系统的运行方式在用户单位是否可以被有效地实施,是否与原有其他系统相矛盾;系统的操作规程在用户单位内是否可行,它包括人事、科技政策、管理方法等等。
(4)法律可行性:系统的开发使用,在当国当地当时合法吗?研究系统的开发和使用是否会侵犯他人的权益,是否触犯了国家和地方的法律法规。
另外,可行性研究还要有开发方案的选择结论:如果问题没有可行的解,分析人员应建议停止该项目,以避免造成进一步的浪费;如果问题值得解决,则提出并评价实现系统的各种可行的开发方案,从中选择一种较好方案,并为系统制定一个初步的开发计划。
二、可行性研究的步骤1、复查初步分析结果,确定系统目标与规模,清晰地描述对系统的所有约束条件;P72、研究现有的系统,找出其基本功能和信息,指出其缺点或局限性(功能性能上的、经济上的);P93、借助某种图形工具导出新系统的高层(比较粗略的)逻辑模型,并与现有系统进行比较。
以后可以从这个逻辑模型出发设计新系统;P104、进一步定义问题。
可行性研究的前3个步骤实质上构成一个循环,目的是逐步改善逻辑模型。
分析员定义问题,分析这个问题,导出一个试探性的解(用工具描述出来);在此基础上和用户一起复查、再次定义问题,再一次分析这个问题,修改这个解;继续这个循环过程,直到提出的逻辑模型完全符合系统目标。
在此过程中,遗漏和错误不断得到补充和改正。
5、从建议的系统逻辑模型出发,导出新系统的高层次的(比较抽象的)物理解法;提出多个供选择的方案,并对每一个方案的技术可行性、经济可行性、运行和操作可行性等进行分析比较;估计生命周期每个阶段的工作量。
P13~156、推荐行动方案。
如果系统分析员认为系统值得开发,则应指出开发的价值、推荐方案的理由并为推荐的系统草拟一份开发计划;若分析员认为不值得开发,也应拿出充分的理由。
7、草拟开发计划,书写文档(可行性研究报告)并提交审查。
P178、评审、复审和决策。
通过技术评审和管理复审,开发方和客户方或使用部门负责人根据各项可行性研究的结论,决策是否继续这项工程。
可行性研究报告的形式可以是多样的,其中主要涵盖的内容:(1)项目背景:①问题描述②实现环境③限制条件(2)管理概要和建议:①重要的研究结果②说明③建议④影响(3)经济可行性(成本/效益分析):①经费概算②预期的经济效益(4)技术可行性(技术风险评价):①技术条件、实力②已有工作基础③设备条件(5)法律可行性:①系统开发可能导致的侵权,违法和责任(6)用户使用可行性:①用户单位的行政管理,工作制度②使用人员的素质(7)其它与项目有关的问题:①其它方案介绍②未来可能的变化见软件设计文档国家标准GB8567—88三、描述可行性研究成果的图形工具1、系统流程图--系统物理模型的描述工具什么是系统流程图,它的成份和用到的符号P38~39,P18~20例子:P40,P21~24关于分层P252、数据流图--系统逻辑功能的描述工具什么是数据流图,它的成份和用到的符号P40~41,P26~30例子:(1)文字描述:P42,P31(2)从文字描述中提取的信息:数据流图有4种成分:源点和终点,处理,数据存储,数据流。
a数据源点:仓库管理员;数据终点:采购员。
b处理:零件入库或出库(事务)处理;定货报表生成。
c数据流:零件入库或出库(事务);定货信息。
P43表2.1d数据存储:库存清单;定货信息表(3)分层细化的数据流图:P35、P38、P40关于数据流图的分层细化数据流图是逐层细化的,它将每个需要细化的模块分解成一个子图。
当对数据流图分层细化时必须保持信息连续性,也就是说,当把一个处理分解为一系列处理时,分解前和分解后的输入输出数据流必须相同。
为数据流图中的两大成份--数据流(数据存储)、处理,命名时应注意:P45,P41~43(1)为数据流、处理命名要注意完整性,切忌空乏;(2)命名通常先为数据流命名,然后再为与之相关联的处理命名;(3)数据流命名有困难,说明系统分解不恰当;(4)处理的命名应为动宾结构,动词表示处理的功能、名词表示处理的对象;(5)数据处理还应按处理流程顺序和模块分解的层次编号。
数据流图的用途:(1)作为交流信息的工具;P44(2)作为分析和设计的工具;P45(3)辅助物理系统的设计(边界的划分)。
P46,47,49在进行可行性研究时,我们通常首先用系统流程图描述现有系统;通过简要分析,用数据流图描述即将设计的新系统的逻辑功能;再划分自动化边界,用系统流程图将新系统的逻辑模型转换成其对应的物理模型,描绘未来系统的概貌。
四、数据字典1、什么是数据字典数据字典是关于数据的信息的集合,也就是对数据流图中包含的所有元素的定义的集合。
它的作用也正是在软件分析和设计的过程中给人提供关于数据的描述信息。
数据流图和数据字典共同构成系统可行性研究阶段的逻辑模型。
2、数据字典的用途P59~60(1)分析阶段的交流工具(2)包含控制信息(3)数据库设计的基础3、数据字典的内容P47,P51~52举例:4、定义数据的方法数据字典中定义数据的方法就是①对数据自顶向下逐步分解,当分解到不需要进一步定义、每个和工程有关的人也都清楚数据元素的含义时,这种分解过程就完成了。
②然后再用自然语言或符号语言描述数据元素组成数据的方式。
数据定义使用到的符号及意义:由数据元素组成数据的方式:(1)顺序即以确定次序连接两个或多个分量;(2)选择即从两个或多个可能的元素中选取一个;(3)重复即把指定的分量重复零次或多次。
(4)可选即一个分量是可有可无的(重复零次或一次)。
可采用下列符号:=意思是定义为(或等价于);(1)+意思是和(即,连接两个分量);(2)[]意思是或(即,从方括弧内列出的若干个分量中选择一个),通常用“|”号隔开供选择的分量;(3){}意思是重复(即,重复花括弧内的分量);(4)()意思是可选(即,圆括弧里的分量可有可无)。
重复次数的标注P57举例P57~58数据字典的实现(1)用Case工具中的数据字典处理程序对数据字典进行生成和编辑;(2)通过手工制作卡片来制作数据字典。
每张卡片上保存描述一个数据的信息,主要应该包含下述这样一些信息:名字、别名、描述、定义、位置。
(3)举例P49五、成本/效益分析(经济可行性研究)为了对比成本和效益,首先需要估计它们的数量,从数量上对比成本和效益1、成本估算技术----估算软件的开发成本P50,P63~65(1)代码行技术(2)任务分解技术(3)自动成本估算技术2、成本/效益分析方法成本/效益分析概说P51,P66~67货币的时间价值P51,P68纯收入计算分析方法(1)概念:纯收入=在整个生命周期之内系统的累计经济效益(折合成现在值)与投资之差。
P=20万 4.2万 4.2万 4.2万 4.2万 4.2万012345(2)举例:假设某软件使用周期为5年。
现在投资20万元,平均年利率3%。
预计从第一年起,每年年底收入4.2万元,问该项目是否值得投资?计算方法1:投资额=200000⨯(1+3%)5≈231855(元)收入=42000⨯[(1+3%)4+(1+3%)3+(1+3%)2+(1+3%)+1]≈222984(元)收入-投资额=-8871(元)计算方法2:)(765220000003.1103.1103.1103.1103.11420002345元-≈-⎥⎦⎤⎢⎣⎡++++⨯投资回收期计算方法(1)概念:所谓投资回收期就是使累计的经济效益等于最初投资所需要的时间。
投资回收期小于软件的生命周期,投资才合算;投资回收期越短越好!(2)举例:仍以上例计算由上计算方法2可知,5年还不能回收全部成本。
如果软件第6年全年运行可收入利润折合现值:)(3517403.11420006元≈⨯则收回剩余成本7652元需要:7652÷35174≈0.22(年)所以,整个软件的投资回收期为:5.22年。
所以投资回收期5.22>软件生命周期5投资回收率计算方法(1)概念:所谓投资回收率即平均每年回收成本的百分比。
投资回收率高于银行利息才合算;投资回收率越高越好!P=F1/(1+j)+F2/(1+j)2+F2/(1+j)3+…+Fn/(1+j)n设n=5,解出此方程,计算出的j 就是投资回收率。
(2)举例:仍以上例计算3%%65.1)1(1)1(1)1(1)1(111420002000005432年利率<≈⇒⎥⎦⎤⎢⎣⎡+++++++++=j j j j j j 五、技术可行性研究1、主要工作是:风险分析。
其任务是在给定的约束条件下,论证能否实现系统所需的功能和性能。
资源分析。
其任务是论证是否具备系统开发所需各类人员的数量和质量、软硬件资源和工作环境等。
技术分析。
其任务是论证现有的科学技术水平和开发能力是否支持开发的全过程并达到系统功能和性能的目标。
2、主要方法是:充分采集系统功能、性能、各种约束条件、所需的各种资源等方面的信息,进而分析系统开发可能承担的技术风险;分析实现系统功能和性能所需的各种设备、人员、技术、方法、工具和过程;从而从技术角度分析开发系统的可行性。
数学建模、原型建造和模拟是基于计算机系统技术可行性研究的有效工具。
六、本章作业P53~544、5对自选项目进行可行性研究附件:可行性研究报告(FAR)FAR是项目初期策划的结果,它分析了项目的要求、目标和环境;提出了几种可供选择的方案;并从技术、经济和法律各方面进行了可行性分析。
可作为项目决策的依据。
主要内容提示:1可行性分析的前提1.1项目的要求1.2项目的目标1.3项目的环境、条件、假定和限制2可选的方案2.1原有方案的优缺点、局限性及存在的问题2.2可重用的系统,与要求之间的差距2.3可选择的系统方案12.4可选择的系统方案22.5选择最终方案的准则3所建议的系统3.1对所建议的系统的说明3.2处理流程和数据流程3.3与原系统的比较(若有原系统)3.4要求在设备、软件、运行、开发、环境、经费、局限性等方面的要求。