week 1 software engineering
week 1 software engineering
I. Course Logistics
Course Project
Attendance is compulsory
Weekly assignments must done and submitted
Late coming is not tolerated
Generic: This is software designed for the general public. In most cases they are standalone
systems. The development company takes care of the specifications and updates. Examples
include accounting systems, library management systems etc.
Custom: This is software designed with respect to the specifications of the client. It could
be for an individual of organization. Examples include the school management system of the
University of Buea, the management system used by the Ministry of Finance in Cameroon.
2. Based on purpose
Application Software: These are software designed for end users. They help end users
solve specific problems. For example all mobile apps on playstore, Microsoft office etc.
System Software: They are software that communicate with computer hardware. For
example operating systems, utility software etc.
3. Based on availability
Open source: is software developed and maintained via open collaboration, and made available,
typically at no cost, for anyone to use, examine, alter and redistribute however they like.
Freeware: It is a cost free software that end users can download and use but they cannot make
modifications on the source code.
Shareware: It is software that is made available to end users with limited functionalities. Users
are expected to pay a certain amount of money over regular intervals for updates and upgrades.
One of the most common software development challenges is the lack of guidance from the project
managers. Developers need clear instructions to be able to do their job effectively, and if they’re left in
the dark, it can lead to chaos and confusion. This can cause delays in the project and affect its overall
software quality.
The best method to overcome this challenge is to establish a clear and concise project plan. This
document should outline all of the critical tasks that need to be completed and who is responsible for
each one. It should also include a timeline so developers can track their progress and ensure they’re on
schedule.
Lack of budget and resources is another common software development challenge. Part of it is due to
the increased complexity of software projects, which takes a lot more time and money to complete. In
addition to these constraints, developers may also be faced with a lack of access to computers for testing,
a shortage of software engineers or a lack of appropriate technology for their projects.
The best way to work through these software development challenges is by leveraging free assets from
the web. Since many different types of assets are available on the internet – from fonts and graphics to
code libraries and scripts – it’s possible to find something that addresses your specific needs without
having to spend anything at all. Additionally, development teams need to be vocal about the resources
they need in order to do their job properly. If they don’t have the right tools, it will be impossible for
them to meet deadlines or produce a high-quality product. One more solution for this problem is not to
request too many features or enhancements at once.
One of the most time-consuming challenges for software developers is to define the requirements.
Simply, this means figuring out what the product should do and how it should work. The requirements
need to be clear, concise, and complete so that developers have a good understanding of what they need
to do. Unfortunately, it’s often difficult to get a clear picture of what’s required and even more difficult
to translate that into specific instructions. If these requirements are not well-defined, it can lead to
confusion and frustration on the part of the developers, which will ultimately delay the project.
It’s essential to have clear software development initiatives and an exemplary process for defining the
final agreed-upon requirements. This way, the development teams will know at a glance what they need
to do, and their work won’t get unnecessarily stalled. One useful way to address this problem is by
holding discussions with customers or clients when there are any questions or unclear requirements
during the project cycle. Having these discussions will allow for greater clarity on what needs to be done
and when things need to be completed.
Miscommunication with Customers/Stakeholders
Another major challenge for software developers is miscommunication with customers and
stakeholders. This can happen for many reasons, such as a lack of communication channels,
misunderstandings about the requirements, or failures to document the project properly. Also, it can
result from a lack of communication between members of the software development teams, which means
it’s crucial to establish an effective communication process. Whatever the cause may be,
miscommunication can lead to delays in the project and a poor final product.
To prevent these problems from occurring, we should have an open line of communication with
customers and stakeholders. This means establishing regular communication channels (such as weekly
meetings or daily updates), being clear about the requirements, and documenting everything that
happens during the project.
To deal with this challenge, companies better put an emphasis on good time management. Developers
and project managers should set realistic deadlines and clear expectations from the start. Moreover, it’s
advisable for software development teams to take the necessary time off for rest and recovery and build
in time for contingencies. This way, if unexpected events arise or the team finds themselves running
behind, they can make up for lost time quickly without putting the project at risk.
The complexity of projects is another common challenge that developers commonly face. This is often
due to a large number of dependencies and interactions between different parts of the software system.
In addition, the number of potential problems that can occur during development can be daunting. As a
result, it’s often difficult for developers to know where to start and how to proceed.
To address this challenge, developers need to understand the system they are working on clearly. They
should also break down the project into manageable tasks and establish a plan for dealing with
potential problems. Moreover, they should always stay in close communication with their team
members so that everyone is aware of what is happening and can help out when needed. Finally, they
should take the time to devise strategies for dealing with false starts. This will help them stay
organized and stay on track with the development process.
Finding qualified talents is one of the most significant challenges in software development for
enterprises. This can be difficult for a number of reasons, such as a shortage of qualified workers, the
high cost of hiring, or the difficulty of finding the right person for the job. In addition, many software
development companies are reluctant to hire new graduates because they often have little experience
and lack the necessary skills.
To overcome this challenge, companies need to be more proactive in their search for talent. They should
identify the skills they need and target candidates who have those skills. They should also create an
attractive job offer that includes benefits and a competitive salary. In addition, they should actively
promote their company and its culture. By doing these things, companies can attract more talent and
continue to grow their businesses.
Moreover, companies can also consider using recruitment agencies or online platforms that provide
ready-made resumes for professionals with different qualifications and skillsets. Or they should be more
flexible in talent acquisition by giving more opportunities to interns. Currently, more and more many
software companies are outsourcing software development work to third-party companies, which can
be a more cost-effective way to find the right talent.
Last but not least, testing and debugging is one of the major challenges in software development
that software development teams often encounter. This usually involves identifying and fixing the errors
in the code. In addition, it can be challenging to determine the source of the error and how to fix it.
To address this challenge, developers need to be meticulous in their work. They ought to understand the
system they are working on and the code they are writing. In addition, they should use automated
debugging tools to help them find and fix errors. They should also establish a testing plan and test their
code thoroughly before releasing it to production. By doing these things, you can ensure that your code
is error-free and ready for use while also saving time and effort.
One of the increasing software development challenges in the software industry is maintaining the
competitive edge. This is often due to the fast-paced and ever-changing technology landscape. In
addition, there are many companies that offer similar products and services.
To stay ahead of the competition, software development companies need to continually innovate and
improve their products and services. They should also implement a formal process for managing these
changes in order to stay on track with the development process. In addition, they need to monitor the
latest developments in their industry and explore new technologies that can improve their product or
service offering.
Stand-alone applications
Interactive transaction-based applications
Embedded control systems
Batch processing systems
Entertainment systems
Systems for modeling and simulation
Data collection and analysis systems
Systems of systems
Project Planner
Requirements Engineers
System analysts and Designers
Developers/Programmers
Test Engineers
Alpha test users
Assignment: Produce a simple document for your group project identifying the problems users face
and how your software is a solution that problem.