软件工程,开发模型,软件开发流程

来源:互联网 发布:iphone mac 互传文件 编辑:程序博客网 时间:2024/06/10 16:29

 软件工程 (Software Engineering,简称为SE)是一门研究用工程化方法构建和维护有效的、实用的和高质量的软件的学科。它涉及到程序设计语言,数据库,软件开发工具,系统平台,标准,设计模式等方面。在现代社会中,软件应用于多个方面。典型的软件比如有电子邮件,嵌入式系统,人机界面,办公套件,操作系统,编译器,数据库,游戏等。同时,各个行业几乎都有计算机软件的应用,比如工业,农业,银行,航空,政府部门等。这些应用促进了经济和社会的发展,使得人们的工作更加高效,同时提高了生活质量。

 软件工程[1]一直以来都缺乏一个统一的定义,很多学者、组织机构都分别给出了自己的定义:

  

  

软件工程

(1)、BarryBoehm:运用现代科学技术知识来设计并构造计算机程序及为开发、运行和维护这些程序所必需的相关文件资料。

  (2)、IEEE在软件工程术语汇编中的定义:软件工程是:1.将系统化的、严格约束的、可量化的方法应用于软件的开发、运行和维护,即将工程化应用于软件;2.在1中所述方法的研究

  (3)、FritzBauer在NATO会议上给出的定义:建立并使用完善的工程化原则,以较经济的手段获得能在实际机器上有效运行的可靠软件的一系列方法。

  目前比较认可的一种定义认为:软件工程是研究和应用如何以系统性的、规范化的、可定量的过程化方法去开发和维护软件,以及如何把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来。

  (4)、《计算机科学技术百科全书》中的定义:软件工程是应用计算机科学、数学管理科学等原理,开发软件的工程。软件工程借鉴传统工程的原则、方法,以提高质量、降低成本。其中,计算机科学、数学用于构建模型与算法,工程科学用于制定规范、设计范型(paradigm)、评估成本及确定权衡,管理科学用于计划、资源、质量、成本等管理。

软件工程在过去几十年的发展历程中,也形成了一些鲜明的新思想。例如,IBM 提出了软件开发思想的4项要点——迭代开发、以系统架构为中心、持续的质量保证以及管理变更和资产,其中只有“持续的质量保证”和传统工业工程是十分吻合的,而其它3项具有软件特性所拥有的思想。软件的变更比较频繁,自然对其管理的高要求,进一步促进迭代开发的合理性。

客户和业务用户始终希望软件能够按时交付高质量的产品,又认可软件的灵活性,希望软件能够具有随需应变的能力,及时进行必要的修改来满足业务的新需求。同时,软件又是一种知识型产品,需要创造性,并依赖每个开发人员的创造力和积极性。所有这些引导人们新的思考,引导人们不断认识软件工程而建立独特的软件工程思想。

迭代开发,以时间换空间,消除市场风险。 
敏捷开发或轻量级过程,以不变应万变。 
永远的Beta,不断推陈出新,永无止境。 
持续集成、持续构建、全程测试。 
知识管理,将软件工程纳入知识管理的范畴。 
面向对象是一种方法,也是一种思想。 
软件即服务(SaaS),面向服务架构(SOA)的开发思想。 
用例驱动开发,用户为本思想在软件中的体现。 
 

同时,软件工程可以向传统工业工程学习,吸收传统工业工程上百年实践积累下来的经验、沉淀下来的思想。

以顾客为中心的全面质量管理。 
过程决定结果。 
有效的持续改进过程。 
预防为主,检验为辅。 
验证和确认缺一不可,质量保证和测试融为一体。 
以架构设计为中心,体现设计为重的思想。 
生产标准化、产品标准化和技能标准化。 
软件工厂思想造就了组件、构件技术,包括自动化测试。 
围绕项目管理开展工作,包括风险预防、里程碑控制和关键路径法等。 
欢迎大家讨论,提出新的思想或补充遗漏之处。


软件开发流程(Software development process)

  软件设计思路和方法的一般过程,包括设计软件的功能和实现的算法和方法、软件的总体结构设计和模块设计、编程和调试、程序联调和测试以及编写、提交程序。

  

  

