一、软件工程是把软件看成一个需要通过需求分析、设计、实现、测试、管理和维护的工程产品。
个人看来,软件工程是解决“软件危机”的一种对策,即通过系统性的、规范化的、可定量的过程化方法去开发和维护软件。
二、软件开发不仅仅是编程。软件开发是一项包括需求获取、开发规划、需求分析和设计、编程实现、软件测试、版本控制的系统工程。是一系列最终构建出软件产品的活动。
三、不同的教科书对软件的特点描述不尽相同,但大体上包括四点。
1.复杂性:例如微软的Windows和Office软件,大型软件包含上百万行代码和上万个文件。
2.不可见性:例如微软的Windows和Office软件,专属软件的源代码通常被公司视为私有财产而予以严密的保护,用户无法看见源代码。
3.服从性:例如微软的Windows和Office软件,新的64位程序必须在64位操作系统中运行,同时需要64位CPU的硬件支持可以运行,同时软件需要符合各类规范文件。
4.易变性:例如微软的Windows和Office软件,不断推陈出新,发布新的功能。软件较于硬件,更便于更新和修改。
四、什么是软件危机:
软件危机(英语:Software Crisis)是早期计算机科学的一个术语[1],是指在软件开发及维护的过程中所遇到的一系列严重问题,这些问题皆可能导致软件产品的寿命缩短、甚至夭折。[2]软件开发是一项高难度、高风险的活动,由于它的高失败率,故有所谓“软件危机”之说。[3]软件危机的本源是复杂、期望和改变。这个术语用来描述正急遽增加之电脑的力量带来的冲击和可能要处理的问题的复杂性。从本质上来说,它谈到了写出正确、可理解、可验证的计算机程序的困难。
个人看来,软件危机的表现就是软件开发难度大,常常表现在项目运行超过预算、超过时间、软件质量低下、软件不符合需求、项目难以维护。
为了解决软件危机,人们提出了一系列的解决方法,比如结构化程序设计,面向对象的开发,CMM,UML等等。归根结底,需要通过软件工程的方法,系统性的、规范化的、可定量的过程化方法去开发和维护软件。细化来说,例如重视设计和实现过程的资料、科学的技术手段、规范的管理等。
五、软件工程有三要素:方法,过程,工具。
方法包括项目管理,分析,设计,程序的编写,测试和质量控制。可分为重量级方法和轻量级方法。作用是通过科学的技术手段管理软件的开发和维护。
过程从早期的瀑布式(Waterfall)的开发模型到后来出现的螺旋式的迭代(Spiral)开发,以致最近开始兴起的敏捷软件开发(Agile)。作用是给出具体的开发过程的定义。
工具为软件开发服务的各种软件和硬件,包括软件建模工具、软件实施工具、软件运行平台、软件测试工具等等。作用是支撑软件的开发和维护。
2021-03-06
原文:https://www.cnblogs.com/hzau-plugin/p/14492048.html