CMPT 276 Midterm Flashcards

midterm 1 (117 cards)

1
Q

Functional requirements

A

Are product features or functions that developers must implement to enable users to accomplish their tasks

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Non function Requirements

A

Nonfunctional requirements, or NFRs, are a set of specifications that describe the system’s operation capabilities and constraints.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Cross-functional team

A

A cross-functional team is a workgroup made up of employees from different functional areas within an organization who collaborate to reach a stated objective

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

7 +- 2 Rule

A

Also called ‘Miller’s Law’ it explains that people can only hold seven plus or minus two items, in their short-term memory at any one time and that the magic number of seven itself is the best for memory recall

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Defining Software Engineerig

A

*No universal measures of quality exist for assessing a software
product

*The manufacturing cycle for software products is not a significant
element in software development Software development is essentially a process that involves a progression through many layers of design
abstraction and, hence, is unlike any conventional engineering
processes, such as those that occur within mechanical and civil
engineering.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Malware

A

Software that is intended to damage or disable computers and computer systems

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

What are the for S/W Bugs?

A
  1. Miscommunication or no communication
  2. Software complexity
  3. Programming errors
  4. Changing requirements
  5. Time pressures
  6. Egotistical or overconfident people (CMPT 275 – Spring, 2001)
  7. Poorly documented code
  8. Software development tools
  9. Obsolete automation scripts
  10. Lack of skilled testers (lack of extraordinary people)
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

What are some things that have led to a so-called led to the so-called Software Crisis.

A

The pace of change in computer and software technology drives the demand for new and evolved
software products. This situation has created customer expectations and competitive forces that
strain our ability to produce quality software within acceptable development schedules

The availability of qualified software engineers has not kept pace with the demand from industry,
so that systems are designed and built by people with insufficient educational background or
experience.

Programming techniques and processes that work effectively when used by an individual or small
team to develop modest-sized programs do not scale well to the development of large, complex
systems.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

Waterfall Method

A

The Waterfall model — is a sequential development process that flows like a waterfall through all phases of a project

Requirement Analysis -> System Design -> Implenmentation -> Testing -> Deployment -> Maintenance

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Essential Attributes of Good Software

A

Maintainability: Should be written in way so it can evolve to meet changing needs of customers

Dependability and security: Dependable software should not cause
physical or economic damage in the event of system failure

Efficiency: Software should not make wasteful use of system resources such as
memory and processor cycles

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

The typical software development project takes _____ months.

A

The typical software development project takes 12 to 23 months.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

To be considered a large system, a system today must contain at least
_____ lines of executable code.

A

To be considered a large system, a system today must contain at least 50,000 lines of executable code

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

What percent of the $92 billion software market is commercial “shrinkwrap” personal computer products?

A

less than 10%.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

For a medium-sized software system, how many lines of executable
source code are typically produced per day per person (averaged over the
entire period of development).

A

Less than 10 (1000 LOC/year for procedural coding of relatively small projects)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

The approximate number of errors found in every 1000 lines of
executable source code during development of a software system is _____.

A

5 to 6

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

Approximately what percentage of software system that begin
development are finally completed

A

70 to 79%

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
17
Q

Most errors found by users in software are the result of
a. coding errors.
b. difficulties understanding the problem statement.
c. system integration errors.
d. errors in the design of the solution.

A

b. difficulties understanding the problem statement (REQUIREMENTS).

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
18
Q

The cost of owning and maintaining software is typically _____ times as
expensive as developing the software.

A

2 times

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
19
Q

A 1979 study by the Government Accounting Office found that for software
development contracts:
___ % were used as delivered.
___ % were used after rework.
___ % were abandoned or reworked.
___ % delivered but not used.
___ % paid for but not delivered.

A

2 % were used as delivered.
3 % were used after rework.
45 % were abandoned or reworked.
20 % delivered but not used.
30 % paid for but not delivered.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
20
Q

. A more recent study (1995) of 365 Information Systems professionals found the statistics on software
development project:
___ % successful.
___ % operational (but less than successful).
___ % cancelled.

A

16 % successful.
53 % operational (but less than successful).
31 % cancelled.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
21
Q

During the 1990’s, software maintenance accounted for what percent of the software budget for an
information system organization? In 2015, what percent of the Federal government’s IT budget was spent on
operations and maintenance?

A

a) 60% b) 75%

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
22
Q

