1、1.1什么是软件工程?构成软件工程的主要要素是什么?影响软件工程技术进步的动力是什么?1 将系统的、规范的、可量化的方法应用于软件开发、运行、维护的过程2.包括 1 中的方法的研究人、过程、项目、方法和工具、软件制品硬件能力、软件技术、社会需求和科学技术水平1.2阐述软件的正确性、可用性、可靠性、有效性、安全性、可维护性、可移植性和可复用性的概念,并指明这些概念的重要性。正确性, 软件满足需求规约和用户目标的程度可用性, 软件操作的学习和为程序输入数据的难易程度学习和使用软件的难易程度,包括操作软件、为软件输入数据、解释软件输出结果等。可靠性 软件完成预期功能,成功运行的概率有效性软件系统利用
2、计算机的时间资源和空间资源完成系统功能的能力可维护性软件制品交付给用户后,可以对它进行修改,以便改正潜伏的缺陷、改进性能和其他属性,是软件制品适应环境的变化可移植性将软件安装在不同的计算机系统或平台的难易程度安全性控制或保护程序和数据不受破坏的机制,以防止程序或数据受到意外或蓄意的存取、修改、使用、泄密、毁坏等可复用性概念或功能相对独立的一个或一组相关模块定义为一个软构件,软构件可以在多种场合应用的程度成为构件的可复用性1.10阐述通用软件开发过程的五项活动,分析通用软件开发过程的优点。通用软件过程模型用 “沟通、策划、建模、构建、部署” 5 项活动构建软件过程模型。在软件项目管理等普适性活动
3、的支持下进行软件开发,增强了软件的开发能力、突出了软件工程特色,具有较大的灵活性和适应性。2.4 研究图 2.1(课本 60,61 页)所示的面对对象的迭代式软件开发过程,描述在立项,初始,细化,构造和移交阶段分别可能使用哪些 UML 图形机制,为什么? 初始阶段用例图 描述软件需求活动图 表示业务处理过程交互图 表示用例内部实现过程细化阶段包图、构件图和部署图 表示软件体系结构构造阶段类图 交互图 活动图 状态图 构件图表示软件详细设计模型移交阶段部署图3.1以下陈述哪些是有效的用户需求?请说明理由。答案:目标软件应该用 java 语言实现。软件系统必须在 5 秒内响应并处理外部事件目标软件
4、应该由一些特定的模块构成。当目标软件与用户交互时,必须使用某些特定的菜单和对话框。其中,项是用户的有效需求。是用户对系统性能的需求;是用户对系统功能的需求;是用户对系统使用界面的需求。而是程序设计对计算机语言的需求,应该有系统设计人员提出,所以不是用户的有效需求。3.2下述语句哪些属于不精确的用户需求?对不精确的需求描述,给出相应的需求分析对策。答案:系统应表现出良好的响应速度。系统必须用菜单驱动。在数据录入画面,应该有 25 个按钮。系统运行时占用的内存不得超过 128KB。电梯应平稳运行即使系统崩溃,也不能损坏用户数据。其中,是不精确的用户需求。应该指出:哪个功能要有速度响应要求,具体的数
5、据是什么?平稳运行的具体定义是什么?例如上升时具体要求抖动的参数不大于多少等等;没有说明应该采取什么具体措施保护数据。P74 3.1构成需求工作的工作流用例驱动的需求获取过程1.定义软件问题2.创建框架用例3.精化用例4.评审用例模型需求分析的任务需求分析的任务是在需求获取阶段的输出制品的基础上,获得对软件需求更深入、更完整的理解,并且将软件需求表示为面向软件设计人员、易于修改和维护的分析模型用例驱动的需求分析的主要活动P1346.9 软件设计应遵循哪些原则抽象与逐步求精强内聚及松耦合信息隐藏及关注点分离P172 6.4构成软件设计过程的工作流P190 193用户界面设计过程 P2271.用户
6、分析,任务分析及建模2.概念设计3.界面流设计4.界面精化详细设计过程的主要活动 P2391.用例设计2.子系统设计3.构件设计4.类设计5.数据模型设计6.设计整合与验证9.3 在面向对象的设计模型中,如何检查类图与顺序图之间的一致性?12.3 简述软件测试的任务和原则任务检查软件是否满足需求规约,并在软件制品交付前尽可能发现软件中潜伏的缺陷,减轻交付后软件改正性维护的开销。原则1.测试是一个持续进行的过程,而不是一个阶段。2.测试一定有计划,受控制,并提供足够的时间和资源3.测试应当分优先级4.测试应当有重点5.测试不是为了证明程序的正确性,而是为了证明不能工作6.测试是不可能穷尽的,当测
7、试充分性满足时就可以停止测试7.测试是开发的朋友,不是开发的敌人8.测试人员应公正地测试,如实地记录和报告缺陷9.测试自动化能解决一部分问题,但不是全部。10.测试不能仅仅包括功能性验证,还应包括性能、可靠性、可维护性和安全性等方面的验证12.5 何谓测试用例?一般包括哪些内容?为测试设计的输入数据称为测试用例。生成输入数据、程序执行条件、测试步骤和预期的输出12.22“确认测试”应由谁完成,软件开发人员还是软件用户?说明理由。答案:“确认测试”应由软件用户来完成,“确认测试”的目的是测试系统是否达到用户对功能的需求,性能的需求以及使用的需求,所以,“确认测试”应该主要由用户来完成。12.24 测试与 测试有何差别?答案: 测试是系统开发者进行的测试,用户不参与,主要是进行系统各项技术性能的测试; 测试是用户的测试,通常开发人员不在场,主要是对系统使用功能的测试。软件维护的分类纠错性维护、完善性维护、适应性维护、预防性维护13.7 为何要进行软件逆向工程在软件开发过程中使用逆向工程,因有全部开发文档和开发环境的支持,速度快、效率高,软件制品的质量能得到很好的保障。13.8 软件重构可能包括哪几个成次的工作文档重构、重组、逆向工程、再工程。