软件工程学习心得.docx
《软件工程学习心得.docx》由会员分享,可在线阅读,更多相关《软件工程学习心得.docx(8页珍藏版)》请在冰点文库上搜索。
软件工程学习心得
软件工程学习心得
通过这一学期的软件工程和计算机三级数据库的学习,对软件工程学和软件的开发过程有了一些初步的认识,也意识到了工程思想在软件开发过程中的作用。
(一)软件工程学:
“软件工程(SE)”的概念是为了有效地控制软件危机的发生而被提出来的,是指导计算机软件开发和维护的一门工程学科。
采用工程的概念、原理、技术和方法,把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术结合起来,以经济地开发出高质量的软件并有效维护它。
◇软件项目过程包括开发、管理、改进三个部分——软件工程三段论
软件开发
项目管理
软件改进
1、
编码
详细设计
概要设计
可行性分析
需求分析
软件开发:
维护
产品提交
测试
2、软件改进过程:
相当于对软件开发过程和软件管理过程的“工艺流程”进行管理和改进,如果没有好的工艺生产不出好的产品,它包括对开发过程和管理过程的定义和改进。
流程:
启动---诊断---建立---实施---评估(若不行,则改进)
项目管理者规划软件开发、控制软件开发的过程,相当于生产线上的管理过程,管理过程是伴随开发过程。
进行的过程。
3、项目管理:
◇软件生存期模型:
软件工程有很多环节,软件工程模型用一定的流程将各个环节连接起来,并用规范的方式造作全过程,就可以形成不同的生存期模型,这个生存期模型就是在项目规划过程中选择的策略。
常见的生存期模型有:
瀑布Waterfall;V模型V-shaped;原型Prototyping;增量Incremental;螺旋式Spiral。
这些模型各有特点,在实际应用中应该根据需求进行选择,例如:
WaterFallmodel要求一个阶段的输出是下阶段的输入,没有反馈,项目目标固定不变(WaterFallmodel过于理想化,不适合现代软件开发;但其“线性”思想易为掌握,在其他模型中都能找到其影子)所以适合于:
▲在项目开始前,项目的需求很明确;
▲在项目开始前,解决方案也很明确;
▲类似的项目如:
公司的财务系统、库存管理系统、短期项目。
(二)软件开发过程:
ⅰ可行性研究:
说明该软件开发项目的实现在技术上、经济上和社会条件上的可行性,评述为合理地达到开发目的可能选择的各种方案。
1、经济可行性:
进行成本效益分析,评估项目的开发成本,估算开发成本是否会超过项目预期的全部利润.分析系统开发对其它产品或利润的影响。
2、技术可行性:
根据客户提出的系统功能,性能及实现系统的各项约束条件,从技术的角度研究实现系统的可行性。
3、法律可行性:
研究在系统开发过程中可能涉及的各种合同,侵权,责任以及各种于法律相抵触的问题。
4、开发方案的选择性:
提出并评价实现系统的各种看法方案.从中选出一种用于软件项目开发。
ⅱ需求分析:
软件项目的失败大半源于需求分析没有做好,软件开发人员首先应该明确用户的意图和要求,正确获取用户的需求,然后形成一个软件需求规格,它是软件开发的重要基础。
需求分析一章介绍了需求分析如下的5个过程及基本任务(需求获取->需求分析->需求规格说明->需求验证以及变更管理)并重点介绍了需求分析中的建模方法:
需求工程
需求管理
变更管理
需求规格说明
需求验证
需求分析
需求获取
需求开发
软件需求分析的基本原则:
(1)必须能够表达和理解问题的数据域和功能域
(2)必须按自顶向下,逐层分解的方式对问题进行分解和不断细化
(3)要给出系统的逻辑视图和物理视图
需求建模方法:
1、关联模型——定义系统与环境的关联关系(ATM系统)
2、行为模型——是描述系统的总体行为:
数据流模型;状态机模型
3、数据模型——定义系统处理的数据逻辑形式(E-R图与数据流程图)
4、结构化方法——最早的开发方法,其中有代表性的是美国的Coad/Yourdon的面向数据流的开发方法、欧洲Jackson/Warnier-Orr的面向数据结构的开发方法,以及日本小村良彦等人的PAD开发方法(业务流程图、数据流图、数据字典的使用)
5、面向对象模型——将现实世界的“视图”转化为用对象来描述的模型描述对象之间的各种关系,以满足软件系统的要求。
面向对象的建模工具——UML(Rose、visio:
可以利用代码生成器将UML转换成多种程序设计语言代码,或反向)
6、原型方法——按照用户的需要,快速形成一个操作流程界面,可能只是一个框架,具体的功能没有实现,只是结果静态的操作流程,以便与用户快速就需求达成一致;主要考虑系统的功能需求,很少考虑非功能需求(类型:
进化型、抛弃型)
ⅲ设计阶段:
包括概要设计、详细设计、编码三部分,依次推进,概要设计文档是详细设计的基础,详细设计文档又是编码的基础。
概要设计部分主要从结构化和面向对象两个角度较少设计方法。
分块介绍了数据设计(以数据库设计为核心)、架构设计、界面设计、模块设计等设计模型。
同时介绍了主机、C/S、B/S的体系结构,详细介绍了应用程序框架的概念及MVC设计模型的应用。
概要设计根据需求规格对系统的结构、接口、模块等进行设计,并根据设计结果产生概要设计文档。
详细设计过程根据概要设计形成的结果对各个模块的内部实现进行规划设计,并根据设计结果产生详细设计文档。
详细设计部分介绍了如何采用结构化和面向对象的方法从视图、控制、模型三层模型上细化概要设计的各个模块,并完成伪代码为编码阶段做准备。
编码阶段依据详细设计文档实现设计中的算法、功能、接口、数据结构并通过配置管理控制管理变更,并形成编码文档。
这部分主要介绍了编码的结构化和面向对象化的方法,以及编码过程中的标准和规范,重用原则。
设计阶段流程:
需求分析经评审通过后,开发部组织人员进行系统设计;系统设计完成后,开发部组织相关专业部门进行评审并获得用户的确认。
系统设计和系统详细设计均属于评审范围。
ⅳ编码测试阶段
第7章主要讲述了测试的方法、技术、测试级别以及测试的管理过程。
透过这章学习,我了解了静态测试和动态测试的方法,黑、灰、白盒测试的区别及应用。
课本从测试方法讲起,在白盒测试的方法中介绍了结构化的测试方法和面向对象的测试方法,重点讲述了传统的结构化的逻辑覆盖方法。
在黑盒测试中引入了等价类划分、边界值测试、错误猜测、规范导出等方法。
讲授了在不同单元、集成、系统以及接受等不同级别测试中采用的不同的测试方法以及包括测试计划、测试开发、测试执行、测试跟踪、测试评估等的测试管理过程。
工作流程:
系统设计完成并经评审通过后,开发部组织人员进行代码编制(如采用外包方式编码,开发部要组织专门人员为外包单位提供代码编制规范和技术文档要求,并负责监控整个编码过程)。
编码过程中,开发部相关人员应对完成后的每一模块组织进行过程测试;编码完成后,开发部组织相关人员对系统进行测试。
测试分符合性测试和功能性测试两步进行,测试完成后,开发部组织相关专业部门对系统进行整体测评。
ⅴ项目提交阶段
主要讲述产品提交需要完成的主要——提交产品和进行培训。
提交产品的同时要提交相应的手册等,包括用户使用手册、管理员手册等。
要求一个说明书,双方在提交产品说明书上签字,以说明产品提交结束。
ⅵ项目维护
阐述了维护的类型和任务:
使用户和系统服务员使用得满意;预测变更,惊醒更多的跟踪和控制。
维护过程也是软件中非常重要的一个环节,在软件开发中占得时间和人力比重都比较大,必须重视!