The article presents a method for teaching computer programmers to think in terms of parallel algorithms, designed to enable improved programming for multi-processor machines. It involves an Immediate Concurrent Execu...
详细信息
The article presents a method for teaching computer programmers to think in terms of parallel algorithms, designed to enable improved programming for multi-processor machines. It involves an Immediate Concurrent Execution (ICE) abstraction, which is supported by explicit multi-threaded (XMT) computer architecture and parallel random-access machine (PRAM) algorithmics. A workflow using these techniques is described, and the advantages of such an approach over serial algorithms are explicated. The major steps involved in the ranking/merging algorithm are discussed, and a block diagram of the XMT architecture is included.
Early phases of software development are known to be problematic, difficult to manage and errors occurring during these phases are expensive to correct. Many systems have been developed to aid the transition from info...
详细信息
Early phases of software development are known to be problematic, difficult to manage and errors occurring during these phases are expensive to correct. Many systems have been developed to aid the transition from informal Natural Language requirements to semistructured or formal specifications. Furthermore, consistency checking is seen by many software engineers as the solution to reduce the number of errors occurring during the software development life cycle and allow early verification and validation of software systems. However, this is confined to the models developed during analysis and design and fails to include the early Natural Language requirements. This excludes proper user involvement and creates a gap between the original requirements and the updated and modified models and implementations of the system. To improve this process, we propose a system that generates Natural Language specifications from UML class diagrams. We first investigate the variation of the input language used in naming the components of a class diagram based on the study of a large number of examples from the literature and then develop rules for removing ambiguities in the subset of Natural Language used within UML. We use WordNet, a linguistic ontology, to disambiguate the lexical structures of the UML string names and generate semantically sound sentences. Our system is developed in Java and is tested on an independent though academic case study.
PROFESSIONAL PROGRAMMING IS about dealing with software at scale. Everything is trivial when the problem is small and contained: it can be elegantly solved with imperative programming or functional programming or any ...
详细信息
PROFESSIONAL PROGRAMMING IS about dealing with software at scale. Everything is trivial when the problem is small and contained: it can be elegantly solved with imperative programming or functional programming or any other paradigm. Real-world challenges arise when programmers have to deal with large amounts of data, network requests, or intertwined entities, as in user interface (UI) programming. Of these different types of challenges, managing the dynamics of change in a code base is a common one that may be encountered in either UI programming or the back end. How to structure the flow of control and concurrency among multiple parties that need to update one another with new information is referred to as managing change. In both UI programs and servers, concurrency is typically present and is responsible for most of the challenges and complexity. Some complexity is accidental and can be removed. Managing concurrent complexity becomes difficult when the amount of essential complexity is large. In those cases, the interrelation between the entities is complex-and cannot be made less so. For example, the requirements themselves may already represent essential complexity. In an online text editor, the requirements alone may determine that a keyboard input needs to change the view, update text formatting, perhaps also change the table of contents, word count, paragraph count, request the document to be saved, and take other actions. Because essential complexity cannot be eliminated, the alternative is to make it as understandable as possible, which leads to making it maintainable. When it comes to complexity of change around some entity Foo, you want to understand what Foo changes, what can change Foo, and which part is responsible for the change.
The article discusses software development project management. The authors compare and contrast perceptions held by software developers and end-users regarding the successful attributes, functions, and requirements of...
详细信息
The article discusses software development project management. The authors compare and contrast perceptions held by software developers and end-users regarding the successful attributes, functions, and requirements of systems made for end-users. Software development has been challenged by projects that were developed over-budget, late, and with limited functionality, the authors state. Other topics of discussion include ineffective communication between systems developers and end-users and what end-users consider to be important in the developmental process.
Job seeking three-dimensional-graphics programmers find eBay a useful gimmick. Among movie industry insiders, software engineer Gus Grubba is regarded as part pioneer, part magician. Using the eBay handle 'Team of...
详细信息
Job seeking three-dimensional-graphics programmers find eBay a useful gimmick. Among movie industry insiders, software engineer Gus Grubba is regarded as part pioneer, part magician. Using the eBay handle 'Team offshored,' they let online bidders duke it out to purchase exclusive rights to negotiate a contract with them. While the scheme was not an instant success, it eventually paid off after the San Jose Mercury-News and other media outlets started writing about the team's advertisement. It will not be the last time a group of engineers finds itself in the situation that Grubba's team was in this year. Clearly, the problems associated with outsourcing are more than a temporary trend. This article discusses the programmers' venture into the reality of outsourcing.
In the fast-moving and ever-changing field of programming, what's your plan for the inevitable?Iam an old computing fogy. I've been in the software field for close to 45 years, now. I've seen the computing...
详细信息
In the fast-moving and ever-changing field of programming, what's your plan for the inevitable?Iam an old computing fogy. I've been in the software field for close to 45 years, now. I've seen the computing world move from octal to Java source code, from no operating system at all to operating system wars, from rudimentary tools to bodacious toplsets. I've seen exciting new technologies come ... and, sometimes,
go.
Recent efforts by academic researchers and the computer security industryhave sought to find ways to detect and prevent software vulnerabilities from being exploited. Othershave sought to find ways to detect and preve...
详细信息
Recent efforts by academic researchers and the computer security industryhave sought to find ways to detect and prevent software vulnerabilities from being exploited. Othershave sought to find ways to detect and prevent unauthorized access to computer systems. Whileattack methods may differ significantly, the underlying security issues (viewed through the prism ofacademic software reliability research) are called "software faults." Hackers, however, describethe same issues in different terms. Attempts to identify similarities among faults are biased towardthe hacker view, as I discuss here, and often yield incomplete defenses. Missing the fact thatreliability and security research addresses the same technical issues leads to inadequate approachesby the academic community.
This paper describes how we have modified a software engineering stream within a computer science course to include broader concepts of systems engineering. We justify this inclusion by showing how many reported probl...
详细信息
This paper describes how we have modified a software engineering stream within a computer science course to include broader concepts of systems engineering. We justify this inclusion by showing how many reported problems with large systems are not just software problems but relate to system issues such as hardware and operational processes. We describe what we mean by 'systems engineering' and go on to discuss the particular course structure which we have developed. We explain, in some detail, the contents of two specific systems engineering courses (Software Intensive Systems Engineering and Critical Systems Engineering) and discuss the problems and challenges we have faced in making these changes. In the appendix, we provide details of the case studies which are used as linking themes in our courses.
This paper describes an efficient technique to record display output stream with memory resident software. This kind of recording can be made useful for studying text writing processes experimentally, for example prog...
详细信息
This paper describes an efficient technique to record display output stream with memory resident software. This kind of recording can be made useful for studying text writing processes experimentally, for example programmers behaviour during coding. The system is inconspicuous in test situation and does not seem to affect the testees working. Separate software has been developed for reviewing captured sessions.
The article focuses on computer science education and the global outsourcing of software production. It is reported in this article that producing software is expensive and programmers are highly paid. However, studie...
详细信息
The article focuses on computer science education and the global outsourcing of software production. It is reported in this article that producing software is expensive and programmers are highly paid. However, studies have found that the average number of lines of code written per month can be as low as 60 and is rarely higher than a few thousand. Off-shoring has become an increasingly common choice for companies hoping to reduce costs. Estimates are that a company can reduce its costs of producing software by about 30 percent by offshore outsourcing. In the U.S., various economic and legal solutions have been proposed to counter off-shoring.
暂无评论