第一步:需求调研分析

  1相关系统分析员和用户初步了解需求,然后用WORD列出要开发的系统的大功能模块,每个大功能模块有哪些小功能模块,对于有些需求比较明确相关的界面时,在这一步里面可以初步定义好少量的界面。

  2 系统分析员深入了解和分析需求,根据自己的经验和需求用WORD或相关的工具再做出一份文档系统的功能需求文档。这次的文档会清楚例用系统大致的大功能模块,大功能模块有哪些小功能模块,并且还例出相关的界面和界面功能。

  3 系统分析员和用户再次确认需求。

  第二步:概要设计

  首先,开发者需要对软件系统进行概要设计,即系统设计。概要设计需要对软件系统的设计 进行考虑,包括系统的基本处理流程、系统的组织结构、模块划分、功能分配、接口设计、 运行设计、数据结构设计和出错处理设计等,为软件的详细设计提供基础。

  第三步:详细设计

  在概要设计的基础上,开发者需要进行软件系统的详细设计。在详细设计中,描述实 现具体模块所涉及到的主要算法、数据结构、类的层次结构及调用关系,需要说明软件系统各个层次中的每一个程序(每个模块或子程序)的设计考虑,以便进行编码和测试。应当保证软件的需求完全分配给整个软件。详细设计应当足够详细,能够根据详细设计报告进行编码。

  第四步:编码

  在软件编码阶段,开发者根据《软件系统详细设计报告》中对数据结构、算法分析和模块实现等方面的设计要求,开始具体的编写程序工作,分别实现各模块的功能,从而实现对目标系统的功能、性能、接口、界面等方面的要求。 

  第五步:测试

  测试编写好的系统。交给用户使用,用户使用后一个一个的确认每个功能。

  第五步:软件交付准备

  在软件测试证明软件达到要求后,软件开发者应向用户提交开发的目标安装程序、数据库的数据字典、《用户安装手册》、《用户使用指南》、需求报告、设计报告、测试报告等双方合同约定的产物。

  《用户安装手册》应详细介绍安装软件对运行环境的要求、安装软件的定义和内容、在客户端、服务器端及中间件的具体安装步骤、安装后的系统配置。

  《用户使用指南》应包括软件各项功能的使用流程、操作步骤、相应业务介绍、特殊提示和注意事项等方面的内容,在需要时还应举例说明。

  第六步:验收

  用户验收。

 

软件工程四大开发模型

    软件工程中,常用的开了模型有四种:瀑布模型、原型模型、增量模型和螺旋模型。
   ⒈瀑布模型包括计划,需求分析、设计、编码、测试、运行维护六个阶段,阶段自上而下,相互衔接,次序固定。瀑布模型具有很强的顺序性和依赖性,即:下一阶段必须以上一阶段的完成为前提。测试工作是在处于开发后期的测试阶段集中进行的,测试中可能发现大量的错误,因此必须返回需求分析、设计或编著码中定位问题,而以前认为已完成的各阶段必须修改,从而代价昂贵。 
   ⒉原型模型的主要思想是先通过需求分析并建立一个软件系统的概貌原型,通过用户与开发者的评价和判断,不断的对原型进行反复的扩充、改进和求精,最终建立符合用户需求的目标系统。开发过程中可能会多次生成更完善的原型,测试人员要对每个原型进行测试,并且在每个原型中投入的工作量及测试目标也将有所不同。 
   ⒊增量模型是软件企业在面对紧迫的市场限期时常用的开发模型。其思路是:既然不可能一下推出一个功能完善的软件,那就先推出一个具有最迫切需要功能的的版本,然后渐进地增加功能开发逐步完善的软件版本。
   ⒋螺旋型开发模型结合了瀑布模型和原型模型的特点,并且加入了二者所忽略的风险分析。
    螺旋模型的每个周期都包含制定计划,风险分析、实施工程和评审四个阶段。开发过程每迭代一次,螺旋线就增加一周,软件开发前进一个层次,系统生成一个新版本,软件开发时间与成本又有新投入,最后得到 一个用户满意的软件版本。

精简版:
   瀑布线性返工难,
   原型交互迭代多, 
   增量功能层层添, 
   螺旋有了风险活。

0 0
原创粉丝点击