Software is designed and built by software engineers.
Software is used by virtually everyone in society.
Software engineers have a moral obligation to build reliable software that does no harm to other people.
Software engineers view "software" as being made up of the programs, documents, and data.
Software users are only concerned with whether or not software products meet their expectations and make their tasks easier to complete.
Important Questions for Software Engineers
Why does it take so long to get software finished?
Why are development costs so high?
Why can't we find all errors before we give the software to our customers?
Why do we continue to have difficulty in measuring progress as software is being developed?
Software
Software is both a product and a vehicle for delivering a product (information).
Software is engineered not manufactured.
Software does not wear out, but it does deteriorate.
Currently, most software is still custom-built.
Software Application Types
System software
Application software
Embedded software
Engineering/Scientific software
Product software
Web Applications
Artificial intelligence software
New Software Challenges
Ubiquitous computing
Creating software to allow machines of all sizes to communicate with each other across vast networks
Netsourcing
Architecting simple and sophisticated applications that benefit targeted end-user markets worldwide
Open Source
Distributing source code for computing applications so customers can make local modifications easily and reliably
New economy
Building applications that facilitate mass communication and mass product distribution using evolving concepts
Legacy software
Many programs still provide a valuable business benefit, even though they are one or even two decades old.
These programs must be maintained and this creates problems because their design is often not amenable to change.
Software Evolution
Process by which programs change shape, adapt to the marketplace, and inherit characteristics from preexisting programs
Law of continuing change
Systems must be continually adapted or they become progressively unsatisfactory
Law of increasing complexity
As system evolves its complexity increases unless work is done to reduce the complexity
Law of self-regulation
System evolution is self-regulating with its process and product measures following near normal distributions
Law of conservation of Organizational Stability
Average effective global activity rate for an evolving systems is invariant over the product lifetime
Law of conservation of familiarity
As system evolves all stakeholders must maintain their mastery of its content and behavior to achieve satisfactory evolution
Law of continuing growth
Functional content of system must be continually increased to maintain user satisfaction over its lifetime
Law of declining quality
System quality will appear to decline unless the system is rigorously maintained and adapted to environment changes
Feedback system law
System evolution processes must be treated as multi-level, multi-loop, multi-agent feedback systems to achieve significant improvement
Software Myths
Still believed by many managers and practitioners
Insidious because they do have elements of truth
Every practitioner and manager should understand the reality of the software business.
Software Creation
Almost every software project is precipitated by a business need (e.g., correct a system defect, adapt system to changing environment, extend existing system, create new system)
Many times an engineering effort will only succeed if the software created for the project succeeds
The market will only accept a product that has the software embedded when it meets the customer's stated or unstated needs
To learn more about the book this website supports, please visit its Information Center.