Monday, January 7, 2008

Unleashed 1.0 of “Rocket Science” of IT

A key component of green projects is integrated design, which leverages the expertise of multiple disciplines, such as architecture, engineering, and contracting to devise comprehensive solutions.

Development costs are only the tip of the iceberg. Maintenance, base of the iceberg, is the major cost incurring factor. Software maintenance comprises: error correction, 20 percent; adaptation, 20 percent; and enhancements, 60 percent.

Software becomes increasingly unstructured as it is changed.

We think flexibility means start working without even understanding what all need to be done!! Interpreting flexibility this way is suicidal!!

A system becomes intellectually unmanageable when the level of interactions reaches the point where they cannot be thoroughly: planned, understood, anticipated, and guarded against.

Prototyping is done to assess feasibility and to verify requirements.

Drawbacks of prototyping are:
1) Prototype evolves into a final product - which is less robust.
2) Documentation is often sacrificed.
3) Quality defects may cause problems later.
4) Hard to change basic decisions made early.
5) Can be an excuse for poor programming practices.
6) Not so easy to maintain.

The basic characteristics of an Incremental Model are:
1) Functionality produced and delivered in small increments.
2) Focus attention first on essential features and add functionality only if and when needed.
3) Systems tend to be leaner.
4) May be hard to add functions later.
5) Follows Waterfall down to implementation.
6) Different parts implemented, tested, and delivered according to different priorities and at different times.

Spiral Model is risk driven, and radius of spiral represents cost accumulated so far.

Drawbacks of CMM: treats people as assembly line workers, i.e. replaceable, and unreliable. Humans are subordinated to defined processes.

Characteristics of a good Requirement Specification are:
1) A structured document that sets out the services the system is expected to provide.
2) Should be precise so that it can act as a contract between the system procurer and software developers. Needs to be understandable by both.
3) Describes what the system will do, but NOT how it will do so.

Characteristics of a good Design Specification are:
1) An abstract description of the software that serves as a basis for detailed design and implementation.
2) Describes HOW the requirements will be achieved.
3) Goals and constraints specified in requirements document should be traceable to the design specification and from there to the code.

Contents of a Requirements Document should be:
1) Introduction
2) System model with Use-Cases
3) System evolution – fundamental assumptions on which the system is based and anticipated changes due to the hardware evolution, changing user needs, etcetera
4) Functional requirements – the services provided to the user. This includes timing and accuracy requirements.
5) Constraints – how the goals can be achieved. E.g. safety, hardware, programming languages, standards that must be followed, quality requirements, etcetera.
6) Priorities – guide tradeoffs and design decisions, if all the requirements and constraints cannot be completely achieved.
7) Interfaces to the environment – input and output interfaces and relevant assumptions about environmental components with which the software will be interacting.
8) Glossary
9) Indexes

Make program structure fit the problem structure.

Think of development as a TREE rather than a LINE.

No comments: