0% found this document useful (0 votes)
6 views

week 1 software engineering

The document outlines the course logistics and key concepts of software engineering, including software classification, characteristics of good software, and common challenges faced in software development. It emphasizes the importance of clear communication, proper resource allocation, and effective methodologies in overcoming these challenges. Additionally, it introduces Agile software engineering principles that prioritize customer involvement, adaptability to change, and simplicity in the development process.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
6 views

week 1 software engineering

The document outlines the course logistics and key concepts of software engineering, including software classification, characteristics of good software, and common challenges faced in software development. It emphasizes the importance of clear communication, proper resource allocation, and effective methodologies in overcoming these challenges. Additionally, it introduces Agile software engineering principles that prioritize customer involvement, adaptability to change, and simplicity in the development process.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 7

ISI3195_Sofware Engineering – INGE3_ISI

Instructor: Ytembe Dankam Therese

I. Course Logistics
 Course Project
 Attendance is compulsory
 Weekly assignments must done and submitted
 Late coming is not tolerated

II. Software Scope

What is a software and what is the software engineering?


Software refers to computer programs and related documentation while software
engineering refers to the engineering discipline that deals with all aspect of software
production.

Why is software important?


Software Classification
1. Based on use

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.

Assignment: Read on make short notes on:


 Operating Systems
 Utility Software

Characteristics of good software


 It should be functional and acceptable
 It should be efficient
 It should be maintainable and reusable
 It should secured
III. Software Development Challenges
Software development is a challenging and demanding profession. The increased complexity of
software projects, time constraints, and lack of resources often lead to frustration for engineers on
the job.

Lack of Guidance from Management

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 Resources for the Software Development Process

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.

Defining the Requirements of the Software Development Projects

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.

Strict Time Constrains


The other challenge for software developers is dealing with strict time constraints. In many cases,
deadlines are agreed upon before they even know what work needs to be done, leading to a lot of pressure
and frustration. Even if this issue doesn’t happen initially, it will most likely arise later in the project
when the software development team encounters problems that might take longer than expected to
address.

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 Software Projects

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

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.

Testing and Debugging

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.

Maintaining the Competitive Edge

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.

IV. Software Engineering Discipline and Software Methodologies


Engineering is all about selecting the most appropriate method for a set of circumstances, so a more
creative, less formal approach to development may be the right one for some kinds of software. A more
flexible software process that accommodates rapid change is particularly appropriate for the
development of interactive web-based systems and mobile apps, which require a blend of software and
graphical design skills.
Software engineering is important for two reasons:
1. More and more, individuals and society rely on advanced software systems. We need to be able to
produce reliable and trustworthy systems economically and quickly.
2. It is usually cheaper, in the long run, to use software engineering methods and techniques for
professional software systems rather than just write programs a personal programming project. Failure
to use software engineering method leads to higher costs for testing, quality assurance, and long-term
maintenance.
A software process or methodology refers to a sequence of activities that leads to the production of a
software product. Four fundamental activities are common to all software methodologies.
1. Software specification, where customers and engineers define the software that is to be produced and
the constraints on its operation.
2. Software development, where the software is designed and programmed.
3. Software validation, where the software is checked to ensure that it is what the customer requires.
4. Software evolution, where the software is modified to reflect changing customer and market
requirements.
The most significant factor in determining which software engineering methods and techniques are
most important is the type of application being developed. There are many different types of
application, including:

 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

V. The Human Side of Software Development


What is human aspect of software?
Human Aspects of Software Engineering details software engineering from the perspective of
those involved in the software development process: individuals, team, customers, and the
organization.

 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.

VI. Introduction to Agile Software Engineering


Customer involvement: Customers should be closely involved throughout the development
process. Their role is provide and prioritize new system requirements and to evaluate the iterations
of the system.
Embrace change: Expect the system requirements to change, and so design the system to
accommodate these changes.
Incremental delivery: The software is developed in increments, with the customer specifying the
requirements to be included in each increment.
Maintain simplicity: Focus on simplicity in both the software being developed and in the
development process. Wherever possible, actively work to eliminate complexity from the system.
People, not process: The skills of the development team should be recognized and exploited.
Team members should be left to develop their own ways of working without prescriptive
processes.

You might also like