Software engineering game developers pdf




















The code of JUnit test cases is commonly used to characterize software testing effort. Different metrics have been proposed in literature to measure various perspectives of the size of JUnit test cases.

Published on: 30 December Over recent years, software developers have been evaluating the benefits of both Service-Oriented Architecture SOA and software fault tolerance techniques based on design diversity. This is achieved by creat Published on: 14 November Many researchers have investigated different techniques to automatically detect duplicate code in programs exceeding thousand lines of code.

These techniques have limitations in finding either the structural o Authors: Egambaram Kodhai and Selvadurai Kanmani. Published on: 22 October The concept of code smells is widespread in Software Engineering.

Despite the empirical studies addressing the topic, the set of context-dependent issues that impacts the human perception of what is a code sme Skip to main content. Search all SpringerOpen articles Search. Metric-centered and technology-independent architectural views for software comprehension The maintenance of applications is a crucial activity in the software industry. Investigating the effectiveness of peer code review in distributed software development based on objective and subjective data Code review is a potential means of improving software quality.

On the benefits and challenges of using kanban in software engineering: a structured synthesis study Kanban is increasingly being used in diverse software organizations. Challenges on applying genetic improvement in JavaScript using a high-performance computer Genetic Improvement is an area of Search Based Software Engineering that aims to apply evolutionary computing operators to the software source code to improve it according to one or more quality metrics.

Investigating measures for applying statistical process control in software organizations The growing interest in improving software processes has led organizations to aim for high maturity, where statistical process control SPC is required.

An approach for applying Test-Driven Development TDD in the development of randomized algorithms TDD is a technique traditionally applied in applications with deterministic algorithms, in which the input and the expected result are known. Supporting governance of mobile application developers from mining and analyzing technical questions in stack overflow There is a need to improve the direct communication between large organizations that maintain mobile platforms e. Working software over comprehensive documentation — Rationales of agile teams for artefacts usage Agile software development ASD promotes working software over comprehensive documentation.

Development as a journey: factors supporting the adoption and use of software frameworks From the point of view of the software framework owner, attracting new and supporting existing application developers is crucial for the long-term success of the framework.

Applying user-centered techniques to analyze and design a mobile application Techniques that help in understanding and designing user needs are increasingly being used in Software Engineering to improve the acceptance of applications. A measurement model to analyze the effect of agile enterprise architecture on geographically distributed agile development Efficient and effective communication active communication among stakeholders is thought to be central to agile development.

A survey of search-based refactoring for software maintenance This survey reviews published materials related to the specific area of Search-Based Software Engineering that concerns software maintenance and, in particular, refactoring. Similarity testing for role-based access control systems Access control systems demand rigorous verification and validation approaches, otherwise, they can end up with security breaches.

An algorithm for combinatorial interaction testing: definitions and rigorous evaluations Combinatorial Interaction Testing CIT approaches have drawn attention of the software testing community to generate sets of smaller, efficient, and effective test cases where they have been successful in det How diverse is your team? Investigating gender and nationality diversity in GitHub teams Building an effective team of developers is a complex task faced by both software companies and open source communities.

Investigating factors that affect the human perception on god class detection: an analysis based on a family of four controlled experiments Evaluation of design problems in object oriented systems, which we call code smells, is mostly a human-based task. On the evaluation of code smells and detection tools Code smells refer to any symptom in the source code of a program that possibly indicates a deeper problem, hindering software maintenance and evolution.

On the influence of program constructs on bug localization effectiveness Software projects often reach hundreds or thousands of files. DyeVC: an approach for monitoring and visualizing distributed repositories Software development using distributed version control systems has become more frequent recently. A genetic algorithm based framework for software effort prediction Several prediction models have been proposed in the literature using different techniques obtaining different results in different contexts.

