Software Engineering Overview
45 Questions
0 Views

Choose a study mode

Play Quiz
Study Flashcards
Spaced Repetition
Chat to lesson

Podcast

Play an AI-generated podcast conversation about this lesson

Questions and Answers

What was the primary motivation for the emergence of software engineering?

  • The desire to automate repetitive tasks in software development
  • The rise of personal computers and the need for software applications
  • The increasing complexity and challenges in software development (correct)
  • The need for more efficient programming languages
  • Which of the following was NOT a major problem identified during the "Software Crisis"?

  • Limited availability of qualified programmers
  • Lack of standardized software development methodologies
  • Software projects frequently exceeding budget and schedule
  • Insufficient use of artificial intelligence in software development (correct)
  • What is a significant implication of software defects, as illustrated by examples in the provided text?

  • Software defects are always easily detectable and correctable.
  • Software defects can result in substantial financial losses for companies. (correct)
  • Software defects rarely pose a risk to human life.
  • Software defects can only cause minor inconveniences to users.
  • What is the key difference between software engineering and computer science?

    <p>Software engineering focuses on practical application, while computer science deals with theoretical concepts. (A)</p> Signup and view all the answers

    Based on the provided information, which of the following statements is TRUE about the "Software Crisis"?

    <p>The &quot;Software Crisis&quot; highlighted the importance of effective project management practices. (C)</p> Signup and view all the answers

    According to the provided text, what percentage of software projects were delivered but never successfully used?

    <p>45% (A)</p> Signup and view all the answers

    Which of the following is NOT a characteristic of a computer scientist, as described by the text?

    <p>Develops and manages software development projects (D)</p> Signup and view all the answers

    What does the text suggest about the importance of software engineering?

    <p>Software engineering is crucial for ensuring the delivery of reliable and functional software. (B)</p> Signup and view all the answers

    Why is it important to complete coding projects, even if they are not professionally-related?

    <p>It lets you practice coding skills, troubleshoot problems and build a portfolio. (D)</p> Signup and view all the answers

    What is one of the common criteria large companies look for when hiring software engineers?

    <p>Extensive experience in software development roles. (A)</p> Signup and view all the answers

    What is one of the benefits to taking an entry-level role as a software developer?

    <p>It allows you to gain practical experience in a challenging work environment. (A)</p> Signup and view all the answers

    Which of the following is NOT a recommended skill for improving your soft-skills?

    <p>Prioritizing personal projects over work assignments. (A)</p> Signup and view all the answers

    What are some practical ways to learn coding for professional development?

    <p>All of the above. (D)</p> Signup and view all the answers

    What is a key difference between Software Engineers and Developers?

    <p>Software Engineers focus on design and backend capabilities. (A)</p> Signup and view all the answers

    What is the main reason Software Engineers typically earn more than Software Developers?

    <p>Software Engineers typically have higher professional requirements and expectations. (A)</p> Signup and view all the answers

    What is the expected growth rate for Software Developers, Quality Assurance Analysts, and Testers from 2021 to 2031, according to the BLS?

    <p>25% (C)</p> Signup and view all the answers

    Which of the following is NOT a reason for the high demand for Software Engineers?

    <p>The increasing popularity of mobile applications. (B)</p> Signup and view all the answers

    What is a primary reason for the rising demand for Software Engineers in companies?

    <p>To improve efficiency and capabilities of existing software. (D)</p> Signup and view all the answers

    Why is Software Engineer a broad career option?

    <p>It encompasses a wide range of specializations and industries. (B)</p> Signup and view all the answers

    How does the BLS categorize Software Engineers?

    <p>As part of a broader category of computer development professions. (C)</p> Signup and view all the answers

    Which of the following accurately describes the average annual salary of Software Developers, according to the content?

    <p>$78,061 (B)</p> Signup and view all the answers

    What is the main responsibility of an engineer in the context provided?

    <p>To develop a solution for an application-specific problem for a client (D)</p> Signup and view all the answers

    Which of the following best describes the analysis phase in problem-solving?

    <p>Understanding the nature of the problem and breaking it into pieces (B)</p> Signup and view all the answers

    What defines the methodologies in software engineering?

    <p>A compilation of techniques applied across software development unified by a philosophical approach (C)</p> Signup and view all the answers

    Which attribute is NOT essential for good software according to the content?

    <p>Cost-effectiveness (B)</p> Signup and view all the answers

    Which of the following is a primary activity of software engineering?

    <p>Software Validation (D)</p> Signup and view all the answers

    What distinguishes software engineering from computer science?

    <p>Software engineering emphasizes practicalities of development and delivery of useful software (A)</p> Signup and view all the answers

    What aspect does system engineering NOT typically encompass?

    <p>Health and safety regulations in software design (B)</p> Signup and view all the answers

    Which of the following best defines software products?

    <p>Computer programs and associated documentation developed for specific customers or the general market (D)</p> Signup and view all the answers

    What is one of the key challenges facing Software Engineering?

    <p>Coping with increasing diversity (D)</p> Signup and view all the answers

    What percentage of software costs are attributed to Development Costs?

    <p>60% (C)</p> Signup and view all the answers

    Which statement about Evolution Costs is correct for custom software?

    <p>They often exceed Development Costs (A)</p> Signup and view all the answers

    Which type of project should use a series of prototypes according to Software Engineering techniques?

    <p>Games (C)</p> Signup and view all the answers

    What is a critical attribute of good software that reflects its ability to adapt over time?

    <p>Maintainability (A)</p> Signup and view all the answers

    Dependable software should not cause what type of damage in the event of a system failure?

    <p>Physical or Economic damage (C)</p> Signup and view all the answers

    Which software development approach is influenced by the web's availability of services?

    <p>Distributed Service-based Systems (A)</p> Signup and view all the answers

    Which of the following is NOT included under the characteristics of software dependability?

    <p>Maintainability (A)</p> Signup and view all the answers

    What is one benefit of pursuing leadership roles in projects?

    <p>It enhances your skills as a team leader. (C)</p> Signup and view all the answers

    Which of the following is NOT recommended for a career as a Software Engineer?

    <p>Ignoring industry trends (A)</p> Signup and view all the answers

    Why is it important for Software Engineers to follow their passion?

    <p>It allows for greater job satisfaction. (A)</p> Signup and view all the answers

    What role does professional networking play for Software Engineers?

    <p>It may help in finding job opportunities. (B)</p> Signup and view all the answers

    What advantage does obtaining certification provide for a Software Engineer?

    <p>It signifies advanced study in a relevant topic. (B)</p> Signup and view all the answers

    How does keeping skills updated benefit a Software Engineer?

    <p>It aligns them with the evolving technological landscape. (D)</p> Signup and view all the answers

    What type of applications run on a local computer?

    <p>Stand-alone applications (B)</p> Signup and view all the answers

    Which of the following is a common misconception about leadership roles?

    <p>They are only for experienced professionals. (C)</p> Signup and view all the answers

    Study Notes

    Introduction to Information Technology - Software Engineering Module

    • The module was prepared by Dr. Mohammad Malkawi, Dr. Moh'd Radaideh, Dr. Malik Qasaimeh, and Dr. Hamza Al-Kofahi.
    • The module was developed for Jordan University of Science and Technology.
    • The date of the module is October 29, 2022.

    Part 1: Software Engineering Introductory View

    • Origin of Software Engineering: Software Crisis:
      • Software Engineering emerged from the Software Crisis of the 1960s, 1970s, and 1980s.
      • The crisis highlighted problems in software development, including project budget overruns, schedule delays, property damage caused by software defects, and identity theft due to poor security.
      • The emphasis of software crisis evolved from productivity to quality.
      • Some examples of these issues include the OS/360 Operating System, and the catastrophic failure of the Therac-25 incident.
      • Software defects can cause significant harm, such as in medical equipment.
    • Why Software Engineering?
      • A pie chart shows expenditure on Software Projects totaling $96.7 million, with 45% delivered but not successfully used, 30% paid for but not delivered, 20% used with extensive rework and ultimately abandoned, and a very small percentage (2%) used as delivered.
    • Scientist vs. Engineer:
      • A computer scientist proves theorems about algorithms, designs languages, and defines knowledge representation schemes. They have infinite time.
      • An engineer develops solutions for application-specific problems for clients, using computers, languages, tools, techniques, and methods. Engineers work in multiple application domains and have 3 months to achieve the outcome.

    Software Engineering - A Problem Solving Activity

    • Analysis: Understanding the problem and breaking it down into smaller parts.
    • Synthesis: Combining the pieces into a structured solution.
    • Techniques (Methods): Formal procedures for producing results using well-defined notation.
    • Methodologies: Collections of techniques applied throughout software development, unified by a philosophical approach.
    • Tools: Instruments or automated systems to execute techniques.

    Frequently Asked Questions about Software Engineering

    • What is Software? Computer programs and documentation, developed for a specific customer or general market.
    • Attributes of Good Software: Functionality, performance, maintainability, dependability, and usability.
    • What is Software Engineering? An engineering discipline concerned with all aspects of software production, from specification to maintenance.
    • Fundamental Software Engineering Activities: Specification, development, validation, and evolution.
    • Difference between Software Engineering and Computer Science: Computer Science focuses on theory and fundamentals, while Software engineering concerns the practical development of software.
    • Difference between Software Engineering and System Engineering: System engineering concerns all aspects of computer-based systems, including hardware, software, and process engineering. Software engineering is part of this process.

    Frequently Asked Questions about Software Engineering (cont.)

    • Key Challenges: Coping with diversity, reduced delivery times, and building trustworthy software.
    • Software Engineering Costs: Roughly 60% of expenses are for development, 40% for testing. Often, evolution (change) costs exceed initial development costs for custom software.
    • Techniques/Methods: Different methods work best for different systems (e.g., safety-critical systems require different specifications than game development).
    • Web's Impact: The web has enabled software services and distributed systems. It has also spurred advancements in programming languages and software reuse.

    Essential Attributes of Good Software

    • Maintainability: Software should be adaptable to meet evolving customer needs.
    • Dependability and Security: Software should not cause physical or financial harm and be protected from malicious users.
    • Efficiency: Should not waste resources (e.g., memory, processing time).
    • Acceptability: Software must be understandable, usable, and compatible with other systems.

    Software Engineering

    • Definition: An engineering discipline concerned with all aspects of software production, from initial specification to ongoing maintenance.
    • Engineering Discipline: Uses appropriate theories and methodologies to address organizational and financial constraints.
    • Software Production: Involves technical development processes, project management, and tooling.

    Importance of Software Engineering

    • Reliance: Increasing reliance on advanced software systems by individuals and society.
    • Reliability and Cost-Effectiveness: The need for reliably producing software economically and quickly.
    • Cost Considerations: Changing and maintaining software after implementation often constitutes a large fraction of the overall cost.

    General Issues Affecting Most Software

    • Heterogeneity: Software systems must operate across a variety of networking devices and systems.
    • Business and Social Change: Software must adapt to rapid changes in business practices and societal needs.
    • Security and Trust: Ensuring the security and trustworthiness of software in an increasingly interdependent world.

    Part 2: Software Engineering Knowledge Areas

    • SEKA#1 (Software Requirements): Eliciting, analyzing, specifying, and validating software requirements, and managing them throughout the life-cycle.
    • SEKA#2 (Software Design): Defining the architecture, components, interfaces, and characteristics of a system based on software requirements.
    • SEKA#3 (Software Construction): Creating working software through coding, verification, unit testing, integration testing, and debugging.
    • SEKA#4 (Software Testing): Dynamic verification to ensure the program behaves as expected.

    Software Engineering Knowledge Areas (cont.)

    • SEKA#5 (Software Maintenance): Integral part of the software life-cycle despite often receiving less attention than development. Maintaining software components developed by others is becoming more important.
    • SEKA#6 (Software Configuration Management): A supporting process for project management, development, maintenance, and quality assurance.
    • SEKA#7 (Software Engineering Management): Managing software projects through phases defined as initiation and scope definition, project planning, project enactment, review, and evaluation, closure, and the measurement of the software engineering phase.
    • SEKA#8 (Software Engineering Process): Concerned with the activities of software engineers for developing, maintaining, and operating software. Includes processes for requirements, design, construction, and testing; configuration management processes are also important.

    Software Engineering Knowledge Areas (cont.)

    • SEKA#9 (Software Engineering Models & Methods): Provides structures, methodologies, a notation, and procedures for constructing, analyzing, specifying, designing, constructing, testing and verifying software and related work products. Success oriented design and repeatable activities are important.
    • SEKA#10 (Software Quality): Concerned with software engineering's perspective of culture/ethics, value/cost, quality models/characteristics, improvement, safety, quality assurance, control, verification and validation of systems, reviews, audits, requirements, defect management, techniques, measurements, and quality tools.
    • SEKA#11 (Software Engineering Professional Practice): Covers professionalism (accreditation, certification, codes of ethics, professional conduct, roles of professional societies, economic impact, employment, legal issues, documentation), dynamics of working in teams, cognition, dealing with problem complexities, interacting with stakeholders, uncertainty/ambiguity, and multicultural environments; and communication skills (reading, understanding/summarizing, writing, team communication, presentations).

    Software Engineering Knowledge Areas (cont.)

    • SEKA#12 (Software Engineering Economics): Making business decisions related to software engineering, aligning technology decisions with business goals. Study of value, costs, resources, and their relationship in a given situation. Processes such as cash flow, valuation, inflation, depreciation, taxes, and the entire life-cycle (product, project, program, portfolio) are considered.
    • SEKA#13 (Computing Foundations): Problem solving, abstraction, programming fundamentals, debugging, data structures, algorithms and complexity, computer organization, operating systems, compilers, databases, data management, network communication, parallel distributed computing, basic user/developer factors, and secure software development and maintenance.
    • SEKA#14 (Mathematical Foundations): Sets/relations/functions, proof techniques, graphs, trees, finite state machines, numerical precision/errors, algebraic structures, basic logic, counting, discrete probability, grammars, and number theory.
    • SEKA#15 (Engineering Foundations): Empirical methods/experimental technique, statistical analysis, measurement, engineering design/simulation/prototyping, standards, and root cause analysis.

    Part 3: Software Engineering Job Opportunities, Careers and Applications

    • Becoming a Software Engineer:
      • Define a software engineer
      • Role differences from Software Developers
      • Job outlook (growth expected)
      • Average salaries
      • Advancement strategies
    • Software Engineers vs. Developers: Comparing education, focus, skills, and salary.
    • Job Outlook: Discussing expected growth for jobs in software development (and associated fields).
    • Reasons for Demand: Factors driving demand for software engineers, including increasing technology complexity, the creation of more innovative software options, the need for continuous software maintenance, and the accelerated growth of technology in many industries.

    Part 4: Software Engineering Certifications

    • Software Development International Certifications:
      • AWS Certified DevOps Engineer - Professional; The Certified Software Development Professional (CSDP)
      • IEEE Computer Society certifications
      • National Initiative for Cybersecurity Careers and Studies(NICCS) certifications (include Certified Secure Software Lifecycle Professional (CSSLP) )
    • Software Testing International Certifications:
      • International Software Testing Qualifications Board (ISTQB)
      • Certified Tester Foundation Level (CTFL); Certified Tester Advanced Level Test Analyst (CTAL-TA); Certified Tester Advanced Level Test Manager (CTAL-TM); Certified Tester AI Testing (CT-AI), and Certified Tester Game Testing (CT-GaMe).
    • Software Security International Certifications:
      • Certified Ethical Hacker (CEH) (from the EC-Council); Certified Information Systems Security Professional (CISSP) (from the ISC).
    • Project Management & Software Project Management International Certifications:
      • Project Management Institute (PMI) certifications - Professional Scrum Master I (PSM I), Professional Scrum Master II (PSM II), Professional Scrum Master III (PSM III), Professional Scrum Product Owner I (PSPO I), Professional Scrum Product Owner II (PSPO II), Professional Scrum Product Owner III (PSPO III), Professional Scrum Development (PSD), Professional Agile Leadership (PAL), Professional Agile Leadership – Evidence-Based Management (PAL EBM), Scaled Professional Scrum (SPS), Professional Scrum with Kanban (PSK), and Professional Scrum with User Experience (PSU).

    How to Advance In Your Career As A Software Engineer

    • Practical Coding, Obtaining Experience at Large Companies, Developing Soft-Skills, and Pursuing Leadership Experience.
    • Build a professional portfolio
    • Entry-level position considerations

    Studying That Suits You

    Use AI to generate personalized quizzes and flashcards to suit your learning preferences.

    Quiz Team

    Related Documents

    Description

    This quiz covers key concepts related to software engineering, including the motivation for its emergence, the 'Software Crisis,' and the distinctions between software engineering and computer science. Test your understanding of important factors that influence the software industry and the characteristics of software professionals.

    More Like This

    Use Quizgecko on...
    Browser
    Browser