西电软件工程SE01_第1页
西电软件工程SE01_第2页
西电软件工程SE01_第3页
西电软件工程SE01_第4页
西电软件工程SE01_第5页
已阅读5页,还剩46页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、Software EngineeringSEI1刘伟刘伟88204608软件工程概论软件工程概论Software EngineeringSoftware EngineeringSEI2课程信息课程信息 授课教师:刘伟 电话:88204608 Email: 教材: Software Engineering Theory and Practice 参考书: 软件工程实践者的研究方法, Roger S. Pressman 实用软件工程, 郑人杰等Software EngineeringSEI3考核方式考核方式 笔试平时作业 笔试占70,为闭卷考试 平时测试与作业占30 作业采用Email上交 Ema

2、il:Software EngineeringSEI4课程内容课程内容 概述 软件过程 软件项目管理 需求工程 结构化的分析和设计 面向对象的分析和设计 软件测试 软件部署与演化 高级软件工程Software EngineeringSEI5Software EngineeringSEI6Content What is software? What is “Software Crisis”? What is “Good Software”? Way to get “Good Software” What is software engineering? Information systems e

3、xampleSoftware EngineeringSEI71.1 What is software?History of software First Computer ENIAC, 46 Transistor computer IBM 7090, 58 Software was free addition to hardware IC computer IBM 360, 64 Software was first priced, 69Software EngineeringSEI81.1 What is software?Size of software systems1989199919

4、961.5M700K4 bit 8 bit 16 bit Software Size (LOC)500K1M2M2.2M1989199919961.5M700K4 bit 8 bit 16 bit Software Size (LOC)500K1M2M2.2MDevelopment Period (year)10.5Telephone Terminal (Cell Phone)Software EngineeringSEI91.1 What is software? Software is a set of (1) instructions (computer program) that wh

5、en executed provided desired function and performance, (2) data structures that enable the programs to adequately manipulate information, and (3) documents that describe the operation and use of programs. Examples Source code, object code, design document, test data Software EngineeringSEI101.1 What

6、 is software?Characteristics of Software Invisibility Hard to imagine, feel, identify, . Logicality Hard to complete by human Flexibility Easy to change and modifySoftware EngineeringSEI111.1 What is software?软件的特点软件的特点 软件是一种逻辑实体逻辑实体,而不是具体的物理实体。因而它具有抽象性 软件的生产与硬件不同,在它的开发过程中没有明没有明显的制造过程显的制造过程 在软件的运行和使

7、用期间,没有硬件那样的机械磨没有硬件那样的机械磨损,老化问题损,老化问题Software EngineeringSEI121.1 What is software?软件的特点软件的特点 软件的开发和运行常受到计算机系统的限制,对计算机系统有着不同程度的依赖性 软件的开发至今尚未完全摆脱手工艺的开发方式手工艺的开发方式 软件本身是复杂的 实际问题的复杂性 程序逻辑结构的复杂性 软件成本相当昂贵,涉及到社会因素Software EngineeringSEI131.1 What is software?软件的特点软件的特点 复杂性复杂性 软件在规模上可能比任何由人类创造的其他实体都要复杂,复杂性是软

8、件的本质特征 软件的复杂性是必要属性 大量的组合状态 丰富的结构和相互依赖性 开发问题也会增加复杂性 高效率的代码通常是复杂的 重用通用化的组件意味着复杂的状态连接 复杂的代码难以维护,导致设计上的更复杂Software EngineeringSEI141.1 What is software?软件的特点软件的特点 可变性可变性 所有成功的软件都会发生变更 会在超越软件边界的情况下使用软件 功能扩展压力 修改的副作用,软件的退化Software EngineeringSEI151.2 What is “Software Crisis”? 1968 NATO Conference on Soft

9、ware Engineering Problems with software: Often delivered too late Did not behave as user expects Rarely adaptable to changed circumstances Many errors detected after delivery Communication between stakeholders!Software EngineeringSEI161.2 What is “Software Crisis”? Symptoms: The Mythical Man-Month U

