Académique Documents
Professionnel Documents
Culture Documents
The status of the CIs at a given point in time is called as a baseline. The baseline serves as a reference point in the software development life c!cle. (ach new baseline is the sum total of an older baseline plus a series of approved changes made on the CI & baseline is considered to have the following attributes *. +unctionall! complete & baseline will have a defined functionalit!. The features and functions of this particular baseline will be documented and available for reference. Thus the capabilities of the software at a particular baseline is well "nown. ,. -nown .ualit! The $ualit! of a baseline will be well defined. i.e. all "nown bugs will be documented and the software will have undergone a complete round of testing before being put define as the baseline. /. Immutable and completel! recreatable & baseline, once defined, cannot be changed. The list of the CIs and their versions are set in stone. &lso, all the CIs will be under version control so the baseline can be recreated at an! point in time.
&ssociated with each level from level two onwards are "e! areas which an organi#ation is re$uired to focus on to move on to the ne%t level. Such focus areas are called as -e! 4rocess &reas (-4&) in CMM parlance. &s part of level , maturit!, one of the -4&s that has been identified is SCM. Thus an! pro ect that has a good SCM process can be leveraged as satisf!ing one of the -4&s of CMM. 5e will cover this in more detail in the section on using SCM to leverage Open Source 4ro ects
Ta"e a great idea, wor" ver! hard on it and then advertise even harder: 00&non!mous This adage applies to OS4 more than an!thing else does. Open Source 4ro ects re$uire publicit! as much, if not more, than an! other pro ect to be successful. OS4 pro ects to compete in the commercial space will re$uire building credibilit! with the e%ternal world. Credibilit! should be built starting with fellow developers to users to other large commercial software houses. One of the wa!s to build credibilit! is b! leveraging the fact that a clearl! defined SCM process e%ists and is followed for the OS4.
#.2.1. ,evelo'ers
'evelopers benefit from the e%istence of an SCM process since it ma"es their life easier. There is more clarit! as to who is responsible for what portion of the code, how and when their patches will be integrated into the main source tree and when software releases will be made. The e%istence of such an operational roadmap will help "eep the enthusiasm of the developer communit! thereb! ensuring good $ualit! software development.
#.2.2. Testers
In the OS4 communit!, a few people will act as the testers for the application b! setting up the new version on their s!stem and using it on a regular basis. To them, the availabilit! of an SCM will help in recreating a particular release of the software. The! can establish test beds easil! and compare multiple releases against each other to find out the cause of a particular bug;issue.
#.2.$. !nvestors
Investors and venture capitalists perform due diligence before investing in an! particular venture. 'ue diligence is the fanc! term for the e%ercise that attempts to find out whether the particular venture is worth investing into. Since I am not familiar with what is involved in due diligence, I will not be able to add finer points here. &ll the same, the e%istence of a defined process to manage the development will alwa!s help.
Configuration Identification is the process whereb! !our organisation selects and determines how the individual components of a software pro ect are to be identified. Fou can assist in the basic process of configuration identification b! following these procedures1 Ma"e sure that there e%ists a modules file in !our C2S repositor! (in the C2S3OOT director!). This is what C2S uses to identif! each software module. (nsure that there is a document somewhere (inside or outside of the repositor!) that describes each of the software modules, and what its purpose is. 4ut comments into the modules file that refer bac" to the document, or put e%tracts from the document into the C2S modules file as comments (remember that )modules) is a te%t file, not a word processing document, and each comment should be preceded with a hash sign 00 )G)). (nsure that there is an effective release procedure. The release procedure should involve a s!stem of tagging, identification, numbering, and bac"up. 3elease procedures are described in more detail later.
The s!stematic proposal, ustification, evaulation, coordiation, approval or disapproval of proposed changes, and the implementation of all approved changes, in the configuration of a CI after establishment of the configuration baseline for the CI.
file manuall! before the changes can be committed to the source repositor! successfull!. 3epositor! & shared database with the complete revision histor! of all files under version control. 3esolving Conflicts within a file created b! two developers attempting to commit conflicting changes must be addressed b! manuall! editing the file. Someone must go through the file line b! line to accept one set of changes and delete the other set. +iles with conflicts cannot be committed into the source repositor! successfull! until the! are resolved. 3evision & numbered draft of specific updates to individual files. (ach time !ou edit a file and commit it bac" to the repositor!, the file<s revision number increases. 2ersion The numbering scheme used to identif! sets of files that are tagged and named at a certain point in time. 5or"space Four copies of the files !ou want to edit on !our local hard dis" or =ni% user account. 5hen !ou edit files in !our wor"space, the! will become out of s!nc with the repositor!. That<s progress: Then !ou need to get !our changes bac" into the repositor! so that ever!one else can see them.
Committing !our changes to merge with other developers< wor" is the most powerful aspect of C2S, but that power also ma"es it the most critical aspect. It<s possible to get confused and accidentall! overwrite someone else<s changes or !our own. Four contributed changes invariabl! will conflict with someone else<s at some point. =nderstanding how and when to update !our wor"ing copies and how to resolve merge conflicts are two particularl! critical aspects of using C2S in collaborative development pro ects. This copy-modify-merge cycle is repeated throughout the life of the pro ect b! all contributing developers. C2S enables ever!one to wor" on pro ect files simultaneousl!, to sta! up to date on the latest changes contributed b! others, and to test how their own changes affect the overall pro ect without interrupting other developers< c!cles.
detect the conflict and re$uire someone to resolve resolve it before committing their changes. Merging Combining multiple changes made to different wor"ing copies of the same files in the source repositor!. Merging is a strateg! for managing conflicts b! letting multiple developers wor" at the same time (with no loc"s on files), and then incorporating their wor" into one combined version. Merging wor"s well when two sets of changes are made to different lines in a files and can be easil! combined. 5hen changes to a file are made on the same line or lines, conflicts occur, re$uiring someone to edit the file manuall! before the changes can be committed to the source repositor! successfull!. 3epositor! & shared database with the complete revision histor! of all files under version control. 3esolving Conflicts within a file created b! two developers attempting to commit conflicting changes must be addressed b! manuall! editing the file. Someone must go through the file line b! line to accept one set of changes and delete the other set. +iles with conflicts cannot be committed into the source repositor! successfull! until the! are resolved. 3evision & numbered draft of specific updates to individual files. (ach time !ou edit a file and commit it bac" to the repositor!, the file<s revision number increases. 2ersion The numbering scheme used to identif! sets of files that are tagged and named at a certain point in time. 5or"space Four copies of the files !ou want to edit on !our local hard dis" or =ni% user account. 5hen !ou edit files in !our wor"space, the! will become out of s!nc with the repositor!. That<s progress: Then !ou need to get !our changes bac" into the repositor! so that ever!one else can see them.
C2S allows !ou to wor" within !our own development c!cle while "eeping trac" of the pro ect<s overall development c!cle1 *. Fou begin wor"ing on a pro ect b! obtaining !our own wor"ing cop! of files, "nown as checking out the pro ect repositor! or modules, individual groups of pro ect source files. ,. Fou ma"e !our contributions to the pro ect b! modif!ing these files and creating new files. This part of the c!cle doesn<t involve cvs directl!. Fou modif! !our wor"ing copies of pro ect files using a file editor on !our local machine. Fou can save and compile !our edited files to test how !our changes affect the particular pro ect module !ou are wor"ing in without affecting an!one else<s wor" on those same pro ect files. 9othing !ou do affects other pro ect participants until !ou merge !our changes into the pro ect repositor!. /. Fou test and twea" !our latest changes in !our own wor"space to ma"e sure these wor" without brea"ing or corrupting the overall pro ect. I. +inall!, !ou contribute bac" or check in !our changes to the main or )top) bod! of pro ect files, merging !our wor" with the most recent wor"ing version "nown in C2S terminolog! as the head. Committing !our changes to merge with other developers< wor" is the most powerful aspect of C2S, but that power also ma"es it the most critical aspect. It<s possible to get confused and accidentall! overwrite someone else<s changes or !our own. Four contributed changes invariabl! will conflict with someone else<s at some point. =nderstanding how and when to update !our wor"ing copies and how to resolve merge conflicts are two particularl! critical aspects of using C2S in collaborative development pro ects. This copy-modify-merge cycle is repeated throughout the life of the pro ect b! all contributing developers. C2S enables ever!one to wor" on pro ect files simultaneousl!, to sta! up to date on the latest changes contributed b! others, and to test how their own changes affect the overall pro ect without interrupting other developers< c!cles. 5hat is version control7 & version control s!stem maintains an organi#ed set of all the versions of files that are made over time. 2ersion control s!stems allow people to go bac" to previous revisions of individual files, and to compare an! two revisions to view the changes between them. In this wa!, version control "eeps a historicall! accurate and retrievable log of a file<s revisions. More importantl!, version control s!stems help several people (even in geographicall! disparate locations) wor" together on a development pro ect over the Internet or private networ" b! merging their changes into the same source repositor!. -e! terms in version control
Chec"ing in a file or director! This copies !our wor"ing director! bac" into the repositor! as a new version. Chec"ing out files or directories This copies the latest revision of a file from the repositor! to !our wor"space. 5hen !ou chec" out a director!, !ou chec" out all files and subdirectories under it. Committing a file or director! This is the same as chec"ing in a file or director!. Often version control users will sa! that the! have )committed a change)C this means that the! made changes to their wor"ing copies of files and committed these bac" to the repositor!. Conflict 5hen two developers ma"e changes to their wor"ing copies of the same file and commit them to the repositor!, their wor" ma! conflict. 5hen this happens, C2S will
detect the conflict and re$uire someone to resolve resolve it before committing their changes. Merging Combining multiple changes made to different wor"ing copies of the same files in the source repositor!. Merging is a strateg! for managing conflicts b! letting multiple developers wor" at the same time (with no loc"s on files), and then incorporating their wor" into one combined version. Merging wor"s well when two sets of changes are made to different lines in a files and can be easil! combined. 5hen changes to a file are made on the same line or lines, conflicts occur, re$uiring someone to edit the file manuall! before the changes can be committed to the source repositor! successfull!. 3epositor! & shared database with the complete revision histor! of all files under version control. 3esolving Conflicts within a file created b! two developers attempting to commit conflicting changes must be addressed b! manuall! editing the file. Someone must go through the file line b! line to accept one set of changes and delete the other set. +iles with conflicts cannot be committed into the source repositor! successfull! until the! are resolved. 3evision & numbered draft of specific updates to individual files. (ach time !ou edit a file and commit it bac" to the repositor!, the file<s revision number increases. 2ersion The numbering scheme used to identif! sets of files that are tagged and named at a certain point in time. 5or"space Four copies of the files !ou want to edit on !our local hard dis" or =ni% user account. 5hen !ou edit files in !our wor"space, the! will become out of s!nc with the repositor!. That<s progress: Then !ou need to get !our changes bac" into the repositor! so that ever!one else can see them.
The cop!0modif!0merge development c!cle >ecause C2S is a vastl! powerful tool, the learning curve might seem formidable. Certainl! there are plent! of boo"s and web sites offering comprehensive C2S "nowledge bases (man! good sources are referenced at the bottom of this site<s main C2S page). 6owever, it is not necessar! to digest an entire tome to be able to incorporate C2S into !our software development practices immediatel! and effectivel!. C2S allows !ou to wor" within !our own development c!cle while "eeping trac" of the pro ect<s overall development c!cle1
Fou begin wor"ing on a pro ect b! obtaining !our own wor"ing cop! of files, "nown as checking out the pro ect repositor! or modules, individual groups of pro ect source files. ,. Fou ma"e !our contributions to the pro ect b! modif!ing these files and creating new files. This part of the c!cle doesn<t involve cvs directl!. Fou modif! !our wor"ing copies of pro ect files using a file editor on !our local machine. Fou can save and compile !our edited files to test how !our changes affect the particular pro ect module !ou are wor"ing in without affecting an!one else<s wor" on those same pro ect files. 9othing !ou do affects other pro ect participants until !ou merge !our changes into the pro ect repositor!. /. Fou test and twea" !our latest changes in !our own wor"space to ma"e sure these wor" without brea"ing or corrupting the overall pro ect. I. +inall!, !ou contribute bac" or check in !our changes to the main or )top) bod! of pro ect files, merging !our wor" with the most recent wor"ing version "nown in C2S terminolog! as the head. Committing !our changes to merge with other developers< wor" is the most powerful aspect of C2S, but that power also ma"es it the most critical aspect. It<s possible to get confused and accidentall! overwrite someone else<s changes or !our own. Four contributed changes invariabl! will conflict with someone else<s at some point. =nderstanding how and when to update !our wor"ing copies and how to resolve merge conflicts are two particularl! critical aspects of using C2S in collaborative development pro ects. This copy-modify-merge cycle is repeated throughout the life of the pro ect b! all contributing developers. C2S enables ever!one to wor" on pro ect files simultaneousl!, to sta! up to date on the latest changes contributed b! others, and to test how their own changes affect the overall pro ect without interrupting other developers< c!cles.
*.
Cigital 8abs J 3esources J 'efinitions J Software Inspection Software inspection is the manual processes of reading code to detect errors. Software inspection is neither automated parsing, nor is it d!namic testing. @enerall!, software inspection is carried out onl! b! persons other than those who wrote the code. 6aving independent opinions almost certainl! improves the number of defects found b! this process. Software inspection has been used for man! !ears, b! such luminaries as >abbage and von 9eumann. Other professions have similar procedures (e.g., financial auditors, medical second opinions, building inspectors, etc.). Software inspection was much more mainstream in the K?<s and B?<s, because of the difficult! of getting access to computer time. In the earl! da!s, it was not uncommon for a user to submit punched cards and then wait for one or more da!s before the results were returned. >ecause of this time lag, it was prudent for the developer to detect all s!ntactic errors before submitting a ob. 5ith computer resources scarce and programs of smaller si#e than toda!<s s!stems, performing careful inspections of the code before compilation and e%ecution was easil! achieved. <hough programs are huge toda!, software inspection is ma"ing a comebac". It should be obvious wh! software inspection detects errorsC after all, having more e!es staring at code onl! serves to improve its $ualit!. +reedman and 5einberg report that in large s!stems, inspections reduced the number of errors going into testing b! a factor of *? D*E. The advent of personal computer and compilers for 4Cs, caused developers to become la#! and start hac"ing together code, immediatel! tr!ing to compile and run it. 8a#! coders emplo! debuggers to tr! to find errors. >ecause of this, inspections got lost for a time, but toda!, inspections are bac" in heav! use, as it is widel! "nown that fi%ing errors before a s!stems goes into test is e%tremel! cost0effective. Software inspection can be performed at a variet! of different levels. +or e%ample, there are code walkthroughs, that e%amine source code but ignore design and re$uirements documents. Formal reviews re$uire that someone familar with the code introduce the rest of the inspectors to the code. These are more li"e presentations where the code itself is the sub ect manner. T!pical inspections are not onl! geared toward error detection but also ensure that particular coding standards and issues such as portabilit! are enforced