How Do You Define “Finished”?

How Do You Define “Finished”?

Brian Sam-Bodden Scottsdale, Arizona, U.S.

IT IS hARD FoR A SoFTWARE DEvEloPMEnT TEAM To SUCCEED if there isn’t a clear definition of what success means. For developers, success entails delivering a product that meets customer expectations. However, to define total project success, we need an accurate, shared definition among the larger project team of what it means to “finish the project.”

To embrace the overall project scope, the core tenet of traditional, iterative software development is “divide and conquer.” The project is broken into deliverables, which are then divided into work packages. Those are ultimately broken into activities assigned to a specific person.

Using an agile approach with one- to several-week iterations, or work periods, the necessity to consider overall project scope can be masked. Finishing the goals of one iteration can be clearly set out as creating working software that passes unit tests, possibly clears limited integration tests, and allows prom- ised software features to be demo’d to the stakeholders for their approval and feedback.

The problem is that at the macro level, a project has many other considerations beyond the code and its accompanying tests. Using the traditional waterfall method, testing was relegated to the end of a project and became a flaw in the process. In a more agile approach, developers may erroneously defer or dis- miss all the nonprogramming items or activities as not having a place in their view of what a software project entails.

Some of these items may be unit and integration testing between a newly cre- ated component/feature and the components/features created in prior iterations.

           These often-overlooked integrations underscore a fundamental problem for development teams. The complexity of software seems to be geometrically proportional to the number of component interconnections. Don’t ignore the time needed to craft a demo environment, and do write user-level/acceptance testing scripts and create accompanying documentation. No matter how light your methodology, shippable software requires a certain level of documentation.

When these items are not ignored, the macro definition of what it means to be “finished” differs significantly from the accumulated finishing of a set of features within an iteration. And, the delta created from a buildup of those missing items per iteration can alter the way a feature is implemented, tested, and perceived by the customer.

Let’s not overburden our developers with administrative or business issues. The underlying concept we need to spread is that iterations are not just for software developers. They must be coordinated with tasks important to the larger, general software project team members. Business analysts, software project managers, and quality testers must coordinate their crucial activities with those of the developers.

The person responsible for this coordination is the software project manager, who must understand and spread the overall definition of what it means to be finished at the macro level so that the non-code-based activities are performed side by side with the weekly iteration work. The project manager must be the arbiter between the development team and the other stakeholders to define what it truly means to be “finished.”

时间: 2024-12-24 16:01:52

How Do You Define “Finished”?的相关文章

操作系统课程设计 消息缓冲队列通信

消息缓冲队列通信机制其基本思想是根据“生产者——消费者”原理,利用内存中公用消息缓冲区实现进程间的信息交换. 在这种通信机制中,首先需要在内存中开辟若干空闲消息缓冲区,用以存放要通信的消息.每当一个进程需要向另一个进程发送消息时,便向系统申请一个空闲消息缓冲区,并把已准备好的消息复制到该缓冲区,然后把该消息缓冲区插入到接收进程的消息队列中,最后通知接收进程.接收进程接收到发送进程发来的通知后,从本进程的消息队列中摘下一消息缓冲区,取出其中的信息,然后把消息缓冲区作为空闲消息缓冲区归还给系统.系统

OC高效率52之多用类型常量,少用#define预处理指令

// //  ViewController.m //  OC高效率52之多用类型常量,少用#define预处理指令 /**  *     1. 不要用预处理定义常量.这样定义出来的常量不含类型信息,编译器只是会在编译前据此执行查找与替换操作.即时有人重新定义了常量值,编译器也不会产生警告信息,这将导致应用程序中得常量值不一致.        2.在实现文件中使用static const 来定义"只在编译单元内可见的常量".由于此类常量不在全局符号表中,所以无需为其名称加前缀.     

Android 多个DEX错误 Multiple dex files define Landroid/support/v7/app/ActionBar$DisplayOptions;

今天在写程序的时候我的Android Studio 突然编译错误(错误提示如下:)后来经过我的几番折腾发现每一次都要先Clear Project一下然后再Build就可以了,如果你第二次再Build的时候就报错.后来我就找到了最强的老师(Google)尝试解决!可惜很遗憾,我在Google上看到的都是Eclipse上的解决方法.并没有找到我想要的答案,难道要我每一次在Build的时候都要先Clear Project吗?最后又经过我的几番折腾我发现在Project Structure--->app

MySQL foreign key - How to define a foreign key in MySQL

table of contents Creating a MySQL foreign key MySQL foreign key support in database engines MySQL foreign keys and ON UPDATE and ON DELETE MySQL foreign key FAQ: How do I define a foreign key in MySQL? Answer: Here's a quick example of how I typical

Cannot find AVD system path. Please define ANDROID_SDK_ROOT

报错信息: Emulator: Process finished with exit code 1 Emulator: PANIC: Cannot find AVD system path. Please define ANDROID_SDK_ROOT 解决方法: 1. 删除AVD内所有镜像 2. 系统环境变量里设置 ANDROID_HOME 原来就有,无需修改 新增 ANDROID_SDK_HOME 环境变量.其值为 E 盘一个新建的目录 重启Android Studio,使环境变量生效 重新

【安卓开发】AS神奇的报错:Cannot find AVD system path. Please define ANDROID_SDK_ROOT

我的电脑上之前运行 Android Studio 很正常,今天突然无法启动 Android 模拟器. 报错信息为: Emulator: Process finished with exit code 1 Emulator: PANIC: Cannot find AVD system path. Please define ANDROID_SDK_ROOT 昨天还好好的,为何今天就找不到 AVD 路径了呢... Android Studio 真是废柴!Google,Baidu 查了半天,无论 St

#define的用法

#define N 100  ok#define N 100; error#define N = 100  error   int a[N] => int a[= 100] error#define pin int*   pin a,b; error(a为int*,b为int) 2. 特殊用法 #define BEGIN {#define END } int main BEGIN    printf("haha");END 定义一个循环#define LOOP for(;;) 重

类型别名(define与typedef)

#define NEW OLD //使用预处理器的方法,为OLD定义一个新名称NEW,使用define定义的类型别名,会在预处理的过程中对NEW进行“单纯”的替换,例如: #define N 3+2 int i = N * 2; //预处理后,将会变成 int i = 3 + 2 * 2; //i 的结果将会是7 typedef typeName aliasName; //使用关键字typedef来创建别名,typedef不会创建新的类型,而只是为已知类型创建一个新名称. 两者比较: typed

【Android-tips】 Unable to execute dex: Multiple dex files define 解决方法

唔,之前已经想过今后不动android,没想到还是因为比赛的原因重操旧业.android有很多问题是由于eclipse的不完善造成的,比如今天遇到的这个问题 Unable to execute dex: Multiple dex files define [2011-10-23 16:23:29 - Dex Loader] Unable to execute dex: Multiple dex files define Lcom/myapp/R$array; [2011-10-23 16:23: