Send a link to your students to track their progress
275 Terms
1
New cards
Software
Computer programs, procedures, and possibly associated documentation and data pertaining to the operation of a computer system
2
New cards
Nature of Software
Software is intangible
Software is easily reproducible
Software development is labor-intensive
Untrained people can hack something together
Software is easy to modify
Software does not wear out
3
New cards
Types of software
Applications → Business, CAD, databases, spreadsheets, simulations, video games, word processors
\ System → OS, Device drivers, Privileged utilities
\ Embedded → Firmware, microcode
\ Real time → control and monitoring, must react within some delta T, often safety critical
\
4
New cards
Development
Custom
\ Generic
\ Embedded
5
New cards
Software Engineering
1. The application of a systematic, disciplined, quantifiable approach to the development, operation, maintenance of software; that is, the application of engineering to software.
1. The study of approaches in 1)
\ Coined in 1968
6
New cards
Solving problems
Within constraints:
Cost
Time
Customer
Others
7
New cards
Solutions
Require effective communication
Sometimes one can Assemble from existing components or buy
8
New cards
Software engineering vs other engineering
Discrete rather than continuous math
Abstract/logical entities vs concrete/physical artifacts
No manufacturing phase
Maintenance refers to continued development, or evolution
\ Commonalities:
“Engineered”
Disciplined process
Can have multiple roles in development
\
9
New cards
Ethics
A theory or system of moral values
Principles of conduct governing an individual or group
10
New cards
ACM Ethics
Section 1: Fundamental ethical principles
Section 2: More specific considerations of professional responsibility
Section 3: Leadership
Section 4: Principles for compliance
11
New cards
General ethical principles
Contribute to society and to human well being, acknowledging that all people are stakeholders in computing
Avoid harm
Be honest and trustworthy
Be fair and take action not to discriminate
Respect the work required to produce new ideas, inventions, creative works, and computing artifacts
Respect privacy
Honor confidentiality
12
New cards
Professional Responsibilities
Strive to achieve high quality in both the processes and products of professional work
Maintain high standards of professional competence, conduct, and ethical practice
Know and respect existing rules pertaining to professional work
Accept and provide appropriate professional review
Give comprehensive and thorough evaluations of computer systems and their impacts, including analysis of possible risks
Perform work only in areas of competence
Foster public awareness and understanding of computing, related technologies, and their consequences
Access computing and communication resources only when authorized or when compelled by the public good
Design and implement systems that are robustly and usably secure
\
13
New cards
Professional leadership principles
Ensure that the public good is the central concern during all professional computing work
Articulate, encourage acceptance of, and evaluate fulfillment of social responsibilities by members of the organization or group
Manage personnel and resources to enhance the quality of working life
Articulate, apply and support policies and processes that reflect the principles of the Code
Create opportunities for members of the organization or group to grow as professionals
Use care when modifying or retiring systems
Recognize and take special care of systems that become integrated into the infrastructure of society
\
14
New cards
Compliance with the code
Uphold, promote, and respect the principles of the Code
Treat violations of the Code as inconsistent with membership in the ACM
15
New cards
Stakeholders
\
Users
Customers (Project owners)
Software developers
Development managers
\
16
New cards
Quality
Conformance to requirements
Fitness for use
I know it when I see it
Value to someone
17
New cards
Operation attributes
Correctness
Efficiency
Integrity
Reliability
Usability
18
New cards
Correctness
The degree to which a program satisfies the user’s requirements
\
19
New cards
Efficiency
The amount of computing resources, time and space, required to perform a user-defined function or task
20
New cards
Integrity
How well is the software and data protected from security breaches and installation errors?
21
New cards
Reliability
To what degree can the system be expected to perform its intended function to perform its intended function without failure in the user’s environment?
22
New cards
Usability
How much effort do the users have to spend learning to use the system efficiently
23
New cards
Revision attributes
Flexibility
Maintainability
Testability
24
New cards
Flexibility
How much effort will be required to enhance the system?
25
New cards
Maintainability
How much effort will be required to locate and repair defects in the system?
26
New cards
Testability
How much effort will be required to test the structure and functionality of the system?
27
New cards
Transition attributes
Interoperability
Portability
Reusability
28
New cards
Interoperability
How much effort will be required to link this program or system to another?
29
New cards
Portability
How much effort will it take to transfer a program or system from one machine to another?
30
New cards
Reusability
To what extent can the design, or system modules be used in other applications. How much effort will it take to reuse them?
31
New cards
Tension
Software qualities conflict
Increased integrity may impact efficiency…
32
New cards
Software development cycle
Begins with decision to develop software product
Ends when the software is delivered
Typically includes:
1. Requirements phase 2. Design phase 3. Implementation phase 4. Test phase 5. Installation and checkout phase
33
New cards
Software life cycle
Software development cycle and:
1. Operation and maintenance phase 2. Retirement phase
34
New cards
Code and fix model
Code a little
Fix a lot
Repeat until your time, money, people, and customers run out
35
New cards
Waterfall model
Difficult to measure real progress
Good for real time system critical
Not very efficient
36
New cards
System engineering
Business considerations
Technical considerations
Manufacturing considerations
People
Environmental considerations
Legal considerations
Develop an installation plan
37
New cards
System analysis
The what part
Identify the real system requirements
Hopefully work with and involve the user
Develop an acceptance test plan
38
New cards
System design
The how part
Identify the hardware and software system specifications
Develop the system integration test plan
39
New cards
System implementation
Build the system
Test the parts
Carefully complete all system documentation
40
New cards
System test
Carry out system integration test plan
Carry out the acceptance test plan
Carry out system installation plan
Establish system regression test library
41
New cards
System maintenance
Manage change
Fix defects
Port the system
Enhance the system
Retire the system
42
New cards
Prototyping
Done when user is not very computer literate
When the user is unable to completely pre-specify the needed system requirements
When there is little algorithmic detail
Whenever you are not sure your design will work
43
New cards
Evolutionary development models
Can become a modern version of code and fix
Product evolves over time as the real requirements become known
Assumes the customers will tell us what they like and dislike about each incremental release
44
New cards
Spiral model
Incremental, risk oriented
Four main phases:
Pros:
1. Reduces risk of failure 2. Functionality can be added later 3. Software produced early 4. Early feedback
Cons:
1. Risk analysis requires expertise 2. Complex
45
New cards
46
New cards
Scrum
Roles:
Product owner
Scrum master
Development team
47
New cards
Product owner
Defines the features of the product
Decides on release date and content
Prioritizes features
Adjusts features and priority every iteration, as needed
Accepts or rejects work results
48
New cards
Scrum master
Represents management to the project
Responsible for ensuring adherence to scrum practices
Removes impediments
Ensures that the team is fully functional
Shields team from external interference
49
New cards
Development team
Members are assumed cross-functional
Not always possible
Only title for members is developer
No sub-teams
Optimal size 3 to 9 members
50
New cards
Events
Sprint
Sprint planning
Daily scrum
Sprint review
Sprint retrospective
51
New cards
Sprint
Usually one month or less
Done usable, and potentially releasable product increment is created
New sprint starts immediately after previous ends
No changes are made that impact goals
Team composition remains constant
Quality attributes do not change
Scope may be clarified/renegotiated
52
New cards
Sprint planning meeting
Work to be performed in upcoming spring planned
Suggested eight hours for a one-month sprint
Two parts:
1. What will be delivered? 2. How will the work get done?
\
53
New cards
Deliverables
Product owner presents a list of items to complete
Team develops a sprint goal:
1. Product backlog 2. Latest product increment 3. Capacity of the team 4. Past performance
\
54
New cards
Burn down chart
55
New cards
Greenfield
From scratch
56
New cards
Brownfield
Must work with existing systems
57
New cards
Domain analysis
Process by which software engineer learns about the domain to better understand the problem
1. The domain is the general field of business or technology in which the software will be used 2. A domain expert is a person who has deep knowledge of the domain
Benefits
1. Faster development 2. Better system 3. Easier to anticipate future modifications
58
New cards
Domain analysis
Defining the problem
Collect the requirements → real, possible, constraints, probably not
\
59
New cards
Collecting and analyzing requirements
Observation
Interviewing
Prototype
60
New cards
Comments on domain analysis
If you can change it, it’s system
If you can influence it, it’s the border
If you cannot change it, rest of the world
61
New cards
Organize and prioritize
Must have and can be met?
Must have but not sure can be met? → buy info, build prototypes
Nice to have?
Gold plating
62
New cards
Generate the requirements
List the requirements indicating priority
Establish requirement tracking procedure
Establish a requirements verification plan
63
New cards
User story
Short, simple descriptions of a feature told from the perspective of the person who wants the feature
Use cases are expansion of user story
Choosing user stories:
1. Often one user story can be identified as central to system' 2. Other reasons to focus on particular user stories:
1. May represent high risk 2. May have high political or commercial value
Help define scope of system
Be used to plan development process
Used to develop and validate requirements
Form the basis for test cases
Help structure user documentation
64
New cards
Use case analysis
A use case is a typical sequence of actions that a user performs to complete a given task
Use case model
1. Set of use cases 2. Optional description or diagram indicating how they are related
\
65
New cards
Use Case
Cover the full sequence of steps from beginning to end
Describe the user’s interaction with the system
As independent as possible from the UI design
Only include actions arising from actor interacting with system
\
66
New cards
Use case diagrams
Use case → horizontal ellipse
Actor
Associations
67
New cards
Extensions
Make optional interactions explicit
Handle exceptional cases
Keeps basic use case simple
Think “hardware interrupt”
68
New cards
Generalizations
Similar to superclasses in a class diagram
Represents several similar use cases
One or more specializations provides details of the similar use cases
\
69
New cards
Inclusions
Allow one to express commonality between several use cases
Included in other use cases
Represent the performing of a lower level task with a lower level goal
70
New cards
Reviewing requirements
Each requirement should:
1. Have benefits that outweigh the costs 2. Be important for the solution 3. Be unambiguous 4. Be logically consistent 5. Lead to a quality system 6. Be realistic 7. Be verifiable 8. Be uniquely identifiable 9. Not over-constrain the design of the system
\
71
New cards
Problems
Unknown - missing requirements
Incomplete requirements
Ambiguous requirements
Non-requirements
72
New cards
Product questions
What is the skill level of the user?
What environment is this product likely to encounter?
What are the performance and resource constraints?
What are the safety and security needs?
73
New cards
Building on the experience of others
Software engineers should avoid redeveloping software
74
New cards
Reusability and reuse
Reuse and design for reusability should be part of the culture of software development organizations
Software is often created without enough attention to quality or reuse
75
New cards
Vicious cycle
Developers take shortcuts to save time, sacrificing quality and reusability
Important to recognize that:
1. This cycle costs money 2. Investing in reusable code is important 3. Attention to quality is essential
1. Employing reusable components often simplifies design
76
New cards
Frameworks
A framework is reusable software that implements a generic solution to a generalized problem
Based on the principle that applications that do related things tend to have similar designs
Frameworks promote reuse
Intrinsically incomplete
Developers use the services that the framework provides → API
77
New cards
Object-oriented frameworks
Framework is composed of a library of classes
1. API is defined by the set of all public methods 2. Some classes intentionally abstract
\
78
New cards
Product line
A product line is a set of products built on a common technology base
79
New cards
Distributed system
A distributed system is a system of discrete networked components
1. Have concurrency 2. Lack a global clock 3. Can encounter independent failure of components 4. Coordinate by passing messages
Components cooperate to create a system
80
New cards
Client-server architecture
One kind of a distributed application or system
Server
Client
Communication channel
81
New cards
Server
\
82
New cards
Client
83
New cards
Thin vs. fat client
Thin
1. Client is small as possible 2. Most work done on server 3. Client easy to download
Fat
1. As much work as possible delegated to clients
1. Server can handle more clients
84
New cards
Protocols
To communicate what programming languages are to computation
Server and client are programmed to understand the protocol
85
New cards
Object client-server framework
86
New cards
UML
A general purpose modeling language
Has detailed semantics
Has extension mechanisms
Has an associated textual language
Not a methodology
87
New cards
A good model
Uses standard notation
Is understandable by all stakeholders
Helps software engineers gain insight into the system
Provides abstraction
88
New cards
Diagram essentials
Classes
Associations
Attributes
Operations
Generalizations
89
New cards
Diagrams
Static view → class diagrams
Dynamic view → sequence diagrams
90
New cards
Class diagrams
System’s classes
91
New cards
Composite structure diagrams
Shows internal structure of a class
Parts: runtime role of a classifier or a collection of instances
Port: connects classifiers with their parts and environment
Connector: binds two or more entities together
92
New cards
Sequence diagrams
93
New cards
Associations and multiplicity
Association → shows how two classes relate to each other
Symbols indicating multiplicity are shown at each end of the association
94
New cards
Many to one
A company has many employees
95
New cards
Many to many
An assistant can work for many managers
A manager can have many assistants
96
New cards
One to one
For a given company, exactly one board of directors
Avoid unnecessary one to one associations
97
New cards
Association classes
When an attribute concerning two classes cannot be placed in either
98
New cards
Reflexive associations
An association can connect a class to itself
99
New cards
Generalization
A generalization set is a labeled group of generalizations with a common superclass
100
New cards
System domain model vs system model
System domain model omits many classes needed for a complete system
Complete system model includes
1. System domain model 2. UI classes 3. Architectural classes 4. Utility classes