系统架构设计之三:系统开发基础知识

一、本章要点

1)开发管理。

2)需要管理。

3)软件开发方法。

4)软件开发环境与工具。

5)设计方法。

6)基于构件的开发。

7)应用系统构建。

8)测试与评审。

二、软件开发生命周期

系统架构设计之三:系统开发基础知识

7)原型开发技术

  (1)可执行规格说明,用于需求规格说明的一种自动化技术。描述系统要“做什么”,但不描述系统要“怎样做”。包括形式化规格说明、有限状态模型和可执行的数据流图。

  (2)基于场景的设计。一个场景可模拟在系统运行期间用户经历的事件。

  (3)自动程序设计。可执行规格说明的替身,主要是指在程序自动生成环境的支持下,利用计算机实现软件的开发。

  (4)专用语言。应用领域的模型化语言。

  (5)软件复用技术。合成技术:用构件来构造软件系统。用构件合成较大的构件有三种方式:连接;消息传递和继承;管道机制。生成技术:利用可复用的模式,通过生成程序产生一个新的程序或程序段,产生的程序可看做是模式的示例。可复用的模式有两种不同的形式:代码模式和规则模式。前者的例子是应用生成器,后者的例子是变换系统。

  (6)简化假设。

  (7)面向对象技术。

8)原型法适合于用户需求不明确的场合。

5、逆向工程

1)再工程是对现有软件系统的重新开发过程,包括逆向工程(Reverse Engineering,反向工程)、新需求的考虑(软件重构)和正向工程三个步骤。

2)软件重构是对源代码、数据进行修改,使其易于修改和维护,以适应将来的变更。通常并不修改软件体系结构,而是关注模块的细节。

3)逆向工程是分析程序,力图在比源代码更高的抽象层次上建立程序表示的过程。

四、软件开发模型

1、瀑布模型

1)也成为生命周期法,是结构化方法。

2)把软件开发过程分为:软件计划、需求分析、软件设计、程序编码、软件测试和运行维护6各阶段。

系统架构设计之三:系统开发基础知识

3、快速应用开发

快速应用开发(Rapid Application Development,RAD)模型是一个增量型的软件开发过程模型,强调极短的开发周期。是瀑布模型的一个高速变种,通过大量使用可复用构件,采用基于构件的建造方法赢得快速开发。

1)业务建模。辅之以数据流图。

2)数据建模。辅之以E-R图。

3)过程建模。使数据对象在信息流中完成各业务功能。

4)应用程序生成。利用第四代语言(4GL)写出处理程序,重用已有构件或创建新的可用构件,自动生成并构造出整个应用系统。

5)测试与交付。

4、敏捷方法

1)流派:极限编程(Extreme Programming,XP)、自适应软件开发、水晶方法和特性驱动开发。

2)开发者的角度,基本原则有:

  (1)短平快会议(Stand Up)

  (2)小版本发布(Frequent Release)

  (3)较少的文档(Minimal Documentation)

  (4)合作为重(Collaborative Focus)

  (5)客户直接参与(Customer Engagement)

  (6)自动化测试(Automated Testing)

  (7)适应性计划调整(Adaptive Planning)

  (8)结对编程(Pair Programming)

3)管理者角度,基本原则有:

  (1)测试驱动开发(Test-Driven Development)

  (2)持续集成(Continuous Integration)

  (3)重构(Refactoring)

4)与其他方法最大不同如下:

  (1)在更短的周期内,更早地提供具体、持续的反馈信息。

  (2)迭代地进行计划编制,首先在最开始迅速生成一个总体计划,然后在整个项目开发过程总不断地发展它。

  (3)依赖于自动测试程序来监控开发进度,并及早捕获缺陷。

  (4)依赖于口头交流、测试和源程序进行沟通。

  (5)倡导持续的演化式的设计。

  (6)依赖于开发团队内部的紧密协作。

  (7)尽可能达到程序员短期利益和项目长期利益的平衡。

5)主要适用于小规模软件的开发和小型团队的开发。

5、统一过程

1)统一过程(Unified Process,UP)是一个通用过程框架,可用于种类广泛的软件系统、不同应用领域、不同的组织类型、不同的性能水平和不同的项目规模。

2)基于构件,使用UML进行系统建模。用例驱动、以基本架构为中心、迭代和增量。

3)时间上分解为4个顺序的阶段,初始阶段、细化阶段、构件阶段和交付阶段。

4)初始阶段的任务是为系统建立业务模型并确定项目的边界。

5)细化阶段的任务是分析问题领域,建立健全的架构基础,淘汰项目中最高风险的元素。

6)在构件阶段,要开发所有剩余的构件和应用程序功能,把这些构件集成为产品,并进行详细测试。

7)交付阶段的重点是确保软件对最终用户是可用的。

8)UP的工作流程分为两部分,即核心工作流程与核心支持工作流程。核心工作流程(在项目中的流程)包括业务需求建模、分析设计、实施、测试和部署;核心支持工作流程(在组织中的流程)包括环境、项目管理、配置与变更管理。

9)Rational公司提出此方法,一般称为RUP(Rational Unified Process),IBM收购Rational,于是又称IBM RUP。

五、系统规划与问题定义

总体规划阶段主要目标是制定软件的长期发展方案,决定软件在整个生命周期的发展方向、规模和发展进程。

总体规划阶段主要任务如下:

  (1)制定软件的发展战略。

  (2)确定组织的主要信息需求,形成总体结构方案,安排项目开发计划。

  (3)制定系统建设的资源分配计划。

进行软件系统的总体规划一般包括如下几个阶段:

  (1)对当前系统进行初步的调查。

  (2)分析和确定系统目标。

  (3)分析子系统的组成以及基本功能。

  (4)拟定系统的实施方案。

  (5)进行系统的可行性分析。

  (6)编写可行性报告。

主要方法有:关键成功因素法(Critical Success Factors,CSF)、战略目标集转化法(Strategy Set Transformation,SST)和企业系统规划方法。

1、可行性分析

可行性分析研究的任务就是研究系统开发的必要性和可能性。

1)可行性分析的内容:技术可行性、经济可行性和操作可行性。

2)可行性分析工作的步骤:

  (1)核实问题定义与目标。

  (2)研究分析现有系统。

  (3)为新系统建模。有几种技术:系统上下文关系范围图(数据流图的0层图);实体关系图;用例模型;域模型;IPO(Input/Process/Output)表。

  (4)用户复核。

  (5)提出并评价解决方案。

  (6)确定最终推荐的解决方案。

  (7)草拟开发计划。

  (8)提交可行性分析报告。

2、成本效益分析

成本效益分析首先是估算新系统的开发成本,然后与可能取得的效益(有形的和无形的)进行比较权衡。

1)货币的时间价值。

  (1)单利计算公式:

系统架构设计之三:系统开发基础知识

  (3)P为本金,n为年期,i为利率,F为P元钱在n年后的价值

2)折现率与折现系数

折现又称贴现,就是把将来某一时点的资金额换算成现在时点的等值金额。折现时所使用的利率称为折现率(贴现率)。

系统架构设计之三:系统开发基础知识

4)净现值率(Net Present Value Ratio,NPVR)

是项目净现值与项目投资总额现值P之比,反映了资金的利用效率。

系统架构设计之三:系统开发基础知识

6)内含报酬率(Internal Rate of Return,IRR)

随着实际折现率的升高,方案的可行性在下降,这就存在一个临界点,当实际折现率高于此值时,方案就不可行。这个临界点通常称为内含报酬率(内部收益率),即一种能够是投资方案的净现值为0的折现率。

系统架构设计之三:系统开发基础知识

系统架构设计之三:系统开发基础知识

  (2)动态投资回收期,考虑资金时间价值因素。

系统架构设计之三:系统开发基础知识

8)投资回收率

投资回收率反映企业投资的获利能力:

系统架构设计之三:系统开发基础知识

系统架构设计之三:系统开发基础知识

3、工作流设计

1)工作流(Work Flow)就是自动运作的业务过程部分或整体,表现为参与者对文件、信息或任务按照规程采取行动,并令其在参与者之间传递。

2)工作流就是一系列相互衔接、自动进行的业务活动或任务。

3)工作流管理(Workflow Management,WFM)是人与计算机共同工作的自动化协调、控制和通信,在计算机化的业务过程上,通过在网络上运行软件,使所有命令的执行都处于受控状态。

4)工作流管理系统(Workflow Management System,WFMS)通过软件定义、创建工作流并管理其执行。

