GithubHelp home page GithubHelp logo

se20's People

Contributors

ai4se avatar andre-motta avatar timm avatar timmenzies avatar xiaoling941212 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

se20's Issues

syllabus

special accommodations. normally we use delta for those with special needs for exams but delta will be over whelmed.

so no exam.

attercnace not expected

but active presence in your group and at lectures is required till nov13

lectur: what do you need

basic terms

an exemplary product to show off your stuff

process

team experience

N languages

AI

ethics

lecture: requirements

should not exist, cant exist when reasoning at Cale across 1000s of developers all doing CI

  • O'Hearn
  • maintainability and estensiabilti y via community code practices

must exist essential for test, for high quality

  • nasa
  • levelson

horses for cources

  • flight control software
  • social media page

lectures: startups

fake it till you make it
good to be ambitious
bad to lie to shareholders + regulators

we work
thanks

lectures: continuous deployment

TL:DR

While we've tamed (mostly) version control, there are two other issues that are open.

  • configuration management
  • feature flags

what are feature flags

C. {Parnin} and E. {Helms} and C. {Atlee} and H. {Boughton} and M. {Ghattas} and A. {Glover} and J. {Holman} and J. {Micco} and B. {Murphy} and T. {Savor} and M. {Stumm} and S. {Whitaker} and L. {Williams}},

"The Top 10 Adages in Continuous Deployment," in IEEE Software, vol. 34, no. 3, pp. 86-95, May-Jun. 2017, doi: 10.1109/MS.2017.86.
Abstract: Continuous deployment involves automatically testing incremental software changes and frequently deploying them to production environments. With it, developers' changes can reach customers in days or even hours. Such ultrafast changes create a new reality in software development. To understand the emerging practices surrounding continuous deployment, researchers facilitated a one-day Continuous Deployment Summit at the Facebook campus in July 2015, at which participants from 10 companies described how they used continuous deployment. From the resulting conversation, the researchers derived 10 adages about continuous-deployment practices. These adages represent a working set of approaches and beliefs that guide current practice and establish a tangible target for empirical validation by the research community.
https://zlmonroe.com/CSE566/Readings/5.The_Top_10_Adages_In_Continuous_Deployment.pdf

image

image

image

From https://link.springer.com/epdf/10.1007/s10664-018-9639-0?author_access_token=_It1gaURHhsLaF_etHZnPve4RwlQNchNByi7wbcMAY60XMlcnoeFcdS23q1tghrFVFwBpkhKSOCE5JWoH27xVq174Sqw0-39TNRi6M2ZpMUsy1qEfLB8WBfQIuYiLi5ZWi3jcMgjAVSYnHWbd3UHzg%3D%3D

Rahman MT*, Rigby PC, Shihab E. (2018). The Modular and Feature Toggle Architectures of Google Chrome. Empirical Software Engineering (EMSE) Invited to FSE'18 as a journal first paper. pdf

image

Lecture: what's the most important technology in SE

people

people ware. your software succeeds if other people use and extend it

new business plan: build an environement within which people extend with build tools.

the stack overflow effect

process metrics dominate

meme engineering. how to organize the growd

linux foundation experience

crowd testing research

and that's what your project is about.

lecture process

https://www.youtube.com/watch?v=iYLxw6OsZug

  • waterfall (agilefall)
  • aws. everyone gets the services
  • agile manifesto
  • not dev, not operaionts,
  • deploy continuous
  • no sperate qa team , to
  • no web-scaling sql
  • waterfall (agilefall)
  • agile devs
  • no need for dev
  • kanban
  • sharing the same repo

lience roject helath

things to brag about https://shields.io


from http://jakob.space/blog/thoughts-on-lisps.html#org965e8ce:
image

So what licenses are popular?

image

image

image