Elaboration of software requirements documents by means of patterns instantiation Studies show that problems associated with the requirements specifications are widely recognized for affecting software quality and impacting effectiveness of its development process. ArchReco: a software tool to assist software design based on context aware recommendations of design patterns This work describes the design, development and evaluation of a software Prototype, named ArchReco, an educational tool that employs two types of Context-aware Recommendations of Design Patterns, to support us On multi-language software development, cross-language links and accompanying tools: a survey of professional software developers Non-trivial software systems are written using multiple programming languages, which are connected by cross-language links.

Issues on developing interoperable cloud applications: definitions, concepts, approaches, requirements, characteristics and evaluation models Among research opportunities in software engineering for cloud computing model, interoperability stands out. Game development software engineering process life cycle: a systematic review Software game is a kind of application that is used not only for entertainment, but also for serious purposes that can be applicable to different domains such as education, business, and health care.

A multi-objective test data generation approach for mutation testing of feature models Mutation approaches have been recently applied for feature testing of Software Product Lines SPLs. An extended global software engineering taxonomy In Global Software Engineering GSE , the need for a common terminology and knowledge classification has been identified to facilitate the sharing and combination of knowledge by GSE researchers and practition Distinguishing extended finite state machine configurations using predicate abstraction Extended Finite State Machines EFSMs provide a powerful model for the derivation of functional tests for software systems and protocols.

Extending statecharts to model system interactions Statecharts are diagrams comprised of visual elements that can improve the modeling of reactive system behaviors.

On the relationship of code-anomaly agglomerations and architectural problems Several projects have been discontinued in the history of the software industry due to the presence of software architecture problems.

An approach based on feature models and quality criteria for adapting component-based systems Feature modeling has been widely used in domain engineering for the development and configuration of software product lines. Patch rejection in Firefox: negative reviews, backouts, and issue reopening Writing patches to fix bugs or implement new features is an important software development task, as it contributes to raise the quality of a software system. Investigating probabilistic sampling approaches for large-scale surveys in software engineering Establishing representative samples for Software Engineering surveys is still considered a challenge.

Characterising the state of the practice in software testing through a TMMi-based process The software testing phase, despite its importance, is usually compromised by the lack of planning and resources in industry.

Self-adaptation by coordination-targeted reconfigurations A software system is self-adaptive when it is able to dynamically and autonomously respond to changes detected either in its internal components or in its deployment environment. Templates for textual use cases of software product lines: results from a systematic mapping study and a controlled experiment Use case templates can be used to describe functional requirements of a Software Product Line. F3T: a tool to support the F3 approach on the development and reuse of frameworks Frameworks are used to enhance the quality of applications and the productivity of the development process, since applications may be designed and implemented by reusing framework classes.

NextBug: a Bugzilla extension for recommending similar bugs Due to the characteristics of the maintenance process followed in open source systems, developers are usually overwhelmed with a great amount of bugs.

Assessing the benefits of search-based approaches when designing self-adaptive systems: a controlled experiment The well-orchestrated use of distilled experience, domain-specific knowledge, and well-informed trade-off decisions is imperative if we are to design effective architectures for complex software-intensive syst Learn how your comment data is processed.

Programmer Books. Software Development. Software Development From A to Z. C and XML Primer. Learning Concurrent Programming in Scala, 2nd Edition. Essentials of Computer Architecture, 2nd Edition. A short summary of this paper. Download Download PDF. Translate PDF. This is because it must address issues ranging from learning theory to software engineering. Developers face fundamental challenges in building tools to adequately address the issues raised during the design process. However, understanding and resolving each of the requirements and the tensions between participants has long been recognized as fundamental to any tool's success.

The current workshop offers an innovative approach for designing technology-enhanced learning environments, with special attention to computer games.

We then proceed to demonstrate our methods by working through selected examples. The workshop structure will encourage audience participation and active debate. We will conclude with a discussion on possible applications of the design patterns approach to participants' practice. We invite interested parties to use our tools and methods and develop their own pattern languages. While our initial focus has been on the design and use of games for mathematical learning, the community process we engendered led us to appreciate the parallels in a broader set of domains.

We encourage participants to relate our examples to their own domains of expertise and identify which elements of design are common and which are unique. These tools were used by a group of experts to develop a language of patterns for game-based mathematical learning. This language was refined through a series of workshops.

