Chapter 01
Chapter 01
Software engineering
Software
Software Engineering
Development history of Software Engineering
Challenges of Software Engineering
Some terminologies in Software Engineering
Software engineer career
Software myths
System software
Application software
Engineering/scientific software
Embedded software
Product-line software
WebApps (Web applications)
AI software
Reduces Complexity
Handling Big Projects
To Minimize Software Costs
To Decrease Time
Effectiveness
Reliable Software
Best Practices
Maintainability
Scalability
Accessibility and Usability
Security
Testing
1) Requirement volatility.
2) Limited budget and resources.
3) Lack of communication and collaboration.
4) Poor software quality and maintenance.
5) Integration and compatibility issues.
6) Technical debt management.
7) Managing complex codebases.
8) Inadequate testing and debugging.
9) Security and privacy concerns
10)Adapting to changing technology and industry trends
The software engineering process is the glue that holds the technology layers
together and enables rational and timely development of computer software.
As a software engineer, you must accept that your job involves wider responsibilities than simply the
application of technical skills. You must also behave in an ethical and morally responsible way if you are to
be respected as a professional engineer.
Some of these are:
✓ Confidentiality
✓ You should normally respect the confidentiality of your employers or clients irrespective of whether or not a formal
confidentiality agreement has been signed.
✓ Competence
✓ You should not misrepresent your level of competence. You should not knowingly accept work that is outside your
competence.
✓ Intellectual property rights
✓ You should be aware of local laws governing the use of intellectual property such as patents and copyright. You
should be careful to ensure that the intellectual property of employers and clients is protected.
✓ Computer misuse
✓ You should not use your technical skills to misuse other people’s computers. Computer misuse ranges from relatively
trivial (game playing on an employer’s machine, say) to extremely serious (dissemination of viruses or other malware).
Myth: We already have a book that’s full of standards and procedures for
building software. Won’t that provide my people with everything they need to
know?
Reality: The book of standards may very well exist, but is it used? Are software
practitioners aware of its existence? Does it reflect modern software
engineering practice? Is it complete? Is it adaptable? Is it streamlined to
improve time-to-delivery while still maintaining a focus on quality? In many
cases, the answer to all of these questions is “no.
Myth: If we get behind schedule, we can add more programmers and catch
up (sometimes called the “Mongolian horde” concept).
Reality: Software development is not a mechanistic process like
manufacturing. In the words of Brooks [Bro95]: “adding people to a late
software project makes it later.” At first, this statement may seem
counterintuitive. However, as new people are added, people who were
working must spend time educating the newcomers, thereby reducing the
amount of time spent on productive development effort. People can be
added but only in a planned and well coordinated manner
Myth: If I decide to outsource the software project to a third party, I can just
relax and let that firm build it.
Reality: If an organization does not understand how to manage and control
software projects internally, it will invariably struggle when it outsources
software projects.
Myth: Once we write the program and get it to work, our job is done.
Reality: Someone once said that “the sooner you begin ‘writing code,’ the
longer it’ll take you to get done.” Industry data indicate that between 60 and
80 percent of all effort expended on software will be expended after it is
delivered to the customer for the first time.
Myth: Until I get the program “running” I have no way of assessing its quality.
Reality: One of the most effective software quality assurance mechanisms can
be applied from the inception of a project - the technical review.
Software reviews (described in Chapter 15) are a “quality filter” that have
been found to be more effective than testing for finding certain classes of
software defects.
Myth: The only deliverable work product for a successful project is the working
program.
Reality: A working program is only one part of a software configuration that
includes many elements. A variety of work products (e.g., models, documents,
plans) provide a foundation for successful engineering and, more important,
guidance for software support.