Upload
anthony-cannon
View
216
Download
1
Tags:
Embed Size (px)
Citation preview
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.