Sunteți pe pagina 1din 5

The Inherent Complexity of Software

1) What are the general examples of complexity? (white blood cells to attack
virus, a child learning how to read etc)

A) Following are some of general examples of complexity


1) A child learning how to read
2) White blood cells rushing to attack virus etc

1.Defining Software Complexity

1) What are in complex software systems?( specified,constructed ,maintained


and used by same person)

A) In complex software systems are those which are “specified, constructed,


maintained and used by the same person like an amateur programmer or the
profession developer working in isolation.

2) What are the characteristics of such systems? (1)very limited purpose


2)very short life span )

A) Such systems tend to have a limited purpose and a very short life span.

3) What we can afford? (throw them away and replace them with entirely new
software rather reuse,repair or extend)

A) We can afford to throw them away and replace them with entirely new software
rather than attempt to reuse them, repair them or extend their functionality

4) What are industrial strength software? ( applications that exhibit very rich set
of behaviors)

A) Industrial strength software are the applications that exhibits very rich set of
behaviors and have a long life span and over time many users may depend on
their proper functioning.

5) Example of industrial strength software?( applications maintaining “integrity


of hundreds of thousands of records of information)

1
A) Applications that maintain the integrity of hundreds of thousands of records of
information while allowing concurrent updates and queries.

6) What are frame works? (Which simplify the creation of domain specific
applications)

A) Frameworks are those that simplify the creation of domain specific


applications and programs that mimic some aspect of human intelligence.

2.Why Software Is Inherently Complex

1) What is software complexity accordin to Brooks? (essential property not


A ccidental one )
A) According to Brooks software complexity is an essential property , not an
accidental one.

2)what are the factors deriving inherent complexity? ( 1)complexity 2)difficulty


3)flexibility 4)characterizing)

A)Inherent complexity is derived from four elements

1) Complexity: complexity of problem domain


2) Difficulty: Difficulty of managing the development process
3) Flexibility: flexibility possible through software
4) Characterizing: characterizing the behavior of discrete systems.

1. The Complexity of the Problem Domain

1) What the problems to be sovled in software involves? ( elements of


inescapable complexity and contradictory requirements)

A) The problems we try to solve in software often involve elements of


“inescapable complexity” perhaps even contradictory requirements.

2) Examples of such contradictory requirements? (


1) Electronic system of multi engine aircraft
2) Cellular phone switching system
3) Autonomous robot)

2
A) Following are examples of such contradictory requirements.
1) Electronic system of multi engine aircraft
2) Cellular phone switching system
3) Autonomous robot)

3) why such requirements are called as contradictory requirements? (


raw functionality of such systems is difficult
enough to comprehend and also involves non functional
requirements treated as external complexity)

A) The above requirements are said to be contradictory because the raw


functionality of such systems is difficult enough to comprehend and also they
involve non functional requirements such as 1)usability 2)performance 3)cost
4)survivability and 5) reliability etc which are treated as external complexity

4) What is the reason behind this external complexity? ( communication gap )


A) This external complexity comes from the “communication gap” between the
users of a system and its developers. Users may fails to express what they exactly
need in a form that developers can understand.

5) different perspectives of users and developers? ( on nature of problem and its


solution)

A)Users and developers have different perspectives on the nature of the problem
and make different assumptions regarding nature of the solution.

6) How the requirements are expressed? ( in large volumes of text, few


drawings etc)

A)The common way to express requirements is with “large volumes of text” ,


occasionally accompanied by a few drawings.

7) what are the additional complications?( requirements of software systems


often change)
3
A) A further complication is that the requirements of a software system often
change during its development because the very existence of software development
project alters the rules of the problem.

8) How the users can identify their real needs? (seeing early products,
prototypes,design documents, and operations )

A) User can identify their real need by seeing early products, their prototypes,
design documents, using the system once it is installed and performing operation
on the system.

9) How developers can master the Problem Domain? ( by asking better


questions and exposing dark corners of system behavior)

A) Developers can master the Problem Domain by asking better questions that
illuminate the dark corners of a system’s desired behavior.

10) can we afford to scrap a large existing software system if its requirements
change?( no , planned or not systems tend to evolve over time)

A) We can’t afford to scrap an existing system every time its requirements change ,
planned or not , systems tend to evolve over time , a condition that is often
incorrectly labeled as “software maintenance”

11) what is software maintenance and software evolution? (correct errors,


responding to changing requirements)

A) When we correct errors of a software system then we say that it is maintenance


and if we respond to the changing requirements it is said to be software evolution.
2.The Difficulty of Managing the Development Process
1) what is the fundamental task of software development team? ( to engineer
the illusion of simplicity,shielding users from external complexity)

A) The fundamental task of the software development team is to engineer the


illusion of simplicity. Here users are shielded from vast and arbitrary external
complexity
2) How we can write less code? ( by using frame works, clever and powerful
mechanisms)

4
A)We strive to write less code by inventing clever and powerful mechanism that
give us this illusion of simplicity as well as by reusing frameworks of existing
design and code.

3)role played by the assembly language programs?( few thousands lines of


code)

A) Afew decades ago, assembly language program consisting of only few thousand
lines of code stressed the limits of our software engineering abilities.

4) Size of code of delivered systems today? (hundreds of thousand or millions)

A) Today it is not unusual to find delivered systems whose size is measured in


hundreds of thousands or even millions of lines of code which is written in a high
level programming language.

5)is it possible to understand such a complex system individually? (no ,even


decompose our implementation)

A)No one person can ever understand such a system complexity , even if we
decompose our implementation in meaningful ways, we still end up with hundreds
and sometimes thousands of separate modules.

6)How we can handle such amount of work? (small team of developers, but not
large team because of complex communication)

A)Such as vast amount of work can be handled by using small teams of developers
, but not large team of developers because it may result in more complex
communication and hence more difficult coordination , particularly if the team is
geographically dispersed.
7) What key management challenge exists here? (Maintaining unity and
integrity of design)

A)With a team of developers , the key management challenge is always to maintain


a “unity and integrity of design”

S-ar putea să vă placă și