一.信息系统建设的基本概念
1.1 信息系统建设的总体目标:将计算机软件、硬件、网络通信、信息安全等技术和产品集成为能够满足用户特定需求的信息系统。
1.2信息系统的生命周期阶段目标及其主要工作目标:
(1)立项阶段:根据用户业务发展和经营管理的需要,提出建设信息系统的初步构想;然后对企业信息系统的需求进行深入调研和分析形成《需求规格说明书》并确定立项。
(2)开发阶段:以立项阶段所做的需求分析为基础,进行总体规划。之后,通过系统分析、系统设计、系统实施、系统验收等工作实现并交付系统。
(3) 运维阶段:信息系统通过验收,正式移交给用户以后,进入运维阶段。要保障系统正常运行,系统维护是一项必要的工作。系统的运行维护可分为更正性维护、适应性维护、完善性维护、预防性维护等类型。
(4)消亡阶段:信息系统不可避免地会遇到系统更新改造、功能扩展,甚至废弃重建等情况。对此,在信息系统建设的初期就应该注意系统消亡条件和时机,以及由此而花费的成本。
1.3信息系统常用的开发方法:
(1)结构化方法:应用最为广泛。前一阶段是后一阶段的工作依据按顺序完成。每个阶段有文档编制要求,并对其进行有效控制。特点是注重开发过程的整体性和全局性。但其缺点是开发周期长;文档、设计说明繁琐,工作效率低;要求在开发之初全面认识系统的需求,充分预料各种可能变化,这并不十分现实。
(2)原型法:其认为在无法全面准确地提出用户需求的情况下基于对用户需求的初步理解,先快速开发一个原型系统,然后通过反复修改来实现用户的最终系统需求。特点对用户的需求是动态响应、逐步纳入的;系统分析、设计与实现都是随着对原型的不断修改而同时完成的,相互之间并无明显界限,也没有明确分工。原型又可以分为抛弃型原型和进化型原型两种。
(3)面向对象方法:用对象表示客观事物,对象是一个严格模块化的实体,在系统开发中可被共享和重复引用,以达到复用的目的。其关键是能否建立一个全面、合理、统一的模型面向对象方法主要涉及分析、设计和实现三个阶段。其特点是在整个开发过程中使用的是同一套工具。整个开发过程实际上都是对面向对象三种模型的建立、补充和验证。因此,其分析、设计和实现三个阶段的界限并非十分明确。
二.信息系统设计
方案设计:1)系统总体设计:总体架构(方案)设计、数据存储总体设计、计算机和网络系统方案设计等。2)系统详细设计:代码设计、数据库设计、人/机界面设计、处理过程设计等。
系统架构:将系统整体分解为更小的子系统和组件,形成不同的逻辑层/服务。不仅要“纵向分解”,也要对同意逻辑层分块“横向分解”。系统选型主要取决于系统架构。
三.软件工程
3.1 软件需求分析与定义:
软件需求是针对待解决问题的特性的描述。所定义的需求必须可以被验证。在资源有限时,可以通过优先级对需求进行权衡。通过需求分析,可以检测和解决需求之间的冲突;发现系统的边界;并详细描述出系统需求。
3.2 软件设计、测试与维护:
1)软件设计:根据需求,产生一个内部结构的描述,将其作为软件构造的基础。可划分为软件架构设计和软件详细设计两个阶段。
2)测试:评价和改进产品质量,识别产品缺陷和问题进行的活动。测试应包含在整个开发和维护过程中。概念上分为单元测试、集成测试和系统测试三个阶段。
3)软件维护:更正性维护(更正交付后发现的错误)、适应性维护(软件产品在变化后/中的环境中继续使用)、完善性维护(改进交付后产品的性能和可维护性)、预防性维护(软件产品的潜在错误成为实际错误前,检测并更正)。
3.3 软件质量保证及质量评价:
软件质量包括“内部质量”“外部质量”和“使用质量”三部分。软件需求定义了软件质量特性。软件质量管理过程包括质量保证过程、验证过程、确认过程、评审过程、审计过程等
(1)软件质量保证:通过制订计划、实施和完成等活动保证项目生命周期中的软件产品和过程符合其规定的要求。
(2)验证:验证过程试图确保活动的输出产品已经被正确构造,即活动的输出产品满足活动的规范说明;
(3)确认:确认过程则试图确保构造了正确的产品,即产品满足其特定的目的。
(4)评审与:管理评审的目的是监控进展,决定计划和进度的状态,或评价用于达到目标所用管理方法的有效性。技术评审的目的是评价软件产品,以确定其对使用意图的适合性。
(5)审计:软件审计的目的是提供软件产品和过程对于可应用的规则、标准、指南、计划和流程的遵从性的独立评价。审计是正式组织的活动,识别违例情况,并要生成审计报告采取更正性行动。
3.4 软件配置管理:
通过标识产品的组成元素、管理控制变更、验证记录和报告配置信息,来控制产品的进化和完整性。配置管理与质量保证活动密切相关,可帮助达成软件质量保证目标。软件配置管理活动包括软件配置管理计划、软件配置标识(创建基线)、软件配置控制、软件配置状态记录、软件配置审计、软件发布管理与交付等活动。软件配置标识活动要为识别的配置项及其版本建立极限
3.5 软件过程管理:
1)项目启动与范围定义:启动项目确定需求。
2)项目规划:制定计划,关键点是确定软件生命周期过程并完成工作。
3)项目实施:根据计划,完成工作。
4)项目监控与评审:确认工作满足要求,发现并解决问题。
5)项目收尾与关闭:项目验收,验收后归档,事后分析和过程改进等活动。
3.6 软件开发工具:用于辅助软件生命周期过程的基于计算机的工具。工具的种类包括支持单个任务的工具及涵盖整个生命周期的工具。
软件需求工具(需求建模工具、需求追踪工具)
软件设计工具(软件设计创建、检查工具)
软件构造工具(程序编辑器、编译器、代码生成器、解释器、调试器)
软件测试工具(测试生成器、测试执行框架、评价工具、管理工具、性能分析工具)
软件维护工具(理解工具、再造工具、追踪工具、版本管理工具、发布工具。)
软件工程管理工具(项日计划与追踪工具、风险管理工具、度量工具)
软件工程过程工具(建模工具、管理工具、软件开发环境)
软件质量工具(检查工具、分析工具)
3.7 软件复用:
利用已有软件的各种有关知识构造新的软件,以缩减软件开发和维护的费用。复用是提高软件生产力和质量的一种重要技术。早期的软件复用主要是代码级复用,后来扩大到开发经验、架构、需求、文档等一切有关方面。面向对象方法的概念和原则和软件复用要求十分吻合,所以该方法特别有利于软件复用。
四、面向对象的系统分析与设计
4.1.面向对象的基本概念:
包括对象、类、抽象、封装、继承、多态、接口、消息、组件、复用和模式等。
4.2.统一建模语言UML与可视化建模:
对软件进行可视化描述、构造和建立软件系统的文档。UML适用于各种软件开发方法、软件生命周期的各个阶段、各种领域各种开发工具。UML是一种可视化的建模语言,不是编程语言。比较适用于迭代式的开发过程
4.3.面向对象的系统分析:
面向对象系统分析运用面向对象方法分析问题域,建立基于对象、消息的业务模型,形成对客观世界和业务本身的正确认识。面向对象系统分析的模型有:用例模型、类-对象模型、对象-关系模型、对象-行为模型。
4.4.面向对象的系统设计:
基于系统分析得出的问题域模型。用面向对象方法设计出软件基础架构和完整的类结构,以实现业务功能。 面向对象系统设计包括:用例设计、类设计、子系统设计等。
五、软件架构
5.1.软件架构的定义:
将软件系统划分成多个模块,明确各模块之间的相互作用,组合起来实现系统的全部特性,就是系统架构。通常将一些经过实践证明的、可重复使用的软件架构设计策略总结成架构模式。软件架构中借鉴了许多计算机架构和网络架构等其他领域的思想和方法
5.2.软件架构的模式:
软件架构设计的一个核心问题是能否使用架构模式,即能否达到架构级的软件重用。常见的典型架构模式如下:
①管道/过滤器模式:每个组件(过滤器)都有一组输入/出。组件读取输入数据流,内部处理后,产生输出数据流。该过程完成输入流的变换及增量计算。体现高内聚、低耦合的黑盒特性,支持功能模块重用。但易导致系统性能下降。增加过滤器复杂性。典型应用:批处理系统
②面向对象模式:在面向对象的基础上,将模块数据的表示方法及其相应操作封装在更高抽象层次的数据类型或对象中。典型应用:基于组件的软件开发
③事件驱动模式:组件不直接调用操作,而是触发一/多个事件。系统中其他组件可注册相关的事件,触发事件时,系统会自动调用注册了该事件的组件,即触发事件会导致另一组件中操作的调用。典型应用:图形界面应用。
④分层模式:采用层次化的组织方式,每一层都为上一层提供服务,并使用下层提供的功能。该模式允许将一个复杂问题逐步分层实现。其中的每一层最多只影响相邻两层,只要给相邻层提供相同的接口,就允许每层用不同的方法实现,可以充分支持软件复用。典型应用:分层通信协议,如 ISO/OSI的七层网络模型。
⑤客户/服务器模式:基于资源不对等,为实现共享提出的模式。将应用一分为二,服务器(后台)负责数据操作和事务处理,客户端(前台)完成与用户的交互任务。C/S 模式中客户与服务器分离,允许网络分布操作,适用于分布式系统。为了解决C/S 模式中客户端的问题,发展形成了浏览器/服务器(Browser/Server,B/S)模式;为了解决 C/S 模式中服务器端的问题,发展形成了三层(多层)C/S 模式,即多层应用架构软件架构模式为粗粒度的软件重用提供了可能。
由于考虑问题的角度不同,对于架构模式的选择会有很大的不同。为系统选择或设计架构时,需要根据特定项目的具体特点,进行分析比较后再确定。同时应注意,各种架构模式并不是互斥的,某些应用系统中可以综合使用多种架构模式。
5.3.软件架构的分析与评估:针对目前广泛使用的分布式应用,其软件架构设计需要考虑如下问题。
(1) 数据库的选择问题:目前主流的数据库系统是关系数据库。
(2)用户界面选择问题:HTML/HTTP(S)协议是实现Internet 应用的重要技术
(3)灵活性和性能问题:权独立于厂商的抽象定义(标准)所提供的灵活性和特定厂商产品带来的性能。
(4)技术选择的问题:选择成熟的技术可以规避项目风险。不仅需要了解技术的优势,还需要了解技术的适用范围和局限性。
(5)人员的问题:聘请经验丰富的架构设计师,可以有效地保证项目的成功。