recourse: "Software Engineering", Ian Sommerville


Keywords for this chapter:

  • planning
  • scheduling
  • cost estimation

Project planning takes place at three stages in a project life cycle:

  • At the proposal stage (When you are bidding for a contract to develop or provide a software system).

    • Do you have the resources to complete the work?
    • work out the price that you should quote to a customer.
  • During the project startup phase When you have to plan:
    • who will work on the project
    • how the project will be broken down into increments
    • how resources will be allocated across your company
    • etc
  • Periodically throughout the project

Planning at the proposal stage is inevitably speculative [ɪ'nevɪtəblɪ] ['spekjʊlətɪv] , as you do not usually have a complete set of requirements for the software to be developed. Rather, you have to respond to a call for proposals based on a high-level description of the software functionality that is required.

There are three main parameters that you should use when computing the costs of a software development project:

  • effort costs ( the costs of paying software engineers and managers)
  • hardware and software costs, including maintenance
  • travel and training costs

The plan should define project monitoring mechnisms. You must keep track of the progress of the project and compare actual and planned progress and costs.

Agood manager should be able to form a clear picture of what is going on through informal discussions with project staff.

1. Software pricing

When calculating a price, you should take the following iterms into account:

  • Market opportunity
  • Cost estimate uncertainty
  • Contractual terms
  • Requirements volatility
  • Financial health

1.1 market opportunity

A development organization may quote a low price because it wishes to move into a new segment of the software market. Accepting a low profit on one project may give the organization the opportunity to make a greater profit later. The experience gained may also help it develop new products.

1.2 Cost estimate uncertainty

If an organization is unsure of its cost estimate, it may increase its price by a contingency over and above its normal profit.

1.3 Contractual terms

A customer may be willing to allow the developer to retain ownership of the source code and reuse it in other prohects. The price charged may then be less than if the software source code is handed over to the customer.

1.4 Requirements volatility

If the requirements are likely to change, an organization may lower its price to win a contract. After the contract is awarded, high prices can be charged for changes to hte requirements.

1.5 Financial health

Developers in financial difficulty may lower their price to gain a contract. It is better to make a smaller than normal profit or break even than to go out of business. Cash flow is more important than profit in difficult economic times.

2. Plan-driven development

Plan-driven or plan-based development is an approach to software engineering where the development process is planned in detail.

2.1 Project plans

In a plan-driven development project, a project plan normally include the following sections:

  1. Introduction: This briefly describes the objectives of the project and sets out the constraints (e.g., budget, time, etc.) that affect the management of the project.
  2. Poject organization: This describes the way in which the development team its organized, the people involved, and their roles in the team.
  3. Risk analysis: This describes possible project risks, the likelihood of these risks arising, and the risk reduction strategies that are proposed.
  4. Hardware and software resource requirements
  5. Work breakdown: milestones and deliverables associated with each activity.
  6. Project schedul
  7. Monitoring and reporting mechanisms : This defines the management reports that should be produced, when these should be produced, and the project monitoring mechanisms to be used.

2.2 The planning process

The figure below is a UML activity diagram that shows a typical workflow for a project planning process.

contraints: delivery date, staff available, overall budget, available tools, and so on.

3. Project scheduling

Project scheduleing is the process of deciding:

  • how the work will be organized as separate tasks
  • when and how these tasks will be executed
  • calandar time
  • who will work on the tasks
  • resources needed

3.1 Schedule representation

Project schedules may simply be represented in a table or spreadsheet showing the tasks,effort, expected duration, and task dependencies.

There are two types of representation that are commonly used:

  • Bar charts: calendar-based, show who is responsible for each activity, the expected elapsed time, and when the activity is scheduled to begin and end. (Gantt charts)
  • Activity networks: network diagrams, show the dependencies between the different activities making up a project.

Project activities are the basic planning element. Each activity has:

  • a duration in clendar days or months
  • an effort estimate
  • a deadline
  • a defined endpoint. This represents the tangible result of completing the activity. This coud be a document, the holding of a review meeting, the successful execution of all tests, etc.

The table below shows tasks, estimated effort, duration, and task interdependencies.

It can be seen from the table that T3 is dependent on task T1. Task T1 must, therefore, be completed before T starts.

The bar chart below takes the information in table above and presents the project schedule in a graphical format.

Project managers have to allocate resources to tasks as well.

The table below shows when staff are working on the project.

4. Agile planning

Agile methods of software development are iterative approaches where the software is developedand delivered to customers inincrements.

(important but skip here)