A 2002 study by the U.S. Department of Commerce estimates that software defects cost the U.S. economy
_____ per year.
a. $100 million.
b. $500 million.
c. $1 billion.
d. $60 billion.

A

60 billion

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
23
Q

The average project spends about ____ percent of its time on unplanned rework; fixing mistakes that were
made earlier in the project.

A

80

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
24
Q

The average project spends about ____ percent of its time on unplanned rework; fixing mistakes that were
made earlier in the project.

A
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
25
Characteristics of Good metrics
easily quantifiable reliable objective
26
Moore's Law
observation that number of transistors on integrated circuits will double every 2 years with minimal rise in cost
27
Computing Science
Study of algorithms including - their formal and mathematical properties - hardware realizations - linguistic realizations - their applications
28
Algorithm
a well ordered collection of unambiguous and effectively computable operations, that when executed produces a result and solves a problem in a finite amount of time
29
How much of Software Engineering is about Coding
about 7 %
30
Software
- abstract and invisible - has both static and dynamic properties - intrinsically complex in terms of its organization - no universal measure of quality exists
31
Software Development
process that involves a progression through many layers of of design abstraction and hence unlike conventional engineering process
32
Two Dimensions Software Engineering
Management Dimension Technical Dimension
33
Success of Software Development depends on what
Quality of people involved
34
Programmer vs Software Engineer
Programmer - simply someone who writes computer programs Software Engineer - a person who applies the principles of software engineering to the design development, implementation and maintenance of a software in a systematic method
35
Software Engineering Professionalism
movement to make software engineering a profession
36
Legacy Code (maybe not important)
source code to a no longer supported by computer technology or software
37
Software Products
Generic - stand alone systems that are marketed and sold to any customer (specification of what the software does is owned by the developer) Customized - (software commissioned by a specific customer to meet their own needs(specification of what the software should do is owned by customer)
38
Elegant Code
good should be clean, simple, easy to read and understand (less chance of bug slipping in)
39
General Issues that affect software
Heterogeneity - increasingly systems are required to operate as distributed systems across networks that include different types of computer and mobile devices
40
4 Values of Agile Manifesto
Individuals and Interactions over Process and Tools -valuing people more than highly than processes or tools -People respond to business needs and drive the development -If the process or tools drive development, the team is less responsive to change and less likely to meet customer needs Working Software Over Comprehensive Documentation - a lot of time was spent on documenting the product for development and ultimate delivery (cause of delay for longs delays in development) -agile doesn't eliminate documentation but streamlines it into a form that gives developer what is needed to do the work without getting down -uses user stories Customer Collaboration Over Contract Negotiation - negotiation is the period where the customer and the product manager work out the details of delivery, with points where details may be renegotiated -customer is engaged and collaborates during the development process makes it easier to meet customer needs Responding to Change over Following a plan - before changes was thought of as an expense as intention was to develop detailed elaborate plans - in agile shortness of iterations means priorities can be shifted iteration to iteration ,(change improves a project)
41
What does agile advocate
-adaptive planning -evolutionary development -early delivery -continuous development -encourages rapid and flexible response to change
42
Plan driven vs Agile Development
Plan driven - separate development stages with the outputs produced t each stage being planned in advance -systems are fully specifiable and predictable and can be built though meticulous and extensive planning Agile - specification, designing and implementation and testing are interleaved and the outputs from development process are decided while developing and decided through negotiation during development -high quality adaptive software can be developed by small teams using the principle of continuous design improvement and testing based on rapid feedback
43
Incremental development: a. is another name for the waterfall model. b. is fundamental to the Agile process. c. is a more expensive and time-consuming approach regarding changes in software as it is being developed compared to, say, the waterfall model. d. is much more informal than the Agile process thereby making it relatively problem-free for large, evolving businesses (i.e,. it is a relatively problem-free S/W development model). e. None of these choices.
b. is fundamental to the Agile process.
44
The 12 agile manifesto principles (may not be important)
1) Customer Satisfaction by early and continuous delivery of valuable software 2) Welcoming changing requirements, even in late development 3) Working software is delivered frequently (weeks rather than months) 4) Close daily cooperation between business people and developer 5) Projects are built around motivated individuals , who should be trusted 6) Face to face conversation is the best form of communication 7) Working software is the principle measure of progress 8) Sustainable development able to maintain a constant pace 9) Continuous attention to technical excellence and good design 10) Simplicity - the art of maximizing the amount of work done - is essential 11) Best architectures, requirements, and design emerge from self organizing teams 12) Regularly, the team reflects on how to become more effective and adjusts accordingly
45
Incremental vs Iterative
Incremental: A little more is added each time Iterative: Based on cyclic process of prototyping, testing, and analzying, and refining a product or process
46
CICD
stands for continuous integration and continuous delivery/deployment, aims to streamline and accelerate the software development lifecycle
47
TBD
Trunk-based development is a version control management practice where developers merge small, frequent updates to a core “trunk” or main branch. Since it streamlines merging and integration phases, it helps achieve CI/CD and increases software delivery and organizational performance.
48
DevOPS
DevOps is a methodology in the software development and IT industry. * Used as a set of practices and tools, DevOps integrates and automates the work of software development (Dev) and IT operations (Ops) as a means for improving and shortening the systems development life cycle. * DevOps is complementary to agile software development; several DevOps aspects came from the agile way of working. * Automation is an important part of DevOps. * Software programmers and architects should use "fitness functions" to keep their software in check
49
Prototyping
incomplete versions of the software program being developed not standalone development methodology, but an approach to try out particular features in context of full methodology attempts to reduce project risk by breaking a project into smaller segments client is involved through the whole process which increases chance of acceptance in final implementation some prototypes are designed with expectation to be discarded and other with intention to evolve into a working system
50
Advantages and Disadvantages of Prototyping
Advantages of Prototype model: * Users are actively involved in the development * Since in this methodology a working model of the system is provided, the users get a better understanding of the system being developed. * Errors can be detected much earlier. * Quicker user feedback is available leading to better solutions. * Missing functionality can be identified easily * Confusing or difficult functions can be identified Requirements validation, Quick implementation of, incomplete, but functional, application. Disadvantages of Prototype model: * Leads to implementing and then repairing way of building systems. * Practically, this methodology may increase the complexity of the system as scope of the system may expand beyond original plans. * Incomplete application may cause application not to be used as the full system was designed Incomplete or inadequate problem analysis.
51
The V-Model
The V-Model provides means of testing of software at each stage in reverse manner. Should be used for small medium size projects
52
What is wrong with the waterfall method
the major drawback of waterfall model is we move to the next stage only when the previous one is finished and there was no chance to go back if something is found wrong in later stages
53
Advantages and Disadvantes of V model
Advantages of V-model: * Simple and easy to use. * Testing activities like planning, test designing happens well before coding. This saves a lot of time. Hence higher chance of success over the waterfall model. * Proactive defect tracking - that is defects are found at early stage. * Avoids the downward flow of the defects. * Works well for small projects where requirements are easily understood. Disadvantages of V-model: * Very rigid and least flexible. * Software is developed during the implementation phase, so no early prototypes of the software are produced. * If any changes happen in midway, then the test documents along with requirement documents has to be updated.
54
V Model
combines some key aspect of the waterfall model and rapid prototyping methodologies, in an effort to combine advantages of top- down and bottom-up concepts. It provided emphasis in a key area many felt had been neglected by other methodologies: deliberate iterative risk analysis, particularly suited to large-scale complex systems.
55
RAD
Rapid application development (RAD) is a software development methodology, which favors iterative development and the rapid construction of prototypes instead of large amounts of up-front planning. The "planning" of software developed using RAD is interleaved with writing the software itself. The lack of extensive pre-planning generally allows software to be written much faster, and makes it easier to change requirements. The rapid development process starts with the development of preliminary data models and business process models using structured techniques. In the next stage, requirements are verified using prototyping, eventually to refine the data and process models. These stages are repeated iteratively; further development results in "a combined business requirements and technical design statement to be used for constructing new systems" [10]
56
RAD thing to remember
The basic principles of rapid application development are:[1] * Key objective is for fast development and delivery of a high quality system at a relatively low investment cost. * Attempts to reduce inherent project risk by breaking a project into smaller segments and providing more ease-of- change during the development process. * Aims to produce high quality systems quickly, primarily via iterative Prototyping (at any stage of development), active user involvement, and computerized development tools. These tools may include Graphical User Interface (GUI) builders, Computer Aided Software Engineering (CASE) tools, Database Management Systems (DBMS), fourth- generation programming languages, code generators, and object-oriented techniques. * Key emphasis is on fulfilling the business need, while technological or engineering excellence is of lesser importance. * Project control involves prioritizing development and defining delivery deadlines or "timeboxes". If the project starts to slip, emphasis is on reducing requirements to fit the timebox, not in increasing the deadline. Generally includes joint application design (JAD), where users are intensely involved in system design, via consensus building in either structured workshops, or electronically facilitated interaction. * Active user involvement is imperative. * Iteratively produces production software, as opposed to a throwaway prototype. Produces documentation necessary to facilitate future development and maintenance. Standard systems analysis and design methods can be fitted into this framework. 79
57
When to use the RAD model
When to use RAD model: * RAD should be used when there is a need to create a system that can be modularized in 2-3 months of time. * It should be used if there's high availability of designers for modeling and the budget is high enough to afford their cost along with the cost of automated code generating tools. * RAD SDLC model should be chosen only if resources with high business knowledge are available and there is a need to produce the system in a short span of time (2-3 months).
58
Plan Driven
A plan-driven approach to software engineering is based around separate development stages with the outputs to be produced at each of these stages planned in advance. * Not necessarily waterfall model – plan-driven, incremental development is possible. * Iteration occurs within activities.
59
Agile Development
Specification, design, implementation and testing are inter-leaved and the outputs from the development process are decided through a process of negotiation during the software development process.
60
4 agile values
Individuals and Interactions Over Processes and Tools Working Software Over Comprehensive Documentation Customer Collaboration Over Contract Negotiation Responding to Change Over Following a Plan
61
XP
A very influential agile method, developed in the late 1990s, that introduced a range of agile development techniques. * Extreme Programming (XP) takes an ‘extreme’ approach to iterative development. * New versions may be built several times per day; * Increments are delivered to customers every 2 weeks; * All tests must be run for every build and the build is only accepted if tests run successfully.
62
Pair Programming
Where 2 programmers work together in one work station
63
Test-First Development
Testing is central to XP and XP has developed an approach where the program is tested after every change has been made. * XP testing features: * Test-first development. * Incremental test development from scenarios. * User involvement in test development and validation. * Automated test harnesses are used to run all component tests each time that a new release is built.
64
Test-Driven Development
Writing tests before code clarifies the requirements to be implemented. * Tests are written as programs rather than data so that they can be executed automatically. The test includes a check that it has executed correctly. * Usually relies on a testing framework such as Junit. * All previous and new tests are run automatically when new functionality is added, thus checking that the new functionality has not introduced errors.
65
Test Automation
Test automation means that tests are written as executable components before the task is implemented * These testing components should be stand-alone, should simulate the submission of input to be tested and should check that the result meets the output specification. An automated test framework (e.g. Junit) is a system that makes it easy to write executable tests and submit a set of tests for execution.
66
Problems With Test-First Development
Programmers prefer programming to testing and sometimes they take short cuts when writing tests. For example, they may write incomplete tests that do not check for all possible exceptions that may occur. * Some tests can be very difficult to write incrementally. For example, in a complex user interface, it is often difficult to write unit tests for the code that implements the ‘display logic’ and workflow between screens. * It difficult to judge the completeness of a set of tests. Although you may have a lot of system tests, your test set may not provide complete coverage.
67
Main idea of Agile (GGB's Summary)
There is no set plan, work on a little bit and show the customer, and then get feedback and changes can get made, by only working on it bit by bit and showing the customer changes can easily be made to suit the customer (iteration heavy) Also there is a big emphasis on no set process, and very big emphasis on people being the driving force
68
In extreme programming when should increments be delivered to customer
every 2 weeks
69
Extreme Programming Practises
- Incremental Planning - Small Releases - Simple Design - enough design is carried out to meet the current requirements and no more - Test first development - automated unit is used to write tests for new piece of functionality before it is even implemented -Refactoring - refactor code as soon as code improvements are found - Pair programming - Collective Ownership - Continuous Integration - Sustainable Pace - overtime is frowned upon as code quality becomes less On site customer - rep of customer must be available full time
70
Influential XP Practises
User Stories Refactoring Test First development Pair Programming
71
User Stories
User requirements created by the customer, which the development team breaks up into tasks
72
Refactoring
traditionally you try to write code to anticipate changes to reduce cost later, but XP says that is not worth while as changes can not be anticipated reliably rather do constant code improvements to makes changes easier to implement - team looks at possible changes that can be made and makes them even if they are not needed as this improves code understandability and which reduces need for documentation and makes changes easier to implement as the code stays well structured
73
Downside of Refactoring
Some changes require architecture refactoring and this is much more expensive
74
Why does in test first development writing a test code before implementation good
help clarify requirements that need to be implemented
75
How are tests in test first development written and why
They are written as programs so they can be executed automatically and the test have a built in test to see if its been executed correctly All previous tests and new test are run automatically when new functionality is added to see if the new functionality has not introduced new bugs
76
Criticisms of Agile
- Developer Centric over User Centric - Focuses on processes for getting requirements and developing code and doesn't focus on product design -can be inefficient in large organizations and certain types of projects
77
Lean ( not important maybe)
systematic method for waste minimization, take in account for waste created through overburden
78
Kanban (not important maybe)
scheduling system for lean manufacturing
79
Insulin Pump Control System (Case Study)
Collects Data from blood sugar sensor and calculates the amount of insulin required to be injected Calculation based on rate of change in blood sugar levels sends signals to micro pump to deliver the correct dose of insulin Safety critical system as low and high blood sugars have bad health affects
80
Insulin Pump Control System Essential High level Requirements
The system shall be able to deliver insulin when required The system shall perform reliably and deliver correct amount of insulin to counteract the current level of blood sugar The system therefore must be designed and implemented to ensure that the system always meets these requirements
81
Mentcare (case study)
a patient information system to support mental health care and maintains information about patients suffering from mental health problems and the treatments they have received most mental health patients do not require dedicated hospital treatment, but need to attend specialist clinics where they can meet a doctor who has detailed knowledge of their problems To make it easier for patients, these clinics don't have to be in hospitals, They can be held in local medical practises or community centres makes use of centralized database of patient information but designed to run on PC so that it may be accessed and used for sites that don't have a secure network connection When local systems have secure connection they can use patient info in the data base but also download copies to local machine
82
Mentcare Goals
To generate management information that allows health service managers to assess performance against local and government targets To provide medical staff with timely information to support the treatment of patients
83
Key Features of Mentcare
Individual Care Management - Clinicians can create records for patients, edit the information in the system, view patient history, etc. The system supports data summaries so that doctors can quickly learn about the key problems and treatments that have been prescribed Patient Monitoring - The system monitors the records of patients that are involved in treatment and issues warnings if possible problems are detected. Administrative reporting - The system generates monthly management reports showing the number of patients treated at each clinic, the number of patients who have entered and left the care system, number of patients sectioned, the drugs prescribed and their costs, etc
84
Mentcare Concerns
Privacy - It is essential that patient information is confidential and is never disclosed to anyone apart from authorised medical staff and the patient themselves Safety - Some mental illnesses cause patients to become suicidal or a danger to other people. Wherever possible, the system should warn medical staff about potentially suicidal or dangerous patients. - The system must be available when needed otherwise safety may be compromised and it may be impossible to prescribe the correct medication to patients.
85
Wilderness Weather Station (case study)
Government of large country deploys weather stations over wilderness in remote areas. These stations collect data from set of instruments that measure things like temperature, pressure, sunshine, rainfall, wind speed and direction. Each instrument is controlled system that takes parameter reading periodically and manages the data collected Weather Station System - Responsible for collecting data, transmitting it Data management and Achieving system - collects data from all stations, processes it and archives the data Station Maintenance System - communicates to all station by satellite to check on their health
86
I learn (case study)
just read from slides
87
Software Development Methodology
the splitting of software development work into distinct phases containing activities with the intent of better planning and management -waterfall -prototyping -iteration and incremental -spiral development -rapid application development
88
Core Activities of Software Development / Water Fall method
Requirements - (Specifications), defining what the system should do Design - defining the organization of the system Implementation - Construction/Coding Verification - (Validation) - checking it does what the customer wants it to do/ testing for defects Maintenance - (evolution) - changing the system in response to changing customer needs / installation and migration
89
Sommerville's Approach to Changing System Requirements
System Prototyping - a version is developed quickly to check the customer's requirements and feasibility of some design decisions. Supports change avoidance as it allows the user to experiment with the system before delivery and so refine their requirements Incremental Delivery - system increments are delivered to customer for comment and experimentation. Supports the both change avoidance tolerance. Avoids premature commitment to requirements for the whole system and allows changes to be incorporated into later increments at lower cost
90
When is the waterfall method most appropriate
-project has clear objectives and solution -project is large and complicated -project requirements are stable -required for formal approvals at designated milestones
91
When is waterfall method no appropriate
-large project where its requirements are not well understood or changing for any reason - event driven systems - real time system
92
Incremental Development
each increment or version of the system incorporates some of the functionality needed by the customer early increments include most important or urgently required functionality
93
Important Benefits of Incremental Development
the cost of accommodating changing customer requirements is reduced easier to get customer feedback on the development work that has been done more rapid delivery and development of useful software to the customer is possible even if all the functionality has not been included
94
Incremental Model
Communication Planning Modelling Construction Deployment
95
CICD Parts
Continuous Integration - practise of automatically and frequently integrating code changes into shared source code repository Delivery/Deployment - 2 part process that refers to the integration, testing and delivery of code changes
96
TBD
Trunk Bases Development - version control management practise where developers merge small frequent updates to the core of the trunk or main branch
97
SDLC vc Devops
SLDC - for managing software development while Devops cultural shift that promotes collab between development and operations teams (DEV OPS) SLDC focuses on user requirements, while Devops - focuses on business objectives SLDC involves different phases while Devops - continuous integration
98
Reuse Orientated Software Engineering
happens informally when people working on a project know of a design or code that is similar to what is required and modify/incorporate it as needed
99
4 steps of Reuse Orientated Software Engineering
Component Analysis - given requirement specifications, a search is made for components. Usually no exact match is found and components provide only some of the functionality Requirement Modification - requirements are analyzed and using the information about the component the requirements are modified. If no modifications can be done redo step 1 System Design and Reuse - framework is deigned or an existing one is reused. Designers take into account components that have been reused cater this Development and Integration software that cannot be externally produced is developed and components and COTS are intergraded to create new system integration may be apart of this step rather than a separate step
100
Spiral Dimensions
Radial Dimension represents the cumulative cost incurred in accomplishing steps to dat Angular Dimension represents the progress made in accomplishing each cycle
101
4 quadrants in Spiral
1) Determine Objectives 2) Identify and Resolve Risks 3) Plan the next iteration 4) Development and Test
102
Advantages of Spiral
High amount of-risk analysis, hence avoidance is enhanced Good for large and mission critical Projects Strong Approval and Documentation Control Additional Functionality can be added later on Software is produced early in software lifecycle
103
Disadvantages of Spiral
can be costly risk analysis requires highly specific expertise project success is dependant on risk analysis phase doesn't work well for smaller projects
104
Advantages of RAD
-Reduced Development Time -Increases reusability components -Quick initial reviews occur -encourages customer feedback -integration from very beginning
105
Disadvantages of RAD
- Depends on Strong Team and Individual performances for identifying business requirements - Only systems that can be modularized - Requires highly skilled developers - high dependancy on modelling skills - inapplicable to cheaper projects as cost of modelling and automated code generation is very high
106
Approximately many lines of code are needed to run all google services
2 billion
107
Approximately many lines of code are in the human genome
3.3 billion
108
Cyclomatic Complexity
measure for complexity quantitative measure # of Independent paths in programs soc
109
Problems With Metrics in SWE
SWE needs metric like the ones in traditional engineering Problem is SWE is more focused on business metrics (productivity), rather than xf metrics
110
Systems Failures are due to what
Administrative and Technical Malfunctions
111
Computer Software
all information processed by computer systems, programs, and data computer algorithms solve problems but computer program implements them
112
Software Project Classifiction
Trivial < 10^2 LOC Titanic > 10^8
113
Another view of Attributes of Good Software
Operational - tells us how a software works in operations, can be measured by budget usability, efficiency, correctness, functionality, dependability, security, safety Transitional- how software moves from one platform to another, measured by portability, reusability, adaptability Maintenance - how software has the capabilities to maintain itself in the ever changing environment -modularity, maintainability, flexibility, scaleability
114
Software Diversity
There are many different types of software systems and there is no universal set of techniques for them
115
Server Side vs Client Side Programming
Server Side - programming involves code that runs on the server (the back end). It is responsible for handling data, managing databases, and processing requests from the client.(Headless - no interface) Client Side - Client-side programming involves code that runs on the client device (browser or application). It is responsible for the user interface and user interactions.
116
Model View Controller
Model - kind of like backend, handles data storage, core functionality View - presentation of the information, has no logic, UI, ex html Controller - handles users inputs to update both view and controller
117