10、nmanageable. Over budget. Late. Poor quality. Causes: One word: Complexity.Software EngineeringSEI171.2 What is “Software Crisis”? ARIANE 5火箭 1996年6月,耗资70亿美元,发射37秒后爆炸 原因:软件错误,试图将64位浮点数转换成16位整数时溢出,缺少错误处理程序 爱国者导弹 1991年2月,对抗失利导致28名美国士兵丧生 原因:导弹软件中包含一个累加计时误差 千年虫 日期用2位表示,升级花费超过数亿美元 其它 放射医疗事故、病毒、木马、网络攻击、黑客

11、、安全Software EngineeringSEI181.3 What is “Good Software”?Quality terminology Error: human mistake Fault: result of mistake, evidenced in some development or maintenance product Failure: departure from the systems required behavior?!human errorfaultfailurecan lead tocan lead toSoftware EngineeringSEI1

12、91.3 What is “Good Software”? Good software engineering must always include a strategy for producing quality software. What is “Quality”? the quality of the product the quality of the process that results in the product, and the quality of the product in the context of the business environment in wh

13、ich the product will be usedSoftware EngineeringSEI201.3 What is “Good Software”?The Quality of the Product Users view Developers view external quality factors relate to product quality criteriaSoftware EngineeringSEI21CorrectnessReliabilityEfficiencyIntegrityUsabilityMaintainabilityTestabilityFlexi

14、bilityPortabilityReusabilityInteroperabilityCompletenessTraceabilityConsistencyAccuracyError toleranceExecution efficiencyStorage efficiencyAccess controlAccess auditOperabilityTrainingCommunicativenessSimplicityConcisenessInstrumentationSelf-descriptivenessExpandabilityGeneralityModularitySoftware

15、independenceMachine independenceCommunications commonalityData commonalitySoftware EngineeringSEI221.3 What is “Good Software”?Software EngineeringSEI231.3 What is “Good Software”?The Quality of the Process There are many activities that affect the ultimate product quality; if any the activities go

16、awry , the product quality may suffer. Where and when are we likely to find a particular kind of fault? How can we find faults earlier in the development process? How can we build in fault tolerance so that we minimize the likelihood that a fault will become a failure? Are there alternative activiti

17、es that can make our process more effective or efficient at assuring quality?Software EngineeringSEI241.3 What is “Good Software”?The Quality of the Process process modeling and process improvement in software engineering Capability Maturity Model (CMM)process guidelines. Software Process Improvemen

18、t and Capability dEtermination (SPICE) ISO9001 Rational Unified Process (RUP)Software EngineeringSEI251.3 What is “Good Software”?Quality in the Context of the Business Environment return on investment (ROI, 投资回报) (total benefit - total costs) = _X 100 = ROI total costs Among the companies surveyed,

19、 return on investment included such items as Training Schedule Risk Quality Productivity Process Customer Costs BusinessSoftware EngineeringSEI261.3 What is “Good Software”?Quality in the Context of the Business EnvironmentSoftware process groupQuality groupProcessInternal R&DAssessmentsMaterial

20、sHardware costsFacilities0%10%20%30%40%50%60%70%GeneralDocumentationSCE costsGeneralSoftware costsEffortPercent of intervieweesDollarsSCE-Software Capability Evaluation (软件能力评鉴)R&D-Research and Development (研发)Software EngineeringSEI271.4 Way to get “Good Software” System approach Engineering ap

21、proachSoftware EngineeringSEI281.4.1 System approach The projects we develop do not exit in a vacuum. Hardware Other software tasks Other pieces of hardware Exiting database Other computer systems It is important to provide a content for any project by knowing the boundaries of the project. What is

22、included in the project What is not in the projectSoftware EngineeringSEI291.4.1 System approachThe elements of a system Activities and objects Relationships and System Boundary Interrelated SystemsSoftware EngineeringSEI301.4.1 System approachIdentify activities and objects Activities Objects Relat

23、ionship system boundarySoftware EngineeringSEI311.4.1 System approachExamples of SystemsBoundaryENTITIES:Particulate matterOxygenCarbon dioxideWaterNitrogenNoseMouthTracheaBronchial tubesLungsAlveoliACTIVITIES:Inhale gasesFilter gasesTransfer molecules to/from bloodExhale gasesSoftware EngineeringSE

