software engineering lecture 1

0.0(0)
studied byStudied by 2 people
0.0(0)
full-widthCall Kai
learnLearn
examPractice Test
spaced repetitionSpaced Repetition
heart puzzleMatch
flashcardsFlashcards
GameKnowt Play
Card Sorting

1/146

encourage image

There's no tags or description

Looks like no tags are added yet.

Study Analytics
Name
Mastery
Learn
Test
Matching
Spaced

No study sessions yet.

147 Terms

1
New cards

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.

2
New cards

What is Software?

The set of computer programs in addition to the associated documentation, configuration files, and data.

3
New cards

What is a Software Product?

An industrial-strength software of high quality to solve some problem of some set of users.

4
New cards

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."

5
New cards

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."

6
New cards

What are 6 problems with the "obvious" Hello World code?

  1. Putting Business Logic inside main procedure, 2. No use of Object-Oriented Design, 3. Inclusion of Text inside code, 4. No comments, 5. No Abstraction, 6. Not Modular.
7
New cards

What are 5 real questions that reveal the gap between programming and SE?

  1. Requirements Change (what if customer wants "Hello All"?), 2. Business Considerations (how much to charge?), 3. Professional Responsibility (ethical support?), 4. Scalability (multiple languages/formats?), 5. Maintenance (work on code after 10 years?).
8
New cards

What percentage of SE projects fail in some way according to Chaos Report 2009?

68% of SE projects fail in some way.

9
New cards

What are 4 types of project failure?

  1. Cancelled projects, 2. Delivered late, 3. Run over budget, 4. Don't meet requirements.
10
New cards

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.

11
New cards

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.

12
New cards

What does "Systematic" mean in Software Engineering definition?

Using organized methods and processes rather than ad-hoc coding.

13
New cards

What does "Disciplined" mean in Software Engineering definition?

Developers should follow rules, standards, and best practices.

14
New cards

What does "Quantifiable" mean in Software Engineering definition?

Progress, quality, and performance should be measured and evaluated.

15
New cards

When did the Software Engineering field emerge?

Late 1960s.

16
New cards

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.

17
New cards

What is the Software Crisis?

Difficulty writing useful and efficient computer programs in the required time.

18
New cards

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."

19
New cards

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.

20
New cards

Who is Frederick Brooks?

1999 Turing Award recipient, Software Engineering pioneer. Wrote 1987 essay "No Silver Bullet: Essence and Accident in Software Engineering."

21
New cards

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.

22
New cards

What are the 2 types of difficulties in Brooks' "No Silver Bullet"?

  1. Essential Difficulties: Intrinsic to the field, unlikely to be solved by new technologies. 2. Accidental Difficulties: Can be addressed with adequate training and existing technologies.
23
New cards

What are the 4 Essential Difficulties in Software?

  1. Complexity, 2. Conformity, 3. Changeability, 4. Invisibility.
24
New cards

What is Complexity as an Essential Difficulty?

Software is among the most complex human constructions. Even traditional engineering products increasingly rely on software.

25
New cards

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.

26
New cards

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.

27
New cards

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.

28
New cards

Give 4 examples of Accidental Difficulties

  1. IDE that frequently crashes, 2. Compiler with cryptic error messages, 3. Framework lacking documentation, 4. Web application with confusing interface.
29
New cards

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.

30
New cards

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.

31
New cards

What are the first 5 SWEBOK key areas?

  1. Software Requirements, 2. Software Architecture, 3. Software Design, 4. Software Construction, 5. Software Testing.
32
New cards

What are SWEBOK areas 6-10?

  1. Software Engineering Operations, 7. Software Maintenance, 8. Software Configuration Management, 9. Software Engineering Management, 10. Software Engineering Process.
33
New cards

What are SWEBOK areas 11-15?

  1. Software Engineering Models and Methods, 12. Software Quality, 13. Software Security, 14. Software Engineering Professional Practice, 15. Software Engineering Economics.
34
New cards

What are SWEBOK areas 16-18?

  1. Computing Foundations, 17. Mathematical Foundations, 18. Engineering Foundations.
35
New cards

What is Requirements Engineering?

Requirements define both what a system should do and how it should behave. Activities: Elicit, Analyze, Document, Validate requirements.

36
New cards

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.

37
New cards

What are Non-Functional Requirements?

How the system should operate. Constraints and quality of service. Examples: Performance, Availability, Security, Usability, Scalability, Maintainability.

38
New cards

Give 4 examples of Non-Functional Requirements for banking app

  1. Performance: Provide account balance within 2 seconds, 2. Availability: Online 99% of time, 3. Fault tolerance: Continue if data center fails, 4. Security: Encrypt all data exchanged with branches.
39
New cards

Give 4 more NFR examples for banking app

  1. Privacy: Keep customer data confidential, 6. Interoperability: Integrate with Central Bank systems, 7. Scalability: Handle data for 1 million customers, 8. Usability: Accessible to visually impaired individuals.
40
New cards

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).

41
New cards

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.

42
New cards

What is Software Construction?

Construction refers to implementation phase—programming the system.

43
New cards

What are 5 key decisions during Software Construction?

  1. Algorithms and data structures to use, 2. Installing/configuring third-party frameworks, 3. Exception handling policies, 4. Coding standards (naming, indentation, documentation), 5. Development tools (compilers, IDEs, debuggers, version control).
44
New cards

What is Software Testing?

Executing a program with a finite set of cases and verifying whether it delivers expected results.