Some history:

  • Some computer hoppiests saw copy == theft.
    • Open Letter to Hobbyists, 1976, Bill Gateshttps://en.wikipedia.org/wiki/Open_Letter_to_Hobbyists
  • Other saw lack of copy-and-modfify-ability = theft
    • When Brian Reid in 1979 placed time bombs in the Scribe markup language and word processing system to restrict unlicensed access to the software, Stallman proclaimed it "a crime against humanity".[17] During an interview in 2008, he clarified that it is blocking the user's freedom that he believes is a crime, not the issue of charging for software.[26] Stallman's texinfo is a GPL replacement, loosely based on Scribe;[27] the original version was finished in 1986.[28]
    • In 1980, Stallman and some other hackers at the AI Lab were refused access to the source code for the software of a newly installed laser printer, the Xerox 9700. Stallman had modified the software for the Lab's previous laser printer (the XGP, Xerographic Printer), so it electronically messaged a user when the person's job was printed, and would message all logged-in users waiting for print jobs if the printer was jammed. Not being able to add these features to the new printer was a major inconvenience, as the printer was on a different floor from most of the users. This experience convinced Stallman of people's need to be able to freely modify the software they use.[29]
    • Stallman argues that software users should have the freedom to share with their neighbors and be able to study and make changes to the software that they use. He maintains that attempts by proprietary software vendors to prohibit these acts are antisocial and unethical.[30]
    • The phrase "software wants to be free" is often incorrectly attributed to him, and Stallman argues that this is a misstatement of his philosophy.[31] He argues that freedom is vital for the sake of users and society as a moral value, and not merely for pragmatic reasons such as possibly developing technically superior software.[32] Eric S. Raymond, one of the creators of the open-source movement,[33] argues that moral arguments, rather than pragmatic ones, alienate potential allies and hurt the end goal of removing code secrecy.[34]

license

  • https://choosealicense.com
  • if your confused about licensing, then so is everyone else. many licenses have poorly understood exceptions.
  • patent rights
    • TL;DR: , it means that if a patent is granted to an author of the project, you are still allowed to use the project

    • There are two, completely independent, forms of intellectual property rights that can be used to protect software against unwanted copying/modification:

      • Copyright.
      • Patents
    • Copyright protects the "expression of an idea" and applies to the source code that gets written. Copyright protection is granted automatically at the moment that the code is written. Copyright protection means that only the author is allowed to make copies of or changes in the code, unless the author explicitly gives this right also to others by means of a copyright license.

    • Patents protect inventions and need to be explicitly requested. When a patent has been granted to you, you have the exclusive right to make use of that invention or to give a patent license to others.
      Patents can be broader that copyrights, because if someone else makes the same invention that you have a patent on, then you can force them to stop using the invention or to buy a patent license from you. With copyright, however, it is possible that multiple people independently write very similar code and each has their own copyright protection.

    • The Apache License 2.0 is primarily a copyright license that gives people the right to use the code written by the person granting the license.
      However, contrary to many other copyright licenses, the Apache license also takes patents into consideration and includes a license to use the relevant patents that the person holds who released the code under the Apache license. That is what the phrase means that you quoted.


access: doi

  • most web sites disappear in 3 years.
  • github repos can be deleted

syntax:

  • flake8 is a quick and dirt static code checker
    • want more?
  • static code warnings,
  • false positives (huge numebrs)
    style: pep8

lecture: documentation

Long doc is not good

  • doc is effort
  • "I have made this letter longer since I did not have time to make it shorter"

kinds of doc:

  • what : point description
  • how: common use cases
  • why: top-level motivation
  • why-not: choices within the design

examples good:

  • Great WHY: Myers' intro to OOSD. nothing about objects for 30 pages. high level requirements. made Objects soundalike the only solution to all those issues
  • how: common use cases: chapter 1 of "C". walk the. sold the language with lots of examples
  • what: uml. the great uml failure: not used
    • uml on bnbad
    • uml i start, not end, of doc. all what. how how or why,
  • unix doc project. synonspsis etc

doc generation tools docopt. pdoc3

don't get too excited about the tools. they are meerely the vans you draw on. once that is going its still up to you to write doc that makes sense to people.

