1/146
Looks like no tags are added yet.
Name | Mastery | Learn | Test | Matching | Spaced |
|---|
No study sessions yet.
What is a Computer Program?
A set of instructions written in a programming language that will be compiled or translated to machine language to perform a specific task.
What is Software?
The set of computer programs in addition to the associated documentation, configuration files, and data.
What is a Software Product?
An industrial-strength software of high quality to solve some problem of some set of users.
What is Ad-hoc Programming?
Write computer programs in an unplanned way to solve particular problems. Main focus is on starting programming task immediately. "Just make it work."
What is Software Engineering?
Systematic, disciplined, and quantifiable approach. Consider long-term maintainability, scalability, and quality. Plan for change, documentation, testing, and professional practices. "Make it work, make it right, make it maintainable = Make it Valuable."
What are 6 problems with the "obvious" Hello World code?
What are 5 real questions that reveal the gap between programming and SE?
What percentage of SE projects fail in some way according to Chaos Report 2009?
68% of SE projects fail in some way.
What are 4 types of project failure?
What was the Ariane 5 Rocket failure (1996)?
French rocket exploded 30 seconds after launch due to software defect. Converting 64-bit floating-point to 16-bit integer. Launch day produced number too large for 16-bit integer. Cost: $500 million.
What was the UK NHS NPfIT failure (2002-2011)?
Largest IT project failure in history. National Programme for IT in NHS. Duration: 9 years. Cost: £12 billion. Outcome: Cancelled with minimal deliverables.
What does "Systematic" mean in Software Engineering definition?
Using organized methods and processes rather than ad-hoc coding.
What does "Disciplined" mean in Software Engineering definition?
Developers should follow rules, standards, and best practices.
What does "Quantifiable" mean in Software Engineering definition?
Progress, quality, and performance should be measured and evaluated.
When did the Software Engineering field emerge?
Late 1960s.
What was the NATO Conference (1968)?
October 1968: 50 computer scientists met in Garmisch, Germany to discuss the "software crisis." Outcome: 130-page report advocating for software development based on engineering principles. Landmark in establishing SE as a discipline.
What is the Software Crisis?
Difficulty writing useful and efficient computer programs in the required time.
What is the key quote from NATO Conference about the basic problem?
"The basic problem is that certain classes of systems are placing demands on us which are beyond our capabilities and our theories and methods of design and production at this time… It is large systems that are encountering great difficulties."
What is the definition of Software Engineering from NATO Conference?
A discipline that integrates processes, methods and tools for the analysis, design, development, testing and maintenance of computer software products whilst complying with the set of conventional principles and best practices.
Who is Frederick Brooks?
1999 Turing Award recipient, Software Engineering pioneer. Wrote 1987 essay "No Silver Bullet: Essence and Accident in Software Engineering."
What is Brooks' main argument in "No Silver Bullet"?
There is no single magical solution ("silver bullet") that will suddenly make software development easy, cheap, fast, and error-free. Software has unique characteristics compared to other engineering products.
What are the 2 types of difficulties in Brooks' "No Silver Bullet"?
What are the 4 Essential Difficulties in Software?
What is Complexity as an Essential Difficulty?
Software is among the most complex human constructions. Even traditional engineering products increasingly rely on software.
What is Conformity as an Essential Difficulty?
Software must adapt continuously to changing environments. Example: Tax legislation changes require prompt software adaptations. Unlike physics, where natural laws don't change due to human decisions.
What is Changeability as an Essential Difficulty?
Constant pressure for software to evolve and add new features. More successful software → more modification requests. Unlike cars: once manufactured, they don't usually receive new functionalities.
What is Invisibility as an Essential Difficulty?
Inherently challenging to visualize software structure and complexity. Abstract nature makes evaluation difficult. Unlike cars: physical properties (weight, height, shape) are visible.
Give 4 examples of Accidental Difficulties
What is the scale of Linux Foundation projects?
Over 1.7 billion lines of code, 65,000 active developers, Linux kernel: more than 30 million lines of code.
What is SWEBOK?
Software Engineering Body of Knowledge. Guide by IEEE Computer Society documenting the body of knowledge defining software engineering. Defines 18 key areas of Software Engineering.
What are the first 5 SWEBOK key areas?
What are SWEBOK areas 6-10?
What are SWEBOK areas 11-15?
What are SWEBOK areas 16-18?
What is Requirements Engineering?
Requirements define both what a system should do and how it should behave. Activities: Elicit, Analyze, Document, Validate requirements.
What are Functional Requirements?
Define features or services. What the system should provide. Examples: Account balance display, statement generation, transfers between accounts, debit card cancellation.
What are Non-Functional Requirements?
How the system should operate. Constraints and quality of service. Examples: Performance, Availability, Security, Usability, Scalability, Maintainability.
Give 4 examples of Non-Functional Requirements for banking app
Give 4 more NFR examples for banking app
What is Software Design?
Determining the principal code units of a software system, extending only to the level of interfaces. Includes Provided Interfaces (services unit makes public) and Required Interfaces (services unit depends on).
What is Architectural Design?
When design becomes more abstract and involves larger units like packages or folders. Organization of system at higher level of abstraction beyond individual classes. Focuses on system structure and component relationships.
What is Software Construction?
Construction refers to implementation phase—programming the system.
What are 5 key decisions during Software Construction?
What is Software Testing?
Executing a program with a finite set of cases and verifying whether it delivers expected results.
What is Dijkstra's famous quote about testing?
"Testing shows the presence, not the absence of bugs." Testing can only prove something is wrong, not that everything is right. Programs are too complex to test exhaustively.
What are 4 types of testing?
What is Verification vs Validation in testing?
Verification: "Are we building the product right?" (according to specification). Validation: "Are we building the right product?" (meets customer needs).
What is Software Maintenance?
Modifying and updating a software system after its delivery to: correct faults (fix bugs), improve performance/qualities, adapt to changed environment (new OS, hardware, regulations), or add new features for evolving needs.
What are the 5 categories of Software Maintenance?
What is an example of Preventive Maintenance?
Y2K Problem: Applications used DD-MM-YY date format. Concern: Date operations in 2000+ could produce incorrect results. Solution: Convert to DD-MM-YYYY format. Massive global effort.
Give 3 examples of Adaptive Maintenance
What is Project Management in Software Engineering?
Process of planning, organizing, directing, and controlling resources (people, time, budget, tools, technology) to successfully complete a software project within defined scope, time, cost, and quality constraints.
What are the 5 Project Management activities?
What is Brooks' Law?
"Adding manpower to a late software project makes it later."
Why does Brooks' Law hold true?
New developers need time to understand codebase, architecture, design. Larger teams require more communication and coordination. Communication complexity grows exponentially.
How many communication channels for 3 developers? 4 developers? 10 developers?
3 developers: 3 channels, 4 developers: 6 channels, 10 developers: 45 channels.
What is the solution to Brooks' Law?
Develop in small teams (≤ 12 engineers).
What is a Software Process?
A software process defines the structured sequence of activities and events required to build, test, and deliver software.
What analogy is used for Software Process?
Like building construction: Foundation → Masonry → Roofing → Plumbing → Electrical → Painting. Similarly: Requirement Analysis → Design and Planning → Implementation → Testing → Integration → Maintenance.
What are Plan-Driven Processes?
All activities planned in advance, progress measured against plan, emphasis on documentation, requirements defined upfront, sequential phases. Example: Waterfall Model.
What are Agile Processes?
Planning is incremental, easier to change process, less documentation, requirements evolve, iterative development. Example: Scrum, XP.
When do Plan-Driven vs Agile processes work best?
Plan-driven: work best when requirements are stable and well-understood. Agile: better suited for projects with changing requirements.
What is the goal of software development?
Develop high quality software that meets customers' real needs, on time, on budget.
What is Correctness (Functionality) quality?
The software meets requirements and specifications it was designed for, and behaves as expected in its intended environment. All functionalities are correctly implemented.
What is Usability and Acceptability quality?
The software is easy to use and understand, provides positive user experience. Users should accept and adopt the software product by continuing to use it.
What is Reliability quality?
The software is free of defects and performs consistently and accurately under different conditions and scenarios.
What is Maintainability quality?
The software is easy to change and update, and is well-documented so it can be understood and modified by other developers.
What is Security quality?
The software is protected against unauthorized access and keeps data and functions safe from malicious attacks.
What is Efficiency and Performance quality?
The software runs efficiently and quickly, and can handle large amounts of data or traffic.
What is Scalability quality?
The software can handle increasing workload and can be easily extended to meet changing requirements. Scaling to increase large number of users, big data, or larger spatial deployment.
What is Portability quality?
The ease with which software can be used on computer or platform configurations other than its current one where it was developed and tested.
What is Reusability and Openness quality?
The ease with which software can be reused in developing other software.
What is Adaptability and Flexibility quality?
The software is flexible to be customized without extra development in order to adapt it to different future requirements.
Are there universal principles in Software Engineering?
No. There is no standard set of universal principles and laws in SE that is agreed to by everyone. Principles are suggested as guidelines and recommendations to improve productivity and achieve better success.
What are 5 of Davis's principles (1994)?
What are 5 more of Davis's principles?
What is Intellectual Distance?
The gap between the real world and computerized world.
What are 3 of Davis's complementary recommendations for SE professionals?
What are other SE principles mentioned besides Davis?
What are Bertrand Meyer's ABC Classification types?
Three Primary Types: 1. Type A: Acute Systems, 2. Type B: Business Systems, 3. Type C: Casual Systems. Each requires different SE approaches and practices.
What are Type C: Casual Systems?
Not under pressure for high-quality performance, can tolerate minor bugs, lightweight and non-critical, typically single developer. Examples: Academic project scripts, one-time data migration, student association management. Engineering: Do NOT over-engineer these systems.
What should NOT be done for Type C systems?
Don't require high internal quality standards, don't need optimal runtime performance, don't need sophisticated user interfaces. Avoid over-engineering.
What are Type A: Acute Systems?
Critical characteristic: A single failure can have catastrophic consequences, including loss of human lives.
Give 5 examples of Type A: Acute Systems
What are Type A development requirements?
Rigorous process: Comprehensive code reviews, external certification required, hardware/software redundancies. Design: Formal languages based on logic/set theory, mathematical proofs of correctness, extensive testing and validation.
What are Type B: Business Systems?
Examples: Enterprise applications (finance, HR, logistics, sales), web-based systems, software libraries and frameworks, general-purpose applications (text editors, spreadsheets), basic software systems (compilers, IDEs).
What is the System Classification Summary comparison?
Type A (Acute): Life-threatening failure, aircraft control, extremely rigorous engineering. Type B (Business): Business impact failure, enterprise apps, standard practices. Type C (Casual): Minimal impact failure, academic scripts, minimal engineering.
What is the key insight about system classification?
Match engineering effort to system criticality. Over-engineering Type C wastes resources. Under-engineering Type A risks lives. Type B systems: Sweet spot for standard SE practices.
Why does Classification Matter in SE?
There is no single, universal method for software development. Different types of software require different approaches. Software varies in: size/complexity, functional/non-functional requirements, development processes needed, quality assurance practices required.
What are the 8 Software Development Team Roles?
What are Project Manager key responsibilities?
Plans, organizes, manages entire software development process. Defines project scope, timeline, budget. Coordinates team and resources. Manages risks and resolves issues. Ensures delivery on time and within budget. Acts as liaison between stakeholders and dev team.
What are Project Manager key skills?
Leadership, communication, time management, problem-solving.
What are Product Manager key responsibilities?
Defines product vision and strategy. Prioritizes features based on business value. Gathers and analyzes user requirements. Creates product roadmap. Works with stakeholders to align product with business goals. Makes decisions on what to build and when.
What are Product Manager key skills?
Strategic thinking, market analysis, user empathy, decision-making.
What are Software Architect key responsibilities?
Designs overall technical structure of system. Makes high-level design choices. Defines coding standards and tools. Ensures scalability, security, and performance. Reviews technical implementations. Provides technical guidance to developers.
What are Software Architect key skills?
Deep technical expertise, system design, architectural patterns.
What are UX/UI Designer key responsibilities?
Creates user-friendly interfaces. Conducts user research and testing. Designs wireframes, mockups, prototypes. Ensures consistent visual design across product. Optimizes user experience and interaction flows. Collaborates with developers on implementation.
What are UX/UI Designer key skills?
Design tools (Figma, Sketch), user research, visual design, empathy.
What are Software Developer/Programmer key responsibilities?
Writes, tests, and maintains code. Implements features according to specifications. Debugs and fixes software issues. Collaborates with team on technical solutions. Participates in code reviews. Creates technical documentation. Types: Frontend, Backend, Full-Stack, Mobile.
What are Software Developer key skills?
Programming languages, frameworks, algorithms, problem-solving.