zoukankan      html  css  js  c++  java
  • 四、系统开发和运行知识(一)

    1.软件工程基础知识

    软件工程:

      应用计算机科学、数学、管理科学等原理,以工程化的原则和方法来解决软件问题的工程。

      目的:提高软件生产率、提高软件质量、降低软件成本。

    软件生存周期:

      1.可行性分析与项目开发计划:确定软件的开发目标及其可行性。参与人员:用户、项目负责人、系统分析师。文档:可行性分析报告和项目开发计划书。

      2.需求分析:确定系统的功能、性能、数据、界面……要求,从而确定系统的逻辑模型。参与人员:用户、项目负责人、系统分析师。文档:软件需求说明书。

      3.设计(概要设计、详细设计)

      概要设计:确定的各项功能需求转换成需要的体系结构(每个模块都可和某些功能相对应),是软件系统的结构(模块:数目,层次结构、调用关系;总体数据结构;数据库结构)。参与人员:系统分析师、软件设计师。文档:概要设计文档。

      详细设计:对每个模块完成的功能进行具体描述,将功能描述转变为精确的、结构化的过程描述,即控制结构(先后执行顺序、条件判断、重复处理),并用表示工具将其表示出来。参与人员:软件设计师、程序员。文档:详细设计文档。

      4.编码:把每个模块的控制结构转换成计算机可接受的程序代码,即某种特定程序设计语言表示的源程序清单。

      5.测试:保证软件质量的重要手段。在设计测试用例的基础上检查软件的各个组成部分。参与人员:另一部门/单位的软件设计师、分析师。文档:软件测试计划、测试用例、软件测试报告

      6.维护:软件生存周期中时间最长的阶段。已交付的软件投入正式使用后,便进入软件维护阶段。

      运行中发现软件隐含的错误而需要修改;为了适应变化的软件工作环境需要做适当变更;用户业务发生变化需要扩充、增强软件功能;为将来的软件维护活动预先做准备……

    软件生存周期模型:

      描述开发过程中各种活动如何执行的模型。

      1.瀑布模型:将软件生存周期各个活动规定为依线性顺序链接的若干阶段的模型。规定了由前至后、相互衔接的固定次序(可行性分析、项目卡发计划、需求分析、概要设计、详细设计、编码、测试、维护)。

      以项目的阶段评审、文档控制为手段有效地对整个开发过程进行指导。以文档为驱动。

      适合:软件需求很明确

      缺点:一种理想性的开发模式,缺乏灵活性

      2.演化模型:获取一组基本需求后,通过快速分析构造出该软件的一个初始可运行版本,即原型,然后根据用户使用过程中提出的意见、建议对其进行改进,获得原型新版本。重复这一过程,最终可得到令用户满意的软件产品。

      从初始原型逐步演化成最终软件产品的过程

      适合:开始时对软件需求的认识模糊,对软件需求缺乏准确认识

      3.螺旋模型:将瀑布模型、演化模型结合起来,加入了风险分析,弥补了两种模型的不足。

      螺旋周期:大致与瀑布模型相符。

         制定计划:确定目标,选定实施方案,确定开发限制条件;

         风险分析:分析所选方案,识别风险,消除风险;

         实施工程:实施软件开发,验证阶段性产品;

         用户评估:评价开发工作,提出修正建议,建立下一个周期的开发计划。

      4.喷泉模型:以用户需求为动力,以对象作为驱动的模型,适合面向对象得到开发方法。客服了瀑布模型不支持软件重用、多项开发活动集成的局限性。

      使开发过程具有迭代性、无间隙性:

        迭代性:开发活动需要重复多次,在迭代过程中不断完善

        无间隙性:开发活动(分析、设计、编码)之间不存在明显边界,允许各开发活动交叉、迭代地进行

    软件开发方法:使用技术集、符号表示习惯来组织软件生产的过程。

      1.结构化方法:面向数据流。思想:自顶向下、逐层分解。原则:功能的分解与抽象。

      适合:数据处理领域的问题。不适合解决大规模、特别复杂的项目

      缺点:难以适应需求变化

      组成:

        机构化分析:根据分解、抽象原则,设计数据流图(按照数据处理流程),来建立功能模型,完成需求分析

        结构化设计:根据模块独立性、软件结构优化准则,将数据流图转换为软件的体系结构图,来建立物理模型,完成概要设计

        结构化程序设计:根据系统结构图,将每个功能用相应的标准控制结构表示出来,完成详细设计

      2.Jackson方法:面向数据结构

        一个问题的数据结构与处理该数据结构的控制结构有着惊人的相似之处。

        JSP(Jackson Structure Programming):以数据结构为驱动,适合小规模项目。当输入数据结构与输出数据结构之间没有对应关系时,难以应用此方法。

          首先描述问题的输入、输出,分析对应性,然后推出相似得到程序结构,从而给出问题的软件过程描述。

        JSD(Jackson System Development):JSP的扩充,是一个完整的系统开发方法。以事件作为驱动,是一种基于进程的开发方法

          首先建立现实世界的模型,再确定系统的功能需求,对需求的描述特别强调操作之间的时序性。

          应用于时序特点较强的系统,包括数据处理系统、实时控制系统。

      3.原型化方法:

        首先确定用户需求,开发原始模型,然后征求用户对初始原型的改进已经,并根据意见修改原型。

        适合用户需求不清,业务理论不确定,需求经常变化的情况。当系统不是很大,且不是很复杂时,可以采用此方法。

      4.面向对象开发方法:

        基本出发点:尽可能按照人类认识世界的方法、思维方法来分析、解决问题。

        基本元素:对象。分析问题、解决问题的核心。

        组成:面向对象分析、面向对象设计、面向对象实现。

        UML(Unified Modeling Language,统一建模语言):面向对象的标准建模语言。通过统一的语义、符号表示,使各种方法的建模过程、表示统一起来。成为面向对象建模的工业标准。

    软件需求分析

      通过开发人员与用户之间的广泛交流,不断澄清一些模糊的概念,最终形成一个完整的、清晰的、一致的需求说明。

      主要解决“做什么”的问题。

      需求分析的好坏直接影响到所开发软件的成败。

      需求分析的任务:

        1.确定软件系统的综合要求:界面;功能;性能;安全性、保密性、可靠性;运行要求(硬件、支撑软件、数据通信接口……);异常处理;将来可能提出的要求

        2.分析软件系统的数据要求:基本数据元素、数据元素之间的逻辑关系、数据量、峰值……

        3.导出系统的逻辑模型:结构化分析方法,数据流图;面向对象分析方法,类模型

        4.修正项目开发计划:修正成本、开发进度

        5.如有必要,开发一个原型系统。

      需求分类:

        软件需求:系统必须完成的事,必须具备的品质

        1.功能需求:必须具备的功能

        2.非功能需求:必须具备的属性、品质(可靠性、性能、相应时间、容错性、扩展性)。

        3.设计约束:限制条件、补充规约

      需求分析方法:

        组成:软件数据域和功能域的系统分析过程、表示方法

        定义了表示系统逻辑视图、物理视图的方式。大多由数据驱动的,这些方法提供了一种表示数据域的机制。

        数据域的属性:数据流、数据内容、数据结构

        共性:支持数据域分析机制;功能表示的方法;接口的定义;问题分解机制、对抽象的支持;逻辑视图、物理视图;系统抽象模型

      需求工程:创建、维护系统需求文档所必须的一切活动的过程

        组成:

        1.需求开发:需求捕获、需求分析、编写规格说明书、需求验证

        2.需求管理:定义需求基线、处理需求变更、需求跟踪……

    软件开发项目管理

      对象:软件项目

      范围:覆盖了整个软件工程,在软件从概念到实现的过程中持续进行,终止于软件工程过程结束

      1.成本估算:

        方法:自顶向下估算方法、自底向上估算方法、差别估算方法、专家估算法、类推估算法、算式估算法

        模型:Putnam模型、COCOMO模型

      2.风险分析

        基于:关心未来、关心变化、关心选择

        组成:风险识别、风险预测、风险评估、风险控制

      3.进度管理

        如期完成项目的重要保证、合理分配资源的重要依据

        方式:最终交付日期确定,开发必须在规定期限内完成;交付日期大致确定年限,交付日期由软件开发部门确定

        图形描述方法:Gantt图、PERT图

        

      4.人员管理

        按项目对人员分组(需求分析组、设计组、编码组、维护组、质量保证组)

        组织形式:主程序员组、无主程序员组、层次式程序员组

    软件配置管理(software configure managemet,SCM)

      用于整个软件工程过程,是一组管理整个软件生存期各个阶段中变更的活动。

      主要目标:标识变更;控制变更;确保变更正确地实现;报告有关变更

      1.基线:各开发阶段的一个特定点。便于检查、肯定阶段性成果

      2.软件配置项(SCI):软件工程中产生的信息项,是配置管理的基本单位

      3.版本控制:每个版本都是SCI的汇集。

      

      4.变更控制:一项最重要的软件配置任务

        配置数据库分类:开发库(开发人员使用)、受控库(阶段产品)、产品库(交付产品)

    软件工具(CASE工具):

      用来辅助软件开发、运行、维护、管理、支持等过程中的活动的软件

      分类:

      1.软件开发工具:需求分析工具、设计工具、编码与排错工具、测试工具

      2.软件维护工具:辅助维护人员对软件代码、文档进行各种维护活动。版本控制工具、文档分析工具、开发信息库工具、逆向工程工具、再工程工具

      3.如那件管理、软件支持工具:项目管理工具、配置管理工具、软件评价工具

    软件开发环境:

      支持软件产品开发的软件系统,

      组成:

      1.软件工具集:支持软件开发的相关过程、活动、任务

      2.环境集成机制:工具集成、软件开发维护管理提供统一支持。包括数据集成、控制集成、界面集成

      特征:服务是集成的;支持小组工作方式,并为其提供配置管理;可用于支持各种软件开发活动;

      集成性开发环境:把支持多种软件开发方法、开发模型的软件工具集成在一起的软件开发环境。具有开放性、可裁剪性

    软件过程管理

      软件过程:软件生存周期中(开发、维护软件及县官产品)一系列相关活动。

        决定了软件产品质量。

      软件过程评估:软件改进、软件能力评估的前提条件。

        软件过程改进的需要;降低软件风险的需要

      软件能力成熟度模型(capacity maturity model,CMM):

        级别:初始级、可重复级、已定义级、已管理级、优化级

      能力成熟度集成模型(capacity maturity model integrated,CMMI):

        表述方式:连续表述(关注某特定领域的过程改进、能力评估);阶段式表述(主要是衡量一个企业的成熟度,不把单个过程是否完成作为重点)

        成熟度级别:初始级、已管理级、已定义级、量化管理级、优化级

      统一过程(UP):

        用例、风险驱动,以架构为中心,迭代并且增量

        由UML方法、工具支持

        阶段:初始阶段(生命周期目标)、精化阶段(生命周期架构)、构建阶段(初始运作功能)、移交阶段(产品发布)、产生阶段

        每次迭代产生包括最终系统的部分完成版本、任何相关的项目文档的基线,通过逐步迭代基线之间相互构建,直到完成最终系统

        典型代表:RUP

      敏捷方法:

        目标:尽可能早地、持续地对有价值的软件的交付

        在开发过程中加入灵活性,使客户能够在开发后期增加、改变需求。

        方法:极限编程(XP);水晶法;并列征求法;自适应软件开发

    软件质量管理与质量保证

      软件质量:反应软件系统、软件产品满足固定、隐含需求的嗯哪管理的特征、特征全体。

        特性模型:ISO/IEC 9126软件质量模型(质量特征、质量子特征、度量标准)、Mc Call软件质量模型(质量特征、评价准则、度量指标)

        

        质量保证:满足用户规定的需求;遵循规定保准所定义的一系列开发准则;满足魔偶写隐含需求

          包括:应用技术方法、进行正式的技术审核、测试软件、标准的实施、控制变更、度量、记录保存和报告

      软件复杂性:

        参数:规模、难度、结构、智能度

        程序复杂性:软件复杂性的主要表现。

          度量方法:代码行度量法、McCabe度量法(环路度量,机遇程序控制流的复杂性)

          

      软件质量管理:

        构成:质量保证、质量规划、质量控制

      软件评审:

        质量:用户满意程度。包括:设计质量、程序质量

        软件规格说明书:外部规格说明书+内部规格说明书

        模块:处理模块+数据模块

        运行环境:硬件、其他软件、用户

        1.设计质量评审:规格说明书是否合乎用户要求;可靠性;保密;操作;性能;可修改、可扩充、可互换、可移植;可测试;可复用;

        2.程序质量评审:功能结构(功能结构、数据结构、数据与功能之间的对应关系;功能的通用性(抽象数据结构、抽象功能结构);模块的层次(静态结构);模块的结构(动态结构:控制流结构、数据流结构;模块结构和功能结构之间的对应关系);处理过程结构;

        3.与运行环境的接口:与硬件的接口;与用户的接口;

      软件容错技术:

        提高软件质量、可靠性:避开错误或容错技术

        分类:对自身错误的作用有屏蔽能力;从错误状态自动恢复到正常状态;发生错误,仍能完成预期功能;一定程度上具有容错能力。

        冗余:实现容错的主要手段

          分类:结构冗余(静态冗余、动态冗余、混合冗余)、信息冗余、时间冗余、冗余附加技术(硬件、软件)

    2.系统分析基础知识  

    系统分析:

      提交系统方案说明书(系统分析报告)

      

    结构化分析方法(SA,structured Analysis):

      面向数据流,适用于分析大型数据处理系统。

      组成:

      1.一套分层的数据流图(DFDD):自顶向下逐层分解。

        组成:数据流、加工、数据存储、外部实体(处于软件系统之外的人员、组织。支出系统所需数据的发源地、系统所产生数据的归宿地)

        

      

      实例:

      

      2.一本数据词典:数据流图中每个数据流、文件、加工,以及组成数据流或文件的数据项做出说明

      分类:数据流、数据项、数据存储、基本加工;

      

      3.一组小说明(加工逻辑说明)

      描述方法:结构化语言、判定表、判定树

      

      4.补充材料

    系统分析报告:

      一经确认,就成为具有约束力的指导性文件,成为下一阶段系统工作的一句和今后验收目标系统的检验标准 

      作用:逻辑模型;协议、合同;验收、评价依据 

      主要内容:组织情况;现行系统;逻辑模型;管理方法、算法、模型;管理制度、运行体制;设计与实施的初步计划;用户领导审批

  • 相关阅读:
    Docker 日志都在哪里?怎么收集?
    docker link 过时不再用了?那容器互联、服务发现怎么办?
    Centos7.0 配置docker 镜像加速
    使用docker搭建公司redmine服务器
    Jenkins pipeline:pipeline 使用之语法详解
    Xcode脚本自动化打包问题:xcrun: error: unable to find utility "PackageApplication", not a developer tool or in PATH
    java基础(7)---IO流
    java基础(6)---面向对象,类,包
    java基础(5)---内存分配
    java基础(4)---引用数据类型(数组、字符串、集合)
  • 原文地址:https://www.cnblogs.com/panpanwelcome/p/5669009.html
Copyright © 2011-2022 走看看