0《信息系统管理读书笔记》读书笔记1第1章信息系统基础知识点:1)信息系统:信息系统概念、信息系统的功能、信息系统的类型和信息系统的发展。2)信息系统建设:信息系统建设的复杂性、信息系统的生命周期(各阶段及其主要工作内容)、信息系统建设的原则和信息系统开发方法。1.1信息的定义香农在《通信的数学理论》定义“信息是系统有序程度的度量”。确定了信息量的单位是比特(bit)。1.2信息系统霍尔(A.D.Hall)三维结构:时间维、逻辑维、知识维。信息系统定义:结合管理理论和方法,应用信息技术解决管理问题,为管理决策提供支持的系统。简单地说,信息系统就是输入数据,通过加工处理,产生信息的系统。信息系统的基本功能:数据的采集和输入、数据的传输、信息的存储、信息的加工、信息的维护、信息的使用。信息系统分类:以数据环境分类,可以分为数据文件、应用数据库、主题数据库和信息检索系统。以应用层次分类,战略级、战术级、操作级和事物级。信息系统的生命周期可以分为:系统规划、系统分析、系统设计、系统实施、系统运行和维护5个阶段。信息系统的发展规律(诺兰模型):1)初装;2)蔓延;3)控制;4)集成;5)数据管理1.3信息系统建设信息系统建设的方法主要有:1)企业系统规划方法(BusinessSystemPlanning,BSP),IBM公司提出的一种方法。2)战略数据规划方法,詹姆士.马丁(JamesMartin)的观点,企业要搞信息化,首要任务应该是在企业战略目标的指导下做好企业战略数据规划。3)信息工程方法,信息、过程和技术构成了企业信息系统的三要素。1.4信息化基础1)企业信息化企业资源计划(EnterpriseResourcesPlanning,ERP)客户关系管理(CustomerRelationshipManagement,CRM)供应链管理(SupplyChainManagement,SCM)商业智能(BusinessIntelligence,BI)企业门户(EnterprisePortal,EP),可以划分为三类:信息门户(EIP)、知识门户(EKP)、应用门户(EAP)22)电子政务G2G(GovernmentToGovernment,政府对政府)G2E(GovernmentToEmployee,政府对公务员)G2B(GovernmentToBusiness,政府对企业)G2C(GovernmentToCitizen,政府对公民)3)电子商务B2B(BusinessToBusiness,企业对企业)B2C(BusinessToCustomer,企业对个人)C2C(CustomerToCustomer,个人对个人)第2章系统开发基础知识点:1)软件工程知识:软件需求分析与定义、软件设计、测试与维护、软件复用、软件质量保证及质量评价、软件配置管理、软件开发环境、软件过程管理。2)软件构件技术知识:构件及其在信息系统项目中的重要性、常用构件标准(COM/DCOM/COM+、CORBA和EJB)。3)软件体系结构:软件体系结构定义、典型体系结构、软件体系结构设计方法、软件体系结构分析与评估、软件中间件。4)面向对象系统分析与设计:面向对象的基本概念、统一建模语言UML、可视化建模、面向对象系统分析、面向对象系统设计。5)软件工具:建模工具、软件开发工具、软件测试工具、项目管理工具。2.1软件开发方法软件开发方法是以软件开发方法为研究对象的学科。从不同角度可以把软件方法学做如下分类:从开发风范上看,分为自顶向下、自底向上开发方法;从性质上看,分为形式化、非形式化方法;从适用范围上看,分为整体性、局部性方法。1)净室方法净室软件工程方法是一种形式化方法,它可以生产高质量的软件。净室方法是一种严格的软件工程方法,它是一种强调正确性的数学验证和软件可靠性的认证的软件过程模型,其目标和结果有非常低的出错率,这是使用非形式化方法难于或不可能达到的。主要使用三种盒类型:黑盒、状态盒、清晰盒。净室软件工程并不强调单元测试或集成测试,而是通过定义一组使用场景、确定对每个场景的使用概率及定义符合概率的随机测试来进行软件测试(这种活动称为正确性验证)。2)结构化方法结构化方法属于自顶向下的开发方法,强调开发方法的结构合理性及所开发软件的结构合理性。包括:结构化分析(StructuredAnalysis,SA)结构化设计(StructuredDesign,SD)结构化程序设计(StructuredProgramming,SP)等方法。3)面向对象方法3主要包括:Coad/Yourdon方法OMT(ObjectModelTechnology,对象建模技术)方法统一成为UML(UnitedModelLanguage,统一建模语言)OOSE(Object-OrientedSoftwareEngineering,面向对象的软件工程)方法Booch方法4)原型法原型法适合于用户需求不明确的场合。它是先根据已知的和分析的需求,建立一个原始模型,这是一个可以修改的模型。在软件开发的各个阶段都把有关信息相互反馈,直至模型的修改,使模型渐趋完善。在这个过程中,用户的参与和决策加强了,缩短了开发周期,降低了开发风险,最终的结果是更适合用户的要求。原型法成败的关键及效率的高低,在于模型的建立及建模的速度。5)逆向工程软件再工程(Reengineering)是对现有软件系统的重新开发过程,包括:逆向工程(ReverseEngineering,反向工程)、新需求的考虑(软件重构)和正向工程三个步骤。2.2软件开发模型要掌握软件生命周期的概念、各种开发模型的特点和应用场合。1)瀑布模型瀑布模型也称为生命周期法,适用于需求明确或很少变更的项目,它把软件开发的过程分为软件计划、需求分析、软件设计、程序编码、软件测试、运行维护6个阶段。2)其他经典模型包括:演化模型、螺旋模型、喷泉模型、智能模型、增量模型、迭代模型、构件组装模型。3)V模型以测试为中心的开发模型。4)快速应用开发快速应用开发(RapidApplicationDevelopment,RAD)模型是一个增量型的软件开发需求分析概要设计详细设计编码单元测试集成测试系统测试验收测试4过程模型,强调极短的开发周期。RAD模型是瀑布模型的一个高速变种,通过大量使用可复用构件,采用基于构件的建造方法赢得快速开发。5)敏捷方法敏捷方法的发展过程中出现了不同的流派,如:极限编程(ExtremeProgramming,XP)、自适应软件开发、水晶方法、特性驱动开发等。从开发者的角度,主要关注点:短平快会议(StandUp)、小版本发布(FrequentRelease)、较少的文档(MinimalDocumentation)、合作为重(CollaborativeFocus)、客户直接参与(CustomerEngagement)、自动化测试(AutomatedTesting)、适应性计划调整(AdaptivePlanning)和结对编程(PairProgramming)。从管理者的角度,主要关注点:测试驱动开发(Test-DrivenDevelopment)、持续集成(ContinuousIntegration)和重构(Refactoring)。6)统一过程统一过程(UnifiedProcess,UP)是一个通用过程框架,在为软件系统建模时,UP使用的是UML。UP的三个特点:用例驱动、以基本架构为中心、迭代和增量。UP中的软件过程在时间上被分解为4个顺序的阶段:初始阶段、细化阶段、构建阶段和交付阶段。2.3需求工程需求工程是包括创建和维护系统需求文档所必须的一切活动的过程,可分为需求开发和需求管理两大工作。需求开发包括:需求获取、需求分析、编写规格说明书(需求定义)、需求验证。需求管理包括:定义需求基线、处理需求变更及需求跟踪等方面的工作。1)需求开发概述需求开发的工作可以分成:问题识别、分析与综合、编制需求分析的文档、需求分析与评审。需求的分类:软件需求包括功能需求、非功能需求、设计约束3个方面。需求的另一分类:业务需求、用户需求、系统需求。2)需求获取需求获取技术:用户访谈、用户调查、现场观摩、阅读历史文档、联合讨论会。需求获取、需求分析、需求定义、需求验证4个需求过程阶段不是瀑布式的发展,而应该是迭代式的演化过程。3)需求分析需求分析方法种类:结构化分析方法、面向对象分析方法、面向问题域的分析方法(ProblemDomainOrientedAnalysis,PDOA)。PDOA方法现在还在研究阶段,并未广泛应用。数据流程图(DFD)和数据字典共同构成系统的逻辑模型。4)需求定义需求定义的过程就是形成需求规格说明书的过程,有两种需求定义方法:严格需求定义方法和原型方法。5)需求管理2.4软件设计5从工程管理角度,软件设计可分为概要设计和详细设计两个阶段。概要设计也称为高层设计,即将软件需求转化为数据结构和软件的系统结构。详细设计为低层设计,即对结构图进行细化,得到详细的数据结构与算法。1)软件设计活动软件设计包括4个独立又相互联系的活动,即数据设计、体系结构设计、接口设计(界面设计)和过程设计。这4个活动完成以后就得到了全面的软件设计模型。2)结构化设计结构化设计是一种面向数据流的设计方法,是以结构化分析阶段所产生的成果为基础,进一步自顶向下、逐步求精和模块化的过程。2.5软件测试软件测试的目的是在软件投入生产性运行之前,尽可能多地发现软件产品中的错误和缺陷。软件测试只是软件质量保证的手段之一。1)测试的类型分为动态测试和静态测试两大类。动态测试:通过运行程序发现错误。黑盒测试法白盒测试法灰盒测试法静态测试:不运行程序,采用人工检测和计算机辅助静态分析的手段进行测试。桌前检查(DeskChecking)代码审查代码走查2)测试的阶段可以分为:单元测试、集成测试、确认测试(包括内部确认测试、Alpha测试、Beta测试、验收测试)和系统测试等。3)性能测试性能测试是通过自动化的测试工具模拟多种正常、峰值及异常负载条件来对系统的各项性能指标进行测试。负载测试和压力测试都属于性能测试,两者可以结合进行,统一称为负载压力测试。通过负载测试,确定在各种工作负载下系统的性能,目标是测试当负载逐渐增加时,系统各项性能指标的变化情况。压力测试是通过确定一个系统的瓶颈或不能接受的性能点,来获得系统能提供的最大服务级别的测试。4)验收测试验收测试的目的是确保软件准备就绪,并且可以让最终用户将其用于执行软件的既定功能和任务。5)第三方测试第三方测试是指独立于软件开发方和用户方的测试,也称为“独立测试”。2.6软件维护软件维护占整个软件生命周期的60%~80%,维护的类型主要有3种:改正性维护、适应性维护、完善性维护。还有一类叫预防性维护,可以定义为“把今天的方法学用于昨天的系统以满足明天的需要”。62.7软件质量管理软件质量是指软件特性的综合,即软件满足规定或潜在用户需求的能力。软件质量保证是指为保证软件系统或软件产品充分满足要求的质量而进行的有计划、有组织的活动,这些活动贯穿与软件生产的各个阶段即整个生命周期。软件质量特性度量有两类:预测型和验收型。常用的国际通用软件质量模型ISO/IEC9126和McCall模型。ISO/IEC9126软件质量模型已被我国的国家标准《GB/T16260——2002信息技术软件产品评价质量特性及其使用指南》。2.8软件过程改进软件过程能力成熟度模型(CapabilityMaturityModel,CMM)和能力成熟度模型集成(CapabilityMaturityModelIntegration,CMMI)1)CMM分为:初始级、可重复级、已定义级、已管理级、优化级。2)CMMI与CMM相比CMMI涉及面不限于软件,专业领域覆盖软件工程、系统工程、集成产品开发和系统采购。CMMI可以看作把各种CMM集成到一个系列的模型中,CMMI的基础源模型包括软件CMM、系统工程CMM、集成化产品和过程