24、I321.4.1 System approachInterrelated Systems Boundary Very few systems are independent of other systems.Software EngineeringSEI331.4.1 System approachSystem boundaryComputerMail roomDatevalidationCalculationPay informationPay checksPrintingSoftware EngineeringSEI341.4.1 System approachReporting syst

25、emfor dataData management systemfor collected dataRemote datacollectionsystemCalculation systemfor remote dataCommunication system fromremote sites to centralSoftware EngineeringSEI351.4.2 Engineering approach Construction Building a house Building a software 工程是将理论和所学的知识应用于实践的科学,以便经济有效地解决实际问题 手工,小规

26、模的设计与建造 工程,大规模的设计与建造 复杂问题与目标分解 多人参与,需要考虑运营、管理、成本、质量控制、安全等Software EngineeringSEI361.4.2 Engineering approachBuilding a house vs. software Determining and analyzing requirements Producing and documenting the design Detailed specifications Identifying and designing components Building components Testi

27、ng components Integrating components Making final modifications Continuing maintenance Requirements analysis and definition System design Program design Writing programs Unit testing Integration testing System testing System delivery MaintenanceSoftware EngineeringSEI371.5 What is software engineeri

28、ng? Definition: The establishment and use of sound engineering principles in order to obtain economically software that is reliable and works efficiently on real machines. (Fritz Bauer, at theFirst NATO Conference on Software Engineering, 1969)Software EngineeringSEI381.5 What is software engineerin

29、g? Definition: Software engineering is the technological and managerial discipline concerned with systematic production and maintenance of software products that are developed and modified on time and within cost estimates. (Fairley, R., Software Engineering Concepts. New York: McGraw-Hill, 1985. )

30、Software Engineering: (1) The application of a systematic, disciplined, quantifiable approach to the development, operation, and maintenance of software; that is, the application of engineering to software. (2) The study of approaches as in (1). (IEEE Std 610-1990 )Software EngineeringSEI391.5 What

31、is software engineering? Software engineering is an engineering discipline that is concerned with all aspects of software production. Software engineers should adopt a systematic and organised approach to their work and use appropriate tools and techniques depending on the problem to be solved, the

32、development constraints and the resources available.Software EngineeringSEI401.5 What is software engineering?Analysis vs. synthesis of a problemPROBLEMSubproblem 1Subproblem 3Subproblem 2Subproblem 4Software EngineeringSEI411.5 What is software engineering?Analysis vs. synthesis of a problemSOLUTIO

33、NSolution 1Solution 3Solution 2Solution 4Software EngineeringSEI421.5 What is software engineering?To Solve Problems Method or technique: procedure for producing a result Tool: instrument or automated system for accomplishing something Procedure: recipe for combination of tools and techniques Paradi

34、gm: style of doing somethingSoftware EngineeringSEI431.5 What is software engineering?Where does the Software Engineer fit in?COMPUTER SCIENCE SOFTWAREENGINEERINGCUSTOMERTheories Tools andTechniques toSolve ProblemProblemComputerFunctionsSoftware EngineeringSEI441.5 What is software engineering?What

35、 is the difference between software engineering and computer science? Computer science is concerned with theory and fundamentals; software engineering is concerned with the practicalities of developing and delivering useful puter scientist solve the computers problems, but software engineer produce

36、quality software using computer as tools. Software EngineeringSEI451.5 What is software engineering?What is the difference between software engineering and computer science? System engineering is concerned with all aspects of computer-based systems development including hardware, software and proces

37、s engineering. Software engineering is part of this process concerned with developing the software infrastructure, control, applications and databases in the system. System engineers are involved in system specification, architectural design, integration and deployment.Software EngineeringSEI461.5 W

38、hat is software engineering?Who does software engineering Customer: the Company, organization, or person who is paying for the software system to be developed. Developer: the Company, organization, or person who is building the software for the customer.( Include managers and testers). User: the person or people who will actually use the system.: the ones who sit at the terminal or summit the data .or read

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论