Tuesday, September 16, 2014

Section 1 - programming design

CS Programming:


Interesting video on what a software engineer does and the software development process.

Lesson Objectives

There is often the tendency to want to rush into software development by going straight to programming without giving much thought to the requirements and design of their program. Although this may be tempting for smaller programs, this is not the best practice for creating quality software. In this lesson, we first consider an overview of several basic concepts (e.g., hardware, software, memory and storage, and programming languages) and then cover the various phases traditionally performed in software development. Particular emphasis is made on the need for planning, with several examples of disasters (some related to software, and some from other domains) resulting from poor planning before implementation. The rest of this unit is focused on programming, but it is important for you to understand that it is not wise to jump into coding without some forethought.


Lesson Tasks

1.  Watch this video.  It is geared towards the  instructor, but Prof. Gray talks about what programs and software languages are, how your computers processes them and the importance of planning.

https://www.youtube.com/watch?v=KEyMrFA-JnU#t=823

2. Software development has often been described as a mixture of art and engineering. This lesson focuses on the engineering of software and the need to plan and design a program before implementing it in code. The compelling reason that is given in this lesson is the potential hazards resulting from software failure, such as the Ariane 5 disaster cited in the slides. The somewhat surprising (or maybe not!) reality is that software fails often, and in various degrees of calamity. To demonstrate the ever present failures of software, a VERY STRONG suggestion is to look over the Risks to the Public that are compiled by Peter Neumann. Similar to the ACM TechNews, this compiled weekly list of software errors could be a topic for current events discussion. For example, this lesson is assigned during the voting season for Primary elections - there is a topic from June 6th related to the problems associated with fraud in online voting.

Take a look at the current entries.  Which article caught you attention?



3. Review the 5 phases of software design and compare to the version presented in the video.

http://en.wikibooks.org/wiki/Introduction_to_Software_Engineering/Process/Life_Cycle




Have you used a similar process when creating other projects?  

I do something very similar when designing a woodworking project.\:
  What are my bench requirements (size, weight load, style)
   Design the bench
   Build it
   Does it  do what I wanted it to
   Tweak 
    Does it meet my requirements?

4. Huge failures is design:

  Tacoma Bridge    and video    You may have seen this physics

  Ariane 5     and video   

5.  Related to the above idea of the types of errors associated with a program, make sure that you understand the difference between the syntax of a language and its semantics. Regarding syntax,  a compiler parses a program to make sure that the program conforms to the correct rules of a programming language. For the purpose of this course, the parsing of a program can be likened to the activity of diagramming sentences in an English class - the compiler must be able to determine that the program conforms to the grammar of the language. The semantics of the language refers to the specific meaning ascribed to the language operators and constructs. A program may be syntactically correct, but semantically wrong, which can lead to a logic error.


What type of error was the Ariane 5?


6. Of the development steps presented in the video, which step do you think takes the longest?









No comments:

Post a Comment