We propose these workshops as a model for multi-disciplinary participatory design of educational technologies. Our language of patterns aims to formalize expert insights from the different domains of design knowledge.

Our patterns are intended to serve the needs of researchers, practitioners and designers as one. The structure of these patterns is based on the long- standing tradition of pattern languages in various fields, adopted to the special focus of games and learning.

Our language of patterns, and the collaborative on-line tool that support it, is evolving continuously as our knowledge grows. We do not claim to offer a comprehensive set of patterns, but we do strive to construct a coherent language, which has few holes and many open ends. Our aim is it to address issues across a broad range of aspects pertaining to the process of designing, implementing and deploying games for mathematical learning. The learning patterns we developed attempt to strike a balance between problem solving and being feature specific.

Some patterns address the process of game development and in doing so emerged from problems we were trying to overcome. As such, they can be viewed as problem solving patterns. Others are directly concerned with particular game features and interaction issues and are considered feature specific. For example, to address a particular problem the designer may add a specific feature.

We work from the premise that designing and deploying technology learning is a difficult task because it requires the assimilation and integration of deep knowledge from diverse domains of expertise including content knowledge, interface and interaction engineering, software engineering, learning and teaching. The characteristics of the data set are tabulated for better understanding. To trace the categories of each mapped study, the interested reader is referred to the Additional file 2 : Appendix B.

A total studies were collated and analyzed as part of this review. To identify GDSE process life cycle domain specific characteristics, the findings of this review will be compared to results from similar studies done by Cai and Card , Glass et al.

Table 8 clearly shows that GDSE process life cycle research intensity has increased during the last few years. Figure 4 showed an increase in GDSE process life cycle over time. From Table 8 , was taken as year 0 , and the first data point of the graph was calculated for year 1 i. Figure 4 shows the results up to Years are given on the x- axis.

Figure 4 illustrates that during the last few years, research activity in the GDSE process life cycle domain has continuously increased and the number of publications in the GDSE domain has increased at a polynomial growth rate since During , and the drop in research activity is noted. It seems obvious that most of the work related to GDSE research activity was not published on the selected sources for this study.

Moreover, Fig. Looking at research activity based on countries, China now dominates GDSE process life cycle research, but its research into the game domain started only in In four years, China has come to dominate this area of research. Before , the United States and the United Kingdom were dominant. Authors from North and South America have played a dominant role since and are still contributing in this area.

It can be visualized in Fig. This section addresses the identification of main research topics in the GDSE process life cycle domain. Table 9 clearly suggests that most research has been conducted in the production phase, followed by the pre-production phase.

On the other hand, the post-production phase has not attracted much research interest. These GDSE process life cycle topics are somewhat different than in software engineering because of two factors: first, the GDSE domain has special needs and priorities, and second, it is a young domain which requires more fundamental research in the area of requirements, development, and coding tools. When the GDSE domain becomes mature, then other areas in the field, like testing and verification, will attract the interest of researchers.

As mentioned earlier in Section 2 , games have specific characteristics, which the conventional software development process cannot completely address. In the past years, research on GDSE process life cycle topics has become more active because, unlike other software products, games provide entertainment and user enjoyment, and developers need to give more importance to these aspects. As a result, research about the pre-production phase has increased.

The implementation phase is shorter than in the traditional software implementation process because of the short time to market. This production-phase research intensity has attracted the interest of many researchers, and maximum research activity has been reported because the GDSE domain requires efficient development and coding techniques. McShaffry also highlighted the importance of the production phase to counteract poor internal quality.

There is much less research activity in the post-production phase than in the pre-production and production phases. Figure 7 presents the growth of each GDSE process life cycle research topic since It is apparent that in the pre-production phase, the most researched topic is management of the game development process, followed in this order by production-phase development platforms, programming, and implementation topics.

In the post-production phase, the marketing area attracted the largest amount of research interest. The state of the art research is the description of actual primary studies, and, therefore, they are mapped according to the research topics they addressed Budgen et al.

