软件:是能够完成预定义功能和性能的、可执行的计算机程序和程序正常执行所需要的数据,加上描述程序的操作和使用的文档。
软件的分类:系统软件、支撑软件、应用软件。
软件的特点:1.软件是一种逻辑实体,而不是有形的系统软件,其开发成本和进度难以准确地估算2.
软件是被开发或被设计的,没有明显的制造过程,一旦开发成功,只需要复制即可,但其维护的工作量大3软件的使用没有硬件那样的机械磨损和老化的问题。
软件工程:是建立和使用一套合理的工程原则,以便获得经济的软件,这种软件是可靠的,可以在实际机器上高效地运行。
软件危机:落后的软件生产方式无法满足迅速增长的计算机软件需求,从而导致软件开发与维护过程**现一系列严重问题的现象。
软件过程:软件产品或系统在生存周期中的某一类活动的集合。
软件过程成熟的五个等级:初始级、可重复级、已定义级、已管理级、优化级。
软件生存周期是指软件产品/系统从产生,投入使用到被淘汰的全过程。
软件生存周期的6个阶段:计算机系统工程;需求分析;设计;编码;测试;运行和维护。
计算机系统的元素:软件;硬件;人员;数据库;文档;规程。
软件维护:是指软件系统交付使用以后,为了改正错误或满足新的需要而修改软件的过程。
数据字典:是用以精确地、严格地定义一个与系统相关的数据元素,并以字典的形式顺序地将它们组织起来,使得用户和分析员对所有的输入输出存储成分和中间计算有了共同的理解。
系统工程(基于计算机的系统):通过处理信息来完成某些预定义目标而组织在一起的元素的集合或排序。
软件需求工程细分为:需求获取;需求分析与协商;系统建模;需求规约;需求验证以及需求管理。
系统工程的任务:识别用户要求;系统建模和模拟;成本估算及进度安排;可行性分析;生成系统规格说明。
需求获取的方法:建立顺畅的通信途径、访谈与调查、观察用户操作流程、组成联合小组、用况。
软件的需求分析:即用比较形式化的语言和分析技术对将要开发的软件进行模型的抽象分析,也即对用户所期望的软件系统的功能、行为、性能、设计约束等方面进行详细的冯杰和描述,获得用户所需软件系统需求的规格说明书的过程。
软件项目管理:是指在项目活动中运用专门的知识、技能、工具和方法,使项目能够实现或超过项目关系人的需要和期望。
项目:是为了完成某具体的产品或服务所做的一次性努力。
项目关系人:即参与项目和受项目影响的人,包括项目发起人、项目组、协助人员、顾客、使用者、**商,甚至是项目的发对人。
项目估算:在进行项目计划时就需要对项目所需的工作量(以人月为单位)、项目持续时间(以两份货月份为单位)、
成本(以货币为单位)进行估算。
接口设计描述了模块间的关系。
数据结构描述的是系统外部环境的设计。
总体结构的优势取决于:模块的独立性、高度宽度扇入扇出。
最好的系统结构标志:即系统结构图是完全因子化的(良性结构)。
结构模型如何评价良性?
通过强调结构化程序设计方法学,自顶向下,逐步求精,并注意模块的耦合性就可得到良好的结构。
模块独立性的度量准则:内聚度、耦合度。
软件设计的任务:数据/类设计;体系结构设计;接口设计;部件级设计。
软件设计的过程:制定规范;体系结构和接口设计;数据/类设计;部件级设计,编写设计文档;设计评审。
软件设计的原则:抽象与逐步求精,模块化,信息隐藏,模块独。
软件过程模型。
原型模型:先借用已有系统作为原型模型,通过样品不断改进以使最后的产品就是用户所需要的。
优:缩短了开发周期,加快了工程进度、降低了成本、提高了系统的正确性及用户的满意度、
缺:重新新生产该产品时,用户很难接受、不宜利用原型系统作为最终产品。
螺旋模型:将瀑布模型与原型模型结合起来,强调了其他模型所忽略的风险分析,特别适合于大型复杂的系统。
优:设计灵活,可在项目的各个阶段进行变更、成本计算简单、客户始终参与各阶段的开发,保证了项目的可控性。
缺:建设周期长,而软件技术发展快,所以经常出现软件开发完毕后,和当前的技术水平有了较大的差异,无法满足当前用户的需求。
喷泉模型:是一种面向对象开发的过程模型。
优:各阶段无明显的界限,开发人员可同步进行开发、提高开发效率,节省了开发时间。
缺:开发过程中需大量的人员,不利于项目的管理、要求严格管理文档,使得审核难度加大、很难让用户确信这种演化方法的结果是可以控制的。
瀑布模型:是将软件生存周期的各项活动规定为按固定顺序而连接的若干阶段工作,形如瀑布流水,最终得到软件产品。
特点:接受上一阶段活动的结果作为本阶段活动的输入;依据上一阶段活动的结果实施本阶段应完成的活动;对本阶段进行评审;将本阶段活动的结果作为输出,传递给下一阶段。
优:应用最广泛的过程模型,对确保软件开发的顺利进行,提高软件项目的质量和开发效率起到重要作用。
缺:客户常常以清晰描述所有需求,在开发过程中,客户需求会有所变化,导致瀑布倒流、如果发现不满足客户的问题,那么修改软件的代价是巨大的。
演化模型:是一种全局的软件(或产品)生存周期模型,属于迭代开发方法,开发的过程实际上就是从构造初始的原型出发,逐步将其演化成最终软件产品的过程。
优:任何功能一经开发就能进入测试以便验证是否符合产品要求、
缺:所有的产品需求一开始并不完全清楚则会给总体设计带来困难及消弱产品设计的完整性、若缺乏严格的过程管理,则这个生命周期模型很可能退化为原始的无计划的模式。
变换模型:是一种适合于形式化开发方法的模型,从软件需要形式化说明开始经过一系列变换,最终得到系统的目标程系,此模型必须有严格的数字理论和形式化技术的支持,尚处于研究和实验阶段。
面向对象方法和传统方法:面向对象的方法是在传统方法(结构化分析方法)的基础上发展而来的,例如仍使用抽象和模块化等概念,然而,面向对象方法与传统方法相比发生了根本性的变化,主要在于面向对象方法具有从多维度把建立的模型与问题域进行直接映射的能力,在整个开发过程中均使用一致的概念和表示法,采用诸如封装,继承和消息等机制使得问题域的复杂性在模型上得以控制。
简述可行性分析的任务。
1)经济可行性。
成本,效益,货币的时间价值,投资**期,纯收入。
2)技术可行性。
风险分析,资源分析,技术分析。
3)法律可行性。
确定系统开发可能导致的任何侵权妨碍和责任。
4)方案的选择和折衷。
需求工程的重要性是什么?举出身边由于需求分析失败而造成整个项目失败的列子。
重要性是应用已正实有效的技术,方法进行需求分析,确定客户需求,帮组分析人员理解问题,评估可行性,协商合理的解决方案,无歧视的规约方案,确认规约以习惯转换到可行性的系统时的管理要求,通过合理的工具和符号系统地描述待开发系统以及其行为特征的相关约束,形成需求文档,并对用户不断变化的需求演进给予支持,因需求分析失败而造成失败列子如下:
项目名称:邮政资信管理系统。
项目功能:管理邮政方面的业务监督和管理,提高邮政的服务率。
失败原因:需求分析不足,需求内容不明确,把握不充分。
需求工程的步骤,具体任务是什么?
1)需求获取,需求获取阶段分析人员通过与用户的交流,对现有的系统的观察以及对任务进行分析,2)需求分析与协商:分析活动队需求进行分类组织,分析每个需求与其他需求的关系以检查需求的一致性。
3)系统建模:建模技术可以通过合适的工具和符号系统地描述需求。
4)需求规约:是分析任务的最终产物,通过建立完整的信息描述,详细的功能,给出对目标软件的各种需求。
5)需求验证:对功能的正确性完整性和清晰性,以及其他需求给予评价。
6)需求管理:对需求工程所有相关活动的规划和控制。
程序设计风格:源程序文档化;数据说明;语句结合;输入输出。
源程序如何文档化:标识符的命名要有意义,如变量名,常量名,子程序名、有适当的程序注释,模块功能,接口,重要局部变量包括用途,约束,开发历史、视觉组织,要有标准的书写格式:a.
用分成缩进的写法显示嵌套结构层次b.在注释段周围加上边框c.每行只写一条语句。
谈谈你现有的程序设计风格,哪些需要改善?
程序设计需要有紧密细心的逻辑思考的能力。之前在编码程序是想到**写到**,写了一段之后,又对其修修补补,完成整个程序编码的效率很低,在书写规范上常常会少了‘}‘等,对于整个程序的运行造成了很大的不便,对于错误的检查也不容易发现,通过学习应对其改变。在以后写程序前,应有整个的结构框架,在输入程序时更应注意‘{}成对出现,还应对程序的结构像每行一段**,**的子语句的缩进格式,这样使得程序的层次结构更明显,也更容易使人读懂你的程序,对于错误的检查更加方便,快捷。
一个系统分析员具备哪些思想素质和基础知识,请说明理由。
强烈的事业心和责任心、钻研精神、优秀的协商谈判能力、广泛的知识面、精湛的技术能力、财务能力、司法能力。
超强超快的学习能力、敏锐的观察力。除了具备基本的it技能知识外,需要广泛涉猎其他行业其它学科的知识方法以及系统工程的理念。借鉴和利用其它行业为it行业所用,也可以把it行业的理念应用到其它行业,系统分析员需要分析可行性和解决研发人员的技术问题,因此必须具备广泛的技术涉猎方面和较强的技术能力。
软件工程复习
单选填空简答思考题。1 传统的软件瀑布生命模型包括哪六个方面?需求 分析 设计 实现 交付后维护 退役2 传统瀑布生命模型的中交付后维护包括哪三种?改正性维护 适应性维护 完善性维护3 现代维护和传统维护的观点有何不同?1 传统维护的观点是先开发后维护。2 现代维护的观点是无论是在软件安装前还是安装...
软件工程复习
软件工程复习资料。备注 1.老师反复强调我们之前做过的作业要熟练掌握 需求陈述 实验课画的模型 自己画。的数据流图 2 蓝颜色的字都是老师上课补充的,还有很多需要自己去补充,欢迎修正完善。核心问题 在考试做大是要表述清楚详细,关。键词要有 问题定义 专用名词表要解决的问题是什么?达要准确,不能更改 ...
软件工程 复习
1.概念 软件危机是指在计算机软件开发 使用与维护过程中遇到的一系列严重问题。2.为什么会产生软件危机?当软件开发技术的进步不能跟上硬件技术的进步,未能满足发展的要求,致使软件开发中遇到的问题找不到解决的办法,使问题积累起来,形成了尖锐的矛盾,因而导致了软件危机。3.软件危机的表现 经费预算经常突破...