上海西门子SITOP电源授权一级供货商
上海西门子SITOP电源授权一级供货商
统计数据表明,大多数软件开发项目的失败,并不是由于软件开发技术方面的原因。它们的失败是由于不适当的管理造成的。遗憾的是,尽管人们对软件项目管理重要性的认识有所提高,但在软件管理方面的进步远比在设计方法学和实现方法学上的进步小,至今还提不出管理软件开发的通用指导原则。
在软件的长期发展中,人们针对软件危机的表现和原因,经过不断的实践和总结,越来越认识到:按照工程化的原则和方法组织软件开发工作,是摆脱软件危机的一条主要出路。软件工程的发展大概经历了4个阶段。
(1)1968年以前,属于软件工程的史前阶段。在这个时期,没有什么工程化的开发方法可循,更多的是个人作坊式的开发。当时的软件几乎都是为每个具体应用而专门编写的,编写者和使用者往往是同一个或同一组人。这些个体化的软件设计环境,使软件设计成为在人们头脑中进行的一个隐含过程,后除了程序清单外,没有其他文档资料保存下来。于是20世纪60年代末,爆发了软件危机。
(2)从1968年开始,一直到20世纪80年代末,软件工程进入了一个新的时期。1968年提出了“软件工程”的概念。瀑布模型成为软件开发的经典模型,整个软件开发过程被划分成需求、设计、编码、测试等不同阶段,并且这些阶段都是严格按照线性的方式执行的。
(3)从1983年到1995年,人们逐步意识到过程质量对产品质量的重大影响。这个时期面向对象的方法和软件过程改进运动逐渐盛行,提出了CMM/ISO9000/SPICE等质量标准体系。
浔之漫智控技术(上海)有限公司(xzm-wqy-sqw)
是中国西门子的合作伙伴,公司主要从事工业自动化产品的集成,销售和维修,是全国的自动化设备公司。
公司坐落于中国城市上海市,我们真诚的希望在器件的销售和工程项目承接、系统开发上能和贵司开展多方面合作。
以下是我司主要代理西门子产品,欢迎您来电来函咨询,我们将为您提供优惠的价格及快捷细致的服务!
(4)从20世纪90年代至今,互联网技术和应用迅速发展。为了应对需求变化和快速交付的需要,人们开始尝试一种新型的敏捷开发方法。这种方法采用迭代和增量的开发过程,强调更紧密的团队协作。目前,敏捷开发方法已经广泛地应用于软件企业之中,给软件行业带来了巨大的变化。
尽管“软件危机”并未被彻底解决,但软件工程已经成为现代软件产业一个关键的技术,并且正在向成熟发展,在未来对网络时代的软件开发将有更大的推动力。现在以下4个方面。
(1)客户不满意。软件产品的交付质量难以保证,许多功能不是用户所需要的,用户在使用的过程中遭遇很多Bug。
(2)项目过程失控。由于客户需求的不确定性和持续的变化,给整个开发过程带来了不可控性。
(3)风险与成本问题。开发团队专注于技术,忽视对风险的管理,从而造成整个开发成本的超支。
(4)无力管理团队。无法评估开发人员的能力以及工作进度。如何提升团队的能力和效率,一直是软件开发中存在的难题。
之所以出现软件危机,其主要原因一方面是与软件本身的特点有关,另一方面是与软件开发和维护的方法不正确有关。
软件的特点前面已经有一个简单介绍。软件开发和维护的不正确方法主要表现为:忽视软件开发前期的需求分析;开发过程没有统一、规范的方法论的指导,文档资料不齐全,忽视人与人的交流;忽视测试阶段的工作,提交给用户的软件质量差;轻视软件的维护。与程序开发维护和使软件的一致性。软件不能独立存在,需要依附于一定的环境(如硬件、网络以及其他软件)。因此,软软件过程是为了获得高质量软件所需要完成的一系列任务的框架,它规定了完成各项任务的工作步骤。一个软件过程定义了软件开发中采用的方法以及该过程中应用的技术方法和自动化工具。
通常使用生命周期模型简洁地描述软件过程。软件生命周期模型规定了把软件生命周期划分成的阶段及各个阶段的顺序,因此也称为过程模型。
2.1 软件过程概述
过程是一个广义的概念,它是通过一系列相互关联的活动,将输入转化为输出。对于软件开发来说,用户需求是软件开发的基础,也是整个开发过程的一个输入;开发人员通过一系列软件开发活动,终交付出用户需要的产品。
要实现对软件开发过程的有效控制,首先,要规定过程实现的方法和步骤。把整个开发过程进行细分,详细地定义出过程里面的每一个环节以及各个环节之间的执行顺序。其次,要对过程进行监控。但是这个监控并不只是对终产品进行质量检验,而是要对过程的开始、每一个活动的执行、一直到结束,进行全方位的监测,以保证每一个活动能够达到应有的质量。
从某个待开发软件的目的被提出并着手实现,直到后停止使用的这个过程,一般称为软件生存期。软件工程采用的生命周期方法学就是从时间角度对软件开发和维护的复杂问题进行分解,把软件生存的漫长周期依次划分为若干个阶段,每个阶段有相对独立的任务,然后逐步完成每个阶段的任务。
把软件生存周期划分成若干个阶段,每个阶段的任务相对独立,而且比较简单,便于不同人员分工协作,从而可以降低整个软件开发工程的困难程度;在软件生存周么。即软件开发人员必须确定处理的是什么信息,要达到哪些功能和性能,建立什么样的界面,存在什么样的设计限制,以及要求一个什么样的标准来确定系统开发是否成功;还要弄清系统的关键需求;然后确定该软件。软件定义阶段大致分三个步骤。
(1)系统分析
在这个步骤,系统分析员通过对实际用户的调查,提出关于软件系统的性质、工程目标和规模的书面报告,同用户协商,达成共识。
(2)制定软件项目计划
软件项目计划包括确定工作域、风险分析、资源规定、成本核算以及工作任务和进度安排等。
(3)需求分析
对待开发的软件提出的需求进行分析并给出详细的定义。开发人员与用户共同讨论决定哪些需求是可以满足的,并对其加以确切的描述。首先要收集用户的需求,对所收集的需求进行分析、整理和提炼,来理解和建模系统的行为。在这个过程,可能还要返回去继续收集更多的需求。在对系统的行为进行明确之后,还要使用文档的形式,把待开发系统的行为定义出来,并且检查和确认这个文档是否满足用户的要求。在确认的过程中,还要反复收集、分析、再补充这样的一个过程。确认通过之后,形成一个正式的软件需求规格说明书。这个需求规格说明将作为后续开发的一个基础。
2.开发阶段
主要是要确定待开发的软件应怎样做,即软件开发人员必须确定对所开发的软件采用怎样的数据结构和体系结构、怎样的过程细节、怎样把设计语言转换成编程语言以及怎样进行测试等。开发阶段大致分为三个步骤。
(1)软件设计
有了需求规格说明之后,需要对软件进行设计以形成软件设计说明书。软件设计主要是把软件的需求翻译为一系列的表达式(如图形、表格、伪码等)来描述数据结构、体系结构、算法过程以及界面特征等。软件设计一般又可分为总体设计和详细设计。其中总体设计主要进行软件体系结构的设计,详细设计主要进行算法过程的实现。具体的设计活动包括:首先要对软件的整体结构进行设计;然后定义出每个模块的接口,并且进一步地设计每一个组件的实现算法和数据结构;同时,还要对整个系统的数据库进行设计。
(2)编码成测试和验收测试等。测试需在不同的层次上进行,以保证每一个模块、整个系统和终产品的质量。