《软件工程》第一章学习笔记

学习笔记资料主要来源:
百度百科
西安邮电大学《软件工程》学习课件第一章《软件工程概述》

  1. 软件工程学科的产生背景
    软件工程诞生于60年代末期,是为了解决软件危机的出现。
    20 世纪60年代以前,计算机刚刚投入实际使用,软件设计往往只是为了一个特定的应用而在指定的计算机上设计和编制,采用密切依赖于计算机的机器代码或汇编语言,软件的规模比较小,文档资料通常也不存在,很少使用系统化的开发方法,设计软件往往等同于编制程序,基本上是个人设计、个人使用、个人操作、自给自足的私人化的软件生产方式。
    60年代中期,大容量、高速度计算机的出现,使计算机的应用范围迅速扩大,软件开发急剧增长。高级语言开始出现;操作系统的发展引起了计算机应用方式的变化;大量数据处理导致第一代数据库管理系统的诞生。软件系统的规模越来越大,复杂程度越来越高,软件可靠性问题也越来越突出。原来的个人设计、个人使用的方式不再能满足要求,迫切需要改变软件生产方式,提高软件生产率,软件危机开始爆发 。
    1968年,北大西洋公约组织(NATO)在联邦德国的国际学术会议创造软件危机(Software crisis)一词。而1960年代中期开始爆发众所周知的软件危机,为了解决问题,在1968、1969年连续召开两次著名的NATO会议,并同时提出软件工程的概念。由此,软件工程学科正式诞生。
  2. 软件危机的表现形式及原因
    软件危机包含两方面的问题:1.如何开发软件,以满足不断增长,日趋复杂的需求;2.如何维护数量不断膨胀的软件产品。
    其表现形式有:
    (1) 软件的开发成本和开发进度的估计常常很不准确
    (2) 用户对“已完成”软件系统的不满意现象时常发生
    (3) 软件产品的质量往往不佳
    (4) 软件通常没有适当的文件资料
    (5) 软件常常是不可维护的
    (6) 其他
    产生软件危机的原因有软件本身的特点引起,也有因错误的软件开发与维护方法导致。
    软件本身是逻辑部件,不具有直观可见性,且其规模日趋庞大,开发与管理十分复杂。而忽视了软件需求分析,轻视了文档的重要性,忽略了软件维护等行为最终导致了软件危机的产生。
  3. 软件工程学科的解决软件危机问题的策略和途经
    软件并不等同于程序,软件开发也不是某种个体劳动的神秘技巧,而是一种组织良好、管理严密、各类人员协同配合、共同完成的工程项目。只有对其有了较为深入的认识,我们才能从源头解决软件危机。
    要解决软件危机,我们可以在对计算机软件有正确认识,明确了软件开发性质的前提下,推广使用在实践中总结出来的开发软件的成功技术和方法,并开发和使用更好的软件工具,通过这些方法缩短软件的开发时间,提高可靠性和用户满意度,以及软件的可维护性,最终达到解决软件危机的目的。
    解决软件危机可以从两方面进行着手:技术措施和管理措施。
    我们可以通过推广和使用在实践中总结出的练好的软件开发技术和方法,并不断探索和研究更有效的技术来达成这一目的,也可以通过开发和使用更好的软件工具,包括使用好的开发工具、系统分析和辅助设计工具等,以提高工作效率,最终达成目的。
    通过管理措施解决问题同样行之有效。我们可以吸收和借鉴人类长期以来从事各类工程项目所积累的行之有效的原理、概念、技术和方法。
  4. 软件工程学科简介
    “工程”是对技术(或社会)实体的分析、设计、建造、验证和管理。1968年北约(NATO)组织在德国召开的一次会议上提出,要把软件当做一种工业产品,“采用工程划定原理与方法对软件进行计划、开发和维护。”
    软件工程学科,是采用工程的概念、原理、技术和方法来开发与维护软件,把经过时间考验而证明正确的管理技术和当前能够得到的技术方法结合起来,来指导软件的开发与维护的学科。
    软件工程有两个明显的特点:强调规范化与文档化。
    软件工程的目标是生产具有正确性、可用性及开销适宜的软件产品。
    正确性是指软件产品达到预期功能的程度,可用性是软件基本结构、实现及文档为用户可用的程度,可维护性则是值软件能够不断进化以满足客户需求变化的程度,合算性则是指软件开发、运行的真个开销满足用户要求的程度。这些原则决定了软件过程、过程模型和工程方法的选择。
    软件工程要生产一个最终满足需求且达到工程目标的软件产品需要五个步骤:需求、设计、实现、确认及支持。
    软件工程的基本原则是:
    (1).采取适宜的开发模型,控制易变的需求;
    (2).采用合适的设计方法:需要软件模块化、抽象与信息隐藏、局部化、一致性以及适应性等,需要合适的设计方法的支持。
    (3).提供高质量的工程支持:软件工具和环境对软件过程的支持。
    (4).重视开发过程的管理: 有效利用可用的资源、生产满足目标的软件产品、提高软件组织的生产能力等.
    软件工程的本质特征有:软件工程关注于大型软件的构造、软件工程的中心课题是控制复杂性、软件经常变化、开发软件的效率非常重要、和谐地合作是开发软件的关键、软件必须有效地支持它的用户、由具有一种文化背景的人替具有另一种文化背景的人创造产品、使用哪种软件工程方法和技术主要取决于要开发的应用类型。
  5. 软件工程学科的研究内容
    软件工程学科需要解决一些关键性的问题:
    (1) 如何实现该实体(解决方案)?
    (2) 如何建造该实体?
    (3) 采用什么方法去发现该实体设计和建造过程中产生的错误?
    (4) 当该实体的用户要求修改、适应和增强时,如何支持这些活动?
    软件工程学科研究软件的生存周期问题。
    生存周期是指一个软件从定义、开发、使用和维护,直到最终被废弃为止的整个过程。软件生存方法周期学的基本思想则是从时间角度对软件开发和维护的复杂问题进行分解,把软件生命的漫长周期依次分为若干阶段,每个阶段有相对独立的任务,然后逐步完成每个阶段的任务。前阶段任务的完成是后阶段工作开始的前提与基础,后阶段任务是前阶段的具体与细化。其优点是各阶段任务相对独立,便于分工协作,降低开发工作的难度;便于科学组织与管理;保证了产品的质量,提高了可维护性。
    软件工程主要研究软件的开发和管理技术。
    软件工程研究阶段划分及基本任务的问题,其原则是各阶段的任务彼此间尽可能的相对独立,同一阶段各项任务的性质尽可能的相同,从而降低各阶段任务的复杂程度,简化不同阶段之间的联系,有利于软件的组织管理。
    软件工程拥有七条基本原理,由美国著名的软件工程专家巴利•玻姆(Barry Boehm)于1983年提出。这七条基本与案例分别是:
    (1) 用分阶段的生命周期计划严格管理;
    (2) 坚持进行阶段评审;
    (3) 实行严格的产品控制;
    (4) 采用现代的程序设计技术;
    (5) 结果应能清楚地审查;
    (6) 开发小组的人员应少而精;
    (7) 承认不断改进软件工程实践的必要性。
    软件工程研究软件的方法学问题。
    我们通常把在软件生命周期全过程中使用的一整套技术方法的集合称为方法学。其包含三个要素:方法、工具和过程。
    方法是完成软件开发的各项任务的技术方法,回答“怎样做”的问题;工具是为运用方法而提供的自动的或半自动的软件工程支撑环境;过程是为了获得高质量的软件所需要完成的一系列任务的框架,它规定了完成各项任务的工作步骤。传统的方法学基于“生命周期方法学”理论,仍然是使用十分广泛的软件工程方法学,其采用结构化的技术来完成软件开发的各项任务,并使用适当的软件工具或软件工程环境来支持结构化技术的运营,从上而下,顺序地完成软件开发的各阶段任务。
    面向对象的方法学则把对象作为融合了数据及在数据上的操作行为的统一软件构件,把所有对象都划分成类,按照父类与子类的关系,把若干个相关类组成一个层次结构的系统。在该系统中,对象彼此间仅能通过发送消息互相联系。这套方法学要求开发软件的方法与过程尽可能接近人类认识实践解决问题的方法与过程,从而使描述问题的问题空间与实现解法的解空间在结构上尽可能一致。
  6. 总结
    在完成了对第一章的学习后,我大致了解了软件工程的产生背景及软件危机的解决方法,对软件工程这门课程本身以及其研究内容与方向也有了初步的认识。在学习软件工程的过程中,我们应不断拓宽自己的知识领域,了解教育基础及实践的相关知识,也要完成对自身的意识转变,提升对软件本身的认识,走出思维定势,使自己的综合水平得到提升。
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值