Welcome to Scribd. Sign in or start your free trial to enjoy unlimited e-books, audiobooks & documents.Find out more
Standard view
Full view
of .
Look up keyword
Like this
0 of .
Results for:
No results containing your search query
P. 1
Sw Develop Funda

Sw Develop Funda

Ratings: (0)|Views: 3|Likes:
Published by Kot_26389

More info:

Published by: Kot_26389 on Apr 16, 2010
Copyright:Attribution Non-commercial


Read on Scribd mobile: iPhone, iPad and Android.
download as DOC, PDF, TXT or read online from Scribd
See more
See less





Chapter 4: Software-Development Fundamentals
One path to success in software is paying attention to fundamentals.If you don’t master fundamentals, you’ll do OK on the easy projects, but your hard projects will fall apart.
1.Management Fundamentals
Organizations that attempt to put software-engineering discipline in place before putting project-management discipline in place aredoomed to fail.Management fundamentals consist of (1) determining the size of the product (which includes functionality, complexity, and other  product characteristics), (2) allocating resources appropriate for a product of that size, (3) creating a plan for applying the resources,and then (4) monitoring and directing the resources.
A.Estimating and Scheduling
Three basic steps to create a software schedule (1) estimate the size of the project, then (2) estimate the effort needed to build a product of that size and then (3) estimate a schedule based on the effort estimate.An inaccurate estimate reduces development efficiency. Accurate estimation is essential input for effective planning, which isessential for efficient development.
Best projects are characterized by strong up-front planning to define tasks and schedules.Planning included these activities:1. Estimation and scheduling2. Determining how many people to have on the project team, what technical skills are needed, when to add people, and whothe people will be.3. Deciding how to organize the team4. Choosing which lifecycle model to use5. Managing risk 6. Making strategic decisions such as how to control the product’s feature set and whether to buy or build pieces of the product.
On a typical project, project management is almost a black-box function. You rarely know what’s going on during the project and you just have to take whatever comes out at the end. On an ideal project you have 100 percent visibility at all times. On an efficient project, you always have at least some visibility and you have good visibility more often than not. See p. 57 for graphs.If you don’t track a project, you can’t manage it. You have no way of knowing whether your plans are being carried out and no way of knowing what you should do next. You have no way of monitoring risk to you project. Effective tracking enables you to detectschedule problems early, while there’s still time to do something about them.
One key to long-term progress in a software organization is collecting metric data to analyze software quality and productivity.
II. Technical Fundamentals1.Requirements Management
Is the process of gathering requirements, recording them in some form, tracking the design and code against them, and then managingchanges to them for the rest of the project.Top three reasons that projects were delivered late, over budget, and with less functionality than desired (1) lack of user input (2)incomplete requirements, and (3) changing requirements.Success at requirements management depends on knowing enough different practices to be able to choose the ones that are appropriatefor a specific project.Fundamentals of requirements management:1.Requirements analysis methodologies including structured analysis, data structured analysis, and object-orientedanalysis.2.System-modeling practices such as class diagrams, DFD, ERD, data-dictionaries, and state-transition diagrams.3.Communication practices such as JAD, user-interface prototyping, and general interview practices.4.The relationships between requirements management and the different lifecycle models.
Fundamental topics1.Major design style—such as object design, structured design, and data structure design2.Foundational design concepts—such as information hiding, modularity, abstraction, encapsulation, cohesion, coupling,hierarchy, inheritance, polymorphism, basic algorithms, and basic data structures
3.Stand design approaches to typically challenging areas—including exception handling, internationalization andlocalization, portability, string storage, input/output, memory management, data storage, floating-point arithmetic,database design, performance, and reuse4.Design considerations unique to the application domain—such as financial, scientific, embedded systems, real-timesystems, and safety-critical software.5.Architectural schemes—such as subsystem organization, layering6.Use of design tools.Design serves as the foundation for construction, project scheduling, project tracking, and project control.
Fundamentals1.Coding practices—including variable and function naming, layout, and documentation2.Data-related concepts --such as scope, persistence, and binding3.Guidelines for using specific types of data—such as integer, floating-point, arrays …4.Control-related concepts—including organizing strait-line code, using conditionals, controlling loops 5.Assertions and other code-centered error-detection practices6.Rules for packaging code into routines, modules, classes, and likes7.Unit-testing and debugging practices8.Integration strategies—such as incremental integration, big-bang integration, and evolutionary development9.Code-tuning strategies and practices10.The ins and outs of the particular programming language you’re using11.Use of constructions tools—including environments, group work support, and code generators
4.Software Configuration Management
Is the practice of managing project artifacts so that the project stays in a consistent state over time.Includes practices for evaluating proposed changes, tracking changes, and handling multiple versions.Without configuration management, your teammates can change part of the design and forget to tell you.
III.Quality-Assurance Fundamentals
When a software product has too many defects, developers spend more time fixing the software than they spend writing it.Some projects try to save time by reducing the time spent on quality assurance practices such as design and code reviews. Other  projects—running late—try to make up for lost time by compressing the testing schedule, which is vulnerable to reduction because it’susually the critical path item at the end of the project.Poor quality is one of the most common reasons for schedule overruns.Up to four times the normal number of defects are reported for released products that were developed under excessive schedule pressure.Rule of thumb, every hour you spend on defect prevention will reduce your repair time 3 to 10 hours. The further from its origin that adefect is detected, the more it will cost to fix.
A.Error Prone Modules
About 20% of the modules in a program are typically responsible for about 80 % of the errors.Error prone modules tend to be more complex than other modules in the system, less structured, and unusually large.If development speed is important, make identification and redesign of error-prone modules a priority.
The two basic kinds of execution testing are (1) units tests, in which the developer checks his or her own code to verify that it workscorrectly, and (2) system tests, in which an independent tester checks to see whether the system operates as expected.
C.Technical Reviews
Used to detect defects in requirements, design, code, test cases, or other project artifacts.1.Walkthroughs—refers to any meeting at which two or more developers review technical work with the purpose of improving its quality. They are useful to rapid development because you can use them to detect defects well beforetesting.2.Code reading—the author of the code hands out source listing to two or more reviewers. The reviewers read the code andreport any errors to the author.3.Inspections—are a kind of formal technical review that has been shown be extremely effective in detecting defectsthroughout a project. Developers receive special training in inspections and play specific roles during the inspection:moderator, reviewers, author, and scribe. May be up to 20 times more efficient than testing.

You're Reading a Free Preview

/*********** DO NOT ALTER ANYTHING BELOW THIS LINE ! ************/ var s_code=s.t();if(s_code)document.write(s_code)//-->