10 most important concepts in software engineering

Source: Internet
Author: User

10 most important concepts in software engineering

Original article: http://www.yourdonreport.com/index.php/2006/10/17/the-ten-most-important-ideas-in-software-engineering/

1. Software development is ultimately executed and completed by people rather than machines.
Software development is already med by human beings. this notion was first popularized by Gerald weberger in 1971, with a book entitled The psychology of computer programming (the silver anniversary edition of the book was republished in 1998 ). mcConnell noted that Estimating Models like COCOMO-II demonstrate the significant cost/effort multipliers associated with having talented, experienced personnel on a project. he also suggests that we can draw three conclusions from this point: (a) the success of companies like Google, Yahoo, and Microsoft is not accidental, and is 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 is cost-justified.

2. incremental development is required
Instrumentalism is essential. steve distinguishes between "incremental" and "iterative" development; by "instrumentalism," he refers to the idea of developing a little bit at a time, in contrast to the big-bang software development approach.

3. iterative development is required
Iteration is essential. this is a familiar concept, but Steve warned us to avoid accepting the all-or-nothing extremes of iteration. you don't have to accept the "Keep iterating forever" extreme, nor do you have to accept the "No iterations are allowed" waterfall approach.

4. the cost of adding a defect is to extend the development cycle
the cost to increase a defect increases over time, throughout the development life cycle. this is a concept that has been widely accepted for the past 25 years, and McConnell says he has revalidated its truth with data as recent as 2004, including XP/agile projects. I was somewhat surprised by this, because a common argument from the XP/agile enthusiasts is that modern tools have made the old concept irrelevant-I. E ., the XP/agile people argue that it doesn't cost much to fix a requirements defect later in the development process, because modern ide tools make it easy to redevelop software. mcConnell obviusly disagrees with this point, and I'll have to look into it further before I make up my own mind.

5. the waterfall model in the software development process is an important kernel (each increment or iteration is a small waterfall)
there is an important kernel of truth in the waterfall model of development. mcConnell suggests that the primary activities of software development are discovery (of what the requirements really), comprehention (of a solution), and construction (I. E ., implementation of that specified Ted solution ). and he argues that while these activities can overlap and take place somewhat concurrently, there is an intrinsically sequential nature to the activities.

6. Accurate Software estimation requires an increase in the entire software system development cycle
The accuracy of estimates (about the schedule, effort, and cost) for a project increases over time throughout the development of a software system. there is a great deal of uncertainty in the initial estimates that we create at the beginning of a project. the "cone of uncertainty," as McConnell callit, does not narrow by itself, it must be actively managed. as a result, McConnell concludes that iteration must be iterative, project planning must be incremental, and that estimates aren't meaningful unless they contain a description of their uncertainty.

7. The most powerful reuse is to reuse any reusable thing, not justCodeReuse
The most powerful form of reuse is reuse of everything-not just code. we 've long known that we shoshould be reusing designs, plans, checklists, role, etc; and McConnell reminds us that we shoshould be reusing processes for developing systems. indeed, that's how SEI-CMM Level 3 is all about.

8. Risk Management provides important insights into the software development process
Risk Management provides important insights into software development. McCONNEL notes that most projects spend more than 50% of their effort on unplanned work, and that the role of risk management is to reduce unplanned work.

9. Different types and scales of software require different types of development methodology
Different kinds of software callfor different kinds of software development approaches. The "one size fits all" approach to software development methodologies is just plain silly

10. Software Engineering systems and guidelines are important assets of software developers
The software engineering body of knowledge (swebok) is an important asset for software developers. swebok has detailed information about 10 different areas of software development, including the familiar ones of analysis, design, construction, and testing. mcConnell notes that it can be used for curriculum development, career development, certification, interviewing, and building a technical skills inventory.

Related Article

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.