5)企业流程自动化的应用平台工作流管理系统最直接的用途就是和企业业务流程重组(Business Process Reengineering,BPR)技术相结合管理企业的各种流程,实现企业流程的自动化。

6)工作流机是一个为工作流实例的执行提供运行环境的软件服务或“引擎”,其一个重要功能就是控制实例和活动实例的状态转换。

7)以工作流实现ERP和OA集成

七、软件测试

Bill Hetzel指出:“测试是以评价一个程序或系统属性为目标的任何一种活动。测试是对软件质量的度量”

Grenford J.Myers指出:

  (1)软件测试是为了发现错误而执行程序的过程

  (2)测试是为了证明程序有错,而不是证明程序无错误

  (3)一个好的测试用例在于它能发现至今未发现的错误

  (4)一个成功的测试是发现了至今未发现的错误的测试

1、测试的类型

1)动态测试

  (1)黑盒法:等价类划分;边界值划分;错误推测;因果图。

  (2)白盒法:逻辑覆盖;循环覆盖;基本路径法。

  (3)灰盒法:介于白盒测试与黑盒测试之间。

2)静态测试

采用人工检测和计算机辅助静态分析的手段对程序进行检测。

  (1)桌前检查(2)代码审查(3)代码走查

2、测试的阶段

1)单元测试:针对软件设计的最小单元(程序模块)进行正确性检验的测试工作。通常在软件详细设计阶段完成计划,一般使用白盒测试方法。

2)集成测试:将已通过单元测试的模块集成在一起,主要测试模块之间的协作性。通常在软件概要设计阶段完成计划,一般使用黑盒测试方法。

3)确认测试:主要包括验证软件的功能、性能及其他特性是否与用户要求(需求)一致。通常在需求分析阶段完成计划,包括以下4种类型:

  (1)内部确认测试(2)Alpha测试(3)Beta测试(4)验收测试

4)系统测试:在实际运行环境下,对计算机系统进行一系列集成与确认测试。通常在系统分析阶段(需求分析阶段)完成计划。

3、性能测试

性能测试是通过自动化的测试工具模拟多种正常、峰值及异常负载条件对系统的各项性能指标进行测试。

1)性能测试的目的

  (1)评估系统的能力(2)识别系统中的弱点(3)系统调优(4)检测软件中的问题(5)验证稳定性和可靠性

2)性能测试的类型

  (1)负载测试(2)强度测试(3)容量测试

3)负载压力测试

系统在应用环境下主要承受并发访问用户数、无故障稳定运行时间和大数据量操作等负载压力。并发用户数是负载压力的重要体现。

4、测试自动化

为提高软件测试效率,运用既有的测试工具或开发相应的测试程序进行测试,此过程称为自动化测试。

1)好处:

  (1)提高测试执行速度(2)提高运行效率(3)保证测试结果正确性(4)连续运行测试脚本(5)模拟现实环境下受约束的情况

2)无法做到:

  (1)所有测试活动都可以自动完成(2)减少人力成本(3)可以免费获取(4)降低测试工作量

3)三个类别:分析自动化(静态分析、动态分析)、功能测试类和系统测试类

5、软件调试

三种方法:蛮力法、回溯法和原因排除法

6、测试设计

几个层次:用户层、应用层、功能层、子系统层和协议层

7、测试管理

1)测试管理组包括评审小组、测试小组和支持小组

2)软件测试管理分为测试团队管理、测试计划管理、错误(缺陷)跟踪管理和测试件管理

八、软件维护

1)软件可维护性是指纠正软件系统出现的错误和缺陷,以及为满足新的要求进行修改、扩充和压缩的容易程度

2)衡量因素:可理解性、可测试性和可修改性

3)维护类型:改正性维护、适应性维护和改善性维护。还有预防性维护。

4)影响维护工作量的因素主要有系统大小、程序设计语言、系统年龄、数据库技术的应用及先进的软件开发技术。

九、软件开发环境与工具

软件支持环境可分为:软件开发支持环境和软件生存期支持环境。

ICASE(Intergrated Computer-Aided Software Engineering,集成化计算机辅助软件工程)

来源:树哥

声明:本站部分文章及图片转载于互联网,内容版权归原作者所有,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2013年7月2日
下一篇 2013年7月2日

相关推荐