第一章软件工程要点
2015-10-18 22:56
183 查看
软件是人通过智力劳动产生的,具有与硬件的不同的特点:
表现形式不同
生产方式不同
要求不同
维护不同
软件的特性包括:
软件是一种逻辑实体,具有抽象性
软件没有明显的制造过程
软件在使用过程中没有磨损、老化的问题、但有退化问题
软件对硬件和环境有着不同的程度依赖
软件的开发至今尚未完全摆脱手工作坊式的开发生产方式,生产效率低
软件是复杂的,而且以后更复杂
软件成本相当昂贵
软件工作牵涉很多社会因素
软件种类分为:系统软件,应用软件;工具软件。
与软件本身特点有关
与软件开发人员有关
对用户需求不明确
缺乏正确的理论指导
软件开发规模越来越大
软件开发复杂度越来越高
消除软件危机的方法有:
对计算机软件有一个正确的认识(软件≠程序)
充分认识到软件开发不是某种个体劳动的神秘技巧,而应该是一种组织良好、管理严密、各类人员协同配合、共同完成的工程项目
推广使用在实践中总结出来的开发软件成功技术和方法
开发和使用更好的软件工具
软件生命周期是指从形成开发软件概念起,所开发的软件使用以后,直到失去使用价值消亡为止的整个过程。一般来说,整个生存周期包括计划(定义)、开发、运行(维护)三个时期,每一个时期又划分为若干阶段。每个阶段有明确的任务,这样使规模大、结构复杂和管理复杂的软件开发变得容易控制和管理。
软件生命周期模型主要包括瀑布模型、快速原型模型、迭代模型
瀑布模型
瀑布模型的软件开发过程与软件生命周期是一致的并且它是由文档驱动,两相邻阶段之间存在因果关系,需要对阶段性的产品进行审批。瀑布模型假定用户的需求是不变的,因此缺乏灵活性。
快速原型模型
快速原型模型在功能上等价于产品的一个子集。根据客户的需要在很短的时间内解决用户最迫切的需要,此时只是部分功能的实现,快速原型模型最重要的目的是确定用户真正的需求并支持需求的动态变化。一般不会单独使用,而和瀑布模型或螺旋模型一起使用。
迭代模型
迭代模型是统一软件开发过程(RUP,Rational Unified Process)推荐的软件开发模型。迭代模型指在进行较大规模的项目任务时,将迭代开发分为若干次,每次迭代都要从项目的管理及计划、分析、设计、实现到运作整个过程。如图,纵向就是每次迭代,而横向就是每次迭代要经过的阶段。
敏捷开发过程:
敏捷开发模型是一种以人为核心、迭代、循序渐进的开发框架。在敏捷开发中,软件项目的构建被切分成多个子项目,各个子项目的成功都经过测试,具备集成和可运行的特征。在软件工程实际运用中,只采用单一一种模型显然不能适应项目负责的需求变化,采用各种模型组合开发的形式在实际运用中较为广泛,而敏捷开发模型是多种软件开发项目管理方法的集合,其中包括了极限编程(XP)、迭代增量化模式(Scrum)等十几种软件开发模型。
软件生命周期与软件开发模型的关系
从对软件生命周期和软件开发模型的介绍,可以总结出软件生命周期是一定的,而软件开发模型是在软件生命周期中如何进行软件开发的一种策略,它是由软件工程师在实际的实践工作中总结和提炼出来的一种能够覆盖软件生命周期的框架。在软件生命周期内可以选择多个软件开发模型来对软件进行开发。
C/S(Client/Server)结构,即大家熟知的客户机和服务器结构。它是软件系统体系结构,通过它可以充分利用两端硬件环境的优势,将任务合理分配到Client端和Server端来实现,降低了系统的通讯开销。
B/S(Browser/Server)结构即浏览器和服务器结构。它是随着Internet技术的兴起,对C/S结构的一种变化或者改进的结构。在这种结构下,用户工作界面是通过WWW浏览器来实现,极少部分事务逻辑在前端(Browser)实现,但是主要事务逻辑在服务器端(Server)实现,形成所谓三层3-tier结构。这样就大大简化了客户端电脑载荷,减轻了系统维护与升级的成本和工作量,降低了用户的总体成本(TCO)。
软件项目管理的内容主要包括:软件项目需求管理、软件项目估算与进度管理、软件项目配置管理、软件项目风险管理、软件项目质量管理、软件项目资源管理。
软件项目管理中存在的误区:
项目经理不够专业
项目计划缺乏纲领性
缺乏有效的管理意识
缺乏有效的沟通制度和机制
风险管理意识淡泊
项目干系人的不确定性
缺乏项目团队的合理分工
解决软件项目管理中存在的误区的有效策略:
项目经理接受系统的项目管理知识培训室非常必要的
计划的制定需要在一定条件的限制和假设之下不断完善
加强项目管理方面的培训并考核
制定有效的沟通制度和沟通机制
掌握项目风险管理所必备的知识
实现干系人的需求和愿望
项目经理应对项目成员的责任进行合理的分配和明示
软件配置管理的任务:
一个完整的SCM系统要具有五个核心功能:配置标识、版本控制、变更控制、配置状态统计和配置审核。
1.1软件
软件包括程序和文档两部分。软件是人通过智力劳动产生的,具有与硬件的不同的特点:
表现形式不同
生产方式不同
要求不同
维护不同
软件的特性包括:
软件是一种逻辑实体,具有抽象性
软件没有明显的制造过程
软件在使用过程中没有磨损、老化的问题、但有退化问题
软件对硬件和环境有着不同的程度依赖
软件的开发至今尚未完全摆脱手工作坊式的开发生产方式,生产效率低
软件是复杂的,而且以后更复杂
软件成本相当昂贵
软件工作牵涉很多社会因素
软件种类分为:系统软件,应用软件;工具软件。
1.2软件危机
软件危机产生的原因:与软件本身特点有关
与软件开发人员有关
对用户需求不明确
缺乏正确的理论指导
软件开发规模越来越大
软件开发复杂度越来越高
消除软件危机的方法有:
对计算机软件有一个正确的认识(软件≠程序)
充分认识到软件开发不是某种个体劳动的神秘技巧,而应该是一种组织良好、管理严密、各类人员协同配合、共同完成的工程项目
推广使用在实践中总结出来的开发软件成功技术和方法
开发和使用更好的软件工具
1.3软件工程
软件工程包括三个要素:方法、工具和过程。软件生命周期是指从形成开发软件概念起,所开发的软件使用以后,直到失去使用价值消亡为止的整个过程。一般来说,整个生存周期包括计划(定义)、开发、运行(维护)三个时期,每一个时期又划分为若干阶段。每个阶段有明确的任务,这样使规模大、结构复杂和管理复杂的软件开发变得容易控制和管理。
软件生命周期模型主要包括瀑布模型、快速原型模型、迭代模型
瀑布模型
瀑布模型的软件开发过程与软件生命周期是一致的并且它是由文档驱动,两相邻阶段之间存在因果关系,需要对阶段性的产品进行审批。瀑布模型假定用户的需求是不变的,因此缺乏灵活性。
快速原型模型
快速原型模型在功能上等价于产品的一个子集。根据客户的需要在很短的时间内解决用户最迫切的需要,此时只是部分功能的实现,快速原型模型最重要的目的是确定用户真正的需求并支持需求的动态变化。一般不会单独使用,而和瀑布模型或螺旋模型一起使用。
迭代模型
迭代模型是统一软件开发过程(RUP,Rational Unified Process)推荐的软件开发模型。迭代模型指在进行较大规模的项目任务时,将迭代开发分为若干次,每次迭代都要从项目的管理及计划、分析、设计、实现到运作整个过程。如图,纵向就是每次迭代,而横向就是每次迭代要经过的阶段。
敏捷开发过程:
敏捷开发模型是一种以人为核心、迭代、循序渐进的开发框架。在敏捷开发中,软件项目的构建被切分成多个子项目,各个子项目的成功都经过测试,具备集成和可运行的特征。在软件工程实际运用中,只采用单一一种模型显然不能适应项目负责的需求变化,采用各种模型组合开发的形式在实际运用中较为广泛,而敏捷开发模型是多种软件开发项目管理方法的集合,其中包括了极限编程(XP)、迭代增量化模式(Scrum)等十几种软件开发模型。
软件生命周期与软件开发模型的关系
从对软件生命周期和软件开发模型的介绍,可以总结出软件生命周期是一定的,而软件开发模型是在软件生命周期中如何进行软件开发的一种策略,它是由软件工程师在实际的实践工作中总结和提炼出来的一种能够覆盖软件生命周期的框架。在软件生命周期内可以选择多个软件开发模型来对软件进行开发。
1.4软件开发主流技术
软件系统体系结构应用模式大体上分为主机终端模式、文件服务器模式、C/S模式、B/S模式。C/S(Client/Server)结构,即大家熟知的客户机和服务器结构。它是软件系统体系结构,通过它可以充分利用两端硬件环境的优势,将任务合理分配到Client端和Server端来实现,降低了系统的通讯开销。
B/S(Browser/Server)结构即浏览器和服务器结构。它是随着Internet技术的兴起,对C/S结构的一种变化或者改进的结构。在这种结构下,用户工作界面是通过WWW浏览器来实现,极少部分事务逻辑在前端(Browser)实现,但是主要事务逻辑在服务器端(Server)实现,形成所谓三层3-tier结构。这样就大大简化了客户端电脑载荷,减轻了系统维护与升级的成本和工作量,降低了用户的总体成本(TCO)。
1.5软件项目管理
项目管理:就是在项目活动中运用一系列的知识、技能、工具和技术,以满足或超过相关利益者对项目的要求。软件项目管理的内容主要包括:软件项目需求管理、软件项目估算与进度管理、软件项目配置管理、软件项目风险管理、软件项目质量管理、软件项目资源管理。
软件项目管理中存在的误区:
项目经理不够专业
项目计划缺乏纲领性
缺乏有效的管理意识
缺乏有效的沟通制度和机制
风险管理意识淡泊
项目干系人的不确定性
缺乏项目团队的合理分工
解决软件项目管理中存在的误区的有效策略:
项目经理接受系统的项目管理知识培训室非常必要的
计划的制定需要在一定条件的限制和假设之下不断完善
加强项目管理方面的培训并考核
制定有效的沟通制度和沟通机制
掌握项目风险管理所必备的知识
实现干系人的需求和愿望
项目经理应对项目成员的责任进行合理的分配和明示
软件配置管理的任务:
一个完整的SCM系统要具有五个核心功能:配置标识、版本控制、变更控制、配置状态统计和配置审核。
相关文章推荐
- 结对编程
- 结对编程
- sqlite数据库学习
- Shell+Curl网站状态检查脚本 抓出无法访问的站点
- http之keepalive
- Android_主线程与子线程之间相互通信
- 遥感影像分类精度评价
- 如何在网页中嵌入百度地图
- Object-C ---2
- Unique Binary Search Trees
- SQLLite--判断表是否存在,存在则删除,反之创建
- mybatis动态SQL - like
- STL之hashtable实现
- IOS基础UI之(八)UIScrollView
- ALM需求跟踪矩阵导出出错解决
- 深入浅出JMS(一)——JMS简介
- 理解Unity3d的ForceMode | Understanding ForceMode in Unity3D
- Python(七)python下的内部函数库和第三方函数库
- 遥感应用综述
- java架构师之路:JAVA程序员必看的15本书的电子版下载地址