软件工程(SoftWare Engineering)的框架可概括为:目标、过程和原则。
(1)软件工程目标:生产具有正确性、可用性以及开销合宜的产品。正确性指软件产品达到预期功能的程度。可用性指软件基本结构、实现及文档为用户可用的程度。开销合宜是指软件开发、运行的整个开销满足用户要求的程度。这些目标的实现不论在理论上还是在实践中均存在很多待解决的问题,它们形成了对过程、过程模型及工程方法选取的约束。
(2)软件工程过程:生产一个最终能满足需求且达到工程目标的软件产品所需要的步骤。软件工程过程主要包括开发过程、运作过程、维护过程。它们覆盖了需求、设计、实现、确认以及维护等活动。需求活动包括问题分析和需求分析。问题分析获取需求定义,又称软件需求规约。需求分析生成功能规约。设计活动一般包括概要设计和详细设计。概要设计建立整个软件系统结构,包括子系统、模块以及相关层次的说明、每一模块的接口定义。详细设计产生程序员可用的模块说明,包括每一模块中数据结构说明及加工描述。实现活动把设计结果转换为可执行的程序代码。确认活动贯穿于整个开发过程,实现完成后的确认,保证最终产品满足用户的要求。维护活动包括使用过程中的扩充、修改与完善。伴随以上过程,还有管理过程、支持过程、培训过程等。
(3)软件工程的原则是指围绕工程设计、工程支持以及工程管理在软件开发过程中必须遵循的原则。
软件工程是计算机软件的一个分支学科,主要研究软件开发全过程中的各种技术;
主要包括:
1、软件开发的原则与策略,
2、软件开发方法与软件过程模型,
3、软件标准与软件质量的衡量;
4、软件开发的组织与项目管理,......
软件工程是计算机软件的一个分支学科,主要研究软件开发全过程中的各种技术;
主要包括:
1、软件开发的原则与策略,
2、软件开发方法与软件过程模型,
3、软件标准与软件质量的衡量;
4、软件开发的组织与项目管理,
5、软件版权。
它一般应用于大型的软件系统的开发。
其开发团队包括:用户、项目负责人、分析员、初高级程序员、资料员、操作员。
软件工程是指利用工程的概念、原理、技术和方法来开发、维护软件,把经过时间考验而证明正确的管理技术和当前能够得到的
最好的技术方法结合起来,指导计算机软件的开发和维护的工程学科。
软件工程强调使用生存周期方法学、结构分析和结构设计技术以及新兴的面向对象分析和设计技术。
生存周期学(SDLC--系统开发生命周期)是指从软件开发项目的提出到软件产品完成使命而报废的整个时期;
分为八个阶段:
1、问题定义:问题是什么? 完成规模和目标的报告。
2、可行性研究:有可行性么?是否值得去做? 完成系统的实际模型,数据流图,成本/效益分析。
3、需求分析:系统必须做什么? 系统逻辑模型,数据流图,数据字典,算法描述,需求说明书。
4、总体设计:如何解决此问题? 可行的解法,系统流程图、成本/效益分析,推荐的系统结构,层次图 /结构图。
5、详细设计:如何实现此系统? 编码的规格说明。
6、编码和单元测试:正确的程序模块。 程序清单,单元测试方案和结果。
7、综合测试:符合要求的软件。 综合测试方案和结果,完整一致的系统配置。
8、软件维护:持久的满足用户。 完整准确的维护记录,需求的软件。
需求分析阶段:客户的业务活动进行分析,明确在用户的业务环境中,软件系统应该做什么。客户的要求一般包括"功能要求、性能要求、可靠性要求、安全保密要求、开发费用、开发周期及可使用的资源"。
用户的业务需要经用户与软件人员讨论后,理解用户的要求,并将双方共同的理解明确的写成一份文档---需求说明书。
需求说明书主要有三个作用:1、作为用户和软件人员之间的合同,为双方相互了解提供基础。2、反映问题的结构,可以作为软件人员进行设计和编程的基础。3、作为验收的依据,即作为选取测试用例的依据。
需求说明书应该达到完整、一致、精确、无二义,既简明易懂并易于修改和维护。
在需求阶段、还应考虑设计的限制"成本、进度、可用的软硬件资源";客户验收准则"客户需求的细化";编写"初步用户手册"及复查需求说明书。
谈谈你对软件工程的认识
对软件工程的一点看法--希望能够抛砖引玉
在这里看到很多网友的高论,很有启发。而且目前市面上也涌现出一批面向不同方面的软件过程的书籍,可是在这里,我一直没找到真正对实践有指导意义的,可操作的应用方法,所以现在这儿抛块砖,望各位高手指正。
我个人的理解,软件工程就是按照工程学的管理方式,有组织、有计划的,在一定的质量基础、时间限度和成本范围内,实现功能明确的软件系统。而且,软件工程在企业范围内运行,一定需要企业资源的支持,要与企业的经营、决策、管理体系联系在一起,才能够被踏踏实实的落实下来。
软件业作为一个服务业,要想得到发展,首先必须形成一个对软件服务有迫切需要的市场。其次,这个市场中的消费者必须具备足够的购买力。软件的消费群体简单一点,可以分为个体消费和企业消费。中国的企业群体,数量庞大,但是质量不高。上规模的企业极少,因此,中国的企业对大型软件的消费肯定是有限的,软件的个人消费,至少目前在中国,还是不成气候。因此,国内目前能够形成比较大规模的独立市场的,肯定是小规模的软件系统。
此外,质量的好与坏也不能绝对而论。比如说,你花500元,买双皮鞋,只穿了一个月就坏了,肯定是劣质产品。可是如果你只花了5元买这双鞋,还是穿了一个月就坏了,他就是个优质产品了。软件也是一样。
还有一个,就是软件生命周期问题。在国外,很多中、大型企业里,软件系统已经作为企业的命脉在运行,这些企业当然需要长期、稳定的软件服务、开发体系作为保障,因此相对来说,对于软件的功能需求就比较明确,而国内的中小企业在运营方面本来就把灵活多变作为生存武器,当然不可能有比较长期的经营计划,更不可能运用软件系统进行全面企业管理。这就导致对软件系统需求的短期行为,因此,他们更加希望一次性购买功能有限的软件系统,而不是长期连续的软件服务。
如果上面的分析有代表性的话,那就是说我们现在必须对开发这类软件形成一套非常有效的工程方法:
1。规模小。
2。成本低
3。质量要求不高。
4。售后服务有限。
5。生命期短。
我想,对于这类系统,RUP未必是一套好的方法。另外,我还想谈谈对软件人员素质的看法。
从我个人的经历来说,我觉得我们对于软件工程师的培养方法有问题。理论上说,软件只要设计了一个好的结构,解决了所有的技术难点,剩下的代码高中生就能做。实际上我们的很多名牌大学的计算机专业毕业生都不能很好的Coding。尤其是现在有了VB、PB、JAVA之后,大家似乎认为计算机的体系结构都不用关心了。我曾经经手的几个软件项目中,很多工程师对于用C语言开发Win32多线程、事件驱动、死锁、内存分配等问题根本束手无策。我不相信这些问题可以靠很好的文档解决。实际上,能够用OO的工具工作,根本不代表能够进行OO的系统分析与设计。
话又说回来,在中国,有10年以上软件开发背景的人,又有几个?而且他们在过去10年里的经验,更多的是小项目的Coding,而不是大项目的管理与系统分析。而一个好的系统分析师,需要的是实践、实践、再实践。假如说我们的商业环境中根本没有大型的软件项目,怎么可能有优异的系统分析师呢?
所以,我想,目前我们的问题,是工程师的技术水平、知识面与管理意识、管理方法同样重要,在这样的前提下,我们是不是要探索一下真正适合我们的软件工程方法呢?
谈一谈对软件工程专业的认识
1、软件工程是一门指导软件开发和维护的工程学科,主要研究软件开发和维护的工程技术和软件项目管理等内容,其中涉及如何保证软件产品的质量和可靠性,如何提高软件开发效率和拥护满意度等。
2、软件工程目标:生产具有正确性、可用性以及开销合宜的产品。正确性指软件产品达到预期功能的程度。可用性指软件基本结构、实现及文档为用户可用的程度。开销合宜是指软件开发、运行的整个开销满足用户要求的程度。这些目标的实现不论在理论上还是在实践中均存在很多待解决的问题,它们形成了对过程、过程模型及工程方法选取的约束。
3、软件生产历经4大阶段分别为:程序设计阶段(1946-1956年)、软件开发阶段(1956-1968年)、软件工程阶段(1968年以后)、计算机辅助软件工程阶段
4、常见的软件过程模型:边改边做模型、瀑布模型、演化模型、增量迭代模型、喷泉模型
5、软件过程的研究,标志着人们为解决软件危机问题,把关注的焦点由编程转移到了软件开发的整个过程,包括分析、设计、编程和测试4个核心阶段和需求调研、运行与维护两个延伸阶段说明软件质量、软件开发效率、软件的可靠性、可维护性问题涉及了软件生存周期的所有阶段。
6、软件生存周期:一个软件从定义到开发、使用和维护,直到最终被弃用,要经历一个漫长的时期,通常把软件经历的这个漫长的时期称为生存周期。软件的生存周期可分为八个阶段:①问题定义;②可行性研究;③需求分析;④总体(概要)设计;⑤详细设计;⑥编码与单元测试;⑦综合测试;⑧软件维护。
7、需求分析:系统开发前期需求分析很重要,它是为了有效解决用户问题的需要进行的一项工程活动,所需要考虑的需求问题是功能需求、数据需求、性能需求和接口需求,开发者承担分析任务,核心是用户。其步骤有三个:①获取客户需求,客户泛指某个人或机构部门等,一般方法是调查,包括访谈、座谈、问卷、跟班和收集资料,需求规约可表达用户的软件价值。②建立需求模型,它是用户需求的图解,一些常用的模型有:业务树图、用例图、活动图。分别用于结构化需求建模、系统业务举例和反映系统工作流程。③进行需求验证,要验证的主要内容有:有效性验证、一致性验证、完整性验证、现实性验证和可检验性验证。
。。。
感悟:
了解了什么是“软件危机”,透过软件工程于解决“软件危机”的重要性、软件工程三条重要线索、软件工程知识体系函括内容及软件工程各类生存期模型,我对软件工程思想及“工程化”软件开发的流程有了较系统的了解,透过软件工程的起源,认识到:实现软件工业的产业化,软件工程必须是真正意义上的工程化。从软件开发三条线索(开发、管理、改进)来看,软件开发的过程必须规范化(各阶段都必须形成相应文档;编码必须依照通用可读性严格遵照编程规范……);软件项目管理的核心是项目规划和项目跟踪控制,保证软件工程开发的成功完成,软件开发流程的规范化在软件项目中有着重要的作用,通过不断地优化和规范过程,企业可以提高软件生产能力。
从需求分析到维护,透过软件的开发流程具体实施的学习,我对软件项目开发的流程有了更深的理解,例如通过需求规格说明书、可行性研究说明书、数据库设计说明书、需求分析说明书、总体设计说明书、详细设计说明书等六份作业的完成虽然很不完善,但仍让我对需求分析建模和设计中用到的方法有了更好的理解并熟悉了六份文档的格式。学了这门课才知道软件开发中每一阶段都有文档的产生,其管理与应用也是一门大学问……此外,这门课程里讲授了很多我以前从未接触过的方法和软件如UML模型、MVC模型、visio的强大绘图建模功能、这些知识不仅能应用于软件工程,也能应用于其他的很多领域,这门课结束了,但这些方面学习我还将继续的。
在软件工程学科中,如何理解软件测试?
测试目的
第一是确认软件的质量;
第二是提供信息,比如提供给开发人员或程序经理的反馈信息;
第三软件测试不仅是在测试软件产品本身,而且还包括软件开发的过程。
软件测试的基本方法
1黑盒测试,也称为功能测试或数据驱动测试,着眼于程序外部结构、不考虑内部逻辑结构、针对软件界面和软件功能进行测试。
2白盒测试,也称为结构测试和逻辑驱动测试,主要用于软件验证,全面了解程序内部结构,对所有逻辑路径进行测试。
3ALAC(act-like-a-customer)测试,是一种基于客户使用产品的知识开发出来的测试方法。
如何理解软件工程三要素 过程,方法和工具
软件方法学是以方法为研究对象的软件学科。
软件工程方法为软件开发提供了 “如何做” 的技术; 软件工具为软件工程方法提供了自动的或半自动的软件支撑环境; 过程是为了获得高质量的软件所需要完成的一系列任务框架,它规定了完成各项任务的工作步。
如何理解软件管理和软件工程、软件架构的关系?
这是我自己的理解!!
总的来说软件工程包括管理和架构。软件工程是采用工程的概念,原理,技术和方法莱卡法和维护软件,以工程的原理和方法来解决软件问题。软件架构笼统的说就是设计出程序的“蓝图”,也就是好似盖房子的骨架。是在软件的详细设计阶段的工作。软件管理则是从项目启动就开始知道软件退役后才终止的一组跟踪和控制活动(因为客户的需求在不断变化,为了控制和管理变化)。
转载请注明~~~原创!
现代软件工程中怎样理解软件这个概念
软件工程的软件应当是广义的,并不仅指“软件系统”或“软件程序”。
这里的“软件”应当包含实现目标软件过程中的很多因素,包括:人员、组织结构、开发质控流程、开发工具、所使用的标准、目标软件背后的业务逻辑、目标软件本身、目标软件服务对象的组织结构等。
这其中,人员也应该考虑得更细一点,包括:生产者(管理、需求、设计、开发、测试、销售等),使用者(管理层、操作层),受益者(如银行系统是各种客户,医院系统是各种患者,当然如果是工业控制系统可能收益者更间接一些)。
如何理解"软件工程是系统工程学与管理学的有机结合
软件工程学的主要内容是软件开发技术和软件工程管理。
软件开发技术包含软件工程方法学、软件工具和软件开发环境;软件工程管理学包含软件工程经济学和软件管理学。
软件工程是一门研究用工程化方法构建和维护有效的、实用的和高质量的软件的学科。它涉及程序设计语言、数据库、软件开发工具、系统平台、标准、设计模式等方面。
在现代社会中,软件应用于多个方面。典型的软件有电子邮件、嵌入式系统、人机界面、办公套件、操作系统、编译器、数据库、游戏等。同时,各个行业几乎都有计算机软件的应用,如工业、农业、银行、航空、政府部门等。这些应用促进了经济和社会的发展,也提高了工作效率和生活效率 。
转载请注明出处51数据库 » 如何理解软件工程 对软件工程应该怎样理解