软件工程的定义:软件工程是一门研究如何用系统化、规范化、数量化等工程化思想和方法去进行软件开发、维护和管理的学科。
软件危机的定义:软件开发和维护过程中所遇到的如软件规模越来越大,复杂度不断增加,软件的需求量日益增大等的严重问题我们称之为软件危机。
软件工程有哪些基本的思想:a.推迟实现的观点 b.逐步求精的观点 c.分解与抽象的观点 d.信息隐蔽的观点 e.质量保证的观点。
cmm(capability maturity model)能力成熟度模型,是对于软件组织在定义、实施、度量、控制和改善其软件过程的实践中各个发展阶段的描述。
极限编程(extreme programming , xp)是一种软件工程方法学是敏捷软件开发中最富有成效的几种方法学之一。它的的核心有四个要点:交流、简单、反馈、勇气。
软件生命周期模型:通常把软件生命周期中各项开发活动的流程用一个合理的框架——开发模型来规范描述,这就是软件过程模型,或者称为软件生命周期模型。
软件需求分类:功能需求、非功能需求和领域需求。
结构化分析(structured analysis, sa) 结构图(structure chart ,sc)
面向对象的一些概念:类是具有相同或相似性质的对象的抽象。实例是类的具体化。
继承性是子类自动共享父类数据结构和方法的机制,这是类之间的一种关系。消息是指对象间相互联系和相互作用的方式。
数据流类型:变换型数据流、事务型数据流、混合型数据流。
jackson图:jackson图是jackson方法分析和设计最有效的表达手段,用它既可以描述问题的数据结构,也可以描述软件的程序结构。jackson图的优点是便于表示层次结构,利于结构自顶向下分解,形象直观,可读性好。
jackson方法用某种形式的伪码给出程序的过程性描述。伪码一般采用结构化形式的英语描述,例如,用”select”语句描述选择结构,用”until”或”while”语句描述重复结构。
结构化程序设计的三种基本逻辑结构是:顺序结构、选择结构和循环结构。
类与类之间的关系:关联、泛化、聚集。
软件设计的三类活动:软件设计的第一类活动是软件结构设计,也称为总体设计、概要设计或高层设计。第二类活动是软件详细设计,也称为(模块)过程设计或底层设计。第三类活动是设计测试。
软件模块化设计的指导思想:分解、抽象、逐步求精、信息隐蔽和模块独立性。
软件模块化设计的定义:把一个大型软件系统的全部功能,按照一定的原则合理地划分为若干个模块,每个模块完成一个特定子功能,所有的这些模块以某种结构形式组成一个整体。
模块独立性的定义及控制标准:模块独立性是模块化、抽象、信息隐蔽概念的直接结果,也是判断模块化结构是否合理的标准。模块独立性可以由两个定性标准度量,即模块自身的内聚和模块之间的耦合。
内聚性、耦合性和抽象的定义:内聚性是从功能的角度对模块内部聚合能力的量度,耦合性是对一个软件结构内不同模块之间互连程度的度量。抽象是一种从一般的观点看待事物的方法,它要求我们集中于事物的本质特征(内部状态和运动规律),而非具体细节或具体实现。
信息隐蔽定义:每个模块对其他所有模块都隐蔽自己的设计决策,也就是说,模块应该详细说明且精心设计以求在某个模块中包含的信息不被不需要这些信息的其他模块访问。
按耦合度从低到高依次有7种耦合方式:a.非直接耦合(独立运行)b.
数据耦合(用参数表传递简单数据)c.标记耦合(传递数据结构或者一部分)d.控制耦合(传递的信息包括控制模块的信息)e.
外部耦合(模块与软件之外的环境有关)f.公共耦合(多个模块引用同一全局的数据区)g.内容耦合(访问内部数据,**重叠或者多个入口) 按内聚度从低到高依次有7种内聚种类:
a.偶然内聚(模块完成的多个任务,任务之间的关系松散)b.逻辑内聚(模块完成逻辑相关的一组任务)c.
瞬时内聚(模块的所有任务必须在同一时间间隔内执行)d.过程内聚(模块的处理元素相关而且按照特定的次序执行)e.通信内聚(模块的所有元素集中在一个数据结构区域上)顺序内聚(模块的处理元素相关,必须顺序执行)f.
功能内聚(模块完成单一的功能,各个部分协调工作,而且不可缺少) 结构化设计方法(sd)是基于模块化、自顶向下细化、结构化程序设计等程序设计技术基础上发展起来的。
软件维护类型及对应方向的维护:
纠错性维护:对在测试阶段未能发现的,在软件投入使用后才逐渐暴露出来的错误的测试、诊断、定位、纠错以及验证、修改的回归测试过程。纠错性维护占整个维护工作的21%
完善性维护:为了满足这些日益增长的新要求,需要修改或再开发软件,以扩充软件功能、增强软件性能、改进加工效率、提高软件的可维护性等。完善性维护所占的比重最大,大约占总维护量的50%以上。
适应性维护:为了适应计算机的飞速发展,使软件适应外部新的硬件和软件环境或者数据环境(数据库、数据格式、数据输入/输出方式、数据存储介质)发生的变化,而进行修改软件的过程。适应性维护占整个维护工作的25%
预防性维护:为了提高软件的可维护性和可靠性等,主动为以后进一步维护软件打下良好基础的维护活动。大约占总维护量的5%
编码语言的目的与分类:
编码的目的是实现人和计算机的通信,指挥计算机按人的操作意图正确工作。
程序设计语言是人和计算机之间进行通信的最基本的工具,其特性会影响人的思维和解决问题的方式。
分为两大类:低级语言:这两种语言都依赖于相应的计算机硬件。机器语言属于第一代语言。
汇编语言属于第二代语言高级语言:第三代程序设计语言利用类英语的语句和命令,尽量不再指导计算机如何去完成一项操作,如basic、cobol和fortran等。***程序设计语言比第三代程序设计语言更像英语但过程更弱,与自然语言非常接近,它兼有过程性和非过程性的两重特性,如数据库查询语言、程序生成器等。
人机界面设计的任务,就是根据对用户在使用交互式系统时的所作所为,或者是用户想象中的所作所为,或者是他人想象中用户的所作所为的抽象,创建或导出一致的表示界面。
面向对象实现主要包括两项工作:(1)把面向对象设计结果翻译成用某种程序语言书写的面向对象程序;(2)测试并调试面向对象的程序。
请描述图书馆系统的借书的一个常规场景。
用例名称:借书。
范围:图书管理图书流通应用。
级别:用户需求。
主要参与者:借阅者。
涉众及其关注点:
1)浏览者:希望能够不需要登录系统即可快速地浏览图书和查询信息。
2)借阅者:希望在登录系统后可以借书,能查查询自己信息和借书情况。
3)普通管理员:希望能够协助借书者完成借书功能,形成借书报表给借阅者查看确认。
前置条件:借书者要登录系统或者验证借书证。
成功保证:创建借书记录,更新借书信息,形成借书报表。
主成功场景:
1)普通管理员扫描借书证。
2)检查是否可以借书。
3)若可借,则扫描图书。
4)显示已借书数,显示借书成功。
…重复(2)-(4)
5)借书结束。
请描述银行客户从atm机上取一笔钱的场景。
答:客户插入银行卡后输入密码。客户选择“取款”项,屏幕跳出选择取款金额菜单以及一次性可取出的最大金额,客户根据自身需要选择预设金额或者自己输入想要取出的金额。
机器根据客户输入的金额进行出钞,如果余额不足,则屏幕提示客户无法提取相应金额。客户选择提取较小金额或者选择退出系统,取卡。否则在正常情况下按客户所需输出相应钞票。
屏幕提示在30秒内取走钞票。完成交易,客户退出系统,取卡。
可行性分析要如何入手?
从技术可行性、经济可行性、操作可行性和时间可行性四个方面研究每种方案的可行性。
软件工程两大范型分别是什么?他们有什么不同?
答:分别是传统的结构化范型和面向对象范型。结构化范型要么面向行为要么面向数据,但没有既面向数据又面向行为的;而面向对象范型把数据和行为看成同等重要,即将对象视作一个融合了数据及在其上操作的行为的统一的软件组件。
面向对象相对于结构化技术,无论对象的内部细节如何变化,只要对象提供的方法即接口保持不变,则整个软件产品的其他部分就不会受到影响,不需要了解对象内部的变化。
结构化分析要创建哪些模型?
答:结构化的需求分析模型有数据流模型、状态转换模型、实体—关系模型等。数据流模型集中在数据的流动和数据转换功能,而不关心数据结构的细节。
实体—关系模型关心的是寻找系统中的数据及其之间的关系,却不关心系统中包含的功能。系统的行为模型包括两类模型:一类是数据流模型,用来描述系统中的数据处理过程;另一类是状态转换模型,用来描述系统如何对事件做出响应。
软件生命周期的定义是什么?它分为几个阶段?分别是什么?
答:软件从生到死的过程称之为软件生命周期。它分为六个阶段,分别是:
a.问题的定义及规划 b.需求分析 c.
软件设计 d.程序编码 e.软件测试 f.
运行。什么是瀑布模型?什么是增量模型?它们有什么区别?
答:瀑布模型是从上一项活动接受该项活动的工作对象作为输入,利用这一输入实施该项活动应完成的内容,给出该项活动的工作成果,并作为输出传给下一项活动。增量模型是在项目的开发过程中以一系列的增量方式开发系统。
他们的主要区别是瀑布模型的开发过程是通过一系列阶段顺序展开的,而在增量模型中,软件被作为一系列的增量组件来设计、实现、集成和测试,每一个组件是由多种相互作用的模块所形成的提供特定功能的**片段构成。
维护。用户需求和系统需求各有什么特点?
答:用户需求是从用户角度来描述系统功能和非功能需求,以便让不具备专业技术方面知识的用户能看懂。用户需求是描述系统的外部行为,用自然语言、图表和直观的图形来叙述。
系统需求是比用户需求更详细的需求描述,是系统实现的基本依据,因此,是一个完全的、一致的系统描述,是软件工程人员系统设计的起点。系统需求描述可能包括许多不同的模型,如对象模型和数据流模型。
需求分析过程主要有哪几个步骤?
答:需求分析过程主要有沟通、导出需求、分析与精化、可行性研究、协商与沟通、规格说明、需求验证、变更管理等步骤。
数据字典的概念?数据字典包含哪些内容?
答:数据字典是分析模型**现的所有名字的一个集合,还包括有关命名实体的描述。如果名字是一个复合对象,它还应有对其组成部分的描述。
一般说来,数据字典应该由四类元素的定义组成:数据流、数据流分量、数据存储和处理。
结构化分析主要手段有哪些?
答:数据流图、数据字典、状态转换图、实体—关系图等。
面向对象模型有哪些?
答:面向对象提供了三个基本模型:对象模型、动态模型和功能模型。
面向对象模型有哪几个模型,各自的任务和各自的定义?
软件工程复习
单选填空简答思考题。1 传统的软件瀑布生命模型包括哪六个方面?需求 分析 设计 实现 交付后维护 退役2 传统瀑布生命模型的中交付后维护包括哪三种?改正性维护 适应性维护 完善性维护3 现代维护和传统维护的观点有何不同?1 传统维护的观点是先开发后维护。2 现代维护的观点是无论是在软件安装前还是安装...
软件工程复习
软件工程复习资料。备注 1.老师反复强调我们之前做过的作业要熟练掌握 需求陈述 实验课画的模型 自己画。的数据流图 2 蓝颜色的字都是老师上课补充的,还有很多需要自己去补充,欢迎修正完善。核心问题 在考试做大是要表述清楚详细,关。键词要有 问题定义 专用名词表要解决的问题是什么?达要准确,不能更改 ...
软件工程 复习
1.概念 软件危机是指在计算机软件开发 使用与维护过程中遇到的一系列严重问题。2.为什么会产生软件危机?当软件开发技术的进步不能跟上硬件技术的进步,未能满足发展的要求,致使软件开发中遇到的问题找不到解决的办法,使问题积累起来,形成了尖锐的矛盾,因而导致了软件危机。3.软件危机的表现 经费预算经常突破...