Next, a short description of each GDSE topic is presented along with a full reference list. A full reference list of all the studies included is presented in Additional file 1 : Appendix A.

In the pre-production phase, most of the studies categorized under this topic address management issues during the GDSE process life cycle. The overall management of the game development process combines both an engineering process and creation of artistic assets.

Ramadan and Widyani [S1] compared various game development strategies from a management perspective, and most studies like [S3], [S6], [S7], and [S8] have proposed frameworks for game development.

Game development guidelines can be followed to manage GDSE process life cycle. The presence of agile practices in the game development processes is also highlighted by some studies. Tschang [S4] and Petrillo et al. Management of development-team members and their interaction is critically important in this aspect. Some studies [S10] and [S11] have provided data analytics and empirical analysis of the game development process and issues of interdisciplinary team involvement.

Best management practices in the game development process must consider certain elements such as staying on budget, timing, and producing the desired output. To assess game quality, five usability and quality criteria functional, internally complete, balanced, fun, and accessible can be used, but a process maturity model specific to the game development process is still needed to measure these processes for better management and high performance.

One of the main differences between the traditional software development process and GDSE process life cycle is the requirements phase. The game development process requires consideration of many factors such as emotion, game play, aesthetics, and immersive factors. In four studies, the authors have discussed the requirements engineering perspective to highlight its importance for the whole game-software development process. They discussed emotional factors, language ontology, elicitation, feedback, and emergence [S19], [S20], [S21], and [S22].

In particular, game developers must understand these basic non-functional requirements along with the game play requirements and incorporate them while developing games. The main challenges in requirements identification are a communication between diverse background stakeholders, b non-functional requirements incorporation with game play requirements, such as media and technology integration, and c validation of non-functional requirement such as fun, which is very complex because it is totally dependent on the target audience.

Callele et al. The requirements specification phase must address both the functional and non-functional requirements of game development. Many description languages are currently used by developers, such as the UML model, agent-based methodologies, and soft-system methodologies. Quanyin et al. They performed experiments and reported that it would be a good model for further development of games on the Android operating system.

Shaker et al. Tylor et al. The proposed approach can be used instead of a popular description language because it provides an overview of the game. Chan and Yuen [S30] and Rodriguez et al. A system description language for games must be both intelligible to human beings and formal enough to support comparison and analysis of players and system behaviors.

In addition, it must be production-independent, adequately describe the overall game process, and provide clear guidelines for developers. The existence of reusability of software Capretz and Lee and development platforms in game development has been reported by some researchers, but to gain its full advantages, commonality and variability analysis must be done in the pre-production phase.

This category addresses reuse techniques for game development software Ahmed and Capretz, Neto et al. Reuse techniques in game development could reduce cost and time and improve quality and productivity. For reuse techniques, commonality and variability analysis is very important, similar to a software product line. Szegletes and Forstner [S36] proposed a reusable framework for adaptive game development. The architecture of the proposed framework consisted of loosely coupled components for better flexibility.

They tested their framework by developing educational games. The requirements of the new game must be well aligned with the reusable components of the previously developed game.

It consists of a coherent description of the basic components, their interrelationships, directions, and a shared vocabulary for efficient development.

Westera et al. Furthermore, Salazar et al. They also compared their findings with traditional software requirement specifications and concluded that a poor game design document can lead to poor-quality product, rework, and financial losses in the production and post-production phases. Hsu et al. They proposed an approach to solve the trade-off decision problem, which is based on a neural network technique and uses a genetic algorithm to perform design optimization. Khanal et al. Finally, Ibrahim and Jaafar [S43] and Tang and Hanneghan [S44] worked on a game content model for game design documents.

Currently, GDD suffers from formalism and incomplete representation; to address this issue, the formal development of GDD is very important. Game prototyping in the pre-production phase helps the developer to clarify the fundamental mechanics of the final game. Reyno and Cubel [S49] proposed automatic prototyping for game development based on a model-driven approach.

De Silva et al. The developer can approach the well-established community and focus on the technical stuff rather than starting from scratch. They used this approach for massive, multi-player online game development.

