Loading presentation...

Present Remotely

Send the link below via email or IM


Present to your audience

Start remote presentation

  • Invited audience members will follow you as you navigate and present
  • People invited to a presentation do not need a Prezi account
  • This link expires 10 minutes after you close the presentation
  • A maximum of 30 users can follow your presentation
  • Learn more about this feature in our knowledge base article

Do you really want to delete this prezi?

Neither you, nor the coeditors you shared it with will be able to recover it again.


ITECH3501/6501 W04

No description

Jackie Rong

on 24 August 2013

Comments (0)

Please log in to add your comment.

Report abuse

Transcript of ITECH3501/6501 W04

ftware Engineering

Week 4 - System Construction
Jia Rong, jiarong@acm.org
The laws/hypothesis that we have covered so far:
Law 1 -
Requirements deficiencies are the prime source of project failures.
(Glass 1998)
Law 2 -
Errors are most frequent during the requirements and design activities and are the more expensive the later they are removed.
(Boehm 1975)
Law 3 -
Prototyping reduces requirements and design errors, especially for user interfaces.
(Boehm 1984)
Law 4 -
The value of a model depends on the view taken, but none is best for all purpose.
(Davis 1990)
Law 5 -
Good designs require deep application knowledge.
(Curtis 1990)
Law 6 -
Hierarchical structures reduce complexity.
(Simon 1962)
Law 7 -
A structure is stable if cohesion is strong and coupling is low.
(Constantine 1974)
Law 8 -
Only what is hidden can be changed without risk.
(Parnas 1972)
Hypothesis 1 -
Object models reduce communication problem between analysts and users.
(Booch 1991)
Hypothesis 2 -
Object-oriented designs reduce errors and encourage re-use.
(Booch 1991)
Law 9 -
Separation of concerns leads to standard architectures.
(Denert 1991)
Law 10 -
Screen pointing time is a function of distance and width.
(Fitts-Shneiderman 1998)
Hypothesis 3 -
Formal methods significantly reduce design errors, or eliminate them early.
(Bauer-Zemanek 1982)
Hypothesis 4 -
Reusing designs through patterns yields faster and better maintenance.
(Gamma 1995)
Software Development Life Cycle
Requirement Definition
System Design
(week 2)
(week 3)
Law 11 -
What applies to small systems does not apply to large ones.
(DeRemer and Kron 1979)
Used if the system is being built out of high-level components or building blocks

Most systems software, operating systems, database systems and data communications systems form a "bed" for the applications built on top of them

Recently libraries of modules have been started
Involves the creation of source code

Compilation into executable modules

Integration of modules into the system

Programming encompasses design, coding, verification and test

Hardware may have to be built, procured and installed
Procedural languages
Scripting languages
Procedural language is a computer programming language that specifies a series of well-structured steps and procedures within its programming context to compose a program.

It contains a systematic order of statements, functions and commands to complete a computational task or program

e.g. C, C++, Java
A high-level programming language that is interpreted by another program at run-time rather than compiled by the computer's processor as other programming languages (such as C and C++) are.

e.g. Perl, Python
In most languages, the
is the key structuring concept,

Also called a
, a procedure or a class

The module is a vehicle to factor repetitions, to facilitate parallel development and to allow independent compilation

The module is the main structuring aid

The module helps make source code readable, essential if we are to maintain systems

The rules in this area aim to ease the understanding of programs and to improve their utility for humans
Law 12 -
Productivity and reliability depend on the length of a program's text, independent to the language level used.
(Corbato 1969)
Experiences cannot be stretched, they do not scale up from small local environments to a large global environment.

Large projects suffer problems that are different in kind from those of small projects (Brooks 1975)
Which language or notations are best?
High-level or low-level?
Procedural or scripting?
What about the application generators?
Independent of the specific language
causes the difficulty in both creating and understanding

the language
, the
gains and

) is paid at run-time with longer path lengths and higher memory consumption
Law 13 -
Well-structured programs have fewer errors and are easier to maintain.
(Dijkstr-Mils-Wirth 1969)
Law 15 -
Software reuse reduces cycle time and increase productivity and quality.
(Mcllroy 1968)
Law 16 -
A system reflects the organizational structure that built it.
(Conway 1968)
top-down design
use of program design language
easy design and code reading
team organization
We need to consider
technical problems
human problems
System development is more about
than technical tools
Hypothesis 5 -
Object-oriented programming reduces errors and encourage re-use.
(Dahl-Goldberg 1967-1989)
Hypothesis 6 -
Agile programming methods reduce the impact of requirement changes.
(Beck 1999, Fowler 2001)
Hypothesis 7 -
COTS-based (commercial off-the-shelf) software does not eliminate the key development risks.
(Basili-Boehm 2001)
Hypothesis 2 -
Object-oriented designs reduce errors and encourage re-use.
(Booch 1991)
Besides, there are a number of aspects of system construction for that no laws/hypothesis exist yet
Incremental development and integration
Language selection
Application generators
Visual programming languages
Software matrices
Management and control
Full transcript