第二章 系统开发基础
知识点:
- 软件工程知识:软件需求分析与定义、软件设计、测试与维护、软件复用、软件质量保证及质量评价、软件配置管理、软件开发环境、软件过程管理。
- 软件构件技术知识:构件及其在信息系统项目中的重要性、常用构件标准(COM/DCOM/COM+、CORBA和EJB)。
- 软件体系结构:软件体系结构定义、典型体系结构、软件体系结构设计方法、软件体系结构分析与评估、软件中间件。
- 面向对象系统分析与设计:面向对象的基本概念、统一建模语言UML、可视化建模、面向对象系统分析、面向对象系统设计。
- 软件工具:建模工具、软件开发工具、软件测试工具、项目管理工具。
2.1 软件开发方法
- 从性质上看,软件方法学可分为形式化方法与非形式化方法。形式化方法是建立在严格数学基础上的软件开发方法。在软件开发的各个阶段中,凡是采用严格的数学语言,具有精确的数学语义的方法,称为形式化方法。采用形式化方法可避免系统中的歧义性、不完全性和不一致性。而非形式化方法则不把严格作为其主要着眼点。
- 从适用范围上看,软件方法学可分为整体性方法和局部性方法。整体性方法适用于软件开发的全过程,例如,自顶向下方法、自底向上方法、软件自动化方法等;局部性方法适用于软件开发过程的某个具体阶段,例如,各种需求分析方法、设计方法等。
2.1.1 净室方法
净室软件工程师软件开发的的一种形式化方法,它可以生成高质量的软件。
使用盒结构规约进行分析和设计建模,并且强调将正确性验证(而不是测试)作为发现和消除错误的主要机制,使用统计的测试来获取认证被交付的软件的可靠性所必需的出错率信息。
室方法从使用盒结构表示的分析和设计模型入手,一个“盒”在某特定的抽象层次上封装系统(或系统的某些方面)。通过逐步求精的过程,盒被精化为层次,其中每个盒具有引用透明性:每个盒规约的信息内容对定义其精华是足够的,不需要信赖于任何其他盒的实现。这使得分析人员能够层次地划分一个系统,从在顶层的本质表示转向在底层的实现特定的细节。净室方法主要使用三种盒类型:
(1)黑盒。这种盒刻划系统或系统的某部分的行为。通过运用由激发得到反应的一组变迁规则,系统(或部分)对特定的激发(事件)作出反应。
(2)状态盒。这种盒以类似于对象的方式封装状态数据和服务(操作)。在这个规约视图中,表示出状态盒的输入(激发)和输出(反应)。状态盒也表示黑盒“激活历史”,即,封装在状态盒中的,必须在蕴含的变迁间保留的数据。
(3)清晰盒。在清晰盒中定义状态盒所蕴含的变迁功能,简单地说,清晰盒包含了对状态盒的过程设计。
一旦完成了盒结构设计,则运用正确性验证。软件构件的过程设计被划分为一系列子函数,为了证明每个子函数的正确性,要为每个函数定义出口条件并实施一组子证明。如果每个出口条件均被满足,则设计一定是正确的。
一旦完成了正确性验证,便开始统计的使用测试。和传统测试不同,净室软件工程并不强调单元测试或集成测试,而是通过定义一组使用场景、确定对每个场景的使用概率及定义符合概率的随机测试来进行软件测试(这种活动称为正确性验证)。将产生的错误记录和取样、构件和认证模型相结合使得可以用数学方法计算软件构件的可靠性(这种活动称为基于统计的测试)。
2.1.2 结构化方法
- 结构化方法属于自顶向下的开发方法,强调开发方法的结构合理性及所开发软件的结构合理性。
- 结构是指系统内各个组成要素之间的相互联系、相互作用的框架。
- 结构化开发方法提出来一组提高软件结构合理性的准则(分解与抽象、模块独立性、信息隐蔽等)
- 针对软件生存周期各个不同的阶段,包括了**结构化分析(Structured Analysis, SA)、结构化设计(Structured Design, SD)和结构化程序设计(Structured Programing, SP)**等方法。
1.结构化方法的基本原则
- 面向用户的观点。在开发过程中