cs3300 fall 2015 the (im)possible dream team project description(s)

Post on 28-Dec-2015

214 Views

Category:

Documents

1 Downloads

Preview:

Click to see full reader

TRANSCRIPT

CS3300 Fall 2015The (Im)Possible Dream Team

Project Description(s)

In-Class Exercise

Think of the largest piece of software you ever personally wrote• Roughly how many lines of code? 1,000• Roughly how many total hours – including design, redesign,

redos? 100• How many lines of code per hour? 10FYI: really big government contracts bill at about 1 line per hour.We have 46 people from whom I can expect 10 hours a week for 15 weeks ~= 7000 hoursTotal lines of code: 7000 * ________ = __________

Project Planning

[old geeze story]• 3 integration cycles• Each team decides the toughest part of their

job• First integration cycle must include these

tough parts

Project 1: Active Book

• Open Source e-book with active pages– Run code from any listing– Edit and save code in any listing– Populate plots /images with program results– Text window for interaction and text results– Functionality sufficient for CS01 class (CS1371)– Implementation details TBD

• Language? OO?

• Independent of other vendors’ work• Suggest using Spyder / Anaconda

Project 2: Mobile ad hoc Network (MANET)

• Program Raspberry Pi (e.g) with on-board camera to stream video to a base station

• Patentable algorithm for managing the ad hoc network

• Base station controlling remote devices• Robots?

Core Values

• Individual Involvement– Discuss Task Assignments, Time Allocated– Report difficulties

• Leadership– Overall responsibility– Solve problems within area of responsibility– Elevate problems with larger impact

Core Values (cont)

• Pyramid of Responsibility

Leaders

Management – making sure everyone has the necessary resources

Doers

Respect

• Individual Roles and Responsibilities• Individual Abilities• Management challenge:– Match ability to responsibility

• Can’t guarantee perfect matches– Some jobs must be done– … it’s only 16 weeks …

• Evaluations include understanding that you might be “taking one for the team!”

Management Group

• Architect– Vision– Interface management (document)– High-level requirements / test

• Allocated to teams

• Project Manager– Task breakdown and allocation– Discuss resource requirements

• Team Leaders• Worst Nightmare

– Me – customer who neither reads docs nor remembers what was discussed 2 minutes ago

Teams

• Text development – xml? Interfaces?• Test code – target language, unit tests• Infrastructure – windows, hosting, platforms• Library development – naming scheme• Configuration Management – regression tests• QA – Observe tests, get metrics• Networking project

Recognizing Abilities

1. Your own – apply for a job for which you have the skills

2. Other peoples’ – team effort is about appreciating that others are doing things you don’t want (or don’t have time) to do

3. Leadership – be nice; you might be one some day.

4. Appreciate delegation5. Communicate horizontally and vertically

Assessment

Assessing your grades will be as follows:• If you (your team and you individually) show me

what I expect to see, your project grade will be fine

• If my expectations are not met, your project grade will not look so good.

• The whole development process is designed to ensure that you get a good project grade

• The following discussion summarizes the plan

Staying Out of Trouble

• After the initial period of studying and planning, you will not be doing any work without the following:– A clear statement of your requirements– A plan for demonstrating that your requirements

were satisfied– An estimate to which you have agreed of the

amount of effort involved

But what if …

But life is never that easy. What if …• The requirements change?– You renegotiate the amount of effort

• You don’t have the resources to do the job?– Tell your leader [in writing] and renegotiate when

you have the resources• The task is harder than you thought– Tell your leader [in writing], think creatively about

partial solutions and renegotiate

What if I’m a Leader?

Same questions and answers as above plus …• If there is a problem in your team, your first

plan is resolving the problem by reallocating people

• If that can’t work, report the problem [in writing, with all your team correspondence] to the project manager

• Work with the management group to resolve the issues

Communicate!!!

When things go wrong, it is natural to go silent. Don’t. Nobody will blame you for having a problem. The blame will come when you haven’t asked for help, the problem remains and you can’t deliver on expectations.

Important Parts

For all this to work, • There must be testable requirements at all levels• There must be a detailed interface document

showing how different parts interact• There must be a plan for completing the project – Allocated out to teams and individuals– Flexible enough to absorb change– With enough padding in each task estimate

This might take the first month of the semester

Prototypes at All Levels

• The best way to estimate the effort to complete a task is to prototype a small piece

• The best way to measure progress on a task is to build a series of prototypes

• If the prototyping is not disciplined, the whole thing degenerates to a hack-fest

Watchdogs

The least respected but most necessary of all the job assignments is Software Quality Assurance (SQA). Their tasking:• Make sure the requirements are testable• Make sure the requirements and tests are

correctly allocated to teams• Observe and report on testing at all levels

Configuration Management

• There will be a central repository for all code and documentation

• The documentation will not be pretty – just useful

• All tests will start by extracting the necessary code and data from the repository

• All tests will be written up and reported to the repository

Immediate Activities

• CM, SQA– Design and develop the repository for everything,

including the MANET project– Capture all the stuff and make sure checkout

policies and procedures are operational• MANET team– Meet with me Friday – I have a pile of perhaps

worthless hardware you should review for its usefulness.

Other Teams

• Collaborative requirements development:– As a group, based on what you know and can gather

from conversations with me and Michael,– Write down a list of requirements you can accomplish

and how you will test them before integration into the system

– Note that you may unearth some library or infrastructure requirements upon which you will depend. Capture these separately

– When you’re done, commit them to the CM repository

Sorting it Out

• As soon as practical, we will have an integration meeting to iron out the real requirements.

top related