doc is an explanation. good explanations reuse patterns known to the reader. different people have need different explanations. SE people have their patterns:

  • koala blackboards
  • lamp: (though the mean example). interesting case study, but not that since I fried it interns of LAMP, we could not journey thru decades of se developemnet
  • lamp is a more general example of layers: lessons of layers (w.r.t MEAN and lamp)
  • another famous layer pattern is model, view, controller (MVC)
  • another famous layer patterns if data model dialog and DRY. hence the success of ruby. Ruby on Rails. its conceptual purity made it more palatable

lists of patterns:

  • cognitive patterns, feature extraction (PIGE), match/select/act (first generation of AI).
    • btw, reasoning goes faster once they can break up the unknown into little pieces,
      • ideally, each of which can be reasoned about separately
  • idioms .
    • python. context manager (what is opened must be closed. html. files), iterators
  • design : got
  • architectural (bigger). GOV
  • product lines (e.g. watch) http://www.splot-research.org. e-commerce 235. note the cross tree constraints at the bottom
    • enter why not

btw, patterns harder in OO that in functional Programmers. evidence: 23 GOF patterns, rarely changed. functional programming: 10 patterns before breakfast

great example of good docs. spatial trees

  • none of the bling we mentioned before
  • so much to get me going
  • you may not like the following example, cause it does not reuse a pattern you've seen before. but for me, this is off the charts. so bear with me.

finally, a note on doc and artifacts. so many artifacts. so few replicated. why? cause no on knows they exist! doc rules!

lecture: testing

black box

white box

symbolic execution

forma: temporal logic, spin, lurch, cobra

fuzzing

test case prioritization

test case generation, theorem provers

lecture: project health

https://www.joelonsoftware.com/2000/08/09/the-joel-test-12-steps-to-better-code/

The Joel Test

  • Do you use source control?
  • Can you make a build in one step?
  • Do you make daily builds?
  • Do you have a bug database?
  • Do you fix bugs before writing new code?
  • Do you have an up-to-date schedule?
  • Do you have a spec?
  • Do programmers have quiet working conditions?
  • Do you use the best tools money can buy?
  • Do you have testers?
  • Do new candidates write code during their interview?
  • Do you do hallway usability testing?

image

image

the zephyr experience

lecture: testing

TDD: red green reactor

  • Eval each change
  • start each day work a broken test

premise: tests are short. often not. long overnight runs. LN experience. Goolge experience. test case prioritization.

TDD results: can't define TDD. can't show that it is useful

also, hard to build good tests. phd example.y

also testing is impossibly. maths f sampling. 100% certainly is infinitely experience.

why is testing possible: narrow valleys climbs. GCC. ostrand, . not testing. focusing on where it matters. ndistrial studies with testing

testing is not certainty. statistical process of reducing issues, not removing them. layers of oracles. when do u call in the g guns

testing for safety cirtical systems is a different animal. demand u mining isystem. eg. rules for safety critical. small size. on one main loop. if you can find it n 15 seconds go look got it sit safe way

different kinds of testing: tender man usability. ini. system.

mechanics of test

  • black box. random. all pairs. fuzzy.
    -whute box. Mings stugg
  • formal methods: Amazon experience, temporal logic patterns
    -formaal. amazinexperience temoria papers

l03test

first:

  • go back to the summary on top
    • make sure it reflects current contents
  • quotes
  • test driven development (1)
    • how to
  • history
  • definitions
    • should include all the words elsewhere
  • maths of formal methods

second:

assignment

can you write code that anyone else will want to use?

image

have the projects disappear at half time

each second half project needs to be supported by 2 teams (no support for your current project? u have to move)

how to make your project attractive?

  • doco
  • is the readme cool?
  • is the team approachable? (do they respond to your questions in GH?)
  • read the code, does it have any internal consistency, follow known patterns?
  • test suites
  • a sweet GitHub repo
  • a great video
  • a great problem
  • does the code confirm to some standard (that makes sense)
  • what does the coverage tool say about your code?
  • does all the code have tests (or is it all fancy, never exercised)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.