针对传统软件开发的重载方法,一些创始人在美国犹他州成立了敏捷软件开发联盟,简称agile联盟。
敏捷软件开发的12个原则是。
1)最优先的是通过尽早地和不断地提交有价值的软件使客户满意。
2)欢迎变化的需求,即使该变化出现在开发的后期,为了提升对客户的竞争优势,agile过程利用变化作为动力。
3)以几周到几个月为周期,尽快、不断地发布可运行软件。
4)在整个项目过程中,业务人员和开发人员必须天天一起工作。
5)以积极向上的员工为中心建立项目组,给予他们所需的环境和支持,对他们的工作予以充分的信任。
6)项目组内效率最高、最有效的信息传递方式是面对面的交流。
7)测量项目进展的首要依据是可运行的软件。
8)敏捷过程提倡可持续的开发,项目发起者、开发者和用户应能长期保持恒定的速度。
9) 应时刻关注技术上的精益求精和好的设计,以增强敏捷性。
10)简单化是必不可少的,这是尽可能减少不必要工作的艺术。
11)最好的构架、需求和设计出自于自我组织的团队。
12)团队要定期反思怎样才能更有效,并据此调整自己的行为。
2. 内聚及其七层类型。
内聚(cohesion)是一个模块内部各个元素彼此结合的紧密程度的度量
巧合内聚(偶然内聚):将几个模块中没有明确表现出独立功能的相同程序**段独立出来建立的模块称为巧合内聚模块。
逻辑内聚 :指完成一组逻辑相关任务的模块,调用该模块时,由传送给模块的控制型参数来确定该模块应执行哪一种功能。
时间内聚:指一个模块中的所有人物必须在同一时间段内执行。例如初始化模块和终止模块。
过程内聚 :指一个模块完成多个任务,这些任务必须按指定的过程(procedural)执行。
通信内聚 :指一个模块内所有处理元素都集中在某个数据结构的一块区域中。
顺序内聚:指一个模块完成多个功能,这些功能又必须顺序执行。
功能内聚 :指一个模块中各个部分都是为完成一项具体功能而协同工作,紧密联系,不可分割的。
3. 类间的关系。
对象--关系模型描述了系统的静态结构,它指出了类间的关系(relationship)。
类之间的关系有关联、依赖、泛化、实现等。泛化指出类间的“一般—特殊关系”
继承是类间的基本关系,它是基于层次关系的不同类共享数据和操作的一种机制。
一般—特殊结构是一种分类结构,反映了类间的一般与特殊的关系。
整体—部分结构反映了类间的整体与部分关系。
4. 再工程。
再工程(reengineering):指在逆向工程所获信息的基础上修改或重构已有的系统,产生系统的一个新版本
再工程是一个工程过程,它将逆向工程、重构和正向工程组合起来,将现存系统重新构造为新的形式。当实施软件的再工程时,软件理解是再工程的基础和前提。
通常再工程包含:业务过程再工程、软件再工程
为什么要再工程?
维护一行源**的代价可能是最初开发该行源**代价的14-20倍;
同时重新设计软件体系结构时使用了现代设计概念,它对将来的维护会有很大的帮助;
现有的程序版本可以作为软件原型使用,开发生产率可以大大高于平均水平;
用户具有较多使用该软件的经验,因此,能够很容易地搞清新的变更需求和变更的范围;
另外,利用逆向工程和再工程的工具,可以使一部分工作自动化;
在完成预防性维护的过程中还可以建立起完整的软件配置。
再工程的主要目的?
是为遗留系统转化为可演化系统提供一条现实可行的途径,是在软件生命周期终止后开始的一个新的阶段。
5. 接口设计
接口设计:接口设计描述了软件内部、软件和协作系统之间以及软件同人之间如何通信
接口设计主要包括三个方面:
设计软件模块间的接口。
设计模块和其他信息生产者和消费者(比如外部实体)之间的接口。
设计人(用户)和计算机间的接口。
6. 比较测试。
由二支软件开发队伍,根据相同的需求规格说明分别开发二个软件版本,然后,用相同的测试用例对二个版本的软件分别进行测试,比较二个版本软件的测试结果,如果测试结果相同,则可认为二个版本的软件都是正确的,如果测试结果不同,则要分析各个版本,以发现错误的所在。这种测试称为比较测试。比较测试并不能保证软件没有错误,如果规格说明本身有错,那么所有的版本都可能反映这种错误。
7. 软件项目管理的关注点。
4ppeople product process project
人员(people)
人员是软件工程项目的基本要素和关键因素。
在对人员进行组织时,有必要考虑参与软件过程(及每一个软件项目)的人员类型
产品(product)
定义项目范围,其中包括建立产品的目的和范围、可选的解决方案、技术或管理的约束等
过程(process)
通常将项目分解为任务—子任务等,其分解准则是基于软件工程的过程
项目(project)
采用科学的方法及工具对项目基本内容进行管理
三、阐述题(共 4 小题,每题 7 分,共 28 分)
1. 需求工程。
需求工程是指应用已证实有效的技术、方法进行需求分析,确定客户需求,帮助分析人员理解问题并定义目标系统的所有外部特征的一门学科。它通过合适的工具和记号系统地描述待开发系统及其行为特征和相关约束,形成需求文档,并对用户不断变化的需求演进给予支持。
软件需求工程细分为:
需求获取需求分析与协商系统建模需求规约需求验证需求管理
2. α测试和β测试。
大多数软件厂商都使用一种称为α测试和β测试的过程,来发现那些似乎只有最终用户才能发现的错误。
测试是由一个用户在开发者的场所进行的,软件在开发者在用户的“指导下”进行测试。经α测试后的软件称为α版软件。
测试是由软件的最终用户在一个或多个用户场所进行的,与α测试不同,开发者通常不在测试现场,因此,β测试是软件在一个开发者不能控制的环境中的“活的”应用,用户记录所有在β测试中遇到的(真正的或想象的)问题,并定期把这些问题报告给开发者,在接到β测试的问题报告后,开发者对软件进行最后的修改,然后着手准备向所有的用户发布最终的软件产品。
3. mccall模型的软件质量要素。
软件产品的运行、修改和迁移三个方面,共11个软件质量要素:
正确性(correctness):一个程序满足它的需求规约和实现客户任务目标的程度
可靠性(reliability):一个程序期望以所需的精确度完成它的预期功能的程度
效率(efficiency):一个程序完成其功能所需的计算资源和**的数量
完整性(integrity):对未授权人员访问软件或数据的可控制程度
可用性(usability):学习、操作、准备输入和解释程序输出所需的工作量。
可维护性(maintainability):定位和修复程序中一个错误所需的工作量。
灵活性(flexibility):修改一个运作的程序所需的工作量。
可测试性(testability):测试一个程序以确保它完成所期望的功能所需的工作量。
可移植性(portability):把一个程序从一个硬件和/或软件系统环境移植到另一个所需的工作量。
可复用性(reusability):一个程序(或一个程序的部分)可以在另外一个应用程序中复用的程度,与程序完成的功能的包装和范围相关。
可互操作性(interoperability):连接一个系统和另一个系统所需的工作量。
4. 按mccabe环形复杂性度量,计算下图的复杂性度量。
对于一个强连通的有向图g,若e是图中的弧数,n是图中的结点数,p是强连通分量的个数,则图g的环数计算公式为:
上图中,当增加了出口结点到入口结点的弧后成为图b后:e=7、n=5、v(g)=7-5+1=3
为了简化环形复杂性的计算,我们通常用下列公式直接对图a进行计算:v(g)=e-n+2,此时,e=6,n=5,v(g)=6-5+2=3
四、设计题( 12分 )
教务管理系统的部分功能如下:
(1)基本信息管理:教务管理人员输入或修改学期教学执行计划、学生名单和教师名单;
(2)学生选课:学生根据教学执行计划进行选课;
(3)分配任课教师:教务管理人员为符合开课条件的课程分配教师,并打印任课通知单给教师;
请根据要求画出该系统的数据流图。
第一步:数据的定义(3分)
学生表或学生类:
教师表或老师类:
教学计划表或教学计划类:
第二步:数据流图符号定义(3分)
例如: 第三步:画出该系统的数据流图。
软件工程的定义:
将系统化的、严格约束的、可量化的方法应用于软件的开发、运行和维护,即将工程化应用于软件;上述方法的研究。
软件过程模型:
是软件开发全部过程、活动和任务的结构框架。
软件06级软件工程试卷 A
一 填空题 共20分,每题2分 1 软件工程是将系统化的 规范的 可定量的方法应用于软件的开发 运行和维护的过。程,它包括三个要素。2 通过过程框架可适用于绝大多数的软件项目,主要包括沟通。等五个框架活动。3 常用的软件过程模型包括瀑布式模型,其它还包括。等模型。4 分析建模必须描述信息和三种模型,...
软件工程专业导论
摘要 学习专业导论,让我们对于自己的专业以及以后的路感到更加清晰 软件工程专业的发展历史和特点,并且对软件工程的发展趋势进行了展望。关键词 软件工程的概念 发展 特点和前景。引言 这半年,是我们升入大一的第一个半年。在这一个学期里,我们接触了原本神秘的大学生活,更接触到了 传说中的 专业知识。刚刚脱...
2019软件工程试卷A
东莞理工学院 本科 期末试卷。2012 2013 学年第二学期。软件工程 本 试卷 a 开课单位 计算机学院考试形式 闭卷。科目 软件工程 班级姓名学号 注意 所有题目的答案要求均做在答题卡上,做在试卷上不计分!一 填空题 20分,每空1分 1 需求分析阶段,分析人员要确定对问题的综合需求,其中最主...