Podcast
Questions and Answers
What was the primary motivation for the emergence of software engineering?
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"?
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?
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?
What is the key difference between software engineering and computer science?
Based on the provided information, which of the following statements is TRUE about the "Software Crisis"?
Based on the provided information, which of the following statements is TRUE about the "Software Crisis"?
According to the provided text, what percentage of software projects were delivered but never successfully used
?
According to the provided text, what percentage of software projects were delivered but never successfully used
?
Which of the following is NOT a characteristic of a computer scientist, as described by the text?
Which of the following is NOT a characteristic of a computer scientist, as described by the text?
What does the text suggest about the importance of software engineering?
What does the text suggest about the importance of software engineering?
Why is it important to complete coding projects, even if they are not professionally-related?
Why is it important to complete coding projects, even if they are not professionally-related?
What is one of the common criteria large companies look for when hiring software engineers?
What is one of the common criteria large companies look for when hiring software engineers?
What is one of the benefits to taking an entry-level role as a software developer?
What is one of the benefits to taking an entry-level role as a software developer?
Which of the following is NOT a recommended skill for improving your soft-skills?
Which of the following is NOT a recommended skill for improving your soft-skills?
What are some practical ways to learn coding for professional development?
What are some practical ways to learn coding for professional development?
What is a key difference between Software Engineers and Developers?
What is a key difference between Software Engineers and Developers?
What is the main reason Software Engineers typically earn more than Software Developers?
What is the main reason Software Engineers typically earn more than Software Developers?
What is the expected growth rate for Software Developers, Quality Assurance Analysts, and Testers from 2021 to 2031, according to the BLS?
What is the expected growth rate for Software Developers, Quality Assurance Analysts, and Testers from 2021 to 2031, according to the BLS?
Which of the following is NOT a reason for the high demand for Software Engineers?
Which of the following is NOT a reason for the high demand for Software Engineers?
What is a primary reason for the rising demand for Software Engineers in companies?
What is a primary reason for the rising demand for Software Engineers in companies?
Why is Software Engineer a broad career option?
Why is Software Engineer a broad career option?
How does the BLS categorize Software Engineers?
How does the BLS categorize Software Engineers?
Which of the following accurately describes the average annual salary of Software Developers, according to the content?
Which of the following accurately describes the average annual salary of Software Developers, according to the content?
What is the main responsibility of an engineer in the context provided?
What is the main responsibility of an engineer in the context provided?
Which of the following best describes the analysis phase in problem-solving?
Which of the following best describes the analysis phase in problem-solving?
What defines the methodologies in software engineering?
What defines the methodologies in software engineering?
Which attribute is NOT essential for good software according to the content?
Which attribute is NOT essential for good software according to the content?
Which of the following is a primary activity of software engineering?
Which of the following is a primary activity of software engineering?
What distinguishes software engineering from computer science?
What distinguishes software engineering from computer science?
What aspect does system engineering NOT typically encompass?
What aspect does system engineering NOT typically encompass?
Which of the following best defines software products?
Which of the following best defines software products?
What is one of the key challenges facing Software Engineering?
What is one of the key challenges facing Software Engineering?
What percentage of software costs are attributed to Development Costs?
What percentage of software costs are attributed to Development Costs?
Which statement about Evolution Costs is correct for custom software?
Which statement about Evolution Costs is correct for custom software?
Which type of project should use a series of prototypes according to Software Engineering techniques?
Which type of project should use a series of prototypes according to Software Engineering techniques?
What is a critical attribute of good software that reflects its ability to adapt over time?
What is a critical attribute of good software that reflects its ability to adapt over time?
Dependable software should not cause what type of damage in the event of a system failure?
Dependable software should not cause what type of damage in the event of a system failure?
Which software development approach is influenced by the web's availability of services?
Which software development approach is influenced by the web's availability of services?
Which of the following is NOT included under the characteristics of software dependability?
Which of the following is NOT included under the characteristics of software dependability?
What is one benefit of pursuing leadership roles in projects?
What is one benefit of pursuing leadership roles in projects?
Which of the following is NOT recommended for a career as a Software Engineer?
Which of the following is NOT recommended for a career as a Software Engineer?
Why is it important for Software Engineers to follow their passion?
Why is it important for Software Engineers to follow their passion?
What role does professional networking play for Software Engineers?
What role does professional networking play for Software Engineers?
What advantage does obtaining certification provide for a Software Engineer?
What advantage does obtaining certification provide for a Software Engineer?
How does keeping skills updated benefit a Software Engineer?
How does keeping skills updated benefit a Software Engineer?
What type of applications run on a local computer?
What type of applications run on a local computer?
Which of the following is a common misconception about leadership roles?
Which of the following is a common misconception about leadership roles?
Flashcards
Software Crisis
Software Crisis
The period in the 1960s, 1970s, and 1980s when difficulties in software development became widespread, leading to challenges in project completion and budget constraints.
Software Engineering
Software Engineering
A software development process that aims to produce high-quality software while managing costs and meeting deadlines.
Productivity in Software Development
Productivity in Software Development
The ability to meet deadlines and stay within budget.
Software Quality
Software Quality
Signup and view all the flashcards
Overbudget and Overrun Software Project
Overbudget and Overrun Software Project
Signup and view all the flashcards
Software Defects and Their Impacts
Software Defects and Their Impacts
Signup and view all the flashcards
Computer Science
Computer Science
Signup and view all the flashcards
Software Engineer
Software Engineer
Signup and view all the flashcards
Analysis
Analysis
Signup and view all the flashcards
Synthesis
Synthesis
Signup and view all the flashcards
Techniques
Techniques
Signup and view all the flashcards
Methodologies
Methodologies
Signup and view all the flashcards
Tools
Tools
Signup and view all the flashcards
Software Specification
Software Specification
Signup and view all the flashcards
Software Development
Software Development
Signup and view all the flashcards
Software Developer Interpersonal Skills
Software Developer Interpersonal Skills
Signup and view all the flashcards
Software Engineer Skills
Software Engineer Skills
Signup and view all the flashcards
Software Engineer and Developer Salaries
Software Engineer and Developer Salaries
Signup and view all the flashcards
Software Engineer vs. Developer Earnings
Software Engineer vs. Developer Earnings
Signup and view all the flashcards
Software Engineers, BLS Classification
Software Engineers, BLS Classification
Signup and view all the flashcards
Projected Growth in Software Development
Projected Growth in Software Development
Signup and view all the flashcards
Demand for Innovative Software
Demand for Innovative Software
Signup and view all the flashcards
Limited Life Span of Code
Limited Life Span of Code
Signup and view all the flashcards
Leadership roles on projects
Leadership roles on projects
Signup and view all the flashcards
Follow your passion in software engineering
Follow your passion in software engineering
Signup and view all the flashcards
Continuously update your skills
Continuously update your skills
Signup and view all the flashcards
Build your professional network
Build your professional network
Signup and view all the flashcards
Get certified as a software engineer
Get certified as a software engineer
Signup and view all the flashcards
Stand-alone application
Stand-alone application
Signup and view all the flashcards
Practice Coding
Practice Coding
Signup and view all the flashcards
Project Prompts
Project Prompts
Signup and view all the flashcards
Professional Portfolio
Professional Portfolio
Signup and view all the flashcards
Entry-Level Software Position
Entry-Level Software Position
Signup and view all the flashcards
Soft-Skills
Soft-Skills
Signup and view all the flashcards
Technical Skills
Technical Skills
Signup and view all the flashcards
Develop Soft-Skills
Develop Soft-Skills
Signup and view all the flashcards
Pursue Leadership Experience
Pursue Leadership Experience
Signup and view all the flashcards
Maintainability
Maintainability
Signup and view all the flashcards
Dependability and Security
Dependability and Security
Signup and view all the flashcards
Coping with Increasing Diversity
Coping with Increasing Diversity
Signup and view all the flashcards
Demands for Reduced Delivery Times
Demands for Reduced Delivery Times
Signup and view all the flashcards
Developing Trustworthy Software
Developing Trustworthy Software
Signup and view all the flashcards
Software Engineering Costs
Software Engineering Costs
Signup and view all the flashcards
The Impact of the Web
The Impact of the Web
Signup and view all the flashcards
Choosing the Right Software Engineering Techniques
Choosing the Right Software Engineering Techniques
Signup and view all the flashcards
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.