软件工程中10个最重要的理念
来源:互联网 发布:淘宝自动发货php源码 编辑:程序博客网 时间:2024/05/21 18:45
原文:http://www.yourdonreport.com/index.php/2006/10/17/
the-ten-most-important-ideas-in-software-engineering/
1.软件开发最终是由人来执行和完成而不是机器。
# Software development is performed by human beings. This notionwas first popularized by Gerald Weinberg in 1971, with a bookentitled The Psychology of Computer Programming (the silveranniversary edition of the book was republished in 1998). McConnellnoted that estimating models like COCOMO-II demonstrate thesignificant cost/effort multipliers associated with havingtalented, experienced personnel on a project. He also suggests thatwe can draw three conclusions from this point: (a) the success ofcompanies like Google, Yahoo, and Microsoft is not accidental, andis partially due to their emphasis on hiring talented people; (b)recruiting talented staff members is easily cost-justified; and (c)spending money on employee retention programs iscost-justified.
2.增量开发是必须的
Incrementalism is essential. Steve distinguishes between“incremental” and “iterative” development; by“incrementalism,” he refers to the idea of developing a littlebit at a time, in contrast to the big-bang software developmentapproach.
3.迭代开发是必须的
Iteration is essential. This is a familiar concept, but Stevewarned us to avoid accepting the all-or-nothing extremes ofiteration. You don’t have to accept the “keep iterating forever”extreme, nor do you have to accept the “no iterations areallowed” waterfall approach.
4.增加一个缺陷的成本是延长了开发周期
The cost to increase a defect increases over time, throughout thedevelopment life cycle. This is a concept that has been widelyaccepted for the past 25 years, and McConnell says he hasrevalidated its truth with data as recent as 2004, includingXP/agile projects. I was somewhat surprised by this, because acommon argument from the XP/agile enthusiasts is that modern toolshave made the old concept irrelevant — i.e., the XP/agile peopleargue that it doesn’t cost much to fix a requirements defect laterin the development process, because modern IDE tools make it easyto redevelop software. McConnell obviously disagrees with thispoint, and I’ll have to look into it further before I make up myown mind.
5.软件开发过程的瀑布模型是重要的内核(每一个增量或迭代都是一个小瀑布)
There is an important kernel of truth in the waterfall model ofdevelopment. McConnell suggests that the primary activities ofsoftware development are discovery (of what the requirements reallyare), invention (of a solution), and construction (i.e.,implementation of that invented solution). And he argues that whilethese activities can overlap and take place somewhat concurrently,there is an intrinsically sequential nature to theactivities.
6.精确的软件估算需要增加整个软件系统的开发周期
The accuracy of estimates (about the schedule, effort, and cost)for a project increases over time throughout the development of asoftware system. There is a great deal of uncertainty in theinitial estimates that we create at the beginning of a project. The“cone of uncertainty,” as McConnell calls it, does not narrow byitself, it must be actively managed. As a result, McConnellconcludes that iteration must be iterative, project planning mustbe incremental, and that estimates aren’t meaningful unless theycontain a description of their uncertainty.
7.最强大的重用是重用任何可复用的事物而不仅仅是代码复用
The most powerful form of reuse is reuse of everything — not justcode. We’ve long known that we should be reusing designs, plans,checklists, role, etc; and McConnell reminds us that we should bereusing processes for developing systems. Indeed, that’s whatSEI-CMM level 3 is all about.
8.风险管理给软件开发过程提供重要的洞察力
Risk management provides important insights into softwaredevelopment. McConnel notes that most projects spend more than 50%of their effort on unplanned work, and that the role of riskmanagement is to reduce unplanned work.
9.不同类型和规模的软件需要不同类型的开发方法论
Different kinds of software calls for different kinds of softwaredevelopment approaches. The “one size fits all” approach tosoftware development methodologies is just plain silly
10.软件工程体系和指南是软件开发人员的重要资产
The Software Engineering Body of Knowledge (SWEBOK) is an importantasset for software developers. SWEBOK has detailed informationabout 10 different areas of software development, including thefamiliar ones of analysis, design, construction, and testing.McConnell notes that it can be used for curriculum development,career development, certification, interviewing, and building atechnical skills inventory.
- 软件工程中10个最重要的理念
- 软件工程中10个最重要的理念
- 软件工程中10个最重要的理念
- 软件工程中10个最重要的理念
- 软件工程中10个最重要的理念
- 软件工程中10个最重要的理念
- 软件工程中10个最重要的理念
- 软件工程中10个最重要的理念
- 软件工程中10个最重要的理念
- 软件工程中10个最重要的理念
- 软件工程中10个最重要的理念
- JavaEE中遗漏的10个最重要的安全控制
- 计算机科学中最重要的32个算法
- 计算机科学中最重要的32个算法
- 计算机科学中最重要的32个算法
- 计算机科学中最重要的32个算法
- 计算机科学中最重要的32个算法
- 计算机科学中最重要的32个算法
- jQuery BlockUI
- SharePoint Server 2007 Web内容管理中的几个关键概念
- 云计算平台现状及未来预测
- .NET开发中你可能会用到的常用方法总结
- .net,C#,Ftp各种操作,上传,下载,删除文件,创建目录,删除目录,获得文件列表等(转)
- 软件工程中10个最重要的理念
- 设计已死?
- 走进Zend Framework框架编程(一):开篇 【转】
- sap各模块介绍 SAP模块顺口溜, 帮你对SAP有个大致的了解
- 走进Zend Framework框架编程(二):软件安装和环境配置 【转】
- Git详解(二)
- 最全的ASP.NET开源CMS汇总
- ArcGIS 9.3 Mobile 开发的常见问题
- iPP矩阵操作随笔4-矩阵乘向量