软件工程
1968年由NATO (北大西洋公约组织)召开的学术会议上,首先提出了“软件工程”概念。

软件工程——是指把系统的、规范化的、可以度量的方法运用于软件的开发、运行和维护的过程工程方法:人们利用技术(或工具)、技能通过有组织活动完成契约规定的目标,即按预定完工期交付合格成品。
工程要素:人力、资金、技术工程目标:在给定的资金、限制的时间内,完成符合相应标准的产品。
软件工程的目标,提高软件质量与生产率,最终实现软件的工业化生产。
软件需求方最关心的问题是质量软件供应方最关心的问题是生产率质量与生产率之间有着内在的联系,高生产率必须以质量合格为前提。
软件工程技术的两个明显特点:强调规范化 强调文档化软件产品:软件=程序+文档
在选定的软件/硬件平台上的程序集合,能满足预定的功能、性能需求。有全套的说明、使用、维护的文档。
软件生存周期
40—20—40规律:工作量方面中,需求、设计占40%,软件构造占20%,测试及维护占40%
需求分析用户的需要need变为开发目标需求requirement
建模抽象出能实现业务工程的计算机能实现的模型开发项目性质:新概念型、新产品型、产品改进型、产品维护型成果:需求规格说明、可行性报告、初步用户手册需求规范,开发者的宪法,测试相符性的依据初步用户手册,外部规范设计构思一个软件结构能满足规格说明定义的功能和性能要求软件的性能潜藏在分析设计过程中设计的两个阶段:
顶层(体系结构)设计:以模块?对象相互间关系形成的体系结构作为整体的解决方案。功能和性能纳入到模块?对象中详细设计:选定数据结构和做算法设计,完成各模块或对象设计,既有功能,又有性能设计方法:
传统的:面向功能,面向数据面向对象:OO的事件驱动的对象交互
设计技术,抽象,模块化,数据隐藏,内聚性,耦合性
构造软件构造是用某种编程语言编写源程序或以界面工具构造出应用界面,即现代意义编程使用程序对象,力图方便,简易,并提供帮助原则 减低复杂性,利于结构化确认,防止多样性,充分利用标准好的编码环境应支持“一边编码、一边测试”
测试测试是交付的唯一手段(测试报告、测试结果评价)
测试目的:找瑕疵。完全测试不可能,测试回答的是规范满足程度测试(系统测试,确认测试,集成测试,单元测试)
所有测试要在项目计划中作出子计划维护交付项目后的阶段即开始维护类型:改正性维护,适配性维护,改进性维护维护是支持业务过程变更的重要手段