您好,欢迎访问三七文档
当前位置:首页 > 建筑/环境 > 工程监理 > 软件工程第1章--概述
课程介绍一、教学方式与考核教学要求考核方式课程背景内容组织先导要求二、成绩计算方法(供参考)1、平时成绩+分组完成的项目,约40分。2、期末笔试(闭卷),提交答卷。约60分软件工程实用软件工程(第二版)郑人杰殷人昆陶永雷清华大学出版社(1996)软件工程-实践者的研究方法(英文版第四版)RogerS.Pressman机械工业出版社参考书目参考书目FundamentalsofSoftwareEngineeringCarloGhezzi,MehdiJazayeri,DinoMandrioliPrentice-Hall,Inc.(1991)SoftwareEngineering,TheoryandPracticeShariLawrencePfleeger,Prentice-Hall,Inc.(1998)国家精品课程:-国家精品课程:清华大学课程要求知道软件开发的整个过程各个阶段的文档编写能利用介绍的理论解决一些基本问题软件工程计划:按用户界面分为以下组,要求每组内容不同,分别为:①班级通信录②上课考勤③新闻信息④食堂管理⑤洗衣房管理⑥图书借阅学籍管理成绩管理⑨寝室管理⑩其它的系统(可自选)要求:每组不超过15人,不少于6人;组长负责:组织、分工、安排进度、上课等组长奖罚:引起过半数组员不满,改选组长;带领全组顺利完成任务,总评+5软件工程内容⑴“可行性分析报告”(演讲)⑵“需求规格说明书”(书面或者演讲)⑶“总体设计报告”(演讲)⑷推出测试版(现场验收)⑸推出升级版(现场验收);⑹推出期末合并版(现场验收)软件工程目的体验软件工程各阶段的主要工作,特别注意吸取教训;学会与他人合作,培养团队精神,单干户将得不到成绩。现在开始分组抽签行动起来!内容组织课程介绍和要求(2)软件和软件工程(2)可行性分析(4)需求分析(8)软件总体设计(6)软件详细设计(6)编码分析(6)软件测试(8)软件维护(4)开始可行性分析实践开始需求分析课程实践课程实践(软件设计)相关的实践评议提交软件设计结果考试先导要求程序设计语言最好有一定的程序开发经验学习要求听理解知识点和思想无需死记硬背做实践体会软件工程的原则、方法和技术,在实践中提高培养抽象思维能力培养独立解决问题的能力培养合作精神想阅读相关资料第一章软件危机与软件工程Late1950’s:§1.软件危机(SoftwareCrisis)Intheearlydays:“Software”=“Placeasequenceofinstructionstogethertogetthecomputertodosomethinguseful”.UserComputerComputerbecamecheaperandmorecommonHighlevellanguageswereinventedProgrammerUserComputereasier§1.软件危机Early1960s:Veryfewlargesoftwareprojectsweredonebysomeexperts.Middletolate1960s:Trulylargesoftwaresystemswereattempted.例:美国IBM公司在1963年至1966年开发的IBM360机的操作系统。这一项目花了5000人一年的工作量,最多时有1000人投入开发工作,写出了近100万行源程序。......据统计,这个操作系统每次发行的新版本都是从前一版本中找出1000个程序错误而修正的结果。......§1.软件危机这个项目的负责人F.D.Brooks事后总结了他在组织开发过程中的沉痛教训时说:“......正像一只逃亡的野兽落到泥潭中做垂死的挣扎,越是挣扎,陷得越深,最后无法逃脱灭顶的灾难。......程序设计工作正像这样一个泥潭,......一批批程序员被迫在泥潭中拼命挣扎,......谁也没有料到问题竟会陷入这样的困境......”。IBM360操作系统的历史教训成为软件开发项目的典型事例为人们所记取。SoftwareCrisis!软件危机(softwarecrisis)的提出软件危机是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。20世纪60年代末至20世纪70年代初,软件危机一词在计算机界广为流传。事实上,几乎从计算机诞生的那一天起,就出现了软件危机,只不过到了1968年在原西德加密施(Garmish)召开的国际软件工程会议上才被人们普遍认识到。软件危机(crisis)的表现20世纪50年代,软件成本在整个计算机系统成本中所占的比例为10%-20%。到20世纪60年代中期,软件成本在计算机系统中所占的比例已经增长到50%左右。而且,该数字还在不断地递增,下面是一组来自美国空军计算机系统的数据:1955年,软件费用约占总费用的18%,1970年达到60%,1975年达到72%,1980年达到80%,1985年达到85%左右。现在90%左右(1)软件成本日益增长.软件的成本相当昂贵软件技术的发展落后于需求时间软件复杂性软件需求差距软件技术硬、软件成本比例的变化年份成本%软件1950197019851995硬件在软件开发过程中,用户需求变化等各种意想不到的情况层出不穷,令软件开发过程很难保证按预定的计划实现,给项目计划和论证工作带来了很大的困难。BROOK曾经提出:在已拖延的软件项目上,增加人力只会使其更难按期完成。事实上,软件系统的结构很复杂,各部分附加联系极大,盲目增加软件开发人员并不能成比例地提高软件开发能力。相反,随着人员数量的增加,人员的组织、协调、通信、培训和管理等方面的问题将更为严重。(2)开发进度难以控制软件危机的表现软件项目即使能按预定日期完成,结果却不尽人意。在软件作坊里,由于缺乏工程化思想的指导,程序员几乎总是习惯性地以自己的想法去代替用户对软件的需求,软件设计带有随意性,很多功能只是程序员的一厢情愿而已,这是造成软件不能今人满意的重要因素。(3)软件质量差软件危机的表现正式投入使用的软件,总是存在着一定数量的错误,在不同的运行条件下,软件就会出现故障,因此需要维护。但是,由于在软件设计和开发过程中,没有严格遵循软件开发标准,各种随意性很大,没有完整的真实反映系统状况的记录文档,给软件维护造成了巨大的困难。特别是在软件使用过程中,原来的开发人员可能因各种原因已经离开原来的开发组织,使得软件几乎不可维护。(4)软件维护困难软件危机的原因在软件开发出来之前,用户自己也不清楚软件的具体需求;用户对软件需求的描述不精确,可能有遗漏、有二义性、甚至有错误;在软件开发过程中,用户还提出修改软件功能、界面、支撑环境等方面的要求;软件开发人员对用户需求的理解与用户本来愿望有差异。(1)用户需求不明确软件危机的原因缺乏有力的方法学和工具方面的支持。由于软件不同于大多数其他工业产品,其开发过程是复杂的逻辑思维过程,其产品极大程度地依赖于开发人员高度的智力投入。由于过分地依靠程序设计人员在软件开发过程中的技巧和创造性,加剧软件产品的个性化,也是发生软件危机的一个重要原因。(2)缺乏正确的理论指导软件危机的原因随着软件应用范围的增广,软件规模愈来愈大。大型软件项目需要组织一定的人力共同完成,而多数管理人员缺乏开发大型软件系统的经验,而多数软件开发人员又缺乏管理方面的经验。各类人员的信息交流不及时、不准确、有时还会产生误解。软件项目开发人员不能有效地、独立自主地处理大型软件的全部关系和各个分支,因此容易产生疏漏和错误。(3)软件规模越来越大例如:信息时代对计算机提出更高的要求个人计算机时代网络计算时代网格计算时代要在信息化的背景下来理解现在和未来的计算机技术、软件技术软件危机的原因软件不仅仅是在规模上快速地发展扩大,而且其复杂性也急剧地增加。软件产品的特殊性和人类智力的局限性,导致人们无力处理复杂问题。所谓复杂问题的概念是相对的,一旦人们采用先进的组织形式、开发方法和工具提高了软件开发效率和能力,新的、更大的、更复杂的问题又摆在人们的面前。(4)软件复杂度越来越高举例:杭州市民卡系统总体逻辑结构市民基础数据库公安业务库VPN公安民政民政业务库劳社劳社业务库。。。街道一街道二街道三社区业务基础信息库商业信息库VPN/ISDN/PSTN市民信息交换综合管理中心中心工作站市民卡服务公司工作站商业应用环境INTERNETWEB呼叫中心结算银行(银联交换如何克服软件危机人们在认真地研究和分析了软件危机背后的真正原因之后,得出了人们面临的不光是技术问题,更重要的是管理问题。管理不善必然导致失败。的结论,便开始探索用工程的方法进行软件生产的可能性,即用现代工程的概念、原理、技术和方法进行计算机软件的开发、管理和维护。于是,计算机科学技术的一个新领域--软件工程诞生了。如何克服软件危机(1)方法。软件工程方法为软件开发提供了如何做的技术,是完成软件工程项目的技术手段;(2)工具。软件工具是人类在开发软件的活动中智力和体力的扩展和延伸,为软件工程方法提供了自动的或半自动的软件支撑环境;(3)过程。软件工程的过程则是将软件工程的方法和工具综合起来以达到合理、及时地进行计算机软件开发的目的。软件工程是用工程、科学和数学的原则与方法研制、维护计算机软件的有关技术及管理方法。2、计算机软件的概念计算机系统硬件和软件硬件和软件之间的关系硬件,裸机,基本的计算和存储能力软件,利用计算能力来解决实际问题例如,MicrosoftPowerPoint软件是发挥计算机优势的关键软件发展阶段程序设计阶段—50至60年代程序系统阶段—60至70年代软件工程阶段—70年代以后1、随着计算机技术的不同发展阶段有不同的认识(1)软件就是程序(单个程序员)(2)程序+程序说明书(多个程序员合作)(3)软件工程学(形成文档)+程序软件的含义:(1)计算机程序(instruction)(2)处理信息的数据结构(datastructures)(3)相关文档(documents)软件是计算机系统中与硬件相互依存的另一部分,它是包括程序,数据及其相关文档的完整集合。程序是按事先设计的功能和性能要求执行的指令序列数据是使程序能正常操纵信息的数据结构文档是与程序开发,维护和使用有关的图文材料软件的特点软件是一种逻辑实体,而不是具体的物理实体。因而它具有抽象性软件的生产与硬件不同,在它的开发过程中没有明显的制造过程在软件的运行和使用期间,没有硬件那样的机械磨损,老化问题软件的开发和运行常受到计算机系统的限制,对计算机系统有着不同程度的依赖性软件的开发至今尚未完全摆脱手工艺的开发方式软件本身是复杂的实际问题的复杂性程序逻辑结构的复杂性软件成本相当昂贵相当多的软件工作涉及到社会因素软件的分类按软件的功能进行划分:系统软件操作系统数据库管理系统设备驱动程序通信处理程序等支撑软件文本编辑程序文件格式化程序磁盘向磁带向数据传输的程序程序库系统支持需求分析、设计、实现、测试和支持管理的软件应用软件商业数据处理软件工程与科学计算软件计算机辅助设计/制造软件系统仿真软件智能产品嵌入软件医疗、制药软件事务管理、办公自动化软件计算机辅助教学软件按软件规模进行划分:类别参加人员数研制期限源程序行数微型11~4周0.5k小型11~6月1k~2k中型2~51~2年5k~50k大型5~202~3年50k~100k甚大型100~10004~5年1M(=1000k)极大型2000~50005~10年1M~10M软件工程过程软件规格说明:规定软件的功能及其运行的限制软件开发:产生满足规格说明的软件软件确认:确认软件能够完成客户提出的要求软件演进:为满足客户的变更要求,软件必须在使用的过程中演进软件工程过程的特性易理解性可见性可支持性可接受性可靠性健壮性可维
本文标题:软件工程第1章--概述
链接地址:https://www.777doc.com/doc-213316 .html