Universiti Teknologi MARA Designing a Proposed Model of Software Development Practices Nor Hasikin Bt Husian Thesis submitted infiilfillmentof the requirements for Bachelor of Science (Hons) Information System Engineering Faculty of Information Technolc^y and Quantitative Sciences May 2007
DECLARATION I certify that this thesis and the research to which it refers are the product of my own work and that any ideas or quotation from the work of other people, published or otherwise are fiiuy acknowledged in accordance with the standard referring practices of the discipline MAY 31,2007 NOR HASIKIN HUSIAN 2005616875 u
TABLE OF CONTENTS CONTENT PAGE APPROVAL DECLARATION ACKNOWLEDGEMENT ABSTRACT LIST OF TABLES LIST OF ABBREVIATION LIST OF FIGURES ill iv v vi xi xii xiii CHAPTER 1: INTRODUCTION 1.0 Research Background 1 1.1 Research Background 1 1.2 Problem statement/research Problem 2 1.3 Objective of the Research 3 1.4 Scope of the Research 3 1.5 Significance of the Research 3 1.6 Summary 4 CHAPTER 2: LITERATURE REVIEW 2.0 Introduction 5 2.1 Software Development Life Cycle 6 vu
2.2 Software Development Methodologies 7 2.2.1 Categories of Software Development Methodologies 15 2.2.1.1 Traditional Methodologies 15 2.2.1.2 Object-Oriented Methodologies 16 2.2.1.3 Aspect-Oriented Methodologies 17 2.2.1.4 Agent-Oriented Methodologies 18 2.2.1.5 Component-Oriented Methodologies 19 2.2.1.6 Agile Software Methodologies 20 2.3 Software Development Process 21 2.3.1 Requirement 21 2.3.2 Design 27 2.3.3 Development 32 2.3.4 Testing 36 2.3.5 Deployment 39 2.3.6 System Operation and Support 45 2.3.7 Quality and Defect Management 49 CHAPTER 3: RESEARCH APPROACH AND METHODOLOGY 3.0 Introduction 54 3.1 Research Approach and Methodology 54 3.1.1 Problem Assessment and Research Study 56 3.1.2 Data Collection 56 3.1.2.1 Primary Data 57 3.1.2.2 Secondary Data 58 3.1.3 Data Analysis 58 3.1.4 Design 59 3.2 Summary 60 vui
CHAPTER 4: DATA ANALYSIS AND FINDINGS 4.0 Introduction 61 4.1 Software Development Methodology Adoption 62 4.1.1 Category of Software Development Methodology 64 4.1.1.1 Traditional Methodologies 65 4.1.1.2 Agile Software Methodology 66 4.2.1.3 Object Oriented Methodology 67 4.2 Current Software Development Practices 68 4.2.1 Requirement 69 4.2.2 Design 73 4.2.3 Development 76 4.2.4 Testing 79 4.2.5 Deployment 81 4.2.6 System Operation and Support 83 4.4.7 Quality and Defect Management 87 4.3 The Proposed Software Development Practices Model 89 4.3.1 Model Construction 89 4.3.2 Description of Model 90 4.3.2.1 Components of Model 92 4.3.2.1.1 Requirement 92 4.3 96 4.3.2.1.3 Testing 106 4.3.2.1.4 Deployment 110 4.3.2.1.5 System Operation and Support 113 4.3.2.1.6 Quality and Defect Management 116 CHAPTER 5: CONCLUSION AND RECOMMENDATIONS 5.0 Introduction 121 IX
5.1 Conclusion 121 5.2 Recommendations 122 REFERENCES 123 APPENDICES APPENDIX A Questionnaires Sample APPENDIX B Interviews Questions
APPROVAL DESIGNING A PROPOSED MODEL OF SOFTWARE DEVELOPMENT PRACTICES BY NOR HASnON BT HUSIAN This thesis was prepared under the direction of thesis advisor; Cik Rosdiana Bt Abd Razak. It was submitted to the Faculty of Information Technology and Quantitative Sciences and was accepted in partial fulfillment of the requirements for the degree of Bachelor of Information System Engineering. Approved by: Cik Rosdiana bt Abd Razak Thesis Supervisor Date: 04 May 2007 111
DECLARATION I certify that this thesis and the research to which it refers are the product of my own work and that any ideas or quotation from the work of other people, published or otherwise are fiilly acknowledged in accordance with the standard referring practices of the discipline MAY 31,2007 NOR HASIKIN HUSIAN 2005616875 u
ACKNOWLEDGEMENT In the name of Allah, the Most Merciful and the Most Compassionate. Firstly, I would like to express my gratitude to Pn Ariza bt Nordin and Pn Wan Amalina bt Wan Hariri for their guidance in carrying out this IT Project (1TS690). And highly appreciation to Cik Rosdiana bt Abd Razak for her supervision. My sincere gratitude to those who had helped me with my data collection especially all the interviewees and respondents. And the most appreciation to my family for their encouragement in finishing this course gloriously. Last but not least, to all my friends, thank you for sharing your information, giving me advices and suggestions to make this thesis achieves it goals and always be there for me to give a helping hand. Thank you. IV
ABSTRACT The growth in use of Information Technology (IT) has spurred software development effort around the globe including in Malaysia. This research focuses on two aspects of the development of software: (1) Identification of the adoption of software development methodologies among IT organization in Malaysia and (2) Collection of quantitative data regarding current software development practices used by IT organization in Malaysia. A correct selection of methodology and practices used is important to produce a reliable and correct software product. This research will focus on software development methodologies and practices adopted and also used by IT organization in Malaysia. Survey and interviews will be conducted to retrieves information from respondents. This research presents the results of survey on 30 IT organizations in Malaysia in combination with interviews. The findings of this research indicates the software development methodologies adopted by IT organization in Malaysia and the current software development practices used by this type of organization. The key finding of this research is a proposed model of software development practices. This proposed model may guide IT organizations in choosing the right software development methodologies and perform the correct software development practices. It also provides more understanding, exposure and knowledge on software development methodologies available to peoples involves in YT industries. XI
LIST OF TABLES TABLE PAGE 2.1 Example of current leading software development methodologies 14 2.2 Comparison of Traditional Software Development Model 16 2.2 Comparison oftraditional Software Development Model 16 4.1 Category of Methodology Usage 64 4.2 Software Development Methodologies 65 4.3 Tools and Techniques used to Elicit and Analyze Requirements 70 4.4 Formats for Communicating Requirements Back To Users 71 4.5 Method use to help users understand the requirements 72 representation 4.6 Type of Design Methodologies 73 4.7 Implementation Tools 77 4.8 Programming Language 77 4.9 People Involves in Testing Activities 80 4.10 Methods to Provide Support 83 4.11 Evaluation Criteria 85 XI
LIST OF ABBREVIATION ABBREVIATION SDLC - Software Development Life Cycle IS - Information System AD -Agile Data AMDD - Agile Model Driven Development AUP - Agile Unified Process DSDM - Dynamic System Development Method EUP - Enterprise Unified Process XP - Extreme Programming FDD - Future Driven Development OOSP - Object Oriented Software Process RUP - Rational Unified Process TDD - Test Driven Development AOSD - Aspect-Oriented Software Development AO - Agent-Oriented AOP - Aspect-Oriented Programming CBSE - Component Based Software Engineering CBSD - Component Based Software Development ASP - Agile Software Process JAD - Joint Application Design CASE - Computer Aided System Engineering NOT - Nominal Group Techniques xu
FIGURE LIST OF FIGURES PAGE 2.1 Software Development Life Cycle 6 2.2 A Group Support System ("Grouputer") 24 2.3 V-Model of Software Testing 36 2.4 Deployment Process 40 3.1 Research Approach and Methodology 55 4.1 Software development Methodology Adoption 62 4.2 Traditional Enterprise Software Development Process 89 4.3 The proposed Software Development Practices Model 91 4.4 Requirement Practices 92 4.5 Design Practices 96 4.6 Development Practices 101 4.7 Testing Practices 110 4.8 Deployment Practices 102 4.9 System Operation and Support Practices 113 4.10 Quality and Defect Management Practices 116 xui
CHAPTER 1 INTRODUCTION 1.0 Introduction Determining the basis of a research is one of the important parts in any research study. This chapter will discuss on background of the research to understand what contribute to the carrying out of this research. The research problem identified, the objectives defined, the scope established and also the significance of research estimated will be described clearly in this chapter. 1.1 Research Background Software has conquered an essential and critical role in our society today. We increasingly depend on the features and services offered through computerized systems. Any modem product or services are using some piece of software. However, Software applications are complex products that are difficult to develop and test. (Fugetta, 2000).Very often, software exhibits unexpected and undesired behaviors that may even cause severe problems and damages. According to Fugetta (2000), the quality of a software product heavily depends on the people, organization and procedures use to create and deliver it. A correct selection of methodology is important to produce a reliable and correct software product. There are various methodologies available for software development. A methodology is composed of tools, techniques and methods that helps in producing better end products that meet user demands, improving
development process and also standardizing processes for better integration (Avison & Fitzgerald, 2003). For that reason, this research will investigate on the use of software development methodologies and software development practices adopted by Information Technology (IT) organizations in Malaysia. 1.2 Problem Statement / Research Problem Software development process can be over-intellectualized, and in some circumstances a methodology may prescribe an overly-complex approach whereas a simpler one may be more appropriate, given the nature of development in organizations (Fitzgerald, 2000). The inappropriate use of methodology in software development may raise problem such as inflexible and cumbersome development process. Previous researchers also had criticised the lack of empirical research on systems development in real organisational contexts (Jenkins et ah, 1984; Fitzgerald, 1994). More research is therefore needed into the actual practice of systems development in organisations. It is important to discover the essentially good practices of good systems developers, so that these can be transferred to other developers. This research will focus on identifying software development practices among software developers in its environment.
1J Objective Of The Research The objectives for this research are: 1. To identify software development methodologies adopted by IT organizations in Malaysia. 2. To describe the current software development practices used by IT organizations in Malaysia. 3. To propose software development practices model. 1.4 Scope Of The Research This research will focus on software development methodologies and practices adopted and also used by IT organization in Malaysia. Survey and interviews will be conducted to retrieves information from respondents. 1.5 Significance Of The Research The significances of the research are listed as below: 1. Provides more understanding, exposure and knowledge on software development methodologies available to peoples involves in IT industries. 2. The outcome of this research may guide IT organizations in choosing the right software development methodologies and perform the correct software development practices.
3; This research may also serve as the basis for other local researchers to perform further research in this field. 1.6 Summary In this chapter the initial steps of conducting the research is discussed. This chapter gives an overview on what this research is all about. The research background is stated clearly together with problem definition, the objectives, purposes, scope and also the significance of the research. This chapter also can be seen as the introduction to the research that can give early understanding on the research.
CHAPTER 2 LITERATURE REVIEW 2.0 Introduction In this chapter, all information that is relevant to this research are explored and evaluated. Different sources such as journals, articles and books are used to gather the information. This information is important to provide accurate facts and understanding on the research. All the literature is reviewed based on research objectives identified in the previous chapter. Since, in this research, the author are particularly interested in the adoption of software development methodologies and software development practices among IT organization in Malaysia, the author limit the literature review to this two topics, and Software Development Life Cycle (SDLC). These two topics are discussed more detailed in the next subtopic.
2.1 Software Development Life Cycle (SDLC) According to Marchewka (2006), Software development life cycle represents the sequential phases or stages a software follows throughout it usefiil life. The SDLC establishes a logical order or sequences in which the software developments occur and indicate whether to proceed from one activity to the next (McConell, 1996). It is stated that there are no generally accepted version of SDLC. Figure 2.1 below includes the generally accepted activities or phases associated with system or software development. Planning \ y \ Analysis y Design / \ Implementation y Maintenance \ and Support / i L Source: Jack T. Marchewka, Information Technok>gy Project Management, 2006 Figure 2.1: Software Development Life Cycle Meanwhile Fugetta (2000) added that software lifecycle defines the different phases in the lifetime of a software product. Typically, they are requirements analysis and specification, design, development, verification and validation, deployment, operation, maintenance, and retirement. Moreover, a software lifecycle defines the principles and guidelines according to which these different phases have to be carried out.
2.2 Software Development Methodologies A methodology is a formalized approach to implementing the Software Development Life cycle (SDLC) (Dennis, Wixom and Tegarden, 2005). There are many different systems development methodologies, and each one is based on the order and focus on each SDLC phase. For example, the waterfall model suggests that a specific phase should be started only when the deliverables of the previous one have been completed. On the other hand, the spiral model considers software development as the systematic iteration of a number of activities driven by risk analysis. A methodology is also defined as a recommended collection of phases, procedures, rules, techniques, tools, documentations, managements and training used to develop a system (Avison & Fitzgerald, 2003). Some methodologies are formal standard used by government agencies, while others have been developed by consulting firm to sell to clients. Many organizations also have internal methodologies that explain exactly how each phase of the SDLC is to be performed in that company. Methodologies can be categorized in many ways. It can be looked at whether they focus on business process or the data that support the business process. Another way to categorized methodologies is to see the sequencing of SDLC phases and the time and effort devoted to each (Dennis, Wixom and Tegarden, 2005). According to Nandhakumar and Evison (2000), Information System (IS) development methodologies differ in the technique it recommend, the contents of the development phases they specify and in some cases their whole perspectives on information system. They are intended to improve many aspects of IS development, such as understanding the development process, communicating
the knowledge acquired, improving productivity of the programming task and making IS easier to maintain (Avison and Fitzgerald, 1995). New methodologies and approaches are often proposed as solutions to problems in IS development (Fitzgerald, 1996). There are also new methodologies developed by blending together what are considered to be the strong features of existing methodologies. Methodologies may also be developed by combining different types of methodologies to overcome the drawbacks of each. Since there are many methodologies, selecting the best methodology is a problem for a company. A methodology is not universally applicable to all development situations because situations might differ depending on the type of project and its objectives, the organization and its environment, the users, and the developers and their respective skills. The type of project might also differ as to purpose, complexity, structuredness, degree of importance, projected life, and potential contribution to overall corporate performance. Different environments might exhibit different rates of change, number of users affected by the system, user skills, and analyst skills. All these characteristics can influence the choice of required development approach (Avison & Fitzgerald, 2003). In practice, developers frequently do not apply the methodologies in their complete form as specified (Chikofsky, 1989, Jenkins et ah, 1984). Developers omit those aspects of the methodology that do not seem to suit the contingencies of the situation. Some organizations have rejected the use of methodologies, returning to less-formal, more flexible approaches. They also likely to find an appropriate approach for their system development work (Avison & Fitzgerald, 2003). Table 2.1 below shows an example of current leading software development methodologies in software industry.
Table 2.1: Example of Current Leading Software Development Methodologies. Method Description When to Use It Primary Modeling Artifacts Agile Data A partial agile method Tailor the AD Agile data models (AD) which focuses on philosophies and techniques which support techmques into evolutionary (iterative other evolutionary and incremental) database processes. development. Agile Model A partial, practices-based Tailor the AM Apply the right Driven method which describes principles and artifact for the Development techniques for effective practices into other situation at hand. (AMDD) modeling and agile or near-agile documentation of processes. systems. Agile Unified Process (AUP) An agile instantiation of the Unified Process (UP), a dramatic simplification of the RUP. When you want something in between XP and traditional RUP, a process that is agile Use-case model UML sequence diagrams UML class model Physical data model yet explicitly includes activities and artifacts which
you're accustomed to, or simply something that's firee. Code and Fix A typically ineffective For throw-away Source code approach to development, prototypes. usually followed by unskilled or poorly skilled developers, where they simply write code without putting much thought into it. Also called "hacking" or "immature development". Data-Driven This is a generic category Development of a Conceptual data Approach of data-driven methods data warehouse. model popularized in the 1970s and 1980s with the emergence of structured methods. This approach is typical rigorous and Development of a simple "CRUD" (Create Read Update Delete) business Logical data model Deployment architecture Physical data model serial. For a humorous application. look, read The Glacial Methodology. Dynamic This is an agile method Development of a Functional 10
System that has received ISO user interface prototype Development 9001 certification. In intensive system. Design prototype Method many ways it is a Complex business (DSDM) formalization of the application. Rapid Application Development (RAD) methods of the 1980s. Enterprise A rigorous, seven-phase Need to manage a Enterprise business Unified software process that portfolio of model Process (EUP) includes development. projects, including Enterprise domain operation, and retirement but not limited architecture model of software-based teams following the Enterprise technical systems. Development RUP. architecture model efforts are iterative and You have been Project-level incremental. It includes a successftil at several artifacts multi-system view that RUP projects and includes enterprise wish to now take architecture, reuse thefiillsystem management, portfolio lifecycle into management, and people account. management activities. Extreme An agile development Small, co-located User stories Programming method that focuses on project teams (4-10 Architectural (XP) the critical activities people). metaphor/strategy required to build Requirements are Class responsibility software. uncertain. collaborator (CRC) Good relationship cards 11