㈠ 软件开发都有哪些
能否开发出一个好的软件,关键是看软件开发前期所做的工作,重点是这个软件有没有一个好的 软件开发流程,因为一个好的软件开发流程关系到到这个软件的成败和最后能达到一个什么的效果;下面我们就来说一下一个好的软件需要有哪些软件开发流程,也可以说软件开发流程分为哪几个阶段:
第一个阶段是市场调研:技术和市场要结合才能体现最大价值。
第二个阶段是需求分析:这个阶段需要出三样东西,用户视图,数据词典和用户操作手册。用户视图是该软件用户(包括终端用户和管理用户)所能看到的页面样 式,这里面包含了很多操作方面的流程和条件。数据词典是指明数据逻辑关系并加以整理的东东,完成了数据词典,数据库的设计就完成了一半多。用户操作手册是 指明了操作流程的说明书。请注意,用户操作流程和用户视图是由需求决定的,因此应该在软件设计之前完成,完成这些,就为程序研发提供了约束和准绳,很遗憾 太多公司都不是这样做的,因果颠倒,顺序不分,开发工作和实际需求往往因此产生隔阂脱节的现象。需求分析,除了以上工作,笔者以为作为项目设计者应当完整 的做出项目的性能需求说明书,因为往往性能需求只有懂技术的人才可能理解,这就需要技术专家和需求方(客户或公司市场部门)能够有真正的沟通和了解。
第三个阶段是概要设计:将系统功能模块初步划分,并给出合理的研发流程和资源要求。作为快速原型设计方法,完成概要设计就可以进入编码阶段了,通常采用这 种方法是因为涉及的研发任务属于新领域,技术主管人员一上来无法给出明确的详细设计说明书,但是并不是说详细设计说明书不重要,事实上快速原型法在完成原 型代码后,根据评测结果和经验教训的总结,还要重新进行详细设计的步骤。
第四个阶段是详细设计:这是考验技术专家设计思维的重要关卡,详细设计说明书应当把具体的模块以最‘干净’的方式(黑箱结构)提供给编码者,使得系统整体 模块化达到最大;一份好的详细设计说明书,可以使编码的复杂性减低到最低,实际上,严格的讲详细设计说明书应当把每个函数的每个参数的定义都精精细细的提 供出来,从需求分析到概要设计到完成详细设计说明书,一个软件项目就应当说完成了一半了。换言之,一个大型软件系统在完成了一半的时候,其实还没有开始一 行代码工作。那些把作软件的程序员简单理解为写代码的,就从根子上犯了错误了。
第五个阶段是编码:在规范化的研发流程中,编码工作在整个项目流程里最多不会超过1/2,通常在1/3的时间,所谓磨刀不误砍柴功,设计过程完成的好,编 码效率就会极大提高,编码时不同模块之间的进度协调和协作是最需要小心的,也许一个小模块的问题就可能影响了整体进度,让很多程序员因此被迫停下工作等 待,这种问题在很多研发过程中都出现过。我们在编码的时候一定要软件开发的 代码规范编码时的相互沟通和应急的解决手段都是相当重要的,对于程序员而言,bug永远存在,你必须永远面对这个问题,大 名鼎鼎的微软,可曾有连续三个月不发补丁的时候吗?从来没有!
第六个阶段是软件测试有很多种:按照测试执行方,可以分为内部测试和外部测试;按照测试范围,可以分为模块测试和整体联调;按照测试条件,可以分为正常操 作情况测试和异常情况测试;按照测试的输入范围,可以分为全覆盖测试和抽样测试。以上都很好理解,不再解释。总之,测试同样是项目研发中一个相当重要的步 骤,对于一个大型软件,3个月到1年的外部测试都是正常的,因为永远都会又不可预料的问题存在。完成测试后,完成验收并完成最后的一些帮助文档,整体项目 才算告一段落,当然日后少不了升级,修补等等工作,只要不是想通过一锤子买卖骗钱,就要不停的跟踪软件的运营状况并持续修补升级,直到这个软件被彻底淘汰 为止。
总结,前四个阶段在软件开发过程中占的比重比较大,真正编码的时间是非常短的,只有市场调研做好,能有一个明确的方案,设计出详细合理的开发步骤;我们在 进行编码的时候才能很顺利,开发出来的软件才有价值。有的软件在没有开发出来,还没有上线就注定不行了,所以说软件开发流程对于能否开发出一个好的软件是 非常重要的。
希望对您有所帮助!~
㈡ 阻碍软件复用的技术和非技术因素有哪些
软件复用的关键技术实现软件复用的关键因素主要包括:软件构件技术、领域工程、软件构架、软件再工程、开放系统、软件过程、CASE技术等.以及 各种非技术因素。实现软件...
㈢ 软件工程师是什么专业
计算机科学与技术专业
计算机科学与技术(Computer Science and Technology)是国家一级学科,下设信息安全、软件工程、计算机软件与理论、计算机系统结构、计算机应用技术、计算机技术等专业。
软件工程师是一个广义的概念,包括软件设计人员、软件架构人员、软件工程管理人员、程序员等一系列岗位,工作内容都与软件开发生产相关。软件工程师的技术要求是比较全面的,除了最基础的编程语言(C语言/C++/JAVA等)、数据库技术(SQL/ORACLE/DB2等)等,还有诸多如JAVASCRIPT、AJAX、HIBERNATE、SPRING等前沿技术。此外,关于网络工程和软件测试的其他技术也要有所涉猎。
(3)软件再工程的相关技术有哪些扩展阅读:
软件工程师工作内容
1、 指导程序员的工作;
2、 参与软件工程系统的设计、开发、测试等过程;
3 、协助工程管理人保证项目的质量;
4 、负责工程中主要功能的代码实现;
5 、解决工程中的关键问题和技术难题;
6 、协调各个程序员的工作,并能与其它软件工程师协作工作。
7、还要编写各种各样的软件说明书,如:需求说明书,概要说明书等
8、考试科目工程师是中级职称,考试的题目包括了计算机体系结构、软件工程、数据库、数据结构、编译原理等计算机学科的基础课程
㈣ 软件再工程的再测试
一般来说,再测试是再工程过程中工作量最大的一项工作。如果能够重用原有的测试用例及运行结果,将能大大降低再工程成本。对于重用的部分,特别是可重用的(独立性较强的)局部系统,还可以免除测试,这也正是重用技术被再工程高度评价的关键原因之一。当然再工程后的系统总有变动和增加的部分,对受其影响的整个范围都要毫无遗漏地进行测试,不可心存侥幸,以免因“一个苍蝇坏了百年老汤”。
实用的重用战略
在判断既存系统应该如何重用时,首先要明确哪些是可重用对象,以及如何使用这些可重用对象。下面以既存LAN系统重构成Web系统的再工程为例,说明再分析和再编码将遇到的一些重用课题。
我们可以将既存LAN系统划分成界面、逻辑、数据三个层次。用既存系统的三个层次去分别对应典型Web系统的表示层、逻辑层和数据层。由此从逻辑上得到对应每个层次的输入和输出,然后为每一层寻找能够实现最大程度重用的重构方法。
● 界面重用策略
界面模拟方法将基于文本的旧界面包装为新的图形界面。旧界面运行在终端上,新界面可以是基于PC的图形界面,也可以是运行在浏览器上的HTML页面。新用户界面通过一个界面模拟工具与旧界面通信。此方法重用率相当高。但是不修改既存系统会同时将旧系统的结构性缺点全部继承下来。
基于客户端的Web应用(Java Applet)Applet可以实现从界面、逻辑到数据库的许多功能。完全用Java语言重写一个系统是不现实的,重用率也不会很高,这不是软件再工程所提倡的。已有许多Applet自动转化工具,而且其转化后代码的重用率相当高。
基于服务器端的Web应用即重新开发界面。这种方法看上去没有重用既存界面代码,其实不然。首先,界面设计完全可以重用,从而节省设计时间;其次,我们可以将某些界面做成可重用的,这样也会减少工作量。
● 逻辑层包装原则
通过对逻辑层的分解可以得到可重用和不可重用的两部分代码。对可重用部分可直接使用,对于不可重用部分则应尽量通过各种包装技术按统一标准将其改造成可重用构件。包装方法有很多,如对象包装法、部件包装法等。
● 数据层重用策略
数据层通常要求更高的重用率。逻辑和数据休戚相关,如果改动数据库,逻辑势必不能正常运行,对逻辑部分的重用也就无从谈起。如果非改不可的话,也要以保证最大限度的重用为原则,争取做到只增不删,以保证数据的完整性。
软件再工程分为哪两个部分
答:软件再工程的两部分:首先,逆向过程:从代码开始推导出设计或是规格说明(可理解性);其次,改善软件的静态质量(可维护性、复用性或演化性)。
为什么实施软件再工程
(1)再工程可帮助软件机构降低软件演化的风险
(2)再工程可帮助机构补偿软件投资
(3)再工程可使得软件易于进一步变革
(4)软件再工程有着广阔的市场
(5)再工程能力扩大CASE工具集(如:Aidedsoft)
(6)再工程是推动自动软件维护发展的动力
㈤ 什么是软件再工程软件再工程的主要活动有哪些
什么是软件再工程
软件再工程是指对既存对象系统进行调查,并将其重构为新形式代码的开发过程。最大限度地重用既存系统的各种资源是再工程的最重要特点之一。从软件重用方法学来说,如何开发可重用软件和如何构造采用可重用软件的系统体系结构是两个最关键问题。不过对再工程来说前者很大一部分内容是对既存系统中非可重用构件的改造。软件工程再工程是以软件工程方法学为指导,对程序全部重新设计、重新编码和测试,为此可以使用case工具(逆向工程和再工程工具)来帮助理解原有的设计。在软件再工程的各个阶段,软件的可重用程度都将决定软件再工程的工作量。
主要活动
在不破坏软件的前提下,将旧版.NET软件迁移到更加灵活、广泛和可维护的架构中;
采用MVC、MVP和MVVM模式重构Web应用程序;
提出正确的问题,以预测可能发生的重构问题;
规划和组织再工程项目,在恰当的时间将合适的技术运用到每一个任务;
采用创新的双重测试使得单元测试更加有效;
应用依赖倒置打破紧耦合,并促进开发和测试;
应用源代码控制、缺陷跟踪和持续集成;
在未接触业务逻辑之前,通过“清理”旧版解决方案进行改善;
建立坚实的开发基础结构以支持再工程项目;
重构服务,涵盖知识库、域模型和命令调度程序的使用等高级技术;
重构控制器/视图或视图模型/视图对。
㈥ 软件再工程的过程
典型的软件再工程过程模型如图所示,该模型定义了6类活动。在某些情况下这些活动以线性顺序发生,但也并非总是这样,例如,为了理解某个程序的内部工作原理,可能在文档重构开始之前必须先进行逆向工程。
在图中显示的再工程范型是一个循环模型。这意味着作为该范围的组成部分的每个活动都可能被重复,而且对于任意一个特定的循环来说,过程可以在完成任意一个活动之后终止。下面简要地介绍该模型所定义的6类活动。1.库存目录分析每个软件组织都应该保存其拥有的所有应用系统的库存目录。该目录包含关于每个应用系统的基本信息(例如,应用系统的名字,最初构建它的日期,已做过的实质性修改次数,过去18个月报告的错误,用户数量,安装它的机器数量,它的复杂程度,文档质量,整体可维护性等级,预期寿命,在未来36个月内的预期修改次数,业务重要程度等)。每一个大的软件开发机构都拥有上百万行老代码,它们都可能是逆向工程或再工程的对象。但是,某些程序并不频繁使用而且不需要改变。此外,逆向工程和再工程工具尚不成熟,仅能对有限种类的应用系统执行逆向工程或再工程,代价又十分高昂,因此,对库中每个程序都做逆向工程或再工程是不现实的。下述3类程序有可能成为预防性维护的对象。(1)预定将使用多年的程序。(2)当前正在成功地使用着的程序。(3)在最近的将来可能要做重大修改或增强的程序。应该仔细分析库存目录,按照业务重要程度、寿命、当前可维护性、预期的修改次数等标准,把库中的应用系统排序,从中选出再工程的候选者,然后明智地分配再工程所需要的资源。3.文档重构老程序固有的特点是缺乏文档。具体情况不同,处理这个问题的方法也不同。(1)建立文档非常耗费时间,不可能为数百个程序都重新建立文档。如果一个程序是相对稳定的,正在走向其有用生命的终点,而且可能不会再经历什么变化,那么,让它保持现状是个明智的选择。(2)为了便于今后的维护,必须更新文档,但是由于资源有限,应采用“使用时建文档”的方法,也就是说,不是一下子把某应用系统的文档全部都重建起来,而是只针对系统中当前正在修改的那些部分建立完整文档。随着时间流逝,将得到一组有用的和相关的文档。(3)如果某应用系统是完成业务工作的关键,而且必须重构全部文档,则仍然应该设法把文档工作减少到必需的最小量。3.逆向工程软件的逆向工程是分析程序以便在比源代码更高的抽象层次上创建出程序的某种表示的过程。也就是说,逆向工程是一个恢复设计结果的过程,逆向工程工具从现存的程序代码中抽取有关数据、体系结构和处理过程的设计信息。4.代码重构代码重构是最常见的再工程活动。某些老程序具有比较完整、合理的体系结构,但是,个体模块的编码方式却是难于理解测试和维护的。在这种情况下,可以重构可疑模块的代码。为了完成代码重构活动,首先用重构工具分析源代码,标注出和结构化程序设计概念相违背的部分。然后重构有问题的代码(此项工作可自动进行)。最后,复审和测试生成的重构代码(以保证没有引入异常)并更新代码文档。通常,重构并不修改整体的程序体系结构,它仅关注个体模块的设计细节以及在模块中定义的局部数据结构。如果重构扩展到模块边界之外并涉及软件体系结构,则重构变成了正向工程。5.数据重构对数据体系结构差的程序很难进行适应性修改和增强,事实上,对许多应用系统来说,数据体系结构比源代码本身对程序的长期生存力有更大影响。与代码重构不同,数据重构发生在相当低的抽象层次上,它是一种全范围的再工程活动。在大多数情况下,数据重构始于逆向工程活动,分解当前使用的数据体系结构,必要时定义数据模型,标识数据对象和属性,并从软件质量的角度复审现存的数据结构。当数据结构较差时(例如,在关系型方法可大大简化处理的情况下却使用平坦文件实现),应该对数据进行再工程。由于数据体系结构对程序体系结构及程序中的算法有很大影响,对数据的修改必然会导致体系结构或代码层的改变。6.正向工程正向工程也称为革新或改造,这项活动不仅从现有程序中恢复设计信息,而且使用该信息去改变或重构现有系统,以提高其整体质量。正向工程过程应用软件工程的原理、概念、技术和方法来重新开发某个现有的应用系统。在大多数情况下,被再工程的软件不仅重新实现现有系统的功能,而且加入了新功能和提高了整体性能。