1
Software Development Methodology components - Relevant in IT industry and academics Ms. Anuja Bokhare and Dr. Shailaja Shirwaikar
Software development process is thus use of methods, models, Abstract— Software development is a complex task requiring a tools and techniques. These concepts together define the formalized approach and software development methodologies methodology being used during software development. have been used to meet these challenges and to avoid failures. The Methods have evolved over time and new methodologies are methodology used depends upon area, application, requirement and several other factors. Several recommended for software development. Some methodologies methodologies have evolved over time and each is strongly have stood the test of time and are still are heavily used while advocated by its proponents for specific situations. If a some are completely outdated. Many a times methodologies single model is used throughout the development then are named after the model or the method used by it creating methodology is called by that model name though confusion. This paper aims at removing the prevailing methodology is much more than a model. This paper aims confusion in academia as to methodology and its components. to present in a structured manner all that a software It will be interesting to find out which software development methods and models are used in industry and try to relate or methodology comprises of in order to clear the confusion add them in academia. That will ultimately increase the and categorize them in a streamlined way. The methods, models and methodologies used by IT productivity and confidence of students entering industry. industry are not included in academics leading to a huge cost incurred in training to make new entrants productive. This paper aims at identifying the gap between IT and academics and a common set of methodologies is suggested to fill the gap. The methods, models and methodologies that can be covered at awareness level are also identified.
II. SOFTWARE METHODOLOGY COMPONENTS
Software development methodology is a formalized approach using a standardized system development process that includes the activities, methods, models, best practices, deliverable and automated tools. One system development methodology is not Index Terms— Software development methodology, model, necessarily suitable for use by all projects. Each one is suited method to specific kinds of projects, based on various technical, organizational, project and team considerations. The different I. INTRODUCTION software methodology components as shown in fig 1.1 will be explored in further detail. he complexity of large systems is a challenge for even Design Approach Methods the most experienced software designers and developers. Adopting a software development methodology is often recommended as a technique for dealing with complexity and Software for ensuring successful completion of the project. Software Models Tools methodology development is a long and complex process which is divided into phases with set goals. If any phase fails to satisfy its objectives, that phase is repeated which means some phases get recycled to get desired results. Over the years several software development techniques and methods have been proposed and Deliverables Best Practices successfully applied. Tools are designed to support these techniques. Models are heavily used in the software design and Fig. 1.1 Software Methodology Components development process.
T
Manuscript received May 26, 2009. A. Bokhare is with Symbiosis
[email protected] Dr. S. Shirwaikar, is with Nowrosjee
[email protected].
College, Wadia
College,
e-mail:
A. Top-Down and Bottom-Up Design approach
e-mail:
Top-down and bottom-up design represent two contrasting approaches for designing a large system. Top-down approach
requires a complete design view of the system before any actual coding can begin. It breaks the system into subsystem with more design detail. In all, there is one design, and all modules are small parts of it. This type of design approach is traditionally associated with procedural languages. The bottom-up approach emphasizes assembling the big picture by completing many small pieces that work together. These small pieces are then integrated into the larger system. Before completing design, coding of individual modules and their testing is done. Use of the bottom-up approach produces reusable code that saves time later in the development process. This type of approach is traditionally associated with objectoriented languages. Many times combination of these two approaches is used called hybrid design or hybrid development [1]. B. Methods Method means the technique, way, or manner that should be followed while performing any activity. Various methods are included in software development methodology from inspection, reviews, verification and validation to auditing. These may vary depending upon the process model. • Verification and validation: Verification and validation starts with requirement review and continues through design review and code inspection to product testing. Verification involves checking if software works as per requirements specification. Validation is to ensure that the software system meets the customer’s expectations. • Inspection: Program inspections, automated source code analysis and formal verification are used to find errors. Inspection helps in process improvement. It is an ideal way to collect data on the type of defects. Inspections may be supplemented by some automatic analysis of source text of a system or associated documents. Inspection process contains planning and overviews of individual preparation. Inspection meetings are held to rework and follow-up. • Reviews: Reviews are conducted to uncover errors in function and logic of the software. It is used o to verify if the software under review meets its requirements or not, o to ensure that software has been represented according to prediction steps, o to achieve software development in a uniform manner, o to make project more manageable. To get all this information review meetings are conducted by review leader. Review reporting is done by record keeping. • Auditing: Auditing is complement to reviewing as it is done by asking questions like – -Is review conducted to access technical correctness? -Is it following standards properly? -Is change highlighted or not? - Are reports updated or not?
2 engineered. If the criteria are not followed, lack of quality will almost surely result. • Use of standards: Standard is a document that establishes uniform engineering or technical specifications, criteria, methods, processes, or practices. Standards are used for describing the method of selecting, implementing and monitoring the life cycle for software. Each phase in the software development follows some standards. To achieve quality, each phase is verified for standards through quality assurance activity [2]. • Documentation: Documentation should be done by following the guidelines in the standards. It should contain the input, output format along with file (transaction and master) description. Design document are prepared by following design guidelines. It should contain details about change request, bug fixing and review of records. • Procedures and protocols: Protocols are the rules and guidelines followed during development of software. A procedure is a specified series of actions and operations which have to be executed to obtain the same result under the same circumstance. Like, after requirement gathering requirement document is created and records are maintained this procedure is followed by applying specified rules to achieve standards. D. Deliverables Deliverables may vary depending upon the method applied to implement. The common deliverables to the system are program specification, product specification, development plan, data produced, user manual, test specification reports etc. Specifications: Program specification contains charts, tables and graphic description of modules and components of computer software and the interaction between each as well as the function performed and data used or procedure by each. Procedure specifications are planned procedure used for installing. Development plan specification consists of time tables, describing time required for development activities, personnel staffing plans for system analyst, programmers and other personnel preliminary testing and implementation plan. User manual: User manual describe the aspects of to run your system, from a user's perspective. It provides a comprehensive list of the tasks supported by your system. It explains, in detail, how each one is accomplished. Each screen in the user interface should be described in user manual. It describes the flow through your screens. It describes the available reports, the data found on each report and how to request each one [3]. E. Models
A model is the pictorial representation of the development process. This consists of phases, activities, patterns, methods used and flow of the system. Models are the systematic arrangement of activities in a proper manner. Software process models follow two approaches as predictive and adaptive. • Predictive approach emphasizes on the process of C. Best practices developing software and documentation e.g. waterfall Best practices include the use of standards, documentation, model. procedures and protocols. Standards define a set of • Adaptive approach emphasizes that organization must development criteria that guide the way in which software is look forward to change in requirement and
accommodate/hold those changes throughout design and development e.g. agile model F. Tools Tools provide automated or semi-automated support in the development process. They help to reduce cost and time in development, increase productivity and improve effectiveness and quality of the system/product. Speed improvement and time reduction can also be done by computer assisted analysis tools. According to software life cycle design requirement, CASE tools can be used to support system specification as they give unique and perfect result. For each stage of software development, tool requirement is different. For planning stage tools such as PERT tools, estimation tools and spreadsheets are used. For configuration management, version management system and system building tools are used. Test data generators and file comparators are used for testing. Tools like compilers and interpreters are used for language-processing. The above discussion about software methodology components clears the confusion and presents software development methodology in a structured manner. We have considered two types of methodologies as traditional and agile, to understand these components in a better way.
3 manner. Other models used by traditional methodology are spiral and prototyping [6]. Traditional methodology follows best practices like coding standards and quality assurance, is done to check whether the requirements are fully or partially satisfied. Documentation is done thoroughly following the procedures and standards Tools like compiler, debugger, interpreter, media editor and various CASE tools are used at different stages during the software development. Traditional methodology gives deliverables at the end of each phase pass to the next phase. Deliverables produced are formal requirement specification, system design specification, costbenefit analysis, feasibility specification, hardware and software architecture, user manual, product document, security parameters, constraints, module specification, interface specification and version description document [7].
B. Agile methodology The goals of agile methodology are to emphasize on people communication, working software and responding to change. Agile software development is evolved to overcome drawbacks of heavyweight/traditional methodology hence initially were called as lightweight methodologies. [8].
III. METHODOLOGY A. Traditional methodology
Agile Alliance described four main principles of agile methodology: 1. Individuals and interactions over processes and tools. 2. Working software over comprehensive documentation. 3. Customer collaboration over contract negotiation. 4. Responding to change over following a plan. (Manifesto for Agile Software Development)
The traditional methodology is comprised of a series of very definite phases, methods and models. Each phase execution starts sequentially only when the last phase has been finished. At each end of phase one or more tangible deliverables are produced. Fundamentally, it starts with a heavy documentation, requirements and planning, followed by sequential phases of Agile methodology works in cycles, typically of a week or a design, coding, testing, documentation, and finally release [4]. month, and at the end of each cycle, the priorities of the project are re-evaluated. This is similar to iterative methodologies which also re-evaluate at regular intervals. Agile methodology Software development progress flows from the top to the is used mainly for small scale projects where requirements are bottom; through the requirement analysis phase to continuously changing.
maintenance. It follows the linear sequential development approach. To complete different user requirements different The framework followed by agile methodology is iterative and incremental workflow. It provides modular approach means if types of methods and models are used as per the requirement. changes are necessary the whole program need not be rewritten rather specific modules need to be changed. Methods used in traditional methodology are analysis, debugging, meetings, exception handling, reviewing, Methods like meeting and justification are used at low level by inspection, interface connectivity, verification and validation, agile. Other methods such as feedback, continuous and auditing [5]. Phase disciplines using above methods is communication, user stories, use of CRC card for designing are essential to the success of large projects in traditional used. Activities such as requirements, coding and testing occur methodology. simultaneously during each iteration which helps in excellent communication among developer and customer [9]. Traditional methodology follows models like waterfall model, which consists of sequential flow for the development. It has a Delivery of working software is done in short time-boxed strong predictive nature to it. Many variations are done in iterations. Iteration is nothing but a small release of software. waterfall model, now it is available with feedback loop as well Time-box concept is used in agile methodology which gives overlapping of phases, so waterfall model changed to iterative
4 immediate deliverables to user. Other deliverables are code review, reports of designing, modeling, testing, and program management. Design is clean and simple. Delivery of the system is given to customer as early as possible aafter implementing changes as suggested. Agile methodology consists of a family of models like extreme programming, scrum, dynamic software re development system, adaptive software development, feature driven development etc. Each model has unique features, principles and phases, but all follow agile principle for development [4]. Agile methodology never freezes the users' requirements or a system specification or any other phase deliverables deliverables. There is a cost associated with modifying work. A well well-conceived lifecycle methodology gives the sponsoring organization a rational choice based on the costs and expected benefits of making or not making any non-trivial trivial change to previously accepted Fig. 1.2: Usage of method per team size results. As per the findings/survey reviewing and meeting methods are followed by almost all IT industry for all sizes/scales of IV. SOFTWARE METHODOLOY COMPONENT projects ANALYSIS The idea of survey is to collect data from a large group of people, in a standardized and systematic way. Qualitative data analysis can then be performed on this his data to identify the gap in industry and academics related to the use of different software methodology components. The process of analysis begins with designing questionnaire for IT industry and academics. Each question in the questionnaire is conside considered for evaluation and appropriate option is provided for that question which can be marked by observing software component used. An unstructured interview supplemented the questionnaire wherever necessary. The result of the questionnaire and interview produces duces qualitative data which is aggregated in tabular form and represented in the graphical form as pie and column chart. Fig. 1.3: Usage of models odels as per project scale The information collected about the methods used during software development depending upon the team size is collected and aggregated in the tabular form and its graphical Fig 1.3 shows the usage of models as per project scale. The selection of the model is done as per project requirement and representation is shown in fig.1.2. the deadline. Mostly agile models are followed by IT industry for large or small projects like XP, scrum, FDD, RUP. Graphic representation is a useful tool in analyzing concepts, interpretation ion and their interconnections [10]. A. Inferences for IT The purpose of data collection from IT industry is to accept the views of industry for current methodology, thodology, to find out new methodology, new methods and models they are following other than in academics Survey was conducted in 17 IT industries. Developments done in these companies are custom specific and also product specific. Some industries are ar service providers. Methods like reviewing and meeting are followed by almost all IT industries for all sizes/scales of projects. Discussions and interactions are more in smaller teams. Inspection is rarely
followed. Verification and validation techniques are used by many. Auditing is normally done for large projects but less used for small and medium size projects. Method used vary from client to client for some IT industry. Models are less likely followed during development. The selection of the model is done as per project requirement and the deadline. Sometime the features of some models are mixed to get the result fast, like FDD is mixed many times with other as it provides feature list to work fast. Mostly agile models like XP, scrum, FDD, RUP are followed by IT industry for large or small projects. Spiral and waterfall are still used for large and small projects. Some are following their own custom/hybrid made models.
5 B. Inferences for Academics The purpose of data collection from academics is to accept the views of academics about current methodologies covered and to identify what new methodologies need to be incorporated into the curriculum. Survey is conducted in 15 academic colleges of computer science. The college list consists of undergraduate, postgraduate and engineering level colleges to get multiple views.
All the colleges have project in their syllabus as partial fulfillment to the respective degree/course. The software techniques taught in syllabus are getting followed partially during project development. If the projects are live projects these techniques get followed at all level. Methods like Top-down designing approach is used for completely new reviewing, inspection, verification and validation are explained project. Bottom-up is used during modifications to existing deeply in classroom. Their implementation in the project varies projects. The choice of these approaches again depends upon as per requirement; accordingly the concepts are used at deep level. Methods like auditing are rarely used. project, its requirement and time. All the best practices are equally used as many companies follow ISO & CMM level standards for development. Coding standards are reviewed during review method by many organizations. Method similar to auditing and inspection are used to verify the standards. SQA keeps timely review.
About models like waterfall, spiral, prototyping and RAD are explained at deep level in classroom and implemented at deep level during hands-on. New models like agile are included at introductory level in some syllabus. Development tools are explained thoroughly but their use depend upon project requirement. Some of the best practices are taught at awareness level and some at deep level as per syllabus content. All the designing approaches are deeply covered in the classroom. Sandwich/hybrid approach is rarely followed by student during project.
Various deliverables produced as an outcome of development process. As per the findings test specification is delivered by most of the IT industry. Deliverables other than in list are architecture, defect list, status, code, project plan, list of code file modified and requirement documents. The records of deliverables are maintained by using tools like CVS, SVN, Whatever taught in syllabus is not sufficient for IT industry MAVEN, JIRA, WIKI, and VSS links. Also various other requirements. Many methods give an overview and some gives detail understanding. The various ways are identified to ways are identified. overcome this problem like restructure the syllabus, project Use of development tools is done at every phase to make should be live and follows some industry interaction, detail development fast. Phase wise tool names were collected during level of method to be included, the concepts in the syllabus related to methodology should be activity oriented, feedback survey. Some uses in-house tools for development. method to be included, UML to be included at UG level. Many IT industries select new employee depending upon job requirement. According to the strength and weakness of Development tools like rational rose, de-factoring, and testing employee the training period is decided which in turn define tool to be added in syllabus as per the level. The common opinion accepted from most of academician is agile the cost for training. methodology should be included in syllabus, as most of the IT The training given in classroom is not sufficient as it doesn’t industries follows this. If the above concepts are included in give hands-on experience to the employee by which they can syllabus and understood by students, it will help to increase the understand how to use/implement the different components of confidence level so that they can use them for live project in software methodology. According to IT industry hands-on is future. As flexibility and readiness to change, learn and adapt to new technologies is a very important factor to survive in IT required to avoid cost and time on training. industry. The various criteria are identified for implementing new methodology in IT industry like suitability, flexibility, and comfort level of employee, pros and cons, and license availability. According to IT industry agile, iterative development, test driven methodologies are appropriate for today’s software development. However selection of methodology depends upon the type of product/project.
C. Conclusion for Survey A separation/gap has been observed between uses of methodology components in IT industry and used in academics, to remove this gap a common methodology is suggested which consists of methodological component used by IT industry and academic level. This relevance will help to
6 increase the productivity of IT industry and confidence of [3] Awad, EM, 1997, System Analysis and Design (2nd ed.), New Delhi, Galgotia publication Wiley & sons, inc.2002. student. [4]
Aztecsoft, Agile Methodology [online], available from: http:// www.
scriibd. com/doc/8153877/.(Accessed 2 April 2009) Common methodology will consists of a formalized approach to the system development process, a standardized process that [5] Melonfire, 2006, Understanding the pros and cons of the Waterfall includes the activities, methods, models, best practices, Model of software development[online], available from: http://articles.techrepublic.com.com/5100deliverable and automated tools to be used for information 10878_11-6118423.html?tag=rbxccnbtr1 .(Accessed 26 February 2009) system development. [6]
Deming, W E, A Software Development Methodology Today [online],
Common methodology will follow the designing approaches as available from: http: //www.informit.comcontentimages0131872508samplechapter013187250 top-down, bottom-up and sandwich/hybrid as per the 8_ch01.pdf. (Accessed on 11 April 2009) requirement of project. Methodology will follow the methods like reviewing, inspection, verification and validation as they [7] Levine, MH, CISA Audit Serve, Inc., Analyzing the Deliverables Produced in the Software Development Life Cycle [online], available are used in almost all software companies as well taught in from:http://www.auditserve.com/articles/art_4.htm. (Accessed 16 March academics. Apart from this auditing, inspection, discussion and 2009) interaction, feedback and communication would also be included. [8] Coffin, R, 2006, A Practical Guide to Seven Agile Methodologies, Part 1[online], WebMediaBrands Inc, available from:
The suggested methodology will follow the new models like http://www.devx.com/architect/Article/32761 XP, SCRUM, FDD, ASD, RUP as they gives fast, iterative, (Accessed 3 April 2009) incremental development. It will use the best practices like use [9] Presson, S, 2004, Agile Versus Waterfall Method [online], CyberArmy.net, available from: of standards, documentations, protocols and procedure.
http://www.cyberarmy.net/library/article/202. (Accessed 31 March 2009)
Deliverables produced by common methodology will consists of requirement document, architecture of the system, project [10] Oates, BJ, 2007, Researching Information Systems and Computing, New Delhi, SAGE publications India Pvt. Ltd. plan defect list, status report; list of code modified and test specification report. Use of development tools should be done at every phase to increase comfort level with different tools
V. CONCLUSION As per the survey conducted to analyze data for IT and academics, we conclude that no method or a model is outdated. Some organizations still follow the traditional model for long duration projects. We have summarized the outcomes as a set of guidelines for academics as follows - Include agile methodology and some of its frequently used models, along with pros and cons for better understanding. - Methods related to agile model like feedback and communication should be taught at practical level. - Methods as reviewing, verification and validation should be taught by using case study as these are mostly followed in all IT industries. - Prototyping model which is included and taught deeply should be removed, as all new models follow the concepts from prototyping. - Waterfall and spiral should be there as awareness level. REFERENCES [1]
Hurt, J, Comparing Software Development Life Cycles [online], Available from: http://www.giac.orgresourceswhitepaperappicatio 217(1).pdf (Accessed 3 February 2009)
[2]
Fairely, R, 1985, Software Engineering Concepts, New Delhi, Tata McGraw-Hill.