Software Engineering: 3. Project planning的更多相关文章

  1. SENG201 (Software Engineering I) Project

    SENG201 (Software Engineering I) ProjectSpace ExplorerFor project admin queries:For project help, hi ...

  2. Software Engineering: 2. Project management

    resources:"Software Engineering" Ian Sommerville For most projects, important goals are: D ...

  3.  Go is more about software engineering than programming language research.

    https://talks.golang.org/2012/splash.article Go at Google: Language Design in the Service of Softwar ...

  4. 第二篇——The communication during software engineering.

    I've learned a lot in my software engineering class about how a program comes out.That's also a esse ...

  5. 2.2 CMMI2级——项目计划(Project Planning)

    大家都明白这样的一个道理:做事情要有计划,有一个不成熟的计划总比没有计划要好,软件开发这么复杂的活动,更加需要计划.那么应该怎样做好一个计划呢? 如果对项目的范围.规模.性质.任务.工作量.费用等都不 ...

  6. Software Engineering: 1. Introduction

    Resource: Ian, Sommerville, Software Engineering 1. Professional software development 1.1 Software e ...

  7. 个人阅读作业2—《No Silver Bullet: Essence and Accidents of Software Engineering》读后感

    在进行了一次结对编程.一次团队编程和一次个人编程项目后,读了<No Silver Bullet: Essence and Accidents of Software Engineering> ...

  8. Software Engineering at Google

    Google的Fergus Henderson在Software Engineering at Google中介绍了Google的软件工程实践. 软件开发 源码仓库 单一源代码仓库,除了核心配置和安全 ...

  9. Limeng:Individual Project: Word frequency program -BUAA Advanced Software Engineering

    11061190-李孟 Implement a console application to tally the frequency of words under a directory (2 mod ...

随机推荐

  1. asp.net mvc4 MvcMusicStore

    最近危机感紧迫,总想学些东西.又因为之前mvc的知识不够系统和牢固,所以最近想系统的过一遍.自然买了两本书来看,一边看一边对比.尽量做到每个地方都过一下.今天遇到一个问题所以记一下博客. 环境:win ...

  2. org.springframework.dao.DataIntegrityViolationException:

    数据库用的hibernate,开发工具用的myeclipse,使用开发工具连接数据库生成hibernate基于xml的po类,运行时报org.springframework.dao.DataInteg ...

  3. Openstack的nova-network的vlan模式扩展

    openstack的nova-network的vlan模式是可以在安装的时候,将网络划分为多个子网,每个项目一个或者多个子网进行虚拟机创建.但是他现在代码级别上不支持:如果一开始安装的环境的vlan网 ...

  4. python_函数

    一.map 遍历序列,对序列中每个元素进行操作,最终获取新的序列 li = [11,22,33,44] new_list = map(lambda a: a + 100,li) print(new_l ...

  5. SVN批处理

    前言 我们在项目开发中,使用的版本管理工具有svn git等.这里介绍一下用 bat命令操作svn .这样会给我们带来很大的方便. bat命令 Python等大家一定要掌握哈,会给你带来很多的方便.其 ...

  6. Android ProgressBar分析及自定义ProgressBar

    ProgressBar是在执行耗时操作时的一种人性化设计.分为两种形式:转圈的,能显示进度的. 而能取决于是什么样式的PregressBar,当然就是PregressBar的样式啦~ Widget.P ...

  7. Python爬网获取全国各地律师电话号

    [本文出自天外归云的博客园] 从64365网站获取全国各地律师电话号,用到了python的lxml库进行对html页面内容的解析,对于xpath的获取和正确性校验,需要在火狐浏览器安装firebug和 ...

  8. CentOS 7 下,如何设置DNS服务器

    在CentOS 7下,手工设置 /etc/resolv.conf 里的DNS,过了一会,发现被系统重新覆盖或者清除了.和CentOS 6下的设置DNS方法不同,有几种方式: 1.使用全新的命令行工具 ...

  9. 关于C语言宏定义 使用do{ xxxx }while()

    暂时感觉像是由于":"的原因,关于使用习惯方面的问题!! 下面是copy的: 这样的宏见过么: Cpp代码 #define FOO(x) do {\ some_code_line_ ...

  10. 6.Swift协议|扩展|访问权限|异常调试|类型转换|运算函数|ARC|类类型初试化器|值类型初始化器

    1. 协议(Protocol):与OC之间唯一不同的是Swift中的协议不管是属性还时方法全部是必须实现的 /** protocol*/ protocol FullNamed { /** 计算属性申明 ...