【软件工程】1.软件工程概述

软件工程概述

一、软件的发展历史
程序设计阶段
软件设计阶段
软件工程阶段

(1)程序设计阶段
在1946年~1955年。对硬件进行开发,规模很小
主要用于科学计算。  

程序设计追求节省空间和编程技巧。
(2)软件设计阶段
在1956年~1970年
硬件增长速度快,性价比越来越高。从科技转化到了商用。

软件开发技术没有重大突破,软件产品的质量不高,生产效率低下,导致了“软件危机”。

(3)软件工程阶段1970年~至今
大量的软件需求被提出,没有相应解决方案。

改变软件开发的技术手段和管理。

采用新的变成思想来开发软件。
采用工程化的思想来管理软件。
目前为止没有从根本上解决软件危机。

二、软件工程的目标
利用工程化的方法.在给定成本、进度的前提下,开发出具有可维护性、正确性、可移植性的软件. 提高软件产品的质量和开发效率,减少维护的困难。


三、软件的复杂性
图形用户界面。程序与文档。数据通信。超大型关系型数据库(NoSQL不仅关系型数据库)。负载均衡集群。

四、软件项目团队中的角色
分析师:接触用户,获得用户的需求,前瞻性估略出要使用的技术,做出需求分析,总结需求使之成为文档,供开发人员使用(不编码,只负责调研,需要拥有开发经验和良好的沟通能力)。

软件架构师:通常做一些前沿技术,根据新的框架需求,设计整体框架,

项目经理:目标是在规定的时间内把用户的需求完成,管理整个项目团队的开发,负责控制开发进度,分配开发任务。

设计人员:对系统的原型进行设计,对UI进行设计,对程序每一个功能设计,数据库设计,还有美工等。

程序员:开发人员,按照设计人员的设计进行代码开发。

测试人员:对开发完成的软件进行各种测试,将出现问题的部分反馈给开发人员做修改。

运维人员:将软件部署到用户那里去用,通常是在晚上进行部署和维护,工作地点通常是在用户的服务器机房里(用户那里一出现问题,首先挨骂的就是运维人员)。


五、两种软件开发模型
(1)瀑布模型
可行性研究与计划----->可行性研究报告
需求分析----->需求说明书
设计----->设计文档
开发----->程序
测试----->测试报告
维护


由于用户需求经常多变,瀑布模型就很少再使用
(2)螺旋模型
可行性研究与计划----->需求分析----->设计----->开发----->测试----->维护
     |                                                                                                                 |  
      --------------------------------------------------------------------------------------


计划是可控的,项目经理可以制定各个时期的开发进程。

六、软件开发阶段
(1)可行性分析
a.技术可行性:能不能使用现有技术来实现这个需求。
b.经济可行性:这个项目接下来有没有钱可赚。
c.社会可行性(Don't be evil):软件不能违反法律,或危害社会秩序。


(2)需求分析
需求是产品的根源
需求工作的优劣对产品影响最大
【软件工程】1.软件工程概述

医疗、物流、机关、*的系统要遵循各种行业标准,要贴切他们的业务需求,这个时候我们就要分析到位。



(3)软件设计

【软件工程】1.软件工程概述



(4)实现阶段

【软件工程】1.软件工程概述



(5)测试阶段
【软件工程】1.软件工程概述
测试人员是和开发人员经常进行PK,开发人员认为自己开发的程序越少bug越好,但是测试人员认为自己测试的程序发现越多错误,越能突出自己的能力,绩效越好。这就是开发与测试万年对立的原因。测试与开发出现分歧之后最好的办法就是找自己的上级进行调解。

(6)维护阶段
a.为客户提供故障诊断支持

b.应用程序要求的任何软件升级


转载请注明出处:http://blog.****.net/acmman/article/details/50302087