这学期开设了软件工程这门课程,下面我将简要的叙述这几方面的知识,也可以是一次简单的回顾吧!<br/>
软件工程生命周期可以分为:问题定义,可行性研究,需求分析,总体设计,详细设计,编码和测试,最后就是软件的维护阶段。
软件工程模型又可以分为:瀑布模型,快速原型模型,增量模型,螺旋模型,喷泉模型,另外还有几个特殊的过程
Rational公司的RUP过程中的极速编程,
还有就是敏捷开发的详细过程
微软作为世界上最大的软件公司,自然她的软件开发过程一直受到各方面的关注。
软件工程有可以分为几个阶段:
软件的定义
我们要在这个阶段确定软件开发工程必须完成的总目标;确定工程的可行性;导出实现工程目标应该采用的策略及系统必须完成的功能估计完成该工程需要的资源和成本,还要制定工程进度表。
在问题的定义时我们就应该知道我们要解决的问题是什么,如果还不知道问题是什么就想要解决问题那显然是盲目的,在浪费了时间和金钱后的结果也很可能是没有意义的。在进行可行性研究时我们要知道我们确定的问题是否有可行的解决办法,而可行性研究的目的就是在花费最小的代价用最短的时间来了解问题的可行性,也就是这个问题是否可以解决,是否值得我们去解决,这个时期也不是具体的解决问题的时候,而是最终确定问题的可行性。在这个阶段我们还要做的就是需求分析,在这个时期我们应该明白我们要做这个系统之前我们还必须完成一些什么工作,我们的系统必须要做些什么?
软件的开发
这个阶段应该具体设计和实现在前一个时期定义过的软件,通常分成四个阶段组成:概要设计,详细设计,编码和单元测试,综合测试。
在进行概要设计时我们要从整个角度简单要地知道怎样来实现目标系统。首先要设计出能够实现目标系统的几种方案,而且应用合适的工具来描述每一种可行的方案,分析出每一种可行方案的优点和缺点,还要在充分权衡各种方案的利敝的基础上,选择出一个最佳的方案。
下面就应该详细设计出怎样具体地实现目标系统,在这时期的任务是设计出程序的详细规格说明书。这种规格说明包含必要的细节,有了它程序员就可以根据它来编写实际的程序代码了,这个阶段就是详细地设计每个模块,确定实现模块的功能所需要的算法和数据结构。
在有了详细设计后程序员就可以很容易地编写程序了。然而在编写程序时就必须一边编写一边进行单元测试,以发现程序中潜在的错误。
运行和维护
这个时期的主要任务是使我们开发出来的软件能够持久地满足用户的需要。说得更具体一些,当软件在使用过程中发现错误时应该加以改正;当环境改变时应该修改软件以适应新的环境;当用户有新的要求时应该及时改进软件以满足用户的新需要。通常对维护时期不再进一步划分阶段,但是每一次维护活动本质上都是一次压缩和简化了的定义和开发过程。
但是我有几点疑问,测试难道就必需在开发后期进行吗?在早期的开发过程中也许是可以的,但是现在的软件开发逐渐由小作坊式的开发进入大规模的团队开发,早期介入测试有助于提早发现问题,同时大幅度的降低项目风险有很大的好处。
测试如果与软件生命周期结合,可以有效的保证测试的目标和覆盖率,同时可以充分利用需求人员,设计人员的力量来指导我们的测试,早早发现问题写出高质量的软件。
这只是软件工程的冰山一角,以后我们还有许多的内容还要谈及!