软件工程—方法与实践(许家珆)
- 格式:doc
- 大小:213.00 KB
- 文档页数:55
软件工程的实践与方法软件工程是一门涉及软件开发和维护的学科,它关注如何以系统化的方法来构建和管理软件项目。
在这篇文章中,我将介绍一些软件工程实践和方法,以帮助开发人员更好地处理软件项目。
1. 需求分析在软件工程中,需求分析是项目成功的关键。
开发人员必须准确理解用户的需求,这样才能为用户构建出满足需求的软件系统。
在进行需求分析时,可以使用UML(统一建模语言)工具来进行需求建模和详细规划。
2. 设计与架构软件设计是指将需求转化为系统结构和组件的过程。
在设计阶段,开发人员需要考虑如何将系统划分为不同的模块,并确定模块之间的接口和依赖关系。
此外,合理的软件架构对于项目的成功也是至关重要的。
开发人员可以使用面向对象设计原则和设计模式来辅助设计和构建高质量的软件系统。
3. 编码与实现在软件工程实践中,编码是将设计转化为计算机程序的过程。
开发人员通常会使用一种编程语言(如Java、Python等)来实现软件系统。
在编码过程中,应遵循代码规范和最佳实践,以确保代码的可读性、可维护性和可扩展性。
4. 测试与调试软件测试是确认软件系统是否符合规格要求的过程。
测试过程应包括单元测试、集成测试和系统测试等多个阶段。
开发人员可以使用测试框架和工具来自动化测试流程,并确保软件的正常功能和性能。
5. 配置管理配置管理是管理和控制软件版本和变更的过程。
开发人员应使用版本控制工具(如Git、SVN等)来跟踪代码的变化,并确保开发团队的协作和代码的稳定性。
6. 项目管理与协作在软件工程实践中,项目管理和协作是确保项目按时交付和满足质量要求的关键环节。
开发团队可以使用项目管理工具(如JIRA、Trello 等)来安排任务、跟踪进度和协同工作。
7. 文档与知识管理在软件开发过程中,文档和知识管理是记录和共享知识的重要手段。
开发人员应编写清晰、准确的文档,以便于项目的后续维护和团队成员的交流。
总结:软件工程实践与方法涵盖了软件项目的各个方面,包括需求分析、设计、编码、测试、配置管理、项目管理、文档管理等。
x846-《计算机类学科基础》考试内容及范围(适用于报考信息工程学院计算机类、软件工程类专业的考生)《计算机类学科基础》适用于计算机类和软件工程类专业考试,考试内容由三门基础课组成,不同专业考试内容有所不同。
《数据结构》考试内容及范围(适用于报考信息工程学院计算机类及软件工程类专业的考生)一、考试总体要求数据结构是计算机专业的核心基础课程之一,在整个专业教学中占有十分重要的地位,它是操作系统、数据库、编译原理等所有软件类课程的重要基础。
本课程既具有较强的理论性,同时又注重实际动手能力的训练和考核。
通过本课程的学习,使学生了解数据对象的特性,掌握数据的逻辑结构与存储结构,培养数据组织和算法设计能力,从而提高学生的程序设计技能,使学生能够编写出正确、清晰和较高质量的程序。
二、考试的内容及比例(一)绪论(<5%)1.数据结构的基本概念2.线性表、树、图三种基本数据结构的特征3.算法复杂度的概念与计算(二)线性表(约10%)1.线性表的概念2.顺序存储的特点及适用场景3.链接存储的特点及适用场景4.线性表基本操作的实现(三)栈和队列(<5%)1.栈和队列的概念及特点2.栈和队列的存储方法3.表达式求值(四)字符串和数组(<5%)1.字符串的基本概念及存储方法2.模式匹配的BF算法和KMP算法3.数组的特点、存储及寻址4.特殊矩阵、稀疏矩阵的概念及存储思想(五)树(约10%)1.树的概念及存储2.二叉树的概念、存储及基本操作3.二叉树的线索化4.树和二叉树的转换5.哈夫曼树及应用(六)图(约10%)1.图的概念、遍历2.图的存储:邻接矩阵和邻接表3.最小生成树算法4.最短路径算法5.AOV网与AOE网(七)查找(约5%)1.线性表的查找技术2.树表的查找技术3.散列表的查找技术(八)排序(约5%)1.各种基本排序算法和思想(插入、交换、选择)2.快速排序和堆排序的思想和算法实现3.希尔排序、二路归并、基数排序的思想三、试卷题型及比例试卷题型分为选择题、填空题、综合应用、程序设计四种类型,其中选择、填空题占15%,综合应用占25%, 程序设计占10%。
软件工程的最佳实践与方法论软件工程是一门复杂而且不断发展的学科,在实践过程中,寻找最佳的实践方法和方法论是至关重要的。
本文将探讨软件工程的最佳实践和方法论,帮助软件工程师更好地开展工作。
一、需求分析在软件开发的初期阶段,需求分析是至关重要的步骤。
它旨在准确地理解用户的需求并将其转化为可执行的任务。
在需求分析过程中,软件工程师需要进行详尽的调研,并与用户进行深入的沟通,确保准确捕捉到用户的需求。
二、设计阶段在设计阶段,软件工程师需要将需求转化为系统架构和详细设计。
最佳实践方法包括面向对象设计(OOD)和结构化设计(SSD)。
面向对象设计通过将系统划分为不同的对象,实现系统的模块化和可重用性。
结构化设计则通过建立模块化的结构,使系统易于理解和维护。
三、编码与实现编码是将设计转化为可执行代码的过程。
在这一阶段,使用合适的编程语言和工具非常重要。
最佳实践包括良好的编码风格、代码复用以及自动化的测试。
通过遵循规范的编码风格,代码可读性增强,便于他人理解和维护。
代码复用可以减少开发时间和资源消耗。
自动化测试可以及早发现和修复潜在问题,提高代码质量。
四、测试与质量保证测试是评估软件质量和稳定性的关键步骤。
最佳实践包括单元测试、集成测试和系统测试。
单元测试用于验证单个模块的功能,集成测试用于验证多个模块之间的交互,系统测试则是对整个软件系统进行全面的测试。
此外,质量保证包括代码审查和持续集成,以确保软件的质量和稳定性。
五、部署与维护部署和维护阶段是将软件交付给用户并确保其正常运行的关键步骤。
在部署过程中,合理规划和管理资源是很重要的。
此外,软件工程师需要定期更新和修复软件中的问题,以确保系统的可靠性和安全性。
六、迭代与改进软件工程是一个不断迭代和改进的过程。
通过不断地收集用户反馈和监测软件的性能,软件工程师可以发现潜在问题并进行改进。
此外,学习新的技术和趋势也是软件工程师不断提升自己的重要途径。
结论软件工程的最佳实践和方法论为软件工程师提供了规范和指导,帮助他们更加高效地进行软件开发和维护。
软件⼯程理论⽅法与实践第⼀章、概述软件是⼈类思维的杰作,并成为⼈类现代⽣活的催化剂。
今天软件遍布整个世界,在⽣物⼯程、现代通信、宇宙探索、商务处理、⼯业控制等⽅⾯发挥出巨⼤的威⼒,并推动了商业、科学和⼯程领域的跨越式发展,对整个社会的经济和⽂化产⽣了深远的影响。
软件⼯程师为了解决开发成本效益和软件质量的问题⽽产⽣的。
软件是计算机程序、规程以及运⾏计算机系统可能需要的相关⽂档和数据。
软件分为通⽤软件和定制软件。
软件的特性分别是软件是复杂的、软件是不可见的、软件是不断变化的、⼤多数软件是定制的⽽不是通过已有构件组装⽽成的。
软件⼯程是将系统性的、规范化的、可定量的⽅法应⽤于软件的开发、运⾏和维护,即将⼯程化应⽤到软件上。
软件⼯程的三要素分别是⽅法、⼯具和过程。
软件开发的主要挑战是遗留系统的问题、⾼可信软件开发的要求和软件开发⽅式的变化。
软件⼯程⼈员的职业道德建设:1、遵纪守法是软件⼯程⼈员应具备的基本素质;2、服务客户、造福社会是软件⼯程⼈员必须牢固树⽴的观念;3、诚实信⽤是软件⼯程⼈员职业道德的核⼼所在。
第⼆章、软件⼯程软件⼯程的⽬标是在规定的时间和预算内开发出⾼质量的软件。
软件⼯程的基本活动是问题提出、软件需求规格说明、软件设计、软件实现、软件确认和软件演化。
软件过程模型有瀑布模型、快速原型模型、增量模型、螺旋模型、形式化⽅法模型、基于组件的开发模型。
第三章、软件项⽬管理随着计算机应⽤的飞速发展,软件开发规模和开发队伍⽇益庞⼤,软件开发不再像过去那样是由个别开发⼈员即可以解决的事情,因此,有必要将软件项⽬管理引⼊软件开发活动中,从⽽有效的保证软件项⽬能够按照预定的成本、进度、质量要求顺利完成。
软件项⽬的特征有软件产品的不可见性、项⽬的⾼度不确定性、软件⼈员的⾼流动性。
软件项⽬管理集中于四个⽅⾯:⼈员、产品、过程、项⽬。
软件项⽬的组织有民主式组织结构、主程序员式组织结构、技术管理式组织结构。
项⽬沟通活动:规划项⽬沟通、建⽴基础设施、实施阶段性评审、每周组织⼩组会议。
毕业设计(论文)文献综述学生姓名学号专业软件工程学院指导教师二零一二年六月前言随着计算机科学技术的发展,计算机科学日渐成熟,其强大的功能已为人们深刻认识,它已进入社会各个领域并发挥着越来越重要的作用。
在当今社会,越来越多的行业都采用计算机及网络技术来管理或处理事务,以便提高工作效率。
一个网上书店分为前台用户模块和和后台用户模块两个功能模块,本文是一篇关于网上书店的各个功能简介和使用以及测试的一篇文章。
根据小型书店的规模,本系统前台具有客户登陆、浏览和购物等功能;后台具有图书的管理、销售的管理、会员的管理等功能并且界面简单、操作简便。
可行性分析(1)技术可行性分析○1JSP简介JSP(Java Server Pages)是一种建立在Servlet规范提供的功能之上的动态网页技术,和ASP类似,它们都是在通常的网页文件中嵌入脚本代码,用于产生动态内容,不过JSP文件中嵌入的是JAVA代码和JSP标记。
JSP文件在用户第一次请求时,会被编译成Servlet,然后由这个Servlet处理用户的请求,所以JSP也可以看成是运行时的Servlet。
Servlet是JAVA对CGI的回应。
它们在服务器上执行和解释浏览器的请求,承担客户端和其他应用程序之间的中间层的角色。
Servlet主要是把动态的内容混合到静态的内容中以产生HTML。
JSP页面在HTML元素中潜入JAVA脚本代码和JSP标记,使得文件长度变短,格式更加清晰。
另一方面,JSP把静态和动态的内容分离开来,实现了内容和表示的分离。
使用JSP,不需要单独配置每一个文件,只要扩展名是.jsp,JSP容器(也是Servlet容器)就会自动识别,将其转换为Servlet为客户端服务。
术语WEB容器和JSP容器是同义的。
○2JSP的运行原理在JSP第一次获得来自于客户端浏览器的请求时,JSP文件将被JSP引擎(JSP engine)转换成一个Servlet,即将”.jsp”文件编译成Java Class文件。
x846-《计算机类学科基础》考试内容及范围(适用于报考信息工程学院计算机类、软件工程类专业的考生)《计算机类学科基础》适用于计算机类和软件工程类专业考试,考试内容由三门基础课组成,不同专业考试内容有所不同。
《数据结构》考试内容及范围(适用于报考信息工程学院计算机类及软件工程类专业的考生)一、考试总体要求数据结构是计算机专业的核心基础课程之一,在整个专业教学中占有十分重要的地位,它是操作系统、数据库、编译原理等所有软件类课程的重要基础。
本课程既具有较强的理论性,同时又注重实际动手能力的训练和考核。
通过本课程的学习,使学生了解数据对象的特性,掌握数据的逻辑结构与存储结构,培养数据组织和算法设计能力,从而提高学生的程序设计技能,使学生能够编写出正确、清晰和较高质量的程序。
二、考试的内容及比例(一)绪论(<5%)1.数据结构的基本概念2.线性表、树、图三种基本数据结构的特征3.算法复杂度的概念与计算(二)线性表(约10%)1.线性表的概念2.顺序存储的特点及适用场景3.链接存储的特点及适用场景4.线性表基本操作的实现(三)栈和队列(<5%)1.栈和队列的概念及特点2.栈和队列的存储方法3.表达式求值(四)字符串和数组(<5%)1.字符串的基本概念及存储方法2.模式匹配的BF算法和KMP算法3.数组的特点、存储及寻址4.特殊矩阵、稀疏矩阵的概念及存储思想(五)树(约10%)1.树的概念及存储2.二叉树的概念、存储及基本操作3.二叉树的线索化4.树和二叉树的转换5.哈夫曼树及应用(六)图(约10%)1.图的概念、遍历2.图的存储:邻接矩阵和邻接表3.最小生成树算法4.最短路径算法5.AOV网与AOE网(七)查找(约5%)1.线性表的查找技术2.树表的查找技术3.散列表的查找技术(八)排序(约5%)1.各种基本排序算法和思想(插入、交换、选择)2.快速排序和堆排序的思想和算法实现3.希尔排序、二路归并、基数排序的思想三、试卷题型及比例试卷题型分为选择题、填空题、综合应用、程序设计四种类型,其中选择、填空题占15%,综合应用占25%, 程序设计占10%。
软件工程的方法论与实践随着科技的发展,人类需要更多的软件来帮助我们完成各种各样的任务。
而软件开发的过程中,遵循软件工程的方法论,不但能够提高软件质量,还能够提高软件开发的效率。
本文将从软件工程的方法论和实践两个方面进行探讨。
1.软件工程的方法论软件工程是一种应用工程学原理、方法和技术来开发和维护软件的学科。
软件工程的方法论主要包括以下几个方面。
1.1 需求分析在软件开发的过程中,首先需要进行需求分析,确定软件的功能和性能要求。
需求分析需要确保软件的需求是明确的、详细的和完整的。
1.2 设计在需求分析之后,需要进行软件的设计。
软件的设计需要针对需求做出合理的设计方案并进行设计文档的编写。
设计阶段要考虑软件的可维护性、可扩展性以及性能等问题。
1.3 编码在软件的设计完成之后,需要进行具体的编码工作。
编码过程中需要遵循软件工程的各种规范和代码风格。
1.4 测试在软件编码完成之后,需要进行测试。
测试是为了验证代码是否符合需求和设计文档。
测试包括单元测试、集成测试和系统测试等多个方面。
1.5 发布和维护软件开发完成之后,需要进行发布和维护。
发布过程中,需要进行用户培训,安装和配置软件等。
维护指的是维护软件代码,修改和优化软件。
2.软件工程的实践在软件工程的实践过程中,需要针对具体情况进行分析和优化。
本文将从软件质量、流程管理和团队协作三个方面进行阐述。
2.1 软件质量软件的质量是评估软件价值的重要标准。
提高软件质量需要对软件进行严谨的设计和规范。
可以采用代码审查、单元测试、代码质量自检等方式提高软件质量。
2.2 流程管理软件开发的流程管理是软件开发中非常重要的一环。
流程管理需要合理地制定开发过程中的各种规范和流程。
在流程管理的过程中,需要注意每个流程的质量和效率。
2.3 团队协作团队协作是软件开发中非常重要的一环。
团队协作需要从沟通、协调和监督等方面进行有效的管理。
增强团队协作的方式可以采用团队建设、员工培训等方式。
计算机基础知识软件工程方法与实践软件工程是指将系统化、建设化、过程化等原则应用于计算机软件的开发、运行和维护的一门学科。
它结合了计算机科学与数学、工程管理学等多个领域的知识,旨在提高软件开发过程的可控性和可靠性,以确保最终产品能够满足用户的需求。
软件工程方法与实践是软件工程中的重要组成部分。
它包括了需求分析、设计、编码、测试、维护等各个环节,并且严格遵循一定的开发流程和规范。
下面将详细介绍软件工程方法与实践的几个主要方面。
一、需求分析需求分析是软件开发过程中非常重要的一步。
它旨在确定用户的需求,并将其转化为可执行的软件需求规格。
在需求分析阶段,软件工程师需要与用户进行充分的沟通与交流,深入了解用户的需求和业务流程。
通过使用各种分析工具和方法,如数据流图、用例图、业务流程图等,软件工程师能够更好地理解用户需求,从而为软件的后续开发提供准确的指导。
二、设计在需求分析的基础上,软件工程师需要进行详细的系统设计。
设计阶段的目标是将需求转化为高质量、可维护、可扩展的软件系统。
在设计阶段,软件工程师会采用各种建模技术,如结构化设计、面向对象设计等,来定义软件的各个组成部分和模块之间的关系。
通过合理的设计,软件工程师能够有效地达到软件的可靠性和可扩展性要求。
三、编码编码是软件开发的核心环节之一。
在设计完成后,软件工程师需要将设计文档转化为具体的计算机程序。
编码的过程通常包括选择合适的编程语言、编写代码、调试和测试等。
在编码的过程中,软件工程师需要严格遵守编码规范和最佳实践,确保代码的可读性和可维护性。
此外,软件工程师还需要注重代码的重用性和模块化,以提高开发效率和代码质量。
四、测试软件测试是保证软件质量的关键环节。
在软件开发完成后,软件工程师需要进行各种测试来验证软件的正确性和稳定性。
常用的测试方法包括单元测试、集成测试、系统测试和验收测试等。
通过不同层次的测试,软件工程师能够尽早发现和修复软件中的缺陷和问题,确保软件能够按照预期的功能和性能运行。
软件⼯程——理论、⽅法与实践之概述软件是计算机程序、规程以及运⾏计算机系统可能我需要的相关⽂档和数据。
然⽽,软件的真正含义却不是⼀个形式的定义所能体现的。
按照软件服务对象的范围不同,⼀般将软件划分为通⽤软件和定制软件两种类型。
其中,由于软件本⾝具有复杂性、不可见性、不断变化、和现有软件⼤部分未实现构件化,使得软件开发依然⾯临着过分依赖⼈⼯、软件难以重⽤、开发⼤量重复和⽣产率低下等问题。
随着软件的四个重要的阶段性发展。
在计算机软件的开发和维护过程中遇到了⼀系列严重问题,即所谓的软件危机。
为提⾼软件的质量与⽣产率,最终实现软件的⼯业化⽣产。
1968年10⽉,NATO科学委员会在德国的加尔密斯开会讨论软件危机的问题,Fritz Bauer⾸次提出了“软件⼯程”的概念。
随后形成更全⾯的定义:软件⼯程是1将系统性的、规范化的、可定量的⽅法应⽤于软件的开发、运⾏和维护,即将⼯程化应⽤到软件上;2对1中所述⽅法的研究。
软件⼯程以关注软件质量为⽬标,由过程、⽅法和⼯具三个要素组成。
⼀个专业成熟发展的重要标志是具备⼀整套的知识体系。
下⾯我们就⼀起来了解1998年由SWECC发起研究和指定软件⼯程知识体系SWEBOK项⽬。
整个项⽬分为草⼈、⽯⼈和铁⼈三个阶段。
SWEBOK将软件⼯程知识分解成若⼲知识领域及其组成部分,并将其组织成⼀个多级多层次的体系结构,以此确定软件学科的内容和边界。
其中软件知识体系被划分为10个知识域,即软件需求、软件设计、软件构造、软件测试、软件维护、软件配置管理、软件⼯程管理、软件⼯程过程、软件⼯程⼯具和⽅法、软件质量。
同时软件⼯程是⼀门交叉性的⼯程学科,它将计算机科学、数学、⼯程和管理学等基本原理应⽤于软件开发的⼯程实践中,并借鉴传统⼯程的原理和⽅法,以系统的、可控的、有效的⽅式产⽣⾼质量的软件。
职业道德是所有从业⼈员应当具备的最基本的道德素养,也是这些⼈员在其职业活动中应当遵循的最基本的⾏为准则。
习题答案许家珆编习题一答案一、选择题1. 软件的主要特性是(A B C)。
A) 无形 B) 高成本C) 包括程序和文档D) 可独立构成计算机系统2. 软件工程三要素是(C D)。
A) 技术、方法和工具B) 方法、工具和过程C) 方法、对象和类D) 过程、模型、方法3. 包含风险分析的软件工程模型是(A)。
A) 螺旋模型 B) 瀑布模型C) 增量模型 D) 喷泉模型4. 软件工程的主要目标是(C)。
A) 软件需求B) 软件设计C) 风险分析D) 软件实现5. 下列属于面向对象开发方法的是(A B C D)。
A) Booch B) UML C) Coad D) OMT6. 软件危机的主要表现是(B D)。
A) 软件成本太高B) 软件产品的质量低劣C) 软件开发人员明显不足D) 软件生产率低下7. 软件开发方法的主要工作模型有(A B C)A) 螺旋模型B) 循环模型C) 瀑布模型D) 专家模型8. 软件工程的目标有(A B C)。
A) 易于维护B) 低的开发成本C) 高性能D) 短的开发期9. 软件工程学的目的和意义是( )。
A) 应用科学的方法和工程化的规范管理来指导软件开发B) 克服软件危机C) 作好软件开发的培训工作D) 以较低的成本开发出高质量的软件二、判断题1. 软件就是程序,编写软件就是编写程序。
(×)2. 瀑布模型的最大优点是将软件开发的各个阶段划分得十分清晰。
(×)3. 结构化方法的工作模型是使用螺旋模型进行开发。
(×)4. 结构化方法和JSP方法都不适合于大型软件的开发。
(√)5. 原型化开发方法包括生成原型和实现原型两个步骤。
(×)6. 面向对象的开发方法包括面向对象的分析、面向对象的设计和面向对象的程序设计。
( √)7. 软件危机的主要表现是软件的需求量迅速增加,软件价格上升。
(×)8. 软件工具的作用是为了延长软件产品的寿命。
《软件工程——理论与实践》(第2 版)习题答案习题答案习题一答案一、选择题1. 软件的主要特性是(A B C)。
A) 无形B) 高成本C) 包括程序和文档D) 可独立构成计算机系统2. 软件工程三要素是(B)。
A) 技术、方法和工具B) 方法、工具和过程C) 方法、对象和类D) 过程、模型、方法3. 包含风险分析的软件工程模型是(A)。
A) 螺旋模型B) 瀑布模型C) 增量模型D) 喷泉模型4. 软件工程的主要目标是(C)。
A) 软件需求B) 软件设计C) 风险分析D) 软件实现5. 下列属于面向对象开发方法的是(A B C D)。
A) Booch B) UML C) Coad D) OMT6. 软件危机的主要表现是(B D)。
A) 软件成本太高B) 软件产品的质量低劣C) 软件开发人员明显不足D) 软件生产率低下7. 软件开发方法的主要工作模型有(A B C)A) 螺旋模型B) 循环模型C) 瀑布模型D) 专家模型8. 软件工程的目标有(A B C)。
A) 易于维护B) 低的开发成本C) 高性能D) 短的开发期9. 软件工程学的目的和意义是(A D)。
A) 应用科学的方法和工程化的规范管理来指导软件开发B) 克服软件危机C) 作好软件开发的培训工作D) 以较低的成本开发出高质量的软件二、判断题1. 软件就是程序,编写软件就是编写程序。
(×)2. 瀑布模型的最大优点是将软件开发的各个阶段划分得十分清晰。
(×)3. 结构化方法的工作模型是使用螺旋模型进行开发。
(×)4. 结构化方法和OO 方法都是一种面向过程的软件开发方法。
(×)5. 原型化开发方法包括生成原型和实现原型两个步骤。
(×)6. 面向对象的开发方法包括面向对象的分析、面向对象的设计和面向对象的程序设计。
( √)7. 软件危机的主要表现是软件的需求量迅速增加,软件价格上升。
(×)8. 软件工具的作用是为了延长软件产品的寿命。
(×)9. 软件工程过程应该以软件设计为中心,关键是编写程序。
(×)10. RCP 法与RSP 法的主要区别是前者采用循环渐进的开发方式,原型将成为最终的产品,而后者原型将被废弃。
(√)《软件工程——理论与实践》(第2 版)习题答案三、简答题1. 软件产品的特性是什么?答:●软件是一种逻辑产品,具有无形性;●软件产品的生产主要是研制;主要是脑力劳动;●软件不存在磨损和老化问题,但存在退化问题;●软件产品的成本非常昂贵,其开发方式目前尚未完全摆脱手工生产方式;●软件具有“复杂性”,其开发和运行常受到计算机系统的限制。
2. 软件发展有几个阶段?各有何特征?答:①程序设计阶段。
硬件特征:价格贵、存储容量小、运行可靠性差。
软件特征:只有程序、程序设计概念,不重视程序设计方法。
②程序系统阶段。
硬件特征:速度、容量及工作可靠性有明显提高,价格降低,销售有爆炸性增长。
软件特征:程序员数量猛增,开发人员素质低。
③软件工程阶段。
硬件特征:向超高速、大容量、微型化及网络化方向发展。
软件特征:开发技术有很大进步,但未获得突破性进展,软件价格不断上升,未完全摆脱软件危机。
3. 什么是软件危机?其产生的原因是什么?答:“软件危机”(Software Crisis)的出现是由于软件的规模越来越大,复杂度不断增加,软件需求量增大。
而软件开发过程是一种高密集度的脑力劳动,软件开发的模式及技术不能适应软件发展的需要。
致使大量质量低劣的软件涌向市场,有的花费大量人力、财力,而在开发过程中就夭折。
软件危机主要表现在两个方面:(1) 软件产品质量低劣,甚至开发过程就夭折。
(2) 软件生产率低,不能满足需要。
4. 什么是软件过程?有哪些主要的软件过程模型?它们各有哪些特点?答:软件过程是指在软件工具的支持下,所进行的一系列软件开发和进化的活动。
软件过程模型是对软件开发实际过程的抽象和简化,是描述软件开发过程中各种活动如何执行的模型,因此又称为软件开发模型。
主要的软件过程模型有:瀑布模型、增量模型、螺旋模型、喷泉模型和基于知识的模型等。
⑴瀑布模型是经典的软件开发模型,将软件开发活动中的各项活动规定为依线性顺序连接的若干阶段,它简单易用,在消除非结构化软件、降低软件的复杂性、促进软件开发工程化方面起了很大的作用。
但在软件开发实践中也逐渐暴露出它的缺点。
它将一个充满回溯的软件开发过程硬性分割为几个阶段,无法解决软件需求不明确或者变动的问题。
⑵增量模型是一种非整体开发的模型。
根据增量的方式和形式的不同,分为基于瀑布模型的渐增模型和基于原型的快速原型模型。
该模型具有较大的灵活性,适合于软件需求不明确、设计方案有一定风险的软件项目。
⑶螺旋模型将瀑布模型和增量模型结合起来,并加入了风险分析。
螺旋模型将开发过程分为几个螺旋周期,每个螺旋周期可分为4 个工作步骤:制定计划、风险分析、实施工程、客户评估。
⑷喷泉模型用于采用对象技术的软件开发项目。
它克服了瀑布模型不支持软件重用和多项开发活动集成的局限性。
喷泉模型使开发过程具有迭代性和无间隙性。
软件开发过程有 4 个阶段,即分析、系统设计、软件设计和实现。
各阶段相互重叠,以分析为基础,资源消耗成塔形,从高层返回低层无资源消耗。
强调增量开发,是对象驱动的过程,反映了对象的开发和重用过程。
⑸基于知识的模型也称为智能模型。
通过领域的专家系统,可使需求说明更加完整、准确和无二义性。
通过软件工程知识和特定应用领域的知识和规则的应用来提供开发的帮助。
《软件工程——理论与实践》(第2 版)习题答案5. 有哪些主要的软件开发方法?答:主要的软件开发方法有:结构化开发方法、原型化开发方法和面向对象的开发方法。
6. 软件生存周期各阶段的主要任务是什么?答:软件生存周期按瀑布模型分为6 个阶段:●可行性研究与计划(确定系统的目标和规模,分析项目的可行性);● 需求分析与规格说明(明确系统的规格和要求);●设计(包括概要设计和详细设计,将系统分解为模块);●编程(用程序语言实现每个模块,简单容易);●测试(发现并改正错误,分为模块测试、集成测试和系统联调三级);●运行维护(扩充功能、纠错等)。
7. 原型化方法的核心是什么?它具有哪些特点?答:原型化方法的核心是,花费少量代价建立一个可运行的系统,使用户及早获得学习的机会。
强调软件开发人员与用户的不断交互,通过原型的演进不断适应用户任务改变的需求。
它是一个循环的模型。
速成原型法按以下步骤循环执行:①快速分析。
②构造原型。
③运行和评价原型。
④修改与改进。
习题二答案一、选择题1. 需求分析的主要目的是(B C)。
A) 系统开发的具体方案B) 进一步确定用户的需求C) 解决系统是“做什么”的问题D) 解决系统是“如何做”的问题2. 需求分析的主要方法有(C D)。
A) 形式化分析方法B) PAD 图描述C) 结构化分析(SA)方法D) OOA 法3. 面向对象的分析方法主要是建立三类模型,即(D)。
A) 系统模型、E-R 模型、应用模型B) 对象模型、动态模型、应用模型C) E- R模型、对象模型、功能模型D) 对象模型、动态模型、功能模型4. SA 法的主要描述手段有(B)。
A) 系统流程图和模块图B) DFD 图、数据词典、加工说明C) 软件结构图、加工说明D) 功能结构图、加工说明5. 画分层DFD 图的基本原则有(A C D)。
A) 数据守恒原则B) 分解的可靠性原则C) 子、父图平衡的原则D) 数据流封闭的原则6. 在E-R 模型中,包含的基本成分是(C)。
A) 数据、对象、实体B) 控制、联系、对象《软件工程——理论与实践》(第2 版)习题答案C) 实体、联系、属性D) 实体、属性、联系7. 画DFD 图的主要目的是(A D)。
A) 作为需求分析阶段用户与开发者之间交流信息的工具B) 对系统的数据结构进行描述C) 对目标系统的层次结构进行描述D) 作为分析和设计的工具8. 数据字典是数据流图中所有元素的定义的集合,一般由(C) 四类条目组成。
A) 数据说明条目、控制流条目、加工条目、数据存储条目B) 数据流条目、数据项条目、文件条目、加工条目C) 数据源条目、数据流条目、数据处理条目、数据文件条目D) 数据流条目、数据文件条目、数据池条目、加工条目9. 在需求分析阶段主要采用图形工具来描述的原因是(B C)。
A) 图形的信息量大,便于描述规模大的软件系统B) 图形工具能够极好地概括描述一个系统的信息,比文字叙述能够更好地表达重要的细节C) 图形能够更加直观地描述目标系统,便于用户理解和交流,有利于开发者与用户之间达成一致的需求D) 图形比文字描述简单、形象二、判断题1. 在进行了可行性分析后,需求分析就只需要解决目标系统的设计方案。
(×)2. SA 法是面向数据流,建立在数据封闭原则上的需求分析方法。
(√)3. 需求管理主要是对需求变化的管理,即如何有效控制和适应需求的变化。
(√)4. 在面向对象的需求分析方法中,建立动态模型是最主要的任务。
(×)5. 加工小说明是对系统流程图中的加工进行说明。
(×)6. 判定表的优点是容易转换为计算机实现,缺点是不能够描述组合条件。
(×)7. 需求分析的主要方法有SD 法、OOA 法及HIPO 法等。
(×)8. 分层的DFD 图可以用于可行性分析阶段,描述系统的物理结构。
(×)9. 信息建模方法是从数据的角度来建立信息模型的,最常用的描述信息模型的方法是E-R 图。
(√)10. 用于需求分析的软件工具,应该能够保证需求的正确性,即验证需求的一致性、完整性、现实性和有效性。
(√)三、简答题1. 需求工程包括哪些基本活动?各项基本活动的主要任务是什么?答:需求工程过程包括如下主要活动:⑴获取需求。
深入实际,在充分理解用户需求的基础上,获取足够多的问题领域的知识,积极与用户交流,捕捉、分析和修订用户对目标系统的需求,并提炼出符合解决领域问题的用户需求。
需求获取的方法一般有问卷法、面谈法、数据采集法、用例法、情景实例法以及基于目标的方法等。
⑵需求分析与建模。
对已获取的需求进行分析和提炼,进行抽象描述,建立目标系统的概念模型,需求概念模型的要求包括实现的独立性:不模拟数据的表示和内部组织等;需求模拟技术又分为企业模拟、功能需求模拟和非功能需求模拟等。
进一步对所建立的模型(原型)进行分析。
需求模型的表现形式有自然语言、半形式化(如图、表、结构化英语等)和形式化表示等三种。
⑶需求规格说明。
对需求模型进行精确的、形式化的描述,为计算机系统的实现提供基础。
⑷确认需求。
以需求规格说明为基础输入,通过符号执行、模拟或快速原型等方法,分析和验证需求规格说明的正确性和可行性,确保需求说明准确、完整地表达系统的主要特性,就是对需求规格说明与用户达成一致。