SCHOOL OF INFORMATION TECHNOLOGY
AND MATHEMATICAL SCIENCES
CP 851 Principles of Software Engineering
Tutorial Exercise Week 1:
Answer the * ones in groups during your Tutorial Class. Rest to be completed by next week. All answers need to be typed in and showed to your tutor during the next week’s tutorial class (Group submission) for getting ticked off and for discussion.
1. Explain how software engineering and system engineering relate to each other. Is this a containment or intersection relationship? Is it possible that the two concepts may not relate at all? Start by providing definitions of the terms “software”, “system”, “software engineering”, and “system engineering”. Ans. Software can be defined as “sets of instructions that tell the computer how to take data in, how to process it, how to display information, and how to store data and information” (Oz, 2004, p.17). System can be defined as “a coherent set of interdependent components which exists for some purpose, has some stability, and can be usefully viewed as a whole” (Beynon-Davies, p.593). Software engineering is an engineering discipline of developing quality software systems in the cost- and time-effective manner by team(s) of engineers. System engineering is the discipline of managing all aspects of development and evolution of complex systems.
Based on these definitions, the relationship between software and system engineering depends on whether or not we should assume that the notion of system relates to the notion of software. Well, in general terms, a system does not even have to be human-made. The solar or respiratory systems are natural, not human-made. There is no software in natural systems. The natural systems have not been engineered. Clearly, system engineering does not apply to natural systems. The question arises what “systems” are the subject of system engineering and software engineering? As far as software engineering is concerned, the subject is information systems. The subject of system engineering is likely to be information systems, but they can also be other human-made systems, for example a road system or fire escape system. Human-made systems may or may not have any software component. Accordingly, the answer to the question must be that, in general, the two terms may not relate at all (other than in the abstract sense of sharing the same principles of planning, developing, and administering complex systems). In most practical situations, however, system engineering will contain software engineering as one of its activities. Other activities will relate to non-software aspects of an information system – hardware, people, data, procedures, communication.
2. *What are the five main facets of software engineering? Can you think of software engineering concerns not obviously covered by these facets? Ans. 1. software development lifecycle
2. software modeling language
3. software engineering tools
4. software project planning
5. software process management
3. *What factors decide that a system is labeled as legacy system? Can a legacy system be turned into a modern system? How can this be done, if at all? Ans. “Legacy systems are socio-technical computer-based systems that have been developed in the past, often using older or obsolete technology” (Sommerville, 2004, 38). A system becomes a legacy system when the effort to maintain it outweighs its operating value to the organization. The value of such system is usually high for the organization – changing or replacing it poses a threat to the organization’s operational stability. In fact, a replacement is frequently infeasible or impossible (sometimes because the business requirements implemented in the legacy code cannot be fully recovered).
There are various approaches to make legacy systems modern. Some approaches do not modify the legacy code but make it “talk” to a newly-developed software or equip it with...