Guo et al. Prototypes also help to identify missing functionality, after which developers can easily incorporate quick design changes. Model-driven or rapid-prototyping approaches can be used to develop game prototypes. Game design tools are used to help game developers create descriptions of effects and game events in detail without high-level programming skills. Cho and Lee [S56] and Segundo et al.

These tools also enable reuse of existing components and reduce the total time of the game-creation process. In the game development domain, risk management factors do not receive much discussion by researchers. Risk management is very important from a project management point of view. Identifying risk factors in the game development process is also important. In game development, the project manager is the game producer and must bring together management, technical, and aesthetic aspects to create a successful game.

The study by Schmalz et al. They identified two risk factors during the development process: failure of development strategy and absence of the fun factor. In game development, important risk factors can be the development strategy, the fun factor or extent of originality, scheduling, budgeting, and others, but very low priority has been given by game developers to formal analysis of risk factors.

Asset creation in the production phase is the foundation stage where game developers create the various assets and then use them in the game implementation phase. In the production phase, the first step is to create assets for the game. One of these assets is audio creation. Migneco et al. It includes common audio-processing routines and sound-interaction Web games. Minovic et al. For audio processing, open-source libraries are available, especially for games.

Audio and interface design are examples of game assets. Storyboard production is the most important phase of game production; it involves development of game scenarios for level solutions and incorporation of artificial intelligence planning techniques for representing the various features of games through a traditional white board or flow chart. Pizzi et al. Finally, Anderson [S61] presented a classification of scripting systems for serious and entertainment games, and Cai and Chen [S62] explored scene editor software for game scenes.

Their approach was based on the OGRE. Various scripting editors based on different technologies are available for game developers to produce storyboards. Some of this software helps to develop and edit scenes at different game levels, and other software helps by generating game levels automatically based on a description. The studies classified under this category proposed various types of platforms for game development. Development platforms provide a ready-made architecture for server—client connectivity and help developers create games quickly.

Open-source development platforms are available, but developers must customize them according to the required functionality. Peres et al. Jieyi et al.

First, the platform implemented the game template in two environments such as the Nokia series 60 platform and the Symbian OS. The second part of the process involved analysis of the entire game structure and extraction of game parameters for later customization. Finally, the tool could be used for game customization. Lin et al. The proposed communication protocol was able to control the embedded platform to achieve the game usability and amusement.

Mao et al. Suomela et al. Some researchers have proposed a development platform similar to that described above that provides connectivity along with client customization and unnecessary updating of game servers. Game semantics can be classified under formal language description for programming languages; only two studies were reported under this classification. The formal language description of game semantics provided a way to gain insight into the design of programming languages for game development.

Mellies [S99] proposed a denotational prepositional linear logic for asynchronous games, and Calderon and McCusker [S] presented their analysis of game semantics using coherence spaces.

Very little work has been reported in this area, and very few game semantic descriptions of languages have been published. Code complexity is increasing, especially in game development, because of the incorporation of complex modules, AI techniques, and a variety of behaviors. Studies classified under this category explored the programming aspect of game development. El Rhalibi et al. It extends the JME game engine by facilitating content libraries, providing a new interface, and also providing a software suite that supports advanced graphical functionalities within IDE.

The other two studies, done by Meng et al. Three studies by Yang et al. Wang et al. Zhang et al. Bartish and Thevathayan [S86] and Fahy and Krewer [S90] analyzed the use of agents, finite state machines, and open-source libraries for the overwhelmingly complex process of multi-platform game development.

Optimization techniques can be used with object-oriented programming to avoid unnecessarily redundant classes and inheritance, and to handle performance bottlenecks. These languages can be used across different development environments such as Android, iOS, Windows, and Linux.

Researchers have proposed various approaches and tools for efficient game development. The integration of various development artefacts into games can also be done by generative programming, which also helps to achieve efficient development.

A game engine is a kind of special software framework that is used in the production phase for creating and developing games.



0コメント

  • 1000 / 1000