-
Notifications
You must be signed in to change notification settings - Fork 13
Expand file tree
/
Copy pathcs130-eggert
More file actions
3188 lines (2408 loc) · 90 KB
/
Copy pathcs130-eggert
File metadata and controls
3188 lines (2408 loc) · 90 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
Computer Science 130 - Software Engineering
http://web.cs.ucla.edu/classes/spring16/cs130
35% final exam (open book/notes)
15% midterm (April 27) (open book/notes)
40% project
2.5% requirements homework
7.5% quizzes (closed book)
June 5 drop-dead date, last day of instruction
Paul Eggert background
student at UCLA
did not take software engineering because field did not exist
became faculty for 3 years and got bored
left university and started company -> crashed in 5 years
worked for second largest computer company in the world (Unisys, power of^2)
another startup -> 12 years (< 50 employees)
UCLA (after that)
back-and-forth between academia and industry
==============
Mar. 28, 2016
==============
1. real-world-ish project
build code that somebody really wants and does not have before
ideally it should have a client with requirements
interact with client and produce what client wants
outside clients, on/off campus, they will not know about software
------------------------------------------------------------------
- IBM
- Aerospace
- Anderson School of UCLA
- Psychology Department
- Calthorp School
work in teams of 5, 2-3 teams/client
-------------------------------------
- cooperating, where two teams work on different parts of project and
integrate the whole project in the end
- competing, where different teams take different approaches to the same
project
student projects are also welcome
----------------------------------
project open-source only, typically BSD, GNU, Apache, MIT licensed
-------------------------------------------------------------------
2. engineering process and practice (higher-level)
how software engineering works
almost social-science
how engineers work with/against each other to build something that works
how this process works, or doesn't work
instead of dealing with software, deal with the methods and ways of
developing the software
3. construction (lower-level)
know program you want to build, what are the methods and best practices for
building this piece of software
actual construction details of software
----------------------------------------
- testing & debugging
- modularization techniques
may seem obvious but are actually not
may be confusing and have pitfalls
learn not to obvious things in 'obvious' things
What is of software and why is it different?
---------------------------------------------
- set of rules a computer follows
microcode in commercial chips is not included as software
hardwired into the CPU
cannot be changed at all
firmware is not software either
halfway between hardware & software
code that is tightly bound with hardware
low-level code + hard to change (ROM)
we can write very low-level code
this is software but very low-level code
calculate a random number
// x86-64 machine, includes instruction
// return a random number 0 ~ 2^63 - 1
// this works only on x86-64 Hasweller machine
long randnum(void) { asm ("RDRAND"); }
1. software is easy to change
---------------------------
mutability of instructions
mutability brings forth engineering problems that make software hard
2. it's not manufactured in the traditional sense
-----------------------------------------------
don't have to worry about manufacturing
- type 'cp' or 'scp' to copy program and ship
3. it doesn't wear out
--------------------
don't have to worry about parts wearing out
parts fail -> lubrication/replacement/repair
can run program any number of times you want
hardware failure rate (bathtub curve)
break-in period: not manufactured correctly
wear out: finally breaks down because of time
software failure rate (spikey bathtub curve)
increases failure rate with each new release
decreases failure rate as bugs get fixed
failure rate increases overall as software gets bigger
4. there are no spare parts
-------------------------
if program crashes, replacing with same new copy will not fix it
- maybe revert to previous version
gzip 1.7 on Solaris 10 with Oracle cc x86-64 crashes
configuration uses match.S <-- machine code does not run, dumps core
gzip 1.6 on this platform (can be considered spare part)
- maybe substitute a different implementation
use pigz instead
different implementation of gzip compression algorithm
runs in parallel
What is software engineering?
------------------------------
1960s: software was out of control
"software crisis": too many bugs in software
need discipline for software development
F.L. Baver (1969): the [establishment] and [use] of [sound] [engineering]
principles in order to obtain [economically] software that
is [reliable] and works [efficiently] on [real machines]
this definition did not include teamwork
Shellshock Bug (reported 2014-09-24)
-------------------------------------
bug in bash
$ cp = '(){ ... }'
$ export cp
this treated 'cp' as a function definition
then running 'cp a b' would run the function above
this bug had been in bash for 20 years
San Diego Union (reported 1994-04-27)
--------------------------------------
DMV spent $44 million on software that doesn't work and will never work
nobody was responsible
wanted to convert circa 1960 database to modern relational database
had bottleneck that could not handle the load that the DMV threw at it
* Most software projects fail.
Alternatives to software engineering
-------------------------------------
* add people to a late project
often not a good idea
* outsourcing
outsource to another group
hire contractor, and let somebody else do the job
sometimes works, but 'distance' will be a problem
lose control of the software (intellectual rights access)
* vague objectives and requirements constantly changing
"agile development"
sometimes works but often doesn't
* fire and forget
get some code out the door by the stated deadline and never touching again
* code is all there is
don't bother to write documentation becuase it is a hassle and probably
doesn't match the code either
* voluminous PPM (Policies & Procedures Manuals)
software development process that documents everything
software development process takes much longer than it may take
good for developing reliable software
and proving that it is reliable
software engineering vs. computer science
----------------------------------------------------------------------
practical problems of theory & methods that
producing software underly programs
software engineering vs. system engineering
----------------------------------------------------------------------
just software plus software, hardware, firmware
human interface process design
policy
==============
Mar. 30, 2016
==============
Presentations for projects
1. The Aerospace Corporation (Mustafa Alammar)
Enterprise Information Systems/AppDev
Aerocube-7
Mission Assurance
making sure rockets launch successfully
consulting company
helping SpaceX certify rockets
launch national satellites
SpaceX, NRO Satellites, U.S. Space Systems, Cyber Security
R&D
space systems
spectral imaging
small satellites (micro/pico-satellites)
VAEROS
more on civil and commercial customers, NASA and SpaceX
'container inspection tests at Port of Oakland'
modeling and simulation
CI security
technology used: SQL, PHP, Java, HTML, CSS, JavaScript, AngularJS
Last year: orbital debris tracking
Center for Orbital Reentry & Depris Studies (CORDS)
tracking orbital debris
visualizing and tracking for all
Junk Explorer
MySQL
Bootstrap
Google Earth/Maps
www.space-track.org
Digital Ocean
This year: cyber security
http://map.norsecorp.com/
develop site and server security intrusion detection, monitoring and more
develop plugins, applications, algorithms, or systems to detect and
defend against security vulnerabilities on pubilc-facing websites
Requirements
(1) makes a measurable or testable difference in improving site security
DDoS mitigation of security vulnerabilities detected or eliminated
span detection/removal
success rate of 'hack' removal
(2) easy to use or install
if (application.needsConstantAttention == true)
application.uninstall
(3) reliable
if (application.falsePositiveRate > 0.1)
application.uninstall()
(4) leverage existing solutions
APIs
Akismet
ReCAPTCHA
CLOUDFARE
fill in the gaps
usability
effectiveness
ease of installation
cost
compatibility
remember the user
2. Connexity
tech-driven marketing solutions company
connect reteailers to customers they care about
used to be called Shopzilla
Project: Publisher Challenge
-----------------------------
use the Shopzilla Catalog API to build own shopping website
expose shopping content
develop back-end and front-end components of shopping site
compete for most redirects and 'revenue'
Challenges
-----------
API integration
what data should your website use
determining what additional information would be useful
completing the flow-API -> backend logic -> front-end display
Technologies
-------------
enterprise level technologies
Java
Spring MVC
UI component
interaction with API
Logistics
----------
mentorship from former cs130 students
direct experience with enterprise level engineering practices
setup guidelines
onsite development workshops
Git/Github
various methods of communication between teams and Connexity
3. International Business Machines (IBM)
Project Lead: Gergana Markova gmarkova@us.ibm.com
Dean Okamura dean.cs130@gmail.com
Michael Stein mastein@us.ibm.com
Neil Sahota nsahota@us.ibm.com
team project planning
collaboration, networking
rapid decision making
open source community involvement
agile development
globalization awareness
design thinking and user experience
reserach and resources evaluation
Cool cs130 IBM projects
------------------------
Barcode Wallet
-> Apple Pay
Volunteer snack delivery service
-> Uber
Jazz festival
Tutoring website enhancements
4. Anderson School at UCLA
cyber security for small businesses
=============
Apr. 1, 2016
=============
Jae Lee
TA OH: 2-4 PM Wed.
name
skills/resume
top 5 project preferences
requirements gathering exercies
--------------------------------
Paul Eggert, senior FAA admin
hire company with software developers to solve problem with software
probably some hardware
problem: drones
make country air space safe, aircraft traffic
worst: plane crash, loss of life
dealing with drones because they are threat to air traffic safety
report of drones within few meters of commercial aircraft
afraid of crash and people get killed
software solution to part of this problem
manage drone issues
in realitiy drones can be small to much larger unmanned aircraft
want system to keep track of all of this stuff
not too worried about large drones, who have lots of money
most worried about small drones
require drones operators to register their drones on website
pay $5 for registration
not every drone use has registered
fine of operating drone without licence
should be able to grab drone serial number and find owner
have website with serial number with names and everything else
really unorganized about this
data sitting in server, which is not very useful
senario: firefighters putting out fires in mountains, but spotted drones near
facilities, so couldn't fly
want to find the owner of the drone
want software that gives information to law enforcement facilities when
dealing with illegal drones
information have to be private
general public cannot find owner through serial number
mostly concerned with airport safety but firefighting case is also important
fire department can get FAA to establish a temporary no-fly zone
make data available to LAPD if needed
real goal to prevent drones from causing safety problems
may want total control over drones in the future
e.g. button that can safely land the drones and accessible to police
should have audit trail for all accesses to data and entering of data
should have images that can be matched to low quality images taken by pilots
could try to identify the signal controlling the drone
Wi-Fi
cell phone ---------------> controller ---------------> drone
encrypted encrypted
Wi-Fi (WEP) is easily crackable
security on drones and controllers is terrible
drones cannot be identified by radar
want to add transponder so that if we point radar at them, we get signal back
want transponder in database for indentification
drone makers reluctant to add transponder due to weight and size
users will take transponder down
if this happens, will like to track down owner and quesiton why turned it off
cannot take down the drones, which are hard
will also work with custom-made drones
such as, must install transponder
priority: people goofing off flying into airports just to fool around
should not lose data due to disk crashes
new owner should register if bought from previous owner
how to get serial number if we do not take drone down
transponders come with serial numbers
2-3 million dollars
time frame 18 months
want this to work on police laptops and cellphones
=============
Apr. 4, 2016
=============
5. Calthorp School (Principal)
standardized testingw as a big deal
stayed in good standing
from public school system to independent schools (private schools)
have to ability to choose
resources & autonomy
schools have collected huge amounts of data
but schools are terrible at analyzing the data
find patterns
data -> analysis -> trends -> areas of exploration -> questions
-> hypotheses -> confimation/invalidation
6. Department of Psychology
web-based tool to find career he/she is passionate about
research team of undergrad students at UCLA
career websites focus on interest... but what about passion?
Pandora-like algorithm
like or dislike
world of work to classify
7. Beehive
make social media analytics available to all
8. Airbnb for restaurants
9. Connoisseur
ineffeciencies in finding next dining experience
10. Sugar-Watch
glucose monitor
how it affects the body
partner with 2 doctors at UCLA Medical Center & Anderson School
600 billion dollar market
doctor & patient needs
real time data on glucose levels
11. Aerospace Coporation
federally funded research centers
works in the national interest
=============
Apr. 6, 2016
=============
Why do we need requirements?
-----------------------------
* developers != users
* legal, contract reasons
* reliability/safety is crucial
* security (tricy in practice)
How much work to put into requirements?
How long/big is the requirements document?
-------------------------------------------
it dependes on the project
the more of the above required, the longer it will get
* one of the most common requirements document problem is that customers would
not want to read the long and obvious document because they are specifying
what the customers already know.
Requirement Engineering
------------------------
applying sound engineering principles to come up with requirements documents
requirements
stakeholders <---------+--------> design
|
- everybody who |
cares about |
the software |
- users/managers |
|
system model <---------+
- in developers' heads
Good Requirements
------------------
- are testable (once system is implemented)
ideally would want to make it quantifiable
realistically turn it from something vague to something less vague
"build a system where the UI is userfriendly"
this is not testable
change to something testable
we could test them on users
- are feasible (in the indented environment)
make sure requirements are actually doable
do not make NP-complete requirements
- don't conflict with each other
conflict are not obvious
come from different parts of the requirements document
gathered from different parts of the customer organization
inconsistent requirements documents arise with conflicting user intentions
conflicts may not be obvious and may reflect conflicts among users
- are attributed (to specific source)
can go to any requirement in document and see who is responsible
each requirement should be attributed to specific source
should know who to ask if there is a problem in the requirements
- are bounded
do not want to have requirement that is infinitely hard to satisfy
should know when the requirements are satisfied
"as fast as possible"
do not want software engineers to develop "forever"
- are unambiguous
ambiguous: so few requirements or so poorly stated so that they can be
interpreted in many different ways
should avoid the ambiguity (English is ambiguous)
need somthing functional
- are essential
Aristotle: get at heart/core of the story
find out what really matters
this is called the "essence"
good requirements should focus on the essential part of the application
and not trivial details
- are specified at the user level
write in natural language that the user understands
do not write in code-like languages such as Java, C, Shell Script
- match the system's vision
when you try to change the world with your application, you should know what
the world looks like after your application
- are prioritized
an elaboration of "are essential"
some requirements are more important than others
in practice, some requirements conflict, but priority specifies direction
- are validated
requirements are checked
feasible: done a feasibility analysis
unambiguous: gone through whole document and checked for ambiguity
validated: we have to validate the validation process
Types of Requirements
----------------------
(A) funcitonal
what the software does
behavior of software
get support from customers about funcitonal requirements
(B) nonfunctional
other constraints on system that are less obvious because they do not
initially seem to have anything to do with what software does
security
reliability
performance
(A) user
imposed on system by end-users of application
will be able to look at user applicaiton and verify
(B) system
more detailed
more peopled are affected here
audience is people that want to make sure system work
developer
operation staff
finance
managers
Phases of Requirements Development
-----------------------------------
(1) inception
some things may sound obvious but are easily done incorrectly or not done
(a) identify stakeholders & their viewpoints
stakeholders may not want to talk to you
e.g. prisoners in prison
have to indentify everyone who have something to do with the project
(b) find agreements & disagreements
get a good feeling on everybody who are using the system
may have completely different opinions between departments
(c) break the ice by asking "dumb questions"
context free questions
indicate that you don't understand the field
need humility
ask "dumb questions":
about goals and benefits (need to know why)
"how are you going to make money with this?"
about the problem
about communication activity itself
"did I ask all questions?"
"are there any questions I have left out?"
(2) discovery/elicitation
(a) use a well-defined procedure
- have meetings with agendas & prepare for the meetings
specialized training -> requirement facilitators (bridge gaps)
- define problems, pieces of solutions, in user-oriented way
- write everything down
- iterate -> multiple meetings
come up with draft document
(b) produce
- scope of requirement
specify boundary of what to do and what not to do
- feasibility analysis
show that requirement is feasible in document
- justificaiton of need
why the requirement is needed
- stakeholder list
characterization of stakeholders & their viewpoints
- environment characteristics
what the system will operate in
where the system will be running
- use cases
little scenarios of where the system will be used
- constraints
any sort of extra high-level constraints that are not obvious
- prototypes
actually write some code as part of requirements discovery
may build end-to-end prototypes
tend to justify feasibility
"initial testing"
(c) software requirements document (IEEE standard for requirements)
contains
- glossary
standard nomenclature for problem
- user requirements
"normal" requirements
- high-level system architecture
document understanding of system model
- system requirements
stated in terms of high-level system architecture
- system models
- system evolution
potential changes to the requirements
(3) negotiation
come up with too many requirements and can't satisfy
ideally they are prioritized but practically not that easy
so we have to negotiate with clients
- want win-win situation
- key role of written requirements
(4) validation
list of things we want out of requirements
check consistency, completeness, etc.
via. reviews
prototypes (little programs to test)
test cases
==============
Apr. 11, 2016
==============
test driven development
buggy spec, if we explore all possible test cases, we can fill in the spec
test debug the spec before writing the code
it is simpler to write tests than writing code
now we can find the bugs in our spec faster
do you use test driven development?
we don't always practice what we preach. - Paul Eggert, Ph.D
if we have real-time constraints, this needs plan driven development
safety systems also requires plan driven development
the development team gets bigger and more parts of the software are not under
your control, and you can't continuously integrate.
goals of software engineering
------------------------------
(1) understand your problem
much of the software engineering activity is devoted to finding the
problem that we are trying to solve, which is easiest to get wrong
(2) design is crucial
design better be there when we are done
we should know how the software was designed
(3) quality
software should always be high-quality
(4) maintainability
software has to be something that we can fix, improve, refactor
(5) work across a lot of domains
shouldn't be good for just one thing (web, realtime, embedded, system apps)
software engineering principles (Hooker)
-----------------------------------------
(1) provide value to users
not always obvious
(2) keep is simple stupid (KISS)
when in doubt, use the simpler approach
keep code as simple as possible
(3) have an architectural vision
don't just look at little picture
(4) plan to get hit by a bus
do not assume that your software project will have you on it
other peoples may take over it
somebody else may be maintaining your project
if it's important, always write it down
be ready to be replaced
(5) be ready to change
designing and building software should not be like building the pyramid
it should be able to mutated
(6) plan for reuse
when you build your code, assume that it will be successful and you
or other people will reuse the current code
write code that can be reused in other systems
(7) THINK before doing
don't just code because it feels good to type keystrokes
think before you build the code, before it's too late
Sommerville likes 1,4,6, and
(8) worry about dependability and performance
obvious yet important
when you worry about dependability and performance, you are bringing to
the table software engineering strength
Developers Managers
------------------------------------------------------
I wanna code ensure it does what user wants
McConnell Sommerville
programming
textbooks
S.E. theory
software construction
----------------------
problem definition corrective maintenance
requirements definition
--------------------------------------------------------------
detailed design
construction planning coding integration
unit testing integration testing
--------------------------------------------------------------
software architecture system testing
(1) get your prerequisites right
Plan to throw it away; you will anyhow - F. Brooks
McConnel disagrees and thinks that we should make code work
software is not authored in the usual way
software is edited (like an encyclopedia)
don't plan to throw the whole thing away
collarborative development
---------------------------
(1) focus on cost-effective defect-detection
bugs will be the normal way of life
will spending more time fixing defects than writing code
reduce # of defects as many as possible
(2) collarborative practices do best on defects resistant to traditional tests
can you break up the project
pair programming
-----------------
pay 2 people's salaries to write one program
one programmer K has the keyboard and the house
one programmer J just kibitzes
find errors quickly, early when they are cheap to fix
if we wait to review, the cost goes up
reduces defect removal tests
have immediate feedback
back-and-forth is fast
requires 2 bus hits
guidelines
(1) match pairs
makes sure the two people are comfortable around each other
(2) rotate
switch roles
(3) Keyboard = tactics
Kibitzer = strategy
(4) don't let the kibitzer relax
make pair programming sessions short
(5) don't use it for everything
not all things are suited for pair programming
formal inspection
------------------
gold standard for software review (IBM)
(1) focus on defect detection not correction
formal inspections are expensive
hard part is mostly finding bugs
so focus on hard part
(2) use a checklist to focus reviewers' attention
use different checklists and measure how well each checklist performs
checklist will depend on problem domain
(3) reviewers prepare for meetings
have multiple reviewers for reviewing system
give code ahead of time to read independently and come up with questions
in the meeting, combine the reviews, big merge of question list
(4) all participants have roles
moderator: requires most training, competent to organize reviewers
scribe: keep track of what is set
reviewers (2-5): reviews the code
author: usually doesn't participate, but also nice to have there
managers are not participants, inefficient
(5) time and efficiency
100-500 lines/hour
< 2 hours/meeting
code reviews are very expensive
code walk-through
------------------
code readign
demos (dog & pony)
"demo or die"
software process
-----------------
the set of heuristics
developers' heads (extreme approach)
(lisp (code))
lisp code in which developers are subroutines
this doesn't work
framework for what goes on in developers' heads
dynamic perspective - phases, in some sequence
communications (requirements)/planning/modeling/construction/deployment
practice perspective (umbrella activities)
- quality assurance
- reviews
- configuration management (how system/requirements are configured)
- project tracking (keep track of what's done/not done)
plan driven vs. agile approach
==============
Apr. 13, 2016
==============
different engieers have:
different terminology
different world views on how things work
different terforce
software engineers want to work software engineers get more jobs