版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、Computing and SE II Chapter 2: A Brief History of SE Recommend papers nA View of 20th and 21st Century Software Engineering nFifty Years of Progress in Software Engineering Main Contents n软件的发展路线 nA 20th Century View nA 21st Century View nConclusions qTimeless principles and aging practices 软件的三个基础
2、软件的理论(表征) 机制 软件的抽象机制 软件的设计(实现)机 制 计算指令 汇编指令 函数级程序单位 面向对象程序单位 构件、体系结构、服务 裸机硬件 基本操作平台(OS) 系统辅助环境(编译器) 应用辅助环境 程序流程图 过程模型 数据模型 面向对象模型 构件模型 SOA 软件的发展(1) 软件的发展(2) 软件的发展(3) Main Contents n软件的理论(表征)、抽象和设计(实现) nA 20th Century View nA 21st Century View nConclusions qTimeless principles and aging practices 前期基
3、础 1950s Thesis: Engineer Software Like Hardware nSoftware Techniques: qFor special usage, research mainframes qMachine-Centric Application q1GL, 2GL qOrganization software with statements nCoding tips for a optimized program are important 1950s Thesis: Engineer Software Like Hardware nHardware-orien
4、ted: qSoftware applications: airplanes, bridges, circuits qEconomics: Boehm supervisor, 1955 n“Were paying $600/hour for that computer, and $2/hour for you, and I want you to act accordingly.” qSoftware Processes: SAGE (Semi-Automated Ground Environment) n1 MLOC air defense system, real-time, user-i
5、ntensive nSuccessful development of highly unprecedented system nHardware-oriented waterfall-type process The SAGE Software Development Process - (Benington, 1956) “We were successful because we were all engineers”. OPERATIONAL PLAN MACHINE SPECIFICATIONSOPERATIONAL SPECIFICATIONS PROGRAM SPECIFICAT
6、IONS CODING SPECIFICATIONS CODING PARAMETER TESTING (SPECIFICATIONS) ASSEMBLY TESTING (SPECIFICATIONS) SHAKEDOWN SYSTEM EVALUATION 1950s nMachine-Centric Application 向1960s的过渡 n技术的进步 q大型机的商业化:应用动机的出现 q编译器:更高层次的表征(函数);更快的开发速度 n函数概念的出现 q对语句的优化 n简单编程环境 q文本编辑器、计算性编程工具库 qOS:抛弃底层表征;更快的开发速度 n简化软件开发中与硬件的底层交
7、互 n现实问题:以应用为动机 q表征的扩展 n010101,数字 or 操作 or 信息 n特定数据类型,复杂语义信息 n更高和更广的表征更复杂的问题抽象能力 n更快的开发速度更强的复杂系统实现能力 1960s Antithesis: Software Is Not Like Hardware - Four Brooks factors plus two nInvisibility: like the Emperors Magic Cloth qVisibility and controllability of project is always a topic of SE nComplexi
8、ty: we have see this last lecture nConformity: executed by computers, not people nChangeability: up to a point, then becomes difficult nDoesnt wear out: different reliability, maintenance phenomena nUnconstrained: can program antigravity, time travel, interpenetration, This is very important! 1960s
9、Antithesis: Software Crafting nFlexible materials, frequent changes as above nSW demand exceeded supply of engineers qCowboy programmers as heroes qCode-and-fix process qHacker culture (Levy, 1984) nJudge programmers by the elegance of their code 1960s Progress and Problems nBetter infrastructure: O
10、S, compilers, utilities nComputer Science Departments nProduct Families: OS-360, CAD/CAM, math/statistics libraries nSome large successes: Apollo, ESS, BofA check processing nProblems: 1968, 1969 NATO Reports qFailure of most large systems qUnmaintainable spaghetti code qUnreliable, undiagnosable sy
11、stems 1960s 向1970s的过渡 n技术的进步 q编译技术:表征层次的提高、编程速度的提高 n对循环、递归的优化、对函数的优化 n递归、模块 q开发环境:更快的开发速度 n命令行式开发工具;工具库;算法库;函数库 q微型计算机的商业化:企业化应用的普及 n抽象建模能力? n商业核心知识? n现实问题:“软件危机” q生产方法? 1970s Antithesis: Formal and Waterfall Approaches nStructured Methods qStructured programming (Bohm-Jacopini: GO TO unnecessary) n
12、Formal programming calculus: Dijkstra, Hoare, Floyd nFormalized Top-Down SP: Mills, Baker nWaterfall Methods qCode and fix too expensive (100:1 for large systems) qPrecede code by design (De Marco SD, Jackson JSD/JSP) qPrecede design by requirements (PSL/PSA, SA, SREM) 1970s Antithesis: Formal Metho
13、ds n“formal methods” branch that focused on program correctness, either by mathematical proof, or by construction via a “programming calculus” nOver the decade of the 60s theoretical computer science achieved standing as a discipline recognized by both the mathematical and the computing communities,
14、 and it could point to both applications and mathematical elegance 1970s: Formal Methods nOrganized programs with qFunction nAlgorithm qThree control logic qType and type check nWhen compiler deal with functions well, organized programs with qModularity nThis things gets importance with modularity q
15、Information hiding qData abstraction 1970s: Formalized Top-Down SP nFunction decomposition qdivide and rule qProcess modeling nDFD qData modeling nERD Increase in Software Cost-to-fix vs. Phase (1976) Phase in Which defect was fixed 10 20 50 100 200 500 1000 Relative cost to fix defect 2 1 5 Require
16、ments Design Code DevelopmentAcceptance Operation testtest Smaller Software Projects Larger Software Projects Median (TRW Survey) 80% 20% SAFEGUARD GTE IBM-SSD Phase in Which defect was fixed 10 20 50 100 200 500 1000 Relative cost to fix defect 2 1 5 Requirements Design Code DevelopmentAcceptance O
17、peration testtest The Royce Waterfall Model (1970) - Explicit feedback - “Do it twice” SYSTEM REQUIREMENTS TESTING CODING PROGRAM DESIGN ANALYSIS PRELIMINARY PROGRAM DESIGN SOFTWARE REQUIREMENTS OPERATIONS PRELIMINARY DESIGN ANALYSIS PROGRAM DESIGN CODING TESTING USAGE 1970s: Problems with Formal Me
18、thods nSuccessful for small, critical programs nLargest proven programs around 10 KSLOC nProofs show presence of defects, not absence qDefects in specification, proofs happen nScalability of programmer community qTechniques require math expertise, $500/SLOC qAverage coder in 1975 survey: n2 years of
19、 college, SW experience nFamiliar with 2 languages, applications nSloppy, inflexible, in over his head, and undermanaged Large-Organization HW/SW Cost Trends (1973) 100 80 60 40 20 0 1955 1970 1985 Hardware Software Year % of total cost 1970s: Problems with Waterfall Model nOverly literal interpreta
20、tion of sequential milestones qPrototyping is coding before Critical Design Review qMismatch to user-intensive systems nHeavyweight documentation hard to review, maintain q7 year project with 318% requirements change qMilestones passed but not validated nMismatch to COTS, reuse, legacy SW qBottom-up
21、 vs. top-down processes 1970s An overview 向1980s的过渡 n技术的进步 q个人PC的普及:应用的进一步膨胀 q图像处理的进步:提高了普通人的参与,提出了更 高的编程速度要求。 q编译技术:更高的编程支持 n图形化编程环境;周到、系统化的开发环境支持 n现实问题:膨胀“速度” q更快的开发? 1980s Synthesis: Productivity, Reuse, Objects nWorldwide concern with productivity, competitiveness qJapanese example: autos, elect
22、ronics, Toshiba SW reuse nMajor SW productivity enhancers qWorking faster: tools and environments qWorking smarter: processes and methods qWork avoidance: reuse, simplicity; objects qTechnology silver bullets: AI, transformations, DWIM, PBE nDo what I mean; programming by example Tools, Environments
23、, and Process n1970s, some requirements and design tools developed, significant tool progress had been mode in such areas as test tools and SCM tools nMajor emphasis in 1980s was on integrating tools into support environments: IPSEs to CASEs qIntegrated Project Support Environment, Computer Aided So
24、ftware Engineering qRequirements, design, planning and control, office support qFormatted vs. formal specifications n1980s: Resource estimations and middleware is underway nProcess-driven CASEs qUse process knowledge as tool integration framework qSome overkill in locking people into roles Process:
25、Industrial Engineering nFrederick W. Taylor : scientific management qFirst. They develop a science for each element of a mans work qSecond. They scientifically select and then train, teach, and develop the workman qThird. They heartily cooperate with the men so as to insure all of the work is being
26、done in accordance with the principle of the science which has been developed. qFourth. There is an almost equal division of the work and the responsibility between the management and the workmen. Process nProcess execution support: “SW processes are SW too” qWhats good for products is good for proc
27、esses qReuse, prototyping, architecture, programming nProcess compliance support: Standards and CMMs Reuse: Mechanical Engineering nIn modular software, clearly the standardized units or dimensions should be standards such that software modules meeting the standards may be conveniently fitted togeth
28、er (without trimming) to realize large software systems. The reference to variety of use should mean that the range of module types available should be sufficient for the construction of a usefully large class of programs. OO n关于面向对象的表征:商业化 or 学术化 q结构化 n学术化 n严谨,充足的数学支持 q面向对象 n商业化 n原则的必要性,流派的复杂化 q“相当
29、数量的程序员使用面向对象的语言写着过程式的程序” q“面向对象是个好东西,但是只有专家级程序员才能用好它” q工业界与学术界的鸿沟 No Silver Bullet: Brooks nAutomated solutions are good for “accidental” software problems nThey do not do well on “essential” software problems nClosest thing to silver bullet: great designers n人月神话 People: The Most Important Factor -
30、 SW engineering is of the people, by the people, and for the people n1970s: Weinberg Psychology of Computer Programming n1980s: DeMarco-Lister Peopleware人件 n1990s 2000s: Importance emphasized in both Agile and CMM cultures qIndividuals and interactions over process and tools qPeople CMM, Personal So
31、ftware Process, Team Software Process 1980s 过程 复用 人 向1990s的过渡 n技术的进步 q机器性能的提升:更高的应用能力 qWeb的发展:应用范围的扩展 nIntranet q编译技术:更好的辅助资源利用能力 n扩展图像式开发环境 q系统环境和应用环境:更快速的开发能力 n中间件平台(Corba)、网络软件 q面向对象技术的成熟 nJava、UML n现实问题:应用的“范围”膨胀 q更多开发人员的投入 n更复杂的过程管理? q更高的表征抽象要求? q更快的开发要求? Dual 1990s Now: software progress n1950
32、s-1960s: machine-centric software n1960s-1980s: application-centric software n1990s-now: enterprise-centric software qDistributed, large-scale Dual 1990s Early 2000s nSoftware as the primary competitive discriminator nMore mature commercial market nUser Value and Changeability nMarket-Driven Develop
33、ment Dual 1990s Early 2000s nSoftware techniques: qOO methods were strengthened through nOOP ( Java )OO Design (1995)OO Analysis nUML nOO design principles nDesign patterns qLarge-Scale Development Techniques Other 1990s Early 2000s Developments Large-Scale Development Techniques nNature and importa
34、nce of software architecture nCOTS and Components nMiddleware, CDE (Collaborative development environment), etc. nRequirement engineering nReuse-based Software Engineering qProduct Line, Components-Based SE nUsability and Human-Computer Interaction nOpen source, and legacy software qY2K and reverse
35、engineering Open source and legacy nOpen source qFrom its roots in the hacker culture of the 1960s nCollective code ownership nFree software, data, computing access qFree Software qLinux qRaymonds “The Cathedral and the Bazaar” nComponents and COTS are their future COTS: The Future Is Here nEscalate
36、 COTS priorities for research, staffing, education qSoftware is not “all about programming” anymore qNew processes required * CBA: COTS-Based Application * Standish Group CHAOS 2000 (54%) Dual 1990s Early 2000s Antithesis: - Maturity Models and Agile Methods nPredictability and Control: Maturity Mod
37、els CMMI qReliance on explicit documented knowledge qHeavyweight but verifiable, scalable nMature software model: RUP qRational unified process nTime to Market and Rapid Change: Agile Methods qReliance on interpersonal tacit knowledge qLightweight, adaptable, not very scalable 1990s 向2000s的过渡 n技术的进步
38、 机器性能的提升:更高的应用能力 Pc扮演服务器的能力 qWeb的发展:应用系统之间的交互能力 nInternet q编译技术:更多人员的协同 n协作式开发环境 q大规模软件开发技术的成熟 n体系结构、中间件、构件模型、模式 nJ2EE、.Net n现实问题:应用系统基于internet的交互 q更有效的大规模应用的开发方法和开发过程? Web! nWeb的作用 q新型的联系纽带 q人们与web的交互方式 n资源共享 n互动 qGoogle、web挖掘 n生活方式的延伸? q人际联系/工作联系/个人生活 2000s: Web development techniques nStatic Pre
39、sentation qHTML, CSS nDynamic Presentation qJavascript, JSP, ASP, PHP nData qXML 2000s: Techniques for Web development nC/S B/S3-Tier nService-Oriented Architecture nP2P nCloud Computing nMobile-based System nFrameworks for Web development 2000s : Risk-Driven Hybrid Process nIncreasing integration o
40、f systems engineering and SW engineering qIncreasing trend toward “soft systems engineering” nIncreasing focus on usability and value qFit the software and hardware to the people, not vice versa nRUP and Agile nOutsourcing management and global- distributed SE is on the way SE: From commercial to pr
41、ofessional nBody of Knowledge nAccredited university education The Software Engineering Body of Knowledge (SWEBOK) nIEEE-CS,2004:软件工程知识体系指南 qSoftware Requirements qSoftware Design qSoftware Construction qSoftware Testing qSoftware Maintenance qSoftware Configuration Management qSoftware Quality qSof
42、tware Engineering Management qSoftware Tools and Methods qSoftware Engineering Process Education nCCSE2004, IEEE-CS/ACM nGSwE2009 IEEE-iSSEc Main Contents n软件的理论(表征)、抽象和设计(实现) n软件的发展路线 nA 20th Century View nA 21st Century View nConclusions qTimeless principles and aging practices The Future of Syste
43、ms and Software nBarry Bohems view nEight surprise-free trends 1.Increasing integration of SysE and SwE 2.User/Value focus 3.Software Criticality and Dependability 4.Rapid, Accelerating Change 5.Distribution, Mobility, Interoperability, Globalization 6.Complex Systems of Systems 7.COTS, Open Source, Reuse, Legacy Integration 8.Computational Plenty nTwo wild-card trends 9.Autonomy Software 10.Combinations of Biology and Computing Main Contents n软件的理论(表征)、抽象和设计(实现) n软件的发展路线 nA 2
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年科室院感度工作计划(2篇)
- 2026年保险改造能源托管合同
- 2026年金融合作产品设计协议
- 2026年安防建设猎头招聘协议
- 村委民事调解工作制度
- 村庄绿化养护工作制度
- 预防免疫规划工作制度
- 领导包保社区工作制度
- 风电运维工作制度汇编
- 高速卡口值守工作制度
- 2026年行政后勤岗位考试试题及答案
- 矿井防突培训工作制度
- 2021泛海三江CRT-9200消防控制室图形显示装置使用手册
- HGT 20584-2011 钢制化工容器制造技术要求
- MSDS中文版(锂电池电解液)
- 乳腺癌科普知识宣传
- 人教版五年级数学下册课后作业设计 4.8通分(解析版)
- 中国特色社会主义思想概论复习思维导图
- 工会经审实务课件
- 下班后兼职免责协议书
- 2023年解读机构编制工作条例全面落实改革任务
评论
0/150
提交评论