Chapter 26: Estimation for software projects. Software project planning encompasses five major activities - estimation, scheduling, risk analysis, quality management planning, and change management planning. In the context of this chapter, we consider only estimation - your attempt to determine how much money, effort, resources, and time it will take to build a specific software-based system or product.
This is fantastic stuff. As I started reading, I almost fell out of my seat because the project I’m on right now is going through exactly the hurt you describe and would beneﬁt greatly from material just like this. Matthew Bass Software Engineer A great book! The authors have done a great job in presenting the subject in a neutral way and avoiding any methodology-oriented traps. Roberto Gianassi IT Consultant What The Pragmatic Programmer brought to the individual skills and crafts of software developers, Ship It! is to the software development team. ...
A review is any activity in which a work product is distributed to reviewers who examine it and give feedback.
Reviews are useful not only for finding and eliminating defects, but also for gaining consensus among the project team, securing approval from stakeholders, and aiding in professional development for team members.
Reviews help teams find defects soon after they are injected making them cost less to fix than they would cost if they were found in test.
All work products in a software project should be either reviewed or tested.
At parties, people no longer give me a blank stare when I tell them I write free software. "Oh, yes, open
source—like Linux?" they say. I nod eagerly in agreement. "Yes, exactly! That's what I do." It's nice not
to be completely fringe anymore.
(NB) Cuốn sách Quản lý dự án phần mềm trong thực tiễn (Software Project Management in Practice) có kết cấu gồm 2 phần với 12 chương trình bày phần lập kế hoạch cho dự án (9 chương) và phần thực hiện và kết thúc dự án (3 chương). Mời các bạn cùng tham khảo nội dung chi tiết.
The project manager must set expectations about the time required to complete the software among the stakeholders, the team, and the organization’s management.
If those expectations are not realistic from the beginning of the project, the stakeholders will not trust the team or the project manager.
Software requirements are documentation that completely describes the behavior that is required of the software-before the software is designed built and tested.
Requirements analysts (or business analysts) build software requirements specifications through requirements elicitation.
Interviews with the users, stakeholders and anyone else whose perspective needs to be taken into account during the design, development and testing of the software
Observation of the users at work
Distribution of discussion summaries to verify the data gathered in interviews...
Faced with a software project of epic proportions? Tired of over-committing and under-delivering? Enter the dojo of the agile samurai, where agile expert Jonathan Rasmusson shows you how to kick-start, execute, and deliver your agile projects. Combining cutting-edge tools with classic agile practices, The Agile Samurai gives you everything you need to deliver something of value every week and make rolling your software into production a non-event.
Quality means “conformance to requirements”
The best testers can only catch defects that are contrary to specification.
Testing does not make the software perfect.
If an organization does not have good requirements engineering practices then it will be very hard to deliver software that fills the users’ needs, because the product team does not really know what those needs are.
People begin programming before they understand the problem
Everyone likes to feel that they’re making progress
When the team starts to code as soon as the project begins, they see immediate gains
When problems become more complex (as they always do!), the work gets bogged down
In the best case, a team that begins programming too soon will end up writing good software that solves the wrong problem
With the rise of the internet and the growing concern over intellectual property, this study provides an open, constructive platform for a wide range of lawyers, artists, journalists, and activists to discuss their views on the future of free and open-source software. By exchanging both complementary and conflicting opinions, the contributors look ahead to the evolution, prospects, and issues of sharing knowledge and ideas through technology.
A change in project priorities throws the team into disarray
This usually comes from a lack of understanding of the scope of the project
When the engineers don’t understand the users’ and stakeholders’ needs, they build the wrong software
And they might not find out that there’s a problem until after the work is done!
Nobody likes to think that they make mistakes
Making changes means talking about past mistakes – and admitting that they are mistakes!
You may make a great case for change, and still fail to convince people to do it.
Because change is uncomfortable, people in organizations will resist it.
Project managers who try to change their organizations run into several common excuses when trying to implement tools, techniques and practices.
Most software is built in organizations for people with specific needs.
A stakeholder is a anyone who has an interest (or stake) in the software being completed
A user is someone who will need to use the software to perform tasks.
Sometimes stakeholders will be users; but often the stakeholder will not use the software.
For example, a senior manager (like a CEO - chief executive officer or CTO - Chief technology officer in a company) will usually have a stake in the software that is built (since it affects the bottom line), even if she won’t ever use it....
Chapter summary: Agile software engineering represents a reasonable compromise between to conventional software engineering for certain classes of software and certain types of software projects; agile development processes can deliver successful systems quickly; agile development stresses continuous communication and collaboration among developers and customers;...
In this chapter, the following content will be discussed: Domain analysis, the starting point for software projects, defining the problem and the scope, what is a requirement? Types of requirements, use cases: describing how the user will use the system, some techniques for gathering requirements,...
The software engineer’s job is to solve problems economically by developing high-quality software. In this first chapter we will present important issues that all software engineers should understand to do their jobs well. In this chapter you will learn about the following: How does software differ from other products? How does software change over time? What do we mean when we talk about high-quality software? What types of software are there and what are their main differences? How are software projects organized? How successful are typical projects?...
In this chapter you will learn about the following: The different process models and methodologies that can be used to plan and conduct a software project, techniques for estimating the amount of work it will take to develop a system, the basics of organizing software engineering teams, techniques for planning, scheduling and tracking the work.