How is the profession of software programming changing?
Compare the professions of writing, building architecture, and software programming. What are some similarities and differences?
Consider the overall project of constructing a large building, and compare the steps required to accomplish that with the phases in a waterfall model of software development. Where and why are there significant variations, and what are the implications?
Carrying forward the last question, in what manner might a spiral model of development apply to the design of a building, or not?
Considering all the elements necessary to create a successful application, what is their relative value? That is, what is their relative importance in terms of contributing to the overall value?
Consider in more depth the differences in the term maintenance as applied to software (matching changing environment and needs) and to material goods (wearing out or breaking). What substantive economic and business issues flow from this difference?
Understand in more depth the relation between project and organizational efficiency, and extend this further to quality of outcomes. Can analytical project management tools or models be built that assist in optimizing this trade-off? Does this relate to project management tools in the construction industry?
What are the advantages and disadvantages of grouping different software development projects within a common organization rather than keeping them separated?
How are iterative and community-based development methodologies related? Should community-based development also be iterated, and if so, what is a good process for making that happen?
Given that the profitability of a software project depends on many factors besides the effectiveness or efficiency of a development organization, what are the best metrics to apply in evaluating the performance of a software development organization?
What specific insights does organizational theory have on the software development process? In particular, does it offer insights into the role of architecture or how architectural design should be carried out?
List several different ways that a software project can fail to meet expectations. What are some likely or possible causes of these failures, and how can they be avoided?
Understand and discuss in more depth how user needs and requirements definition (see chapter 3) should be integrated into the software development process. How are they formulated, and where are they plugged in?
Discuss how the education of computer scientists and other professionals might be improved to emphasize user satisfaction (see section 3.2.11)?
How can commercial software companies best apply the lessons or even the methodology of community-based development successes?
As applications become more numerous and diverse, consider the opportunity to combine more generic but highly configurable applications with configuration and customization by end-user organizations. Is this a good way to proceed? How does this compare to the outsourcing of software development to meet specialized needs?
Consider the desirable properties of modularity as applied to a human organization. Are they important properties? Are there other properties of organizations that are even more important?
What strategic considerations come into the business decision to provide an API in a software product?
Is the concept of platform and environment (or close analogies) common in other goods and services, or unique to software? Give specific examples. What effect does this complementarity have on business strategies for the suppliers of both the platforms and the software depending on the platforms?
Delve more deeply into the issue of software portability and its benefits and disadvantages. How does it affect strategies for both platform and application software suppliers?
As discussed, the introduction of a virtual machine on top of physical processors helps make software run on different processors without modification. In an attempt to counter piracy, a software vendor could request a unique key from the target machine and then try to make the distributed software run only on that target machine. Discuss how these two approaches could complement each other to the benefit of the vendor; also discuss any disadvantages for the vendor. Discuss advantages and disadvantages of both approaches as seen by the client or customer using the software.
A compiler is an example of a tool that aids software developers. How do the strategies and challenges of tool suppliers differ from those of application and infrastructure suppliers?
Understand and discuss in greater depth the strategic business considerations underlying the choice of distributing software in intermediate or native object code.
Given some interactive applications' need for responsive user interaction at the client side and massive data processing at the server side, consider various strategies for distributing such an application. Discuss the main application characteristics you would expect such distribution strategies to cause.
Understand and discuss in greater depth the strategic business decision to develop a distributed application using a client-server or peer-to-peer model. Can you distinguish the application characteristics that make one model or the other more advantageous?
Trust is transitive: if a user trusts an application supplier, who in turn trusts a service employed by the application, then the user (perhaps unknowingly) trusts that service as well, though this trust may be unwarranted. Discuss how trustworthiness and transitive dependencies (including security, privacy, and reliability) interfere.