45
New cards

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.

46
New cards

What are 4 types of testing?

  1. Unit Tests: Testing small code units (like a class), 2. Integration Tests: Testing larger units (set of classes), 3. Performance Tests: Checking system performance under loads, 4. Usability Tests: Evaluating user interface usability.
47
New cards

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).

48
New cards

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.

49
New cards

What are the 5 categories of Software Maintenance?

  1. Corrective: Address bugs reported by users/developers, 2. Preventive: Address latent bugs that haven't caused failures, 3. Adaptive: Adjust to environmental changes, 4. Refactoring: Improve design without changing behavior, 5. Evolutionary: Add new features/enhance existing ones.
50
New cards

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.

51
New cards

Give 3 examples of Adaptive Maintenance

  1. Updating from Python 2.7 to Python 3.0, 2. Customizing system for new customer requirements, 3. Modifying system to comply with new legislation.
52
New cards

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.

53
New cards

What are the 5 Project Management activities?

  1. Planning: Defining objectives, tasks, schedules, resources, risks, 2. Organizing: Assigning roles, responsibilities, structuring team, 3. Execution: Coordinating team's work, 4. Monitoring & Controlling: Tracking progress, managing risks, ensuring quality, 5. Closing: Delivering final product, evaluating performance.
54
New cards

What is Brooks' Law?

"Adding manpower to a late software project makes it later."

55
New cards

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.

56
New cards

How many communication channels for 3 developers? 4 developers? 10 developers?

3 developers: 3 channels, 4 developers: 6 channels, 10 developers: 45 channels.

57
New cards

What is the solution to Brooks' Law?

Develop in small teams (≤ 12 engineers).

58
New cards

What is a Software Process?

A software process defines the structured sequence of activities and events required to build, test, and deliver software.

59
New cards

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.

60
New cards

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.

61
New cards

What are Agile Processes?

Planning is incremental, easier to change process, less documentation, requirements evolve, iterative development. Example: Scrum, XP.

62
New cards

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.

63
New cards

What is the goal of software development?

Develop high quality software that meets customers' real needs, on time, on budget.

64
New cards

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.

65
New cards

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.

66
New cards

What is Reliability quality?

The software is free of defects and performs consistently and accurately under different conditions and scenarios.

67
New cards

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.

68
New cards

What is Security quality?

The software is protected against unauthorized access and keeps data and functions safe from malicious attacks.

69
New cards

What is Efficiency and Performance quality?

The software runs efficiently and quickly, and can handle large amounts of data or traffic.

70
New cards

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.

71
New cards

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.

72
New cards

What is Reusability and Openness quality?

The ease with which software can be reused in developing other software.

73
New cards

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.

74
New cards

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.

75
New cards

What are 5 of Davis's principles (1994)?

  1. Make quality Number 1, 2. High Quality Software is possible, 3. Give products to customer early, 4. Determine Problem before requirements, 5. Evaluate design alternatives, 6. Use appropriate process model, 7. Use different languages for phases, 8. Minimize intellectual distance, 9. Technique before tools, 10. Get it right before faster (any 5 from 15).
76
New cards

What are 5 more of Davis's principles?

  1. Inspect Code, 12. Good management is more important than technology, 13. People are the key to success, 14. Follow with care, 15. Take responsibility (continuing from previous card).
77
New cards

What is Intellectual Distance?

The gap between the real world and computerized world.

78
New cards

What are 3 of Davis's complementary recommendations for SE professionals?

  1. Understand the Customers' Priorities, 2. The More They See, the More They Need, 3. Plan to Throw One Away, 4. Design for Change, 5. Design Without Documentation is Not Design, 6. Avoid Tricks, 7. Don't Test Your Own Software (any 3).
79
New cards

What are other SE principles mentioned besides Davis?

  1. Wasserman's 8 Concepts, 2. Royce's 10 principles, 3. David Hooker's 7 Principles.
80
New cards

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.

81
New cards

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.

82
New cards

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.

83
New cards

What are Type A: Acute Systems?

Critical characteristic: A single failure can have catastrophic consequences, including loss of human lives.

84
New cards

Give 5 examples of Type A: Acute Systems

  1. Autonomous vehicle control systems, 2. Nuclear power plant control systems, 3. Airplane control systems, 4. ICU medical equipment (Ventilators, Patient Monitors, Dialysis machines), 5. Subway train control systems, 6. Ariane 5 rocket software (any 5).
85
New cards

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.

86
New cards

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).

87
New cards

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.

88
New cards

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.

89
New cards

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.

90
New cards

What are the 8 Software Development Team Roles?

  1. Project Manager, 2. Product Manager, 3. Software Architect, 4. UX/UI Designer, 5. Software Developer, 6. QA Engineer, 7. DevOps Engineer, 8. Business Analyst.
91
New cards

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.

92
New cards

What are Project Manager key skills?

Leadership, communication, time management, problem-solving.

93
New cards

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.

94
New cards

What are Product Manager key skills?

Strategic thinking, market analysis, user empathy, decision-making.

95
New cards

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.

96
New cards

What are Software Architect key skills?

Deep technical expertise, system design, architectural patterns.

97
New cards

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.

98
New cards

What are UX/UI Designer key skills?

Design tools (Figma, Sketch), user research, visual design, empathy.

99
New cards

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.

100
New cards

What are Software Developer key skills?

Programming languages, frameworks, algorithms, problem-solving.