













































































Study with the several resources on Docsity
Earn points by helping other students or get them with a premium plan
Prepare for your exams
Study with the several resources on Docsity
Earn points to download
Earn points by helping other students or get them with a premium plan
CSCI 310 MIDTERM STUDY GUIDE 2026 COMPREHENSIVE QUESTION–ANSWER DIGEST
Typology: Exams
1 / 85
This page cannot be seen from the preview
Don't miss anything!














































































◉ software engineering. Answer: 40 years old: NATO Conferences, Garmisch, Germany, October 7-11, 1968, Rome, Italy, October 27-31, 1969 Nowadays, everything depends on it (Computer science as the scientific basis) Development of software systems whose size/complexity warrants team(s) of engineers Scope - study of software process, development principles, techniques, and notations Goal - production of quality software, delivered on time, within budget, satisfying customers' requirements and users' needs Software engineering is an engineering discipline which is concerned with all aspects of software production Software engineers should adopt a systematic and organised approach to their work and use appropriate tools and techniques depending on:
the problem to be solved, the development constraints, and the resources available A key software engineering "axiom" Better Cheaper <-- pick any two Faster ◉ difficulties. Answer: Few guiding scientific principles Few universally applicable methods As much managerial / psychological / sociological as technological ◉ why are there difficulties?. Answer: a unique brand of engineering: Software is malleable Software construction is human-intensive Software is intangible Software problems are unprecedentedly complex Software directly depends on the hardware
Reuse to amortize costs Maintenance accounts for over 60% of overall development costs ◉ software costs. Answer: Often dominate computer system costs (software on a PC > hardware cost) Software costs more to maintain than it does to develop. For systems with a long life, maintenance costs may be several times development costs. Software engineering is concerned with cost-effective software development 60% development costs, 40% are testing costs Evolution/maintenance costs > development costs Costs vary depending on:
◉ economic and management aspects. Answer: Software production = development + maintenance Maintenance costs > 60% of all development costs: 20% corrective, 30% adaptive, 50% perfective Quicker development is not always preferable: higher up-front costs may defray downstream costs, poorly designed/implemented software is a critical cost factor ◉ Mythical Man Month by Fred Brooks. Answer: Published in 1975, republished in 1995 Experience managing development of OS/360 in 1964- 65 Central argument: Large projects suffer management problems different in kind than small ones due to division of labor, critical need is the preservation of the conceptual integrity of the product itself Central conclusions: Conceptual integrity achieved through chief architect, implementation achieved through well-managed effort Brooks's Law: Adding personnel to a late project makes it later ◉ software project failure. Answer: Increasing system complexity:
should do is owned by the customer for the software and they make decisions on software changes that are required. ◉ software engineering vs computer science. Answer: Computer science - concerned with theory and fundamentals Software engineering - concerned with the practicalities of developing and delivering useful software Computer science theories are currently insufficient to act as a complete underpinning for software engineering ◉ software engineering vs systems engineering. Answer: Systems engineering - concerned with all aspects of computer-based systems development including hardware, software, and process engineering. Software engineering - a "component" in this process Systems engineers are involved in overall system specification, architectural design, integration and deployment ◉ software process. Answer: A structured set of activities required to develop a software system.
Specification - defining what the system should do; Design and implementation - defining the organization of the system and implementing the system; Validation - checking that it does what the customer wants; Evolution - changing the system in response to changing customer needs. A software process model is an abstract representation of a process. It presents a description of a process from some particular perspective. ◉ methods. Answer: Structured approaches to software development which include system Models - why? Notations - Such as? Rules - constraints applied to system models Design advice - recommendations on good design practice Process guidance - what activities to follow What are some example methods? ◉ essential attributes of good software (4).
Delivery: There is increasing pressure for faster delivery of software ◉ essential difficulties (4). Answer: - Complexity: no two software parts are alike complexity grows non-linearly with size
◉ general issues that affect software (4). Answer: - Heterogeneity: Increasingly, systems are required to operate as distributed systems across networks that include different types of computer and mobile devices.
◉ Computer misuse. Answer: Software engineers should not use their technical skills to misuse other people's computers. Computer misuse ranges from relatively trivial (game playing on an employer's machine, say) to extremely serious (dissemination of viruses). ◉ Confidentiality. Answer: Engineers should normally respect the confidentiality of their employers or clients irrespective of whether or not a formal confidentiality agreement has been signed. ◉ Competence. Answer: Engineers should not misrepresent their level of competence. They should not knowingly accept work which is outwith their competence. ◉ ACM/IEEE Code of Ethics (8). Answer: The Code contains eight Principles related to the behaviour of and decisions made by professional software engineers, including practitioners, educators, managers, supervisors and policy makers, as well as trainees and students of the profession:
Because of their roles in developing software systems, software engineers have significant opportunities to do good or cause harm, to enable others to do good or cause harm, or to influence others to do good or cause harm. To ensure, as much as possible, that their efforts will be used for good, software engineers must commit themselves to making software engineering a beneficial and respected profession. ◉ software process descriptions. Answer: Capturing activities such as specifying a data model, designing a user interface, etc. and the ordering of these activities. Products - the outcomes of a process activity; Roles - reflect the responsibilities of the people involved in the process; Pre- and post-conditions - statements that are true before and after a process activity has been enacted or a product produced. ◉ plan-driven processes. Answer: processes where all of the process activities are planned in advance and progress is measured against this plan ◉ agile processes. Answer: planning is incremental and it is easier to change the process to reflect changing customer requirements
◉ The waterfall model. Answer: Plan-driven model. Separate and distinct phases of specification and development. Requirements analysis and definition System and software design Implementation and unit testing Integration and system testing Operation and maintenance Drawback - the difficulty of accommodating change after the process is underway; a phase has to be complete before moving onto the next phase ◉ problems with waterfall model. Answer: Inflexible partitioning of the project into distinct stages makes it difficult to respond to changing customer requirements. Therefore, this model is only appropriate when the requirements are well-understood and changes will be fairly limited during the design process. Few business systems have stable requirements.
Answer: - The process is not visible.
Answer: - Stand-alone application systems (sometimes called COTS) that are configured for use in a particular environment.