首页 理论教育 软件工程导论-软件工程专业导论

软件工程导论-软件工程专业导论

时间:2023-10-23 理论教育 版权反馈
【摘要】:会上,Sligee从用户和支持软件运行的角度,说明了程序开发与软件开发过程的差别,如图4-9所示[6]。传统的程序设计和开发仅涵盖软件设计和实现部分。只有把“程序开发”转变为“软件开发”,才能体现出软件的商业价值——满足客户需求,为客户服务。图4-10 一个软件项目的实际过程这种相似性引导软件开发和后续活动可以依据传统工业的研究、生产、服务过程,组织软件的开发。如何安装等问题是软件开发工作的首要问题。

软件工程导论-软件工程专业导论

随着IAS计算机的成功和IBM 公司等批量研发计算机,计算机得到了广泛的应用。随之而来的就是软件问题,写一些小程序是容易的,但是如何开发更大规模的程序成为难题。一个人可以编写出1 000行的程序,但是很难编写出100万行的程序。大量的软件项目会延期、严重超出预算,即使交付了,其功能不足或运行不起来也是经常发生的事情。这种现象称为软件危机——无法开发出所期望的软件。

对此,1968年NATO(北大西洋公约组织)在德国慕尼黑,就如何解决软件危机召开会议。参会者意识到:要解决软件危机就必须向其他工程专业学习,建立起软件的全生命周期的概念,提出了“软件工程”。

会上,Sligee从用户和支持软件运行的角度,说明了程序开发与软件开发过程的差别,如图4-9所示[6]。传统的程序设计和开发仅涵盖软件设计和实现部分。而软件开发则要跨越需求分析、设计、实现、安装和维护。只有把“程序开发”转变为“软件开发”,才能体现出软件的商业价值——满足客户需求,为客户服务

图4-9 软件系统的生命周期

Nash在总结了一些软件项目的开发过程后,认为软件开发过程与传统工业的生产过程具有相似的流程,可将其划分为图4-10所示的系统设计预研、系统设计、部件设计、单元设计、单元开发、单元测试、部件测试、系统测试以及维护和后续活动。

图4-10 一个软件项目的实际过程(www.xing528.com)

这种相似性引导软件开发和后续活动可以依据传统工业的研究、生产、服务过程,组织软件的开发。

(1)软件产品需求分析:用户到底需要什么样的软件功能?产品如何使用?如何安装等问题是软件开发工作的首要问题。软件是一个系统,不是一两个简单的功能集合。如果需求是错误的,投入再多的人力资源、成本和时间,也不可能交付用户所期望的产品。

(2)软件设计:与其他工业产品的设计一样,软件设计也应当有一些通用的准则:例如,如何满足用户需求,如何进行可靠性设计,如何验证逻辑完整性等。从软件设计策略和技术看,设计过程也应当是逐步求精的(例如,从顶向下的设计等),也应当考虑代码的结构化和代码的复用,并对开发过程监控,以及更好地使用高级语言。

(3)软件的生产和管理:大规模软件系统的生产面临主要问题之一是难以估计出项目所需的时间。如何借鉴传统工业产品的设计和生产过程,估算软件项目的成本、时间和需要的人力资源。如果项目是分阶段(例如,需求分析、设计、编码和测试)进行的,如何安排每个阶段的人力资源、时间和成本?

(4)测试与质量控制:如何向用户表明提供的软件没有错误或只有很少的错误,不会给用户带来麻烦和灾难?“程序测试只能表明软件有错,而不能证明程序没错! (注意:这句话是软件行业的至理名言。)”

(5)软件的维护和升级:软件的功能总是要扩展的,其中的错误一旦被发现,就需要更新版本解决现有的错误。只有这样,软件产品才具